apBill.html 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701
  1. <style>
  2. .order-table .header>th {
  3. height: 38px;
  4. text-align: center;
  5. background: #f5f5f5;
  6. border-top: 1px solid #e8e8e8;
  7. border-bottom: 1px solid #e8e8e8;
  8. }
  9. .order-table .sep-row {
  10. height: 10px;
  11. }
  12. .order-table .selector {
  13. vertical-align: middle;
  14. margin: 0 0 2px 0;
  15. }
  16. .toolbar label {
  17. margin-right: 10px;
  18. margin-bottom: 0;
  19. }
  20. .toolbar .select_all {
  21. margin: 0 6px 0 10px;
  22. line-height: 20px;
  23. }
  24. .toolbar .btn {
  25. -moz-border-radius: 2px;
  26. margin-right: 5px;
  27. border: 1px solid #dcdcdc;
  28. border-radius: 2px;
  29. -webkit-border-radius: 2px;
  30. }
  31. .order-table .order-hd {
  32. background: #f5f5f5;
  33. height: 40px;
  34. line-height: 40px;
  35. }
  36. .order-table .order-hd td.first {
  37. padding-left: 20px;
  38. }
  39. .order-table .order-hd .order-main span {
  40. margin-right: 8px;
  41. }
  42. .order-table .order-hd .order-code {
  43. font-style: normal;
  44. font-family: verdana;
  45. }
  46. .order-table .order-hd .order-sum {
  47. padding: 0 5px;
  48. font-size: 15px;
  49. font-weight: bold;
  50. color: #CC0000;
  51. }
  52. .order-table>tbody {
  53. border: 1px solid transparent;
  54. }
  55. .order-table>tbody:hover {
  56. border-color: #3c7cf5;
  57. border-width: 2px;
  58. }
  59. .order-table>tbody:hover .order-bdd{
  60. background: #f8fafe;
  61. }
  62. .order-table .operates {
  63. display: none;
  64. }
  65. .order-table>tbody:hover .operates {
  66. display: block;
  67. }
  68. .order-table .order-bd {
  69. border-bottom: 1px solid #e6e6e6;
  70. }
  71. .order-table .order-bd>td {
  72. padding: 10px 5px;
  73. /*vertical-align: top;*/
  74. position: relative;
  75. }
  76. .order-table .order-bd .product {
  77. padding-left: 20px;
  78. }
  79. .input-xs,.input-group-xs>.form-control,.input-group-xs>.input-group-addon,.input-group-xs>.input-group-btn>.btn
  80. {
  81. height: 26px;
  82. padding: 0 5px;
  83. font-size: 12px;
  84. line-height: 1.5;
  85. border-radius: 3px;
  86. }
  87. .input-group-xs .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn {
  88. border-top-left-radius: 0;
  89. border-bottom-left-radius: 0;
  90. }
  91. </style>
  92. <style>
  93. .com_tab {
  94. height: 40px;
  95. margin-bottom: 10px;
  96. }
  97. .com_tab ul {
  98. width: 100%;
  99. margin: 0 auto;
  100. height: 40px;
  101. line-height: 40px;
  102. background: #fff;
  103. }
  104. .com_tab ul li {
  105. height: 40px;
  106. text-align: center;
  107. float: left;
  108. position: relative;
  109. min-width: 110px;
  110. }
  111. .com_tab:nth-of-type(1) ul li.active > a {
  112. border-bottom: #fff;
  113. background: #5078cb;
  114. color: #fff !important;
  115. }
  116. .com_tab ul li a {
  117. min-width: 110px;
  118. }
  119. .com_tab ul li > a {
  120. font-size: 14px;
  121. height: 40px;
  122. padding: 0 20px;
  123. display: inline-block;
  124. }
  125. .com_tab:nth-of-type(1) ul li::after {
  126. background:url('/static/img/vendor/images/downicon.png');
  127. width: 11px;
  128. height: 6px;
  129. position: absolute;
  130. bottom: 0px;
  131. left: 50%;
  132. content: ' ';
  133. margin-left: -5px;
  134. display: none;
  135. }
  136. .com_tab ul li::after {
  137. background:url('/static/img/vendor/images/downicon.png');
  138. width: 11px;
  139. height: 6px;
  140. position: absolute;
  141. bottom: 0px;
  142. left: 50%;
  143. content: ' ';
  144. margin-left: -5px;
  145. display: none;
  146. }
  147. .com_tab ul li.active:after {
  148. display: block;
  149. }
  150. .oder01 ul li.active a{
  151. border-bottom: 1px solid #fff;
  152. color: #f15601;
  153. }
  154. .oder01 ul li.active a em {
  155. color: #f15601;
  156. }
  157. .oder01 ul li a em {
  158. color: #323232
  159. }
  160. .screen {
  161. background: #fff;
  162. padding-top: 10px;
  163. padding-right: 11px;
  164. line-height: 32px;
  165. padding-left: 22px;
  166. width: 100%;
  167. height: 50px;
  168. position: relative;
  169. }
  170. .screen .sreach input {
  171. border: #5078cb 1px solid;
  172. height: 32px;
  173. width: 280px;
  174. box-shadow: none;
  175. padding-left: 10px;
  176. background: #fff;
  177. float: left;
  178. vertical-align: middle;
  179. font-size: 14px;
  180. }
  181. .screen .sreach a.seek {
  182. width: 58px;
  183. height: 32px;
  184. background: #5078cb;
  185. color: #fff;
  186. line-height: 32px;
  187. float: none;
  188. border-radius: 2px;
  189. vertical-align: unset;
  190. }
  191. .order-table {
  192. background: #fff;
  193. width: 100%;
  194. }
  195. .order-table .header > th {
  196. height: 38px;
  197. text-align: center;
  198. background: #fff;
  199. border-top: 1px solid #e8e8e8;
  200. border-bottom: 1px solid #e8e8e8;
  201. font-size: 14px;
  202. }
  203. .order-table .sep-row {
  204. height: 10px;
  205. }
  206. .order-table .selector {
  207. vertical-align: middle;
  208. margin: 0 0 2px 0;
  209. }
  210. .toolbar label {
  211. margin-right: 10px;
  212. margin-bottom: 0;
  213. }
  214. .toolbar .select_all {
  215. margin: 0 6px 0 10px;
  216. line-height: 20px;
  217. }
  218. .toolbar .btn {
  219. -moz-border-radius: 2px;
  220. margin-right: 5px;
  221. border: 1px solid #dcdcdc;
  222. border-radius: 2px;
  223. -webkit-border-radius: 2px;
  224. }
  225. .order-table .order-hd {
  226. background: #f5f5f5;
  227. height: 40px;
  228. line-height: 40px;
  229. }
  230. .order-table .order-hd td.first {
  231. padding-left: 20px;
  232. }
  233. .order-table .order-hd .order-main span {
  234. margin-right: 8px;
  235. }
  236. .order-table .order-hd .order-code {
  237. font-style: normal;
  238. font-family: verdana;
  239. }
  240. .order-table .order-hd .order-sum {
  241. position: relative;
  242. padding: 0 5px;
  243. }
  244. .order-table .order-hd .dropdown-toggle {
  245. line-height: 40px;
  246. display: block;
  247. color: #5078cb;
  248. /*padding: 0 10px;*/
  249. }
  250. .order-table .operates {
  251. display: none;
  252. }
  253. .order-table > tbody:hover .operates {
  254. display: block;
  255. }
  256. .order-table .order-bd {
  257. border-bottom: 1px solid #e6e6e6;
  258. }
  259. .order-table .order-bd > td {
  260. padding: 10px 5px;
  261. }
  262. .order-table .order-bd .product {
  263. padding-left: 20px;
  264. }
  265. .input-xs, .input-group-xs > .form-control, .input-group-xs > .input-group-addon, .input-group-xs > .input-group-btn > .btn {
  266. height: 26px;
  267. padding: 0 5px;
  268. font-size: 12px;
  269. line-height: 1.5;
  270. border-radius: 3px;
  271. }
  272. .order-table .order-hd .dropdown-toggle:hover + .order-snapshot {
  273. display: block;
  274. }
  275. .order-table .order-hd .order-snapshot{
  276. padding: 10px 15px;
  277. display: none;
  278. width: 250px;
  279. position: absolute;
  280. top: 32px;
  281. left: 39px;
  282. border: 1px solid rgba(0,0,0,0.15);
  283. -webkit-box-shadow: 0 0 5px rgba(0,0,0,0.3);
  284. -moz-box-shadow: 0 0 5px rgba(0,0,0,0.3);
  285. -o-box-shadow: 0 0 5px rgba(0,0,0,0.3);
  286. box-shadow: 0 0 5px rgba(0,0,0,0.3);
  287. }
  288. .order-snapshot .title {
  289. border-top: 1px dashed #ddd;
  290. }
  291. .order-snapshot .dl-horizontal dt {
  292. width: 60px;
  293. text-align: left;
  294. font-weight: normal;
  295. color: #999;
  296. padding: 4px 0;
  297. }
  298. .order-snapshot .dl-horizontal dd {
  299. margin-left: 80px;
  300. padding: 4px 0;
  301. }
  302. /*arrow*/
  303. .order-send {
  304. position: relative;
  305. }
  306. .order-send.arrow-border:before, .arrow-border:after {
  307. content: '';
  308. position: absolute;
  309. top: 20px;
  310. width: 0;
  311. height: 0;
  312. border: 7px solid transparent;
  313. }
  314. .order-send.arrow-border.arrow-bottom-right:before {
  315. content: '';
  316. position: absolute;
  317. left: -13px;
  318. border-bottom-color: #fff;
  319. border-right-color: #fff;
  320. margin-top: -10px;
  321. }
  322. .menu .new-dot {
  323. width: 20px;
  324. height: 20px;
  325. line-height: 20px;
  326. font-size: 12px;
  327. color: #fff;
  328. font-weight: inherit;
  329. top: -2px;
  330. }
  331. .f14{
  332. font-size:14px;
  333. }
  334. .screen .sreach input {
  335. width: 288px
  336. }
  337. .modal {
  338. position: fixed;
  339. top: 0;
  340. right: 0;
  341. bottom: 0;
  342. left: 0;
  343. z-index: 1050;
  344. display: none;
  345. overflow: hidden;
  346. -webkit-overflow-scrolling: touch;
  347. outline: 0;
  348. margin: 0 !important;
  349. }
  350. .modal-open .modal {
  351. overflow-x: hidden;
  352. overflow-y: auto;
  353. }
  354. #empty {
  355. padding: 70px 0;
  356. margin: 0 auto;
  357. text-align: center;
  358. }
  359. #empty .left_img {
  360. display: inline-block;
  361. color: #3f84f6;
  362. }
  363. #empty .left_img a {
  364. font-size: 25px;
  365. color: #3f84f6;
  366. }
  367. #empty .right_link p {
  368. margin: 0;
  369. font-size: 14px;
  370. color: #666;
  371. }
  372. #empty_info .empty_title {
  373. color: #3f84f6;
  374. font-size: 18px;
  375. }
  376. #empty_info .empty_explain {
  377. font-size: 16px;
  378. color: #999;
  379. }
  380. #empty_info .empty_explain .info {
  381. text-indent: -22px;
  382. }
  383. .f16 {
  384. font-size: 16px !important;
  385. }
  386. .f14 {
  387. font-size: 14px !important;
  388. }
  389. #empty_info {
  390. padding-left: 60px;
  391. padding-bottom: 40px;
  392. }
  393. table tbody tr td {
  394. border-bottom: #e8e8e8 1px solid;
  395. border-right: #e8e8e8 1px solid;
  396. font-size: 14px;
  397. color: #333;
  398. }
  399. .ng-table-pager::after {
  400. clear: both;
  401. content: ' ';
  402. zoom: 1;
  403. display: block;
  404. visibility: hidden;
  405. }
  406. .ng-table-pager {
  407. padding-right: 20px;
  408. padding-top: 50px;
  409. margin-right: 0 !important;
  410. }
  411. .text-mns {
  412. padding-right: 15px;
  413. position: absolute;
  414. bottom: 64px;
  415. right: 20px;
  416. font-size: 12px;
  417. }
  418. .Boom18 {
  419. bottom: 18px;
  420. }
  421. .fixed {
  422. width: 40px;
  423. }
  424. .text-trans {
  425. left: 50%;
  426. right: auto;
  427. top: 50%;
  428. margin: -20px 0 0 -40px;
  429. }
  430. .oder01 ul li {
  431. margin-left: 0px
  432. }
  433. .order-table .inquiry-bd .order-number {
  434. position: absolute;
  435. top: -1px;
  436. left: -1px;
  437. width: 20px;
  438. height: 20px;
  439. line-height: 20px;
  440. text-align: center;
  441. background: #f9f9f9;
  442. font-weight: 500;
  443. border: solid 1px #d5d5d5;
  444. border-radius: 0 0 10px 0;
  445. }
  446. </style>
  447. <!--<link rel="stylesheet" href="static/css/public.css">-->
  448. <div class="user_right fr" style="position: relative">
  449. <div class="com_tab" style="margin-bottom: 10px">
  450. <ul class="fl" style="width: 100%">
  451. <li class="active"><a>B2B</a></li>
  452. <li><a ui-sref="vendorInvoice">优软商城</a></li>
  453. <li class="down-purchase" style="margin-right: 20px;min-width: 80px;cursor:pointer">
  454. <span ng-click="exportXls()">
  455. <i class="fa fa-file-excel-o fa-fw"></i>导出Excel
  456. </span>
  457. </li>
  458. </ul>
  459. </div>
  460. <!--<div class="oder01" style="margin-bottom: 10px">-->
  461. <!--<ul>-->
  462. <!--<li ng-class="{'active': active=='done'}" ng-click="setActive('done')"><a>已发布</a></li>-->
  463. <!--<li ng-class="{'active': active=='todo'}" ng-click="setActive('todo')"><a>待发布</a></li>-->
  464. <!--</ul>-->
  465. <!--</div>-->
  466. <div class="screen check-filter">
  467. <div class="radio-block date-radio" style="width: 33%">
  468. 时间:
  469. <label class="com-check-radio">
  470. <input type="radio" id="oneMonth" name="date" ng-click="changeDateZone(1);condition.$open=false" checked>
  471. <label for="oneMonth"></label>
  472. 30天
  473. </label>
  474. <label class="com-check-radio">
  475. <input type="radio" id="threeMonth" name="date" ng-click="changeDateZone(3);condition.$open=false">
  476. <label for="threeMonth"></label>
  477. 90天
  478. </label>
  479. <label class="com-check-radio">
  480. <input type="radio" id="sixMonth" name="date" ng-click="changeDateZone(6);condition.$open=false">
  481. <label for="sixMonth"></label>
  482. 180天
  483. </label>
  484. <label class="com-check-radio">
  485. <input type="radio" id="autoMonth" name="date" ng-click="condition.$open=!condition.$open;changeDateZone(-1)">
  486. <label for="autoMonth"></label>
  487. 自定义
  488. </label>
  489. </div>
  490. <div class="sreach fr">
  491. <div ng-show="condition.$open" class="date fl">
  492. <div class="data-input">
  493. <input type="text" ng-model="condition.dateFrom"
  494. class="form-control select-adder" placeholder="起始时间"
  495. datepicker-popup="yyyy-MM-dd"
  496. is-open="condition.$fromOpened"
  497. max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
  498. ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
  499. datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
  500. style="width: 130px"
  501. />
  502. <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
  503. </div>
  504. <em>–</em>
  505. <div class="data-input">
  506. <input type="text" ng-model="condition.dateTo"
  507. class="form-control select-adder" placeholder="结束时间"
  508. datepicker-popup="yyyy-MM-dd"
  509. is-open="condition.$toOpened"
  510. min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
  511. ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
  512. datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
  513. style="width: 130px"
  514. />
  515. <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
  516. </div>
  517. </div>
  518. <div class="sreach-input fr">
  519. <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch()"/>
  520. <a class="seek" href="javascript:void(0)" ng-click="onSearch()">搜索</a>
  521. </div>
  522. </div>
  523. </div>
  524. <table class="order-table block" ng-table="tableParams">
  525. <thead>
  526. <tr class="header">
  527. <th>商品</th>
  528. <th width="120">单价</th>
  529. <th width="100">发票数量</th>
  530. <th width="120">发票金额</th>
  531. <th width="140">单据信息</th>
  532. <th width="70">操作</th>
  533. </tr>
  534. <!--<tr class="sep-row">-->
  535. <!--<td colspan="6"></td>-->
  536. <!--</tr>-->
  537. </thead>
  538. <tbody ng-if="$data.length === 0">
  539. <tr>
  540. <td colspan="6">
  541. <div id="empty">
  542. <div class="left_img">
  543. <a><img src="static/img/all/empty-cart.png"></a>
  544. <a>B2B 商务</a>
  545. </div>
  546. <div class="right_link">
  547. <p>暂无对应的发票信息</p>
  548. </div>
  549. </div>
  550. </td>
  551. </tr>
  552. </tbody>
  553. <tbody ng-repeat="bill in $data">
  554. <tr class="order-hd">
  555. <td class="first" colspan="6">
  556. <div class="order-main">
  557. <!--<span> <input type="checkbox" class="selector"
  558. ng-model="bill.$selected">
  559. </span> -->
  560. <span class="text-num text-bold" title="{{::bill.date | date: 'yyyy年MM月dd日 hh:mm'}}">
  561. 日期:{{bill.date | date:'yyyy-MM-dd'}}
  562. </span>
  563. <span>流水号:<a style="color: #5078cb;" ui-sref="fa_apBill_detail({id:bill.id})"><span
  564. class="text-num" ng-bind="::bill.code"></span></a></span>
  565. <span title="客户名称">
  566. <img src="static/img/user/images/shop_home.png">{{::bill.enterprise.enName}}
  567. </span>
  568. <span ng-if="isUser" title="票据总额">
  569. <span ng-bind="::bill.currency"></span>
  570. <span ng-bind="::bill.apAmount"></span>
  571. </span>
  572. <div class="operates">
  573. <!-- <a href="#" class="text-muted" title="打印">
  574. <i class="fa fa-print fa-lg fa-fw"></i>
  575. </a> -->
  576. </div>
  577. </div>
  578. </td>
  579. <!--<td colspan="3"></td>-->
  580. <!--<td colspan="1" class="order-sum text-num">-->
  581. <!---->
  582. <!--</td>-->
  583. </tr>
  584. <tr class="order-bd order-bdd" ng-repeat="item in bill.items">
  585. <td class="product">
  586. <div class="text-num text-bold">
  587. <span ng-bind="::item.product.code"></span>
  588. </div>
  589. <div>
  590. <span ng-bind="::item.product.title"></span>
  591. </div>
  592. <div class="text-muted" title="{{::item.product.spec}}"
  593. ng-bind="::item.product.spec"></div>
  594. </td>
  595. <td class="text-center">
  596. <div class="text-num" title="{{::item.price}}">
  597. <span ng-if="!isUser" ng-bind="::bill.currency"></span>
  598. <span ng-if="!isUser" ng-bind="::item.price"></span>
  599. <span ng-if="isUser" ng-bind="'-'"></span>
  600. </div>
  601. <div>&nbsp;</div>
  602. <div class="text-muted"
  603. title="{{::'税率:' + item.taxrate + '%'}}">
  604. 税率:<span class="text-num" ng-bind="::item.taxrate"></span>%
  605. </div>
  606. </td>
  607. <td class="text-center">
  608. <div class="text-num"
  609. title="{{::item.qty}}" ng-bind="::item.qty"></div>
  610. </td>
  611. <td class="text-center br-l">
  612. <div class="text-num text-bold">
  613. <span ng-if="!isUser" ng-bind="::bill.currency"></span>
  614. <span ng-if="!isUser" ng-bind="::item.apAmount"></span>
  615. <span ng-if="isUser" class="text-num" ng-bind="::'-'"></span>
  616. </div>
  617. <div>&nbsp;</div>
  618. <div class="text-muted">
  619. 税金:
  620. <span ng-if="!isUser" class="text-num" ng-bind="::bill.currency"></span>
  621. <span ng-if="!isUser" class="text-num" ng-bind="::item.taxAmount"></span>
  622. <span ng-if="isUser" class="text-num" ng-bind="::'-'"></span>
  623. </div>
  624. </td>
  625. <td class="br-l" colspan="2" ng-if="item.orderCode">
  626. <div>单据编号:<span ng-bind="::item.orderCode"></span></div>
  627. <div>
  628. 第 <span ng-bind="::item.orderDetno"></span> 行
  629. &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="::item.thisvoQty">
  630. </span><span class="text-muted" ng-bind="::item.product.unit"></span>
  631. </div>
  632. <div class="text-muted">单据金额:
  633. <span ng-if="!isUser" class="text-num" ng-bind="::bill.currency"></span>
  634. <span ng-if="!isUser" class="text-num" ng-bind="::item.amount"></span>
  635. <span ng-if="isUser" class="text-num" ng-bind="::'-'"></span>
  636. </div>
  637. </td>
  638. <td class="br-l" colspan="2" ng-if="!item.orderCode">
  639. <div>
  640. &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="::item.thisvoQty">
  641. </span><span class="text-muted" ng-bind="::item.product.unit"></span>
  642. </div>
  643. <div class="text-muted">单据金额:
  644. <span ng-if="!isUser" class="text-num" ng-bind="::bill.currency"></span>
  645. <span ng-if="!isUser" class="text-num" ng-bind="::item.amount"></span>
  646. <span ng-if="isUser" class="text-num" ng-bind="::'-'"></span>
  647. </div>
  648. </td>
  649. </tr>
  650. </tbody>
  651. </table>
  652. <div ng-if="infoCommon.totalElement > 0" class="text-mns text-right" ng-class="infoCommon.totalElement >= 20 ? '': 'Boom18'">
  653. 显示&nbsp;{{(infoCommon .page - 1 ) * infoCommon.size + 1}}-{{infoCommon.all >= 20 ? infoCommon.page * infoCommon.size: (infoCommon.page - 1 ) * infoCommon.size + infoCommon.all}}&nbsp;条,共&nbsp;{{infoCommon.totalElement}}&nbsp;条
  654. </div>
  655. </div>