sum_list.vue 41 KB

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