sum_list.vue 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190
  1. <template>
  2. <div class="app-container">
  3. <div v-show="!isShowPrint">
  4. <!-- 筛选条件 -->
  5. <div class="screen-container">
  6. <Collapse :is-collapse="isCollapse" :screen-form="screenForm">
  7. <template #right_btn>
  8. <el-button size="mini" @click="resetScreenForm">清空</el-button>
  9. <el-button size="mini" type="primary" @click="submitScreenForm">搜索</el-button>
  10. </template>
  11. <template #search>
  12. <el-form ref="screenForm" :model="screenForm" label-width="120px" size="mini" label-position="left">
  13. <el-row :gutter="20">
  14. <el-col :xs="24" :sm="12" :lg="6">
  15. <el-form-item label="产品名称" prop="goodsName">
  16. <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称" />
  17. </el-form-item>
  18. </el-col>
  19. <el-col :xs="24" :sm="12" :lg="6">
  20. <el-form-item label="物料编码" prop="goodsCode">
  21. <el-input v-model="screenForm.goodsCode" placeholder="请输入物料编码" />
  22. </el-form-item>
  23. </el-col>
  24. <el-col :xs="24" :sm="12" :lg="6">
  25. <el-form-item label="产品编码" prop="goodsOldCode">
  26. <el-input v-model="screenForm.goodsOldCode" placeholder="请输入产品编码" />
  27. </el-form-item>
  28. </el-col>
  29. <el-col :xs="24" :sm="12" :lg="6">
  30. <el-form-item label="规格型号" prop="model">
  31. <el-input v-model="screenForm.model" placeholder="请输入规格型号" />
  32. </el-form-item>
  33. </el-col>
  34. <el-col :xs="24" :sm="12" :lg="6">
  35. <el-form-item label="制单日期" prop="createDate">
  36. <el-date-picker
  37. v-model="screenForm.createDate"
  38. type="datetimerange"
  39. range-separator="至"
  40. style="width: 100%"
  41. value-format="yyyy-MM-dd HH:mm:ss"
  42. start-placeholder="开始日期"
  43. end-placeholder="结束日期"
  44. />
  45. </el-form-item>
  46. </el-col>
  47. <el-col :xs="24" :sm="12" :lg="6">
  48. <el-form-item label="发货日期" prop="deliverDate">
  49. <el-date-picker
  50. v-model="screenForm.deliverDate"
  51. type="datetimerange"
  52. range-separator="至"
  53. style="width: 100%"
  54. value-format="yyyy-MM-dd HH:mm:ss"
  55. start-placeholder="开始日期"
  56. end-placeholder="结束日期"
  57. />
  58. </el-form-item>
  59. </el-col>
  60. <el-col :xs="24" :sm="12" :lg="6">
  61. <el-form-item label="经销商编号" prop="jxsNum">
  62. <el-input v-model="screenForm.jxsNum" placeholder="请输入经销商编号" />
  63. </el-form-item>
  64. </el-col>
  65. <el-col :xs="24" :sm="12" :lg="6">
  66. <el-form-item label="经销商名称" prop="jxsName">
  67. <el-input v-model="screenForm.jxsName" placeholder="请输入经销商名称" />
  68. </el-form-item>
  69. </el-col>
  70. <el-col :xs="24" :sm="12" :lg="6">
  71. <el-form-item label="发货单号" prop="orderNum">
  72. <el-input v-model="screenForm.orderNum" placeholder="请输入发货单号" />
  73. </el-form-item>
  74. </el-col>
  75. <el-col :xs="24" :sm="12" :lg="6">
  76. <el-form-item label="订单" prop="mainOrderId">
  77. <el-input v-model="screenForm.mainOrderId" placeholder="请输入订单" />
  78. </el-form-item>
  79. </el-col>
  80. <el-col :xs="24" :sm="12" :lg="6">
  81. <el-form-item label="存货类别" prop="type">
  82. <el-select v-model="screenForm.type" placeholder="选择存货类别" style="width: 100%" clearable>
  83. <el-option v-for="item in categoryList" :key="item.name" :label="item.name" :value="item.name" />
  84. </el-select>
  85. </el-form-item>
  86. </el-col>
  87. <el-col :xs="24" :sm="12" :lg="6">
  88. <el-form-item label="仓库" prop="correspondId">
  89. <el-select
  90. v-model="screenForm.correspondId"
  91. multiple
  92. style="width: 100%"
  93. placeholder="请选择仓库"
  94. size="mini"
  95. filterable
  96. clearable
  97. >
  98. <el-option
  99. v-for="(item, index) in warehouseList"
  100. :key="index"
  101. :label="item.name"
  102. :value="item.id"
  103. />
  104. </el-select>
  105. </el-form-item>
  106. </el-col>
  107. <el-col :xs="24" :sm="12" :lg="6">
  108. <el-form-item label="表头业务员" prop="k3ServiceId">
  109. <el-select
  110. v-model="screenForm.k3ServiceId"
  111. placeholder="选择表头业务员"
  112. clearable
  113. filterable
  114. style="width: 100%"
  115. >
  116. <el-option
  117. v-for="item in salesmanList"
  118. :key="item.adminUserId"
  119. :label="item.nickName"
  120. :value="item.adminUserId"
  121. />
  122. </el-select>
  123. </el-form-item>
  124. </el-col>
  125. <el-col :xs="24" :sm="12" :lg="6">
  126. <el-form-item label="表体业务员" prop="salesMan">
  127. <el-select
  128. v-model="screenForm.salesMan"
  129. placeholder="选择表体业务员"
  130. clearable
  131. filterable
  132. style="width: 100%"
  133. >
  134. <el-option
  135. v-for="item in salesmanList"
  136. :key="item.adminUserId"
  137. :label="item.nickName"
  138. :value="item.adminUserId"
  139. />
  140. </el-select>
  141. </el-form-item>
  142. </el-col>
  143. <el-col :xs="24" :sm="12" :lg="6">
  144. <el-form-item label="审核时间" prop="approvaTime">
  145. <el-date-picker
  146. v-model="screenForm.approvaTime"
  147. type="datetimerange"
  148. range-separator="至"
  149. style="width: 100%"
  150. value-format="yyyy-MM-dd HH:mm:ss"
  151. start-placeholder="开始日期"
  152. end-placeholder="结束日期"
  153. />
  154. </el-form-item>
  155. </el-col>
  156. <el-col :xs="24" :sm="12" :lg="6">
  157. <el-form-item label="申请发货单类型" prop="types">
  158. <el-select
  159. v-model="screenForm.types"
  160. placeholder="选择申请发货单类型"
  161. clearable
  162. filterable
  163. style="width: 100%"
  164. >
  165. <el-option
  166. v-for="item in invoiceList"
  167. :key="item.value"
  168. :label="item.label"
  169. :value="item.value"
  170. />
  171. </el-select>
  172. </el-form-item>
  173. </el-col>
  174. <el-col :xs="24" :sm="12" :lg="6">
  175. <el-form-item label="预约提货打印" prop="printStatus">
  176. <el-select
  177. v-model="screenForm.printStatus"
  178. placeholder="选择预约提货打印"
  179. clearable
  180. filterable
  181. style="width: 100%"
  182. >
  183. <el-option label="是" :value="1" />
  184. <el-option label="否" :value="0" />
  185. </el-select>
  186. </el-form-item>
  187. </el-col>
  188. <el-col :xs="24" :sm="12" :lg="6">
  189. <el-form-item label="区域" prop="discriminate">
  190. <el-select
  191. v-model="screenForm.discriminate"
  192. placeholder="选择区域"
  193. clearable
  194. filterable
  195. style="width: 100%"
  196. >
  197. <el-option label="广州" value="GZ" />
  198. <el-option label="佛山" value="FS" />
  199. </el-select>
  200. </el-form-item>
  201. </el-col>
  202. <el-col :xs="24" :sm="12" :lg="6">
  203. <el-form-item label="工程登录单号" prop="refEnginRecordNo">
  204. <el-input v-model="screenForm.refEnginRecordNo" placeholder="请输入工程登录单号" />
  205. </el-form-item>
  206. </el-col>
  207. <el-col :xs="24" :sm="12" :lg="6">
  208. <el-form-item label="制单人" prop="createBy">
  209. <el-input v-model="screenForm.createBy" placeholder="请输入制单人" />
  210. </el-form-item>
  211. </el-col>
  212. <el-col :xs="24" :sm="12" :lg="6">
  213. <el-form-item label="发货汇总打印" prop="invoicePrintStatus">
  214. <el-select
  215. v-model="screenForm.invoicePrintStatus"
  216. placeholder="选择发货汇总打印"
  217. clearable
  218. filterable
  219. style="width: 100%"
  220. >
  221. <el-option label="是" :value="1" />
  222. <el-option label="否" :value="0" />
  223. </el-select>
  224. </el-form-item>
  225. </el-col>
  226. </el-row>
  227. </el-form>
  228. </template>
  229. </Collapse>
  230. </div>
  231. <div class="mymain-container">
  232. <div class="btn-group clearfix">
  233. <div class="fl">
  234. <el-button type="primary" size="mini" :disabled="tableSelection.length < 1" @click="toPrint"
  235. >打印发货单
  236. </el-button>
  237. <div v-if="totalNum" class="num">当前列表总发货数量:{{ totalNum }}</div>
  238. </div>
  239. <!-- -->
  240. <div class="fr" style="display: flex">
  241. <el-button
  242. v-if="$checkBtnRole('refund', $route.meta.roles)"
  243. size="mini"
  244. type="primary"
  245. style="margin-right: 10px"
  246. icon="el-icon-plus"
  247. @click="$router.push('/return_goods/new_apply?isShow=true')"
  248. >零售退货申请</el-button
  249. >
  250. <el-button
  251. v-if="$checkBtnRole('refund', $route.meta.roles)"
  252. size="mini"
  253. type="primary"
  254. style="margin-right: 10px"
  255. icon="el-icon-plus"
  256. @click="$router.push('/return_goods/new_engin?isShow=true')"
  257. >工程退货申请</el-button
  258. >
  259. <!-- <el-button size="mini"
  260. type="primary"
  261. icon="el-icon-download"
  262. @click="handleFilterData"
  263. >
  264. 导出数据
  265. </el-button> -->
  266. <ExportButton :ex-url="'invoice/exportInvoice'" :ex-params="exParams" />
  267. </div>
  268. </div>
  269. <div class="table">
  270. <el-table
  271. ref="table"
  272. v-loading="listLoading"
  273. :data="dataList"
  274. element-loading-text="Loading"
  275. border
  276. fit
  277. highlight-current-row
  278. stripe
  279. show-summary
  280. :summary-method="$getSummaries"
  281. max-height="500"
  282. @select="handleSelect"
  283. @select-all="handleSelectAll"
  284. >
  285. <el-table-column align="center" type="selection" width="55" />
  286. <el-table-column
  287. align="right"
  288. label="打印次数"
  289. sortable
  290. prop="printNum"
  291. min-width="100"
  292. show-overflow-tooltip
  293. />
  294. <el-table-column
  295. align="left"
  296. label="订单类型"
  297. sortable
  298. prop="orderType"
  299. min-width="100"
  300. show-overflow-tooltip
  301. >
  302. <template slot-scope="scope">
  303. {{ scope.row.orderType | orderTypeFilter }}
  304. </template>
  305. </el-table-column>
  306. <el-table-column
  307. align="left"
  308. label="审核日期"
  309. sortable
  310. prop="approvalTime"
  311. min-width="160"
  312. show-overflow-tooltip
  313. />
  314. <el-table-column
  315. align="left"
  316. label="发货日期"
  317. sortable
  318. prop="orderTime"
  319. min-width="160"
  320. show-overflow-tooltip
  321. />
  322. <el-table-column
  323. align="left"
  324. label="订单日期"
  325. sortable
  326. prop="theTime"
  327. min-width="160"
  328. show-overflow-tooltip
  329. />
  330. <el-table-column align="left" label="发货单号" sortable prop="id" min-width="130" show-overflow-tooltip>
  331. <template slot-scope="scope">
  332. <CopyButton :copy-text="scope.row.id" />
  333. <span>{{ scope.row.id }}</span>
  334. </template>
  335. </el-table-column>
  336. <el-table-column align="left" label="订单号" sortable prop="orderId" min-width="140" show-overflow-tooltip>
  337. <template slot-scope="scope">
  338. <CopyButton
  339. :copy-text="
  340. scope.row.enginOrderType == 'HOME' || scope.row.enginOrderType == 'TRADE'
  341. ? scope.row.enginOrderNo
  342. : scope.row.mainOrderId
  343. "
  344. />
  345. <span>{{
  346. scope.row.enginOrderType == 'HOME' || scope.row.enginOrderType == 'TRADE'
  347. ? scope.row.enginOrderNo
  348. : scope.row.mainOrderId
  349. }}</span>
  350. </template>
  351. </el-table-column>
  352. <el-table-column
  353. align="left"
  354. label="经销商编码"
  355. sortable
  356. prop="customerNumber"
  357. min-width="120"
  358. show-overflow-tooltip
  359. >
  360. <template slot-scope="scope">
  361. <CopyButton :copy-text="scope.row.customerNumber" />
  362. <span>{{ scope.row.customerNumber }}</span>
  363. </template>
  364. </el-table-column>
  365. <el-table-column
  366. align="left"
  367. label="经销商名称"
  368. sortable
  369. prop="customerName"
  370. min-width="250"
  371. show-overflow-tooltip
  372. >
  373. <template slot-scope="scope">
  374. <CopyButton :copy-text="scope.row.customerName" />
  375. <span>{{ scope.row.customerName }}</span>
  376. </template>
  377. </el-table-column>
  378. <el-table-column
  379. align="left"
  380. label="销售类型"
  381. sortable
  382. prop="saleTypeName"
  383. min-width="100"
  384. show-overflow-tooltip
  385. />
  386. <el-table-column
  387. align="left"
  388. label="物料编码"
  389. sortable
  390. prop="materialCode"
  391. min-width="120"
  392. show-overflow-tooltip
  393. >
  394. <template slot-scope="scope">
  395. <CopyButton :copy-text="scope.row.materialCode" />
  396. <span>{{ scope.row.materialCode }}</span>
  397. </template>
  398. </el-table-column>
  399. <el-table-column
  400. align="left"
  401. label="产品编码"
  402. sortable
  403. prop="materialOldNumber"
  404. min-width="140"
  405. show-overflow-tooltip
  406. >
  407. <template slot-scope="scope">
  408. <CopyButton :copy-text="scope.row.materialOldNumber" />
  409. <span>{{ scope.row.materialOldNumber }}</span>
  410. </template>
  411. </el-table-column>
  412. <el-table-column
  413. align="left"
  414. label="产品名称"
  415. sortable
  416. prop="materialName"
  417. min-width="160"
  418. show-overflow-tooltip
  419. >
  420. <template slot-scope="scope">
  421. <CopyButton :copy-text="scope.row.materialName" />
  422. <span>{{ scope.row.materialName }}</span>
  423. </template>
  424. </el-table-column>
  425. <el-table-column
  426. align="left"
  427. label="规格型号"
  428. sortable
  429. prop="specification"
  430. min-width="350"
  431. show-overflow-tooltip
  432. >
  433. <template slot-scope="scope">
  434. <CopyButton :copy-text="scope.row.specification" />
  435. <span>{{ scope.row.specification }}</span>
  436. </template>
  437. </el-table-column>
  438. <el-table-column
  439. align="left"
  440. label="仓库"
  441. sortable
  442. prop="correspondName"
  443. min-width="100"
  444. show-overflow-tooltip
  445. />
  446. <el-table-column
  447. align="right"
  448. label="未出库数量"
  449. sortable
  450. prop="compute_wckNum"
  451. min-width="120"
  452. show-overflow-tooltip
  453. >
  454. <template slot-scope="scope">
  455. {{ comRefundableQty(scope.row.type, scope.row.salesExamineStatus, scope.row) }}
  456. </template>
  457. </el-table-column>
  458. <el-table-column
  459. align="right"
  460. label="发货数量"
  461. sortable
  462. prop="refundableQty"
  463. min-width="120"
  464. show-overflow-tooltip
  465. />
  466. <el-table-column
  467. align="right"
  468. label="发货金额"
  469. sortable
  470. prop="payAmount"
  471. min-width="100"
  472. show-overflow-tooltip
  473. >
  474. <template slot-scope="scope">
  475. {{ scope.row.payAmount | numToFixed }}
  476. </template>
  477. </el-table-column>
  478. <el-table-column
  479. align="right"
  480. label="发货返利金额"
  481. sortable
  482. prop="payRebateAmount"
  483. min-width="130"
  484. show-overflow-tooltip
  485. >
  486. <template slot-scope="scope">
  487. {{ scope.row.payRebateAmount | numToFixed }}
  488. </template>
  489. </el-table-column>
  490. <el-table-column
  491. align="right"
  492. label="发货折扣金额"
  493. sortable
  494. prop="totalDiscAmount"
  495. min-width="130"
  496. show-overflow-tooltip
  497. >
  498. <template slot-scope="scope">
  499. {{ scope.row.totalDiscAmount | numToFixed }}
  500. </template>
  501. </el-table-column>
  502. <el-table-column
  503. align="right"
  504. label="折扣额合计"
  505. sortable
  506. prop="compute_zkeAmount"
  507. min-width="120"
  508. show-overflow-tooltip
  509. >
  510. <template slot-scope="scope">
  511. {{ (scope.row.totalDiscAmount + scope.row.payRebateAmount) | numToFixed }}
  512. </template>
  513. </el-table-column>
  514. <el-table-column
  515. align="right"
  516. label="含税单价"
  517. sortable
  518. prop="singlePayPrice"
  519. min-width="100"
  520. show-overflow-tooltip
  521. >
  522. <template slot-scope="scope">
  523. {{ scope.row.singlePayPrice | numToFixed }}
  524. </template>
  525. </el-table-column>
  526. <el-table-column
  527. align="right"
  528. label="含税总额"
  529. sortable
  530. prop="payAmount"
  531. min-width="100"
  532. show-overflow-tooltip
  533. >
  534. <template slot-scope="scope">
  535. {{ scope.row.payAmount | numToFixed }}
  536. </template>
  537. </el-table-column>
  538. <el-table-column
  539. align="left"
  540. label="表头业务员"
  541. sortable
  542. prop="k3ServiceName"
  543. min-width="120"
  544. show-overflow-tooltip
  545. />
  546. <el-table-column
  547. align="left"
  548. label="表体业务员"
  549. sortable
  550. prop="serviceName"
  551. min-width="120"
  552. show-overflow-tooltip
  553. />
  554. <el-table-column
  555. align="left"
  556. label="政策单号"
  557. sortable
  558. prop="policyCode"
  559. min-width="100"
  560. show-overflow-tooltip
  561. />
  562. <el-table-column
  563. align="left"
  564. label="政策名称"
  565. sortable
  566. prop="policyTitle"
  567. min-width="100"
  568. show-overflow-tooltip
  569. />
  570. <el-table-column
  571. align="left"
  572. label="区域"
  573. sortable
  574. prop="adminArea"
  575. min-width="100"
  576. show-overflow-tooltip
  577. />
  578. <el-table-column
  579. align="left"
  580. label="业务区域"
  581. sortable
  582. prop="serviceArea"
  583. min-width="100"
  584. show-overflow-tooltip
  585. />
  586. <el-table-column align="left" label="月份" sortable prop="month" min-width="100" show-overflow-tooltip />
  587. <el-table-column
  588. align="left"
  589. label="项目编码"
  590. sortable
  591. prop="refEnginRecordNo"
  592. min-width="160"
  593. show-overflow-tooltip
  594. />
  595. <el-table-column
  596. align="left"
  597. label="项目名称"
  598. sortable
  599. prop="refProjectName"
  600. min-width="160"
  601. show-overflow-tooltip
  602. />
  603. <el-table-column
  604. align="left"
  605. label="存货类别"
  606. sortable
  607. prop="categoryName"
  608. min-width="160"
  609. show-overflow-tooltip
  610. />
  611. <el-table-column
  612. align="left"
  613. label="申请发货单备注"
  614. sortable
  615. prop="remark"
  616. min-width="200"
  617. show-overflow-tooltip
  618. />
  619. <el-table-column
  620. align="left"
  621. label="表头备注"
  622. sortable
  623. prop="headerRemark"
  624. min-width="200"
  625. show-overflow-tooltip
  626. />
  627. <el-table-column
  628. align="left"
  629. label="表体备注"
  630. sortable
  631. prop="invoiceRemark"
  632. min-width="200"
  633. show-overflow-tooltip
  634. />
  635. <el-table-column
  636. align="left"
  637. label="打印次数"
  638. sortable
  639. prop="printNum"
  640. min-width="100"
  641. show-overflow-tooltip
  642. />
  643. <el-table-column
  644. align="left"
  645. label="经销商现金钱包"
  646. sortable
  647. prop="customerWalletName"
  648. min-width="140"
  649. show-overflow-tooltip
  650. />
  651. <el-table-column
  652. align="left"
  653. label="经销商返利钱包"
  654. sortable
  655. prop="customerWalletName2"
  656. min-width="140"
  657. show-overflow-tooltip
  658. />
  659. <el-table-column
  660. align="left"
  661. label="文件编号"
  662. sortable
  663. prop="itemFileNo"
  664. min-width="100"
  665. show-overflow-tooltip
  666. />
  667. <el-table-column align="left" label="制单人" prop="createBy" min-width="100" show-overflow-tooltip />
  668. <el-table-column
  669. align="left"
  670. label="预约提货打印状态"
  671. sortable
  672. prop="printStatus"
  673. min-width="150"
  674. show-overflow-tooltip
  675. >
  676. <template slot-scope="scope">
  677. {{ scope.row.printStatus == 1 ? `打印` : ` 未打印` }}
  678. </template>
  679. </el-table-column>
  680. <el-table-column
  681. align="left"
  682. label="二级经销商代码"
  683. sortable
  684. prop="secondCustomerNumber"
  685. min-width="150"
  686. show-overflow-tooltip
  687. />
  688. </el-table>
  689. </div>
  690. </div>
  691. <div class="pagination clearfix">
  692. <div class="fr">
  693. <el-pagination
  694. :current-page="currentPage"
  695. :page-sizes="[10, 20, 50, 100, 500, 1000, 2000]"
  696. :page-size="10"
  697. layout="total, sizes, prev, pager, next, jumper"
  698. :total="listTotal"
  699. @size-change="handleSizeChange"
  700. @current-change="handleCurrentChange"
  701. />
  702. </div>
  703. </div>
  704. </div>
  705. <print-preview ref="preView" />
  706. <el-dialog
  707. title="密码确认"
  708. :visible.sync="isShowDialog"
  709. :show-close="false"
  710. width="40%"
  711. :close-on-click-modal="false"
  712. >
  713. <el-form ref="dialogForm" :model="dialogForm" :rules="dialogFormRules" label-position="right" label-width="70px">
  714. <el-row :gutter="20">
  715. <el-col :xs="24" :sm="24" :lg="24">
  716. <el-form-item label="密码" prop="password">
  717. <el-input v-model="dialogForm.password" autocomplete="off" placeholder="请输入密码" />
  718. </el-form-item>
  719. </el-col>
  720. <el-col :xs="24" :sm="12" :lg="12">
  721. <el-form-item label="操作人" prop="createMan">
  722. <el-input v-model="dialogForm.createMan" readonly />
  723. </el-form-item>
  724. </el-col>
  725. <el-col :xs="24" :sm="12" :lg="12" style="height: 51px">
  726. <el-form-item label="操作日期" prop="createDate">
  727. <el-date-picker
  728. v-model="dialogForm.createDate"
  729. readonly
  730. type="date"
  731. value-format="yyyy-MM-dd"
  732. style="width: 100%"
  733. placeholder="选择日期"
  734. />
  735. </el-form-item>
  736. </el-col>
  737. </el-row>
  738. </el-form>
  739. <div slot="footer" class="dialog-footer">
  740. <el-button @click="cancelDialogForm">取 消</el-button>
  741. <el-button type="primary" @click="submitDialogForm">确 定</el-button>
  742. </div>
  743. </el-dialog>
  744. <el-dialog title="导出项" :visible.sync="dialogVisible" width="50%">
  745. <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAllChange">全选</el-checkbox>
  746. <div style="margin: 15px 0" />
  747. <el-checkbox-group v-model="check" @change="handleCheckedCitiesChange">
  748. <el-checkbox v-for="item in excelData" :label="item.value">{{ item.name }}</el-checkbox>
  749. </el-checkbox-group>
  750. <span slot="footer" class="dialog-footer">
  751. <el-button @click="dialogVisible = false">取 消</el-button>
  752. <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
  753. </span>
  754. </el-dialog>
  755. </div>
  756. </template>
  757. <script>
  758. import { getSumList } from '@/api/supply/deliver'
  759. import print from '@/mixin/print'
  760. import { checkPassword, getListInvoiceNumber } from '@/api/supply/pickup'
  761. import { getCategoryList, getSalesmanList } from '@/api/common'
  762. import SumPrint from '@/views/supply/deliver/components/sum_print'
  763. import { getWarehouseList } from '@/api/supply/apply'
  764. import printPreview from './components/design/preview.vue'
  765. export default {
  766. components: {
  767. SumPrint,
  768. printPreview
  769. },
  770. filters: {
  771. orderTypeFilter(val) {
  772. const MAP = {
  773. HOME: '家用单',
  774. TRADE: '商用单',
  775. RETAIL: '零售单',
  776. RETAIL_POLICY: '销售政策单',
  777. PERMU_HOME: '置换家用单',
  778. PERMU_TRADE: '置换商用单',
  779. PERMU_RETAIL: '置换零售单',
  780. PERMU_RETAIL_POLICY: '置换销售政策单',
  781. REQUISITION_HOME: '调拨家用单',
  782. REQUISITION_TRADE: '调拨商用单',
  783. REQUISITION_RETAIL: '调拨零售单',
  784. REQUISITION_RETAIL_POLICY: '调拨销售政策单'
  785. }
  786. return MAP[val]
  787. }
  788. },
  789. mixins: [print],
  790. data() {
  791. return {
  792. currentPage: 1, // 当前页码
  793. pageSize: 10, // 每页数量
  794. listTotal: 0, // 列表总数
  795. dataList: null, // 列表数据
  796. listLoading: false, // 列表加载loading
  797. screenForm: {
  798. // 筛选表单数据
  799. goodsName: '',
  800. goodsCode: '',
  801. goodsOldCode: '',
  802. model: '',
  803. createDate: '',
  804. deliverDate: '',
  805. correspondId: [],
  806. jxsNum: '',
  807. jxsName: '',
  808. orderNum: '',
  809. type: '',
  810. salesMan: '',
  811. k3ServiceId: '',
  812. mainOrderId: '',
  813. approvaTime: '',
  814. types: '',
  815. printStatus: '',
  816. discriminate: '',
  817. refEnginRecordNo: '',
  818. invoicePrintStatus: '',
  819. createBy: ''
  820. },
  821. invoiceList: [
  822. {
  823. value: 1,
  824. label: '申请发货单'
  825. },
  826. {
  827. value: 2,
  828. label: '退货单'
  829. },
  830. {
  831. value: 3,
  832. label: '直调发货单'
  833. }
  834. ],
  835. categoryList: [],
  836. salesmanList: [],
  837. tableSelection: [],
  838. queryItem: {},
  839. isShowPrint: false,
  840. totalNum: 0,
  841. isShowDialog: false,
  842. dialogForm: {
  843. password: '',
  844. createMan: '',
  845. createDate: ''
  846. },
  847. warehouseList: [],
  848. dialogFormRules: {
  849. password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
  850. },
  851. dialogVisible: false,
  852. excelData: [
  853. {
  854. value: 1,
  855. name: '状态'
  856. },
  857. {
  858. value: 2,
  859. name: '打印时间'
  860. }
  861. ],
  862. check: [],
  863. checkAll: false,
  864. isCollapse: true,
  865. isIndeterminate: false
  866. }
  867. },
  868. computed: {
  869. exParams() {
  870. return {
  871. materialName: this.screenForm.goodsName,
  872. materialNumber: this.screenForm.goodsCode,
  873. materialOldNumber: this.screenForm.goodsOldCode,
  874. specification: this.screenForm.model,
  875. discriminate: this.screenForm.discriminate,
  876. refEnginRecordNo: this.screenForm.refEnginRecordNo,
  877. createBy: this.screenForm.createBy,
  878. createStartTime: this.screenForm.createDate ? this.screenForm.createDate[0] : '',
  879. createEndTime: this.screenForm.createDate ? this.screenForm.createDate[1] : '',
  880. startTime: this.screenForm.deliverDate ? this.screenForm.deliverDate[0] : '',
  881. endTime: this.screenForm.deliverDate ? this.screenForm.deliverDate[1] : '',
  882. customerNumber: this.screenForm.jxsNum,
  883. customerName: this.screenForm.jxsName,
  884. id: this.screenForm.orderNum,
  885. categoryName: this.screenForm.type,
  886. serviceId: this.screenForm.salesMan,
  887. k3ServiceId: this.screenForm.k3ServiceId,
  888. mainOrderId: this.screenForm.mainOrderId,
  889. printStatus: this.screenForm.printStatus,
  890. invoicePrintStatus: this.screenForm.invoicePrintStatus,
  891. approvalEndTime: this.screenForm.approvaTime ? this.screenForm.approvaTime[1] : '',
  892. approvalStartTime: this.screenForm.approvaTime ? this.screenForm.approvaTime[0] : '',
  893. correspondId: this.screenForm.correspondId.join(','),
  894. type: this.screenForm.types
  895. }
  896. },
  897. comRefundableQty() {
  898. return (type, status, row) => {
  899. if (type == 2) {
  900. return ''
  901. } else {
  902. if (status == 'OK') {
  903. return 0
  904. } else {
  905. return row.refundableQty
  906. }
  907. }
  908. }
  909. }
  910. },
  911. watch: {
  912. dataList: {
  913. handler(newValue, oldValue) {
  914. if (newValue && newValue.length) {
  915. newValue.forEach((item, index) => {
  916. this.dataList[index].compute_zkeAmount = item.totalDiscAmount + item.payRebateAmount
  917. this.dataList[index].compute_wckNum = this.comRefundableQty(item.type, item.salesExamineStatus, item)
  918. })
  919. }
  920. },
  921. immediate: true,
  922. deep: true
  923. }
  924. },
  925. created() {
  926. this.getSalesmanList()
  927. this.getCategoryList()
  928. this.getList()
  929. this.getWarehouseList()
  930. },
  931. mounted() {
  932. this.initPrint()
  933. },
  934. methods: {
  935. handleFilterData() {
  936. this.dialogVisible = true
  937. },
  938. handleCheckAllChange(val) {
  939. const arr = []
  940. if (val) {
  941. for (let i = 1; i <= this.excelData.length; i++) {
  942. arr.push(i)
  943. }
  944. }
  945. this.check = val ? arr : []
  946. this.isIndeterminate = false
  947. },
  948. handleCheckedCitiesChange() {
  949. console.log(this.checkAll)
  950. },
  951. // 获取业务员列表
  952. getSalesmanList() {
  953. getSalesmanList({
  954. pageNum: 1,
  955. pageSize: -1,
  956. isCustomer: 0,
  957. status: true
  958. }).then(res => {
  959. this.salesmanList = res.data.records
  960. })
  961. },
  962. // 获取存货类别列表
  963. getCategoryList() {
  964. getCategoryList({
  965. pageNum: 1,
  966. pageSize: -1
  967. }).then(res => {
  968. this.categoryList = res.data.records
  969. })
  970. },
  971. // 获取仓库列表
  972. getWarehouseList() {
  973. getWarehouseList({
  974. pageNum: 1,
  975. pageSize: -1
  976. }).then(res => {
  977. this.warehouseList = res.data.records
  978. })
  979. },
  980. // 查询列表
  981. getList() {
  982. this.listLoading = true
  983. const params = {
  984. pageNum: this.currentPage,
  985. pageSize: this.pageSize,
  986. materialName: this.screenForm.goodsName,
  987. materialNumber: this.screenForm.goodsCode,
  988. materialOldNumber: this.screenForm.goodsOldCode,
  989. specification: this.screenForm.model,
  990. printStatus: this.screenForm.printStatus,
  991. invoicePrintStatus: this.screenForm.invoicePrintStatus,
  992. discriminate: this.screenForm.discriminate,
  993. createBy: this.screenForm.createBy,
  994. refEnginRecordNo: this.screenForm.refEnginRecordNo,
  995. createStartTime: this.screenForm.createDate ? this.screenForm.createDate[0] : '',
  996. createEndTime: this.screenForm.createDate ? this.screenForm.createDate[1] : '',
  997. startTime: this.screenForm.deliverDate ? this.screenForm.deliverDate[0] : '',
  998. endTime: this.screenForm.deliverDate ? this.screenForm.deliverDate[1] : '',
  999. customerNumber: this.screenForm.jxsNum,
  1000. customerName: this.screenForm.jxsName,
  1001. id: this.screenForm.orderNum,
  1002. categoryName: this.screenForm.type,
  1003. serviceId: this.screenForm.salesMan,
  1004. k3ServiceId: this.screenForm.k3ServiceId,
  1005. mainOrderId: this.screenForm.mainOrderId,
  1006. approvalEndTime: this.screenForm.approvaTime ? this.screenForm.approvaTime[1] : '',
  1007. approvalStartTime: this.screenForm.approvaTime ? this.screenForm.approvaTime[0] : '',
  1008. correspondId: this.screenForm.correspondId.join(','),
  1009. type: this.screenForm.types
  1010. }
  1011. getSumList(params).then(res => {
  1012. res.data.records.forEach(item => {
  1013. item.notOutNumber = item.salesStatus ? 0 : item.refundableQty
  1014. item.sums1 = ['refundableQty', 'compute_wckNum']
  1015. item.sums2 = [
  1016. 'payAmount',
  1017. 'payRebateAmount',
  1018. 'discAmount',
  1019. 'totalDiscAmount',
  1020. 'singlePayPrice',
  1021. 'compute_zkeAmount'
  1022. ]
  1023. })
  1024. this.dataList = res.data.records
  1025. this.listTotal = res.data.total
  1026. this.listLoading = false
  1027. })
  1028. this.getListInvoiceNumber()
  1029. },
  1030. getListInvoiceNumber() {
  1031. const params = {
  1032. materialName: this.screenForm.goodsName,
  1033. materialNumber: this.screenForm.goodsCode,
  1034. materialOldNumber: this.screenForm.goodsOldCode,
  1035. specification: this.screenForm.model,
  1036. createBy: this.screenForm.createBy,
  1037. createStartTime: this.screenForm.createDate ? this.screenForm.createDate[0] : '',
  1038. createEndTime: this.screenForm.createDate ? this.screenForm.createDate[1] : '',
  1039. startTime: this.screenForm.deliverDate ? this.screenForm.deliverDate[0] : '',
  1040. endTime: this.screenForm.deliverDate ? this.screenForm.deliverDate[1] : '',
  1041. customerNumber: this.screenForm.jxsNum,
  1042. customerName: this.screenForm.jxsName,
  1043. id: this.screenForm.orderNum,
  1044. categoryName: this.screenForm.type,
  1045. serviceId: this.screenForm.salesMan,
  1046. k3ServiceId: this.screenForm.k3ServiceId,
  1047. mainOrderId: this.screenForm.mainOrderId,
  1048. approvalEndTime: this.screenForm.approvaTime ? this.screenForm.approvaTime[1] : '',
  1049. approvalStartTime: this.screenForm.approvaTime ? this.screenForm.approvaTime[0] : '',
  1050. correspondId: this.screenForm.correspondId.join(','),
  1051. type: this.screenForm.types
  1052. }
  1053. getListInvoiceNumber(params).then(res => {
  1054. // console.log(res,'ii');
  1055. this.totalNum = res.data
  1056. })
  1057. },
  1058. // 提交筛选表单
  1059. submitScreenForm() {
  1060. this.currentPage = 1
  1061. this.getList()
  1062. },
  1063. // 重置筛选表单
  1064. resetScreenForm() {
  1065. this.$refs.screenForm.resetFields()
  1066. this.currentPage = 1
  1067. this.getList()
  1068. },
  1069. // 更改每页数量
  1070. handleSizeChange(val) {
  1071. this.pageSize = val
  1072. this.currentPage = 1
  1073. this.getList()
  1074. },
  1075. // 更改当前页
  1076. handleCurrentChange(val) {
  1077. this.currentPage = val
  1078. this.getList()
  1079. },
  1080. handleSelect(selection, row) {
  1081. this.$refs.table.toggleRowSelection(row)
  1082. this.dataList.forEach(item => {
  1083. if (item.id === row.id) {
  1084. this.$refs.table.toggleRowSelection(item)
  1085. }
  1086. })
  1087. this.tableSelection = this.$refs.table.selection
  1088. },
  1089. handleSelectAll(selection) {
  1090. this.tableSelection = this.$refs.table.selection
  1091. },
  1092. // 点击打印
  1093. toPrint() {
  1094. this.queryItem = this.tableSelection
  1095. if (!this.tableSelection[0].printNum) {
  1096. this.queryItem = this.tableSelection
  1097. this.getDateil(this.tableSelection, 'getDeliverDetail').then(res => {
  1098. this.$endLoading()
  1099. this.$refs.preView.show(this.hiprintTemplate, this.outputData)
  1100. })
  1101. } else {
  1102. this.queryItem = this.tableSelection
  1103. this.dialogForm.createMan = JSON.parse(localStorage.getItem('supply_user')).nickName
  1104. this.dialogForm.createDate = this.getDate()
  1105. this.isShowDialog = true
  1106. }
  1107. },
  1108. // 关闭弹窗
  1109. cancelDialogForm() {
  1110. this.isShowDialog = false
  1111. this.$refs.dialogForm.resetFields()
  1112. },
  1113. // 提交 弹窗
  1114. submitDialogForm() {
  1115. this.$refs.dialogForm.validate(valid => {
  1116. if (valid) {
  1117. const params = {
  1118. shipId: this.queryItem[0].invoiceId,
  1119. password: this.dialogForm.password
  1120. }
  1121. checkPassword(params).then(res => {
  1122. this.getDateil(this.tableSelection, 'getDeliverDetail').then(res => {
  1123. this.$endLoading()
  1124. this.$refs.preView.show(this.hiprintTemplate, this.outputData)
  1125. })
  1126. this.cancelDialogForm()
  1127. })
  1128. }
  1129. })
  1130. },
  1131. getDate() {
  1132. var date = new Date()
  1133. var seperator1 = '-'
  1134. var year = date.getFullYear()
  1135. var month = date.getMonth() + 1
  1136. var strDate = date.getDate()
  1137. if (month >= 1 && month <= 9) {
  1138. month = '0' + month
  1139. }
  1140. if (strDate >= 0 && strDate <= 9) {
  1141. strDate = '0' + strDate
  1142. }
  1143. var currentdate = year + seperator1 + month + seperator1 + strDate
  1144. return currentdate
  1145. },
  1146. backList() {
  1147. this.queryItem = {}
  1148. this.isShowPrint = false
  1149. }
  1150. }
  1151. }
  1152. </script>
  1153. <style lang="scss" scoped>
  1154. .num {
  1155. display: inline-block;
  1156. font-size: 16px;
  1157. margin-left: 20px;
  1158. color: #909399;
  1159. vertical-align: middle;
  1160. }
  1161. </style>