home_list.vue 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167
  1. <template>
  2. <div class="app-container">
  3. <div
  4. v-show="!isShowDetail && !isShowForm && !isShowExamine && !isShowReturn"
  5. >
  6. <!-- 筛选条件 -->
  7. <div class="screen-container">
  8. <el-form
  9. ref="screenForm"
  10. :model="screenForm"
  11. label-width="100px"
  12. size="mini"
  13. label-position="left"
  14. >
  15. <el-row :gutter="20">
  16. <el-col :xs="24" :sm="24" :lg="24">
  17. <el-form-item prop="status" label-width="0">
  18. <el-checkbox-group
  19. v-model="screenForm.status"
  20. @change="getList()"
  21. >
  22. <el-checkbox-button
  23. v-for="(item, index) in statusList"
  24. :key="index"
  25. :label="item.value"
  26. >{{ item.label }}</el-checkbox-button>
  27. </el-checkbox-group>
  28. </el-form-item>
  29. </el-col>
  30. <el-col :xs="24" :sm="12" :lg="6">
  31. <el-form-item label="工程订单号" prop="orderNum">
  32. <el-input
  33. v-model="screenForm.orderNum"
  34. placeholder="请输入工程订单号"
  35. />
  36. </el-form-item>
  37. </el-col>
  38. <!-- <el-col :xs="24" :sm="12" :lg="6">-->
  39. <!-- <el-form-item label="工程编码" prop="enginNum">-->
  40. <!-- <el-input-->
  41. <!-- v-model="screenForm.enginNum"-->
  42. <!-- placeholder="请输入工程编码"-->
  43. <!-- />-->
  44. <!-- </el-form-item>-->
  45. <!-- </el-col>-->
  46. <el-col :xs="24" :sm="12" :lg="6">
  47. <el-form-item label="工程登录编号" prop="loginNum">
  48. <el-input
  49. v-model="screenForm.loginNum"
  50. placeholder="请输入工程登录编号"
  51. />
  52. </el-form-item>
  53. </el-col>
  54. <el-col :xs="24" :sm="12" :lg="6">
  55. <el-form-item label="行业类别" prop="refTradeCategory">
  56. <el-input
  57. v-model="screenForm.refTradeCategory"
  58. placeholder="请输入项目名称"
  59. />
  60. </el-form-item>
  61. </el-col>
  62. <el-col :xs="24" :sm="12" :lg="6">
  63. <el-form-item label="制单日期" prop="date">
  64. <el-date-picker
  65. v-model="screenForm.date"
  66. type="datetimerange"
  67. range-separator="至"
  68. style="width: 100%"
  69. value-format="yyyy-MM-dd HH:mm:ss"
  70. start-placeholder="开始日期"
  71. end-placeholder="结束日期"
  72. />
  73. </el-form-item>
  74. </el-col>
  75. <el-col :xs="24" :sm="12" :lg="6">
  76. <el-form-item label="销售类型" prop="saleType">
  77. <el-select
  78. v-model="screenForm.saleType"
  79. placeholder="选择销售类型"
  80. style="width: 100%"
  81. clearable
  82. >
  83. <el-option
  84. v-for="item in salesTypeList"
  85. :key="item.id"
  86. :label="item.saleName"
  87. :value="item.id"
  88. />
  89. </el-select>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :xs="24" :sm="12" :lg="6">
  93. <el-form-item label="制单人" prop="createMan">
  94. <el-input
  95. v-model="screenForm.createMan"
  96. placeholder="请输入制单人"
  97. />
  98. </el-form-item>
  99. </el-col>
  100. <el-col :xs="24" :sm="12" :lg="6">
  101. <el-form-item label="审核人" prop="examineMan">
  102. <el-input
  103. v-model="screenForm.examineMan"
  104. placeholder="请输入审核人"
  105. />
  106. </el-form-item>
  107. </el-col>
  108. <el-col :xs="24" :sm="12" :lg="6">
  109. <el-form-item label="表头业务员" prop="salesMan">
  110. <el-select
  111. v-model="screenForm.salesMan"
  112. placeholder="选择表头业务员"
  113. clearable
  114. filterable
  115. style="width: 100%"
  116. >
  117. <el-option
  118. v-for="item in salesmanList"
  119. :key="item.adminUserId"
  120. :label="item.nickName"
  121. :value="item.adminUserId"
  122. />
  123. </el-select>
  124. </el-form-item>
  125. </el-col>
  126. <el-col :xs="24" :sm="12" :lg="6">
  127. <el-form-item label="使用单位" prop="refUseUnit">
  128. <el-input
  129. v-model="screenForm.refUseUnit"
  130. placeholder="请输入使用单位"
  131. />
  132. </el-form-item>
  133. </el-col>
  134. <el-col :xs="24" :sm="12" :lg="6">
  135. <el-form-item label="产品编码" prop="materialOldNumber">
  136. <el-input
  137. v-model="screenForm.materialOldNumber"
  138. placeholder="请输入产品编码"
  139. />
  140. </el-form-item>
  141. </el-col>
  142. <el-col :xs="24" :sm="12" :lg="6">
  143. <el-form-item label="规格型号" prop="specification">
  144. <el-input
  145. v-model="screenForm.specification"
  146. placeholder="请输入规格型号"
  147. />
  148. </el-form-item>
  149. </el-col>
  150. <el-col :xs="24" :sm="12" :lg="6">
  151. <el-form-item label="经销商" prop="customerKeyword">
  152. <el-input
  153. v-model="screenForm.customerKeyword"
  154. placeholder="请输入经销商"
  155. />
  156. </el-form-item>
  157. </el-col>
  158. <el-col :xs="24" :sm="12" :lg="6">
  159. <el-form-item label="区域" prop="refRegionWork">
  160. <el-input
  161. v-model="screenForm.refRegionWork"
  162. placeholder="请输入区域"
  163. />
  164. </el-form-item>
  165. </el-col>
  166. <el-col :xs="24" :sm="12" :lg="6">
  167. <el-form-item label="备注" prop="remark">
  168. <el-input v-model="screenForm.remark" placeholder="备注" />
  169. </el-form-item>
  170. </el-col>
  171. <el-col v-if="!isCustomer" :xs="24" :sm="12" :lg="6">
  172. <el-form-item label="格力内部备注" prop="geLiInerNote">
  173. <el-input
  174. v-model="screenForm.geLiInerNote"
  175. placeholder="格力内部备注"
  176. />
  177. </el-form-item>
  178. </el-col>
  179. <el-col :xs="24" :sm="12" :lg="6">
  180. <el-form-item label="跨区厂编号" prop="refFactoryNo">
  181. <el-input
  182. v-model="screenForm.refFactoryNo"
  183. placeholder="跨区厂编号"
  184. />
  185. </el-form-item>
  186. </el-col>
  187. <el-col :xs="24" :sm="12" :lg="6">
  188. <el-form-item label="购买单位" prop="refBuyUnitName">
  189. <el-input
  190. v-model="screenForm.refBuyUnitName"
  191. placeholder="购买单位"
  192. />
  193. </el-form-item>
  194. </el-col>
  195. <el-col :xs="24" :sm="12" :lg="6">
  196. <el-form-item label="保证函" prop="refPromiseProvide">
  197. <el-select
  198. v-model="screenForm.refPromiseProvide"
  199. placeholder="保证函"
  200. filterable
  201. style="width: 100%"
  202. >
  203. <el-option label="全部" value="" />
  204. <el-option label="未保证" value="未保证" />
  205. <el-option label="已保证" value="已保证" />
  206. </el-select>
  207. </el-form-item>
  208. </el-col>
  209. <el-col :xs="24" :sm="12" :lg="6">
  210. <el-form-item label="是否直调" prop="isDirectTransfer">
  211. <el-select
  212. v-model="screenForm.isDirectTransfer"
  213. placeholder="选择是否直"
  214. style="width: 100%"
  215. >
  216. <el-option :value="null" label="默认" />
  217. <el-option
  218. v-for="item in transfer"
  219. :key="item.value"
  220. :label="item.label"
  221. :value="item.value"
  222. />
  223. </el-select>
  224. </el-form-item>
  225. </el-col>
  226. <el-col :xs="24" :sm="12" :lg="6">
  227. <el-form-item label="订单日期" prop="orderTime">
  228. <el-date-picker
  229. v-model="screenForm.orderTime"
  230. type="datetimerange"
  231. range-separator="至"
  232. style="width: 100%"
  233. value-format="yyyy-MM-dd HH:mm:ss"
  234. start-placeholder="开始日期"
  235. end-placeholder="结束日期"
  236. />
  237. </el-form-item>
  238. </el-col>
  239. <el-col
  240. :xs="24"
  241. :sm="!isCustomer ? 12 : 24"
  242. :lg="!isCustomer ? 24 : 24"
  243. class="tr"
  244. >
  245. <el-form-item label="">
  246. <el-button @click="resetScreenForm">清空</el-button>
  247. <el-button
  248. type="primary"
  249. @click="submitScreenForm"
  250. >搜索</el-button>
  251. </el-form-item>
  252. </el-col>
  253. </el-row>
  254. </el-form>
  255. </div>
  256. <div class="mymain-container">
  257. <div class="btn-group clearfix">
  258. <div class="fl">
  259. <el-button
  260. v-if="$checkBtnRole('add', $route.meta.roles)"
  261. size="mini"
  262. type="primary"
  263. icon="el-icon-plus"
  264. @click="toForm()"
  265. >新增</el-button>
  266. <el-button
  267. v-if="$checkBtnRole('del', $route.meta.roles)"
  268. size="mini"
  269. type="danger"
  270. icon="el-icon-minus"
  271. :disabled="multipleSelection.length < 1"
  272. @click="batchDelete()"
  273. >批量删除</el-button>
  274. </div>
  275. <div class="fr">
  276. <ExportButton
  277. :ex-url="'engin-order/export'"
  278. :ex-params="exParams"
  279. />
  280. </div>
  281. </div>
  282. <div class="table">
  283. <el-table
  284. v-loading="listLoading"
  285. :data="dataList"
  286. element-loading-text="Loading"
  287. border
  288. fit
  289. highlight-current-row
  290. stripe
  291. show-summary
  292. :summary-method="$getSummaries"
  293. @selection-change="handleSelectionChange"
  294. >
  295. <el-table-column align="center" type="selection" width="55" />
  296. <el-table-column
  297. align="left"
  298. label="审核状态"
  299. prop="examineStatus"
  300. min-width="100"
  301. show-overflow-tooltip
  302. >
  303. <template slot-scope="scope">
  304. {{ scope.row.examineStatus | statusFilter }}
  305. </template>
  306. </el-table-column>
  307. <el-table-column
  308. align="left"
  309. label="工程订单号"
  310. prop="enginOrderNo"
  311. min-width="140"
  312. show-overflow-tooltip
  313. >
  314. <template slot-scope="scope">
  315. <CopyButton :copy-text="scope.row.enginOrderNo" />
  316. <span>{{ scope.row.enginOrderNo }}</span>
  317. </template>
  318. </el-table-column>
  319. <el-table-column
  320. align="left"
  321. label="订单日期"
  322. prop="orderDate"
  323. min-width="160"
  324. show-overflow-tooltip
  325. >
  326. <template slot-scope="scope">
  327. <div>
  328. <span>{{ scope.row.orderDate }}</span>
  329. <el-button
  330. v-if="
  331. $checkBtnRole('date', $route.meta.roles) &&
  332. (scope.row.examineStatus === 'SAVE' ||
  333. scope.row.examineStatus === 'WAIT')
  334. "
  335. type="text"
  336. icon="el-icon-edit"
  337. style="padding: 0; margin-left: 4px"
  338. @click="editDate(scope.row)"
  339. />
  340. </div>
  341. </template>
  342. </el-table-column>
  343. <el-table-column
  344. align="left"
  345. label="制单日期"
  346. prop="createTime"
  347. min-width="160"
  348. show-overflow-tooltip
  349. />
  350. <el-table-column
  351. align="left"
  352. label="制单人"
  353. prop="createName"
  354. min-width="100"
  355. show-overflow-tooltip
  356. />
  357. <el-table-column
  358. align="left"
  359. label="工程登录编号"
  360. prop="refEnginRecordNo"
  361. min-width="160"
  362. show-overflow-tooltip
  363. >
  364. <template slot-scope="scope">
  365. <CopyButton :copy-text="scope.row.refEnginRecordNo" />
  366. <span>{{ scope.row.refEnginRecordNo }}</span>
  367. </template>
  368. </el-table-column>
  369. <el-table-column
  370. align="left"
  371. label="使用单位"
  372. prop="refUseUnit"
  373. min-width="160"
  374. show-overflow-tooltip
  375. />
  376. <el-table-column
  377. align="left"
  378. label="购买单位"
  379. prop="refBuyUnitName"
  380. min-width="160"
  381. show-overflow-tooltip
  382. />
  383. <el-table-column
  384. align="left"
  385. label="保证函"
  386. prop="refPromiseProvide"
  387. min-width="100"
  388. show-overflow-tooltip
  389. />
  390. <el-table-column
  391. align="left"
  392. label="跨区厂编号"
  393. prop="refFactoryNo"
  394. min-width="160"
  395. show-overflow-tooltip
  396. />
  397. <el-table-column
  398. align="left"
  399. label="区域"
  400. prop="refRegionWork"
  401. min-width="160"
  402. show-overflow-tooltip
  403. />
  404. <el-table-column
  405. align="left"
  406. label="销售类型"
  407. prop="saleTypeName"
  408. min-width="120"
  409. show-overflow-tooltip
  410. />
  411. <el-table-column
  412. align="left"
  413. label="物料编码"
  414. prop="materialNumber"
  415. min-width="120"
  416. show-overflow-tooltip
  417. >
  418. <template slot-scope="scope">
  419. <CopyButton :copy-text="scope.row.materialNumber" />
  420. <span>{{ scope.row.materialNumber }}</span>
  421. </template>
  422. </el-table-column>
  423. <el-table-column
  424. align="left"
  425. label="产品编码"
  426. prop="materialOldNumber"
  427. min-width="140"
  428. show-overflow-tooltip
  429. >
  430. <template slot-scope="scope">
  431. <CopyButton :copy-text="scope.row.materialOldNumber" />
  432. <span>{{ scope.row.materialOldNumber }}</span>
  433. </template>
  434. </el-table-column>
  435. <el-table-column
  436. align="left"
  437. label="产品名称"
  438. prop="materialName"
  439. min-width="160"
  440. show-overflow-tooltip
  441. >
  442. <template slot-scope="scope">
  443. <CopyButton :copy-text="scope.row.materialName" />
  444. <span>{{ scope.row.materialName }}</span>
  445. </template>
  446. </el-table-column>
  447. <el-table-column
  448. align="left"
  449. label="规格型号"
  450. prop="specification"
  451. min-width="350"
  452. show-overflow-tooltip
  453. >
  454. <template slot-scope="scope">
  455. <CopyButton :copy-text="scope.row.specification" />
  456. <span>{{ scope.row.specification }}</span>
  457. </template>
  458. </el-table-column>
  459. <el-table-column
  460. align="right"
  461. label="总数量"
  462. prop="qty"
  463. min-width="100"
  464. sortable
  465. show-overflow-tooltip
  466. />
  467. <el-table-column
  468. align="right"
  469. label="单价"
  470. prop="price"
  471. min-width="100"
  472. sortable
  473. show-overflow-tooltip
  474. >
  475. <template slot-scope="scope">
  476. {{ scope.row.price | numToFixed }}
  477. </template>
  478. </el-table-column>
  479. <el-table-column
  480. align="right"
  481. label="订单金额"
  482. prop="totalAmount"
  483. min-width="110"
  484. sortable
  485. show-overflow-tooltip
  486. >
  487. <template slot-scope="scope">
  488. {{ scope.row.totalAmount | numToFixed }}
  489. </template>
  490. </el-table-column>
  491. <el-table-column
  492. align="right"
  493. label="实付金额"
  494. prop="payAmount"
  495. min-width="110"
  496. sortable
  497. show-overflow-tooltip
  498. >
  499. <template slot-scope="scope">
  500. {{ scope.row.payAmount | numToFixed }}
  501. </template>
  502. </el-table-column>
  503. <el-table-column
  504. align="left"
  505. label="经销商编码"
  506. prop="customerNumber"
  507. min-width="100"
  508. show-overflow-tooltip
  509. >
  510. <template slot-scope="scope">
  511. <CopyButton :copy-text="scope.row.customerNumber" />
  512. <span>{{ scope.row.customerNumber }}</span>
  513. </template>
  514. </el-table-column>
  515. <el-table-column
  516. align="left"
  517. label="经销商名称"
  518. prop="customerName"
  519. min-width="250"
  520. show-overflow-tooltip
  521. >
  522. <template slot-scope="scope">
  523. <CopyButton :copy-text="scope.row.customerName" />
  524. <span>{{ scope.row.customerName }}</span>
  525. </template>
  526. </el-table-column>
  527. <el-table-column
  528. align="right"
  529. label="发货数量"
  530. prop="retiredQty"
  531. min-width="110"
  532. sortable
  533. show-overflow-tooltip
  534. >
  535. <template slot-scope="scope">
  536. {{ scope.row.applySendQty }}
  537. </template> </el-table-column><el-table-column
  538. align="right"
  539. label="退货数量"
  540. prop="refundProductQty"
  541. min-width="110"
  542. sortable
  543. show-overflow-tooltip
  544. >
  545. <template slot-scope="scope">
  546. {{ scope.row.refundProductQty }}
  547. </template>
  548. </el-table-column>
  549. <el-table-column
  550. align="left"
  551. label="是否直调"
  552. prop="isDirectTransfer"
  553. min-width="100"
  554. show-overflow-tooltip
  555. >
  556. <template slot-scope="scope">
  557. {{ scope.row.isDirectTransfer ? "是" : "否" }}
  558. </template>
  559. </el-table-column>
  560. <el-table-column
  561. align="right"
  562. label="直调数量"
  563. prop="directTransferQty"
  564. min-width="110"
  565. sortable
  566. show-overflow-tooltip
  567. />
  568. <el-table-column
  569. align="right"
  570. label="出库数量"
  571. prop="hasSendQty"
  572. min-width="110"
  573. sortable
  574. show-overflow-tooltip
  575. />
  576. <el-table-column
  577. align="left"
  578. label="行业类别"
  579. prop="refTradeCategory"
  580. min-width="160"
  581. show-overflow-tooltip
  582. />
  583. <el-table-column
  584. align="left"
  585. label="备注"
  586. prop="remark"
  587. min-width="160"
  588. show-overflow-tooltip
  589. />
  590. <el-table-column
  591. v-if="!isCustomer"
  592. align="left"
  593. label="格力内部备注"
  594. prop="geLiInerNote"
  595. min-width="160"
  596. show-overflow-tooltip
  597. />
  598. <el-table-column
  599. align="left"
  600. label="返利钱包"
  601. prop="customerWalletName2"
  602. min-width="100"
  603. show-overflow-tooltip
  604. />
  605. <el-table-column
  606. align="right"
  607. label="使用返利金额"
  608. prop="rebateAmount"
  609. min-width="120"
  610. show-overflow-tooltip
  611. >
  612. <template slot-scope="scope">
  613. <div v-if="scope.row.examineStatus === 'OK'">
  614. {{ scope.row.payRebateAmount | numToFixed }}
  615. </div>
  616. <div v-else>{{ scope.row.rebateAmount | numToFixed }}</div>
  617. </template>
  618. </el-table-column>
  619. <el-table-column
  620. align="right"
  621. label="格力折扣"
  622. prop="discAmount"
  623. min-width="110"
  624. sortable
  625. show-overflow-tooltip
  626. >
  627. <template slot-scope="scope">
  628. {{ scope.row.discAmount | numToFixed }}
  629. </template>
  630. </el-table-column>
  631. <el-table-column
  632. align="left"
  633. label="备注"
  634. prop="remark"
  635. min-width="160"
  636. show-overflow-tooltip
  637. />
  638. <el-table-column
  639. align="left"
  640. label="表头业务员"
  641. prop="serviceName"
  642. min-width="100"
  643. show-overflow-tooltip
  644. />
  645. <el-table-column
  646. align="left"
  647. label="表体业务员"
  648. prop="itemServiceName"
  649. min-width="100"
  650. show-overflow-tooltip
  651. />
  652. <el-table-column
  653. align="left"
  654. label="审核人"
  655. prop="confirmName"
  656. min-width="100"
  657. show-overflow-tooltip
  658. />
  659. <el-table-column
  660. align="left"
  661. label="审核日期"
  662. prop="confirmTime"
  663. min-width="160"
  664. show-overflow-tooltip
  665. />
  666. <el-table-column
  667. align="left"
  668. label="订单类型"
  669. prop="enginOrderType"
  670. min-width="100"
  671. show-overflow-tooltip
  672. >
  673. <template slot-scope="scope">
  674. {{ scope.row.enginOrderType | typeFilter }}
  675. </template>
  676. </el-table-column>
  677. <el-table-column
  678. align="left"
  679. label="单位"
  680. prop="unit"
  681. min-width="100"
  682. show-overflow-tooltip
  683. />
  684. <el-table-column
  685. align="center"
  686. label="操作"
  687. width="220"
  688. fixed="right"
  689. >
  690. <template slot-scope="scope">
  691. <el-popconfirm
  692. v-if="scope.row.examineStatus === 'SAVE'"
  693. style="margin-right: 10px"
  694. title="确定申请吗?"
  695. @onConfirm="handleSubmit(scope.row.parentId, scope.row)"
  696. >
  697. <el-button slot="reference" type="text">申请</el-button>
  698. </el-popconfirm>
  699. <el-popconfirm
  700. v-if="scope.row.examineStatus === 'WAIT'"
  701. style="margin-right: 10px"
  702. title="确定撤回吗?"
  703. @onConfirm="handleWithdraw(scope.row.parentId, scope.row)"
  704. >
  705. <el-button slot="reference" type="text">撤回</el-button>
  706. </el-popconfirm>
  707. <el-popconfirm
  708. v-if="
  709. $checkBtnRole('examine', $route.meta.roles) &&
  710. scope.row.examineStatus === 'OK'
  711. "
  712. style="margin-right: 10px"
  713. title="确定弃审吗?"
  714. @onConfirm="handleAbandon(scope.row.parentId, scope.row)"
  715. >
  716. <el-button slot="reference" type="text">弃审</el-button>
  717. </el-popconfirm>
  718. <el-button
  719. v-if="
  720. $checkBtnRole('edit', $route.meta.roles) &&
  721. (scope.row.examineStatus === 'SAVE' ||
  722. scope.row.examineStatus === 'FAIL')
  723. "
  724. type="text"
  725. @click="toForm(scope.row)"
  726. >
  727. 编辑
  728. </el-button>
  729. <el-button
  730. v-if="
  731. $checkBtnRole('examine', $route.meta.roles) &&
  732. scope.row.examineStatus === 'WAIT'
  733. "
  734. type="text"
  735. @click="toExamine(scope.row)"
  736. >
  737. 审批
  738. </el-button>
  739. <el-button
  740. v-if="
  741. $checkBtnRole('examine', $route.meta.roles) &&
  742. scope.row.examineStatus !== 'FAIL'
  743. "
  744. type="text"
  745. @click="toReturn(scope.row)"
  746. >
  747. 退订
  748. </el-button>
  749. <el-button type="text" @click="toDetail(scope.row)">
  750. 详情
  751. </el-button>
  752. <el-popconfirm
  753. v-if="
  754. $checkBtnRole('del', $route.meta.roles) &&
  755. scope.row.examineStatus !== 'OK'
  756. "
  757. style="margin-left: 10px"
  758. title="确定删除吗?"
  759. @onConfirm="handleDelete(scope.row.parentId, scope.row)"
  760. >
  761. <el-button
  762. slot="reference"
  763. type="text"
  764. style="color: #f56c6c"
  765. >删除</el-button>
  766. </el-popconfirm>
  767. </template>
  768. </el-table-column>
  769. </el-table>
  770. </div>
  771. </div>
  772. <div class="pagination clearfix">
  773. <div class="fr">
  774. <el-pagination
  775. :current-page="currentPage"
  776. :page-sizes="[10, 20, 30, 50, 500]"
  777. :page-size="10"
  778. layout="total, sizes, prev, pager, next, jumper"
  779. :total="listTotal"
  780. @size-change="handleSizeChange"
  781. @current-change="handleCurrentChange"
  782. />
  783. </div>
  784. </div>
  785. </div>
  786. <EditDateDialog
  787. :is-show.sync="isShowEditDateDialog"
  788. :date-form.sync="dateForm"
  789. />
  790. <HomeDetail
  791. v-if="isShowDetail"
  792. :list-item="queryItem"
  793. @backListFormDetail="backList"
  794. />
  795. <HomeForm
  796. v-if="isShowForm"
  797. :list-item="queryItem"
  798. @backListFormDetail="backList"
  799. />
  800. <HomeExamine
  801. v-if="isShowExamine"
  802. :list-item="queryItem"
  803. @backListFormDetail="backList"
  804. />
  805. <HomeReturn
  806. v-if="isShowReturn"
  807. :list-item="queryItem"
  808. @backListFormDetail="backList"
  809. />
  810. </div>
  811. </template>
  812. <script>
  813. import { getOrderList, applyHome, withdrawHome, deleteHome, editDateHome, abandonHome } from '@/api/supply/engin'
  814. import { getSalesmanList, getTypeList } from '@/api/common'
  815. import HomeDetail from '@/views/supply/engin/components/home_detail'
  816. import HomeForm from '@/views/supply/engin/components/home_form'
  817. import HomeExamine from '@/views/supply/engin/components/home_examine'
  818. import HomeReturn from '@/views/supply/engin/components/home_return'
  819. import EditDateDialog from '@/components/Common/edit-date-dialog'
  820. let that
  821. export default {
  822. components: {
  823. HomeDetail,
  824. HomeForm,
  825. HomeExamine,
  826. HomeReturn,
  827. EditDateDialog
  828. },
  829. filters: {
  830. statusFilter(val) {
  831. const obj = that.statusList.find(o => o.value === val)
  832. return obj ? obj.label : ''
  833. },
  834. typeFilter(val) {
  835. const MAP = {
  836. TRADE: '商用',
  837. HOME: '家用'
  838. }
  839. return MAP[val]
  840. }
  841. },
  842. data() {
  843. return {
  844. currentPage: 1, // 当前页码
  845. pageSize: 10, // 每页数量
  846. listTotal: 0, // 列表总数
  847. dataList: null, // 列表数据
  848. listLoading: false, // 列表加载loading
  849. screenForm: { // 筛选表单数据
  850. status: [],
  851. orderNum: '',
  852. enginNum: '',
  853. loginNum: '',
  854. refTradeCategory: '',
  855. date: '',
  856. saleType: '',
  857. createMan: '',
  858. examineMan: '',
  859. salesMan: '',
  860. refUseUnit: '',
  861. materialOldNumber: '',
  862. specification: '',
  863. customerKeyword: '',
  864. refRegionWork: '',
  865. remark: '',
  866. geLiInerNote: '',
  867. refFactoryNo: '',
  868. refBuyUnitName: '',
  869. refPromiseProvide: '',
  870. isDirectTransfer: null,
  871. orderTime: []
  872. },
  873. statusList: [
  874. { label: '已保存', value: 'SAVE' },
  875. { label: '待审核', value: 'WAIT' },
  876. { label: '审核通过', value: 'OK' }
  877. // // { label: '审核驳回', value: 'FAIL' },,
  878. // { label: '已关闭', value: 'CLOSE' },
  879. ],
  880. salesmanList: [],
  881. transfer: [
  882. { label: '是', value: true },
  883. { label: '否', value: false }
  884. ],
  885. multipleSelection: [],
  886. queryItem: {},
  887. isShowDetail: false,
  888. isShowForm: false,
  889. isShowExamine: false,
  890. isShowReturn: false,
  891. editId: null,
  892. isShowEditDateDialog: false,
  893. dateForm: {
  894. date: ''
  895. },
  896. salesTypeList: []
  897. }
  898. },
  899. computed: {
  900. exParams() {
  901. const ids = this.multipleSelection.map(item => {
  902. return item.enginOrderNo
  903. })
  904. return {
  905. examineStatus: this.screenForm.status.join(','),
  906. enginOrderNo: (ids && ids.length) ? ids.join(',') : this.screenForm.orderNum,
  907. refProjectNo: this.screenForm.enginNum,
  908. refEnginRecordNo: this.screenForm.loginNum,
  909. refTradeCategory: this.screenForm.refTradeCategory,
  910. startCreateTime: this.screenForm.date ? this.screenForm.date[0] : '',
  911. endCreateTime: this.screenForm.date ? this.screenForm.date[1] : '',
  912. startOrderTime: this.screenForm.orderTime ? this.screenForm.orderTime[0] : '',
  913. endOrderTime: this.screenForm.orderTime ? this.screenForm.orderTime[1] : '',
  914. saleTypeId: this.screenForm.saleType,
  915. createName: this.screenForm.createMan,
  916. confirmName: this.screenForm.examineMan,
  917. serviceId: this.screenForm.salesMan,
  918. refUseUnit: this.screenForm.refUseUnit,
  919. materialOldNumber: this.screenForm.materialOldNumber,
  920. specification: this.screenForm.specification,
  921. customerKeyword: this.screenForm.customerKeyword,
  922. refRegionWork: this.screenForm.refRegionWork,
  923. remark: this.screenForm.remark,
  924. geLiInerNote: this.screenForm.geLiInerNote,
  925. refFactoryNo: this.screenForm.refFactoryNo,
  926. refBuyUnitName: this.screenForm.refBuyUnitName,
  927. refPromiseProvide: this.screenForm.refPromiseProvide,
  928. isDirectTransfer: this.screenForm.isDirectTransfer,
  929. enginOrderType: 'HOME' // TRADE=商用 HOME=家用
  930. }
  931. },
  932. isCustomer() {
  933. return this.$store.getters.customerId && this.$store.getters.customerNumber
  934. }
  935. },
  936. beforeCreate() {
  937. that = this
  938. },
  939. created() {
  940. this.getSalesTypeList()
  941. this.getSalesmanList()
  942. this.getList()
  943. },
  944. methods: {
  945. // 获取业务员列表
  946. getSalesmanList() {
  947. getSalesmanList({
  948. pageNum: 1,
  949. pageSize: -1,
  950. isCustomer: 0,
  951. status: true
  952. }).then(res => {
  953. this.salesmanList = res.data.records
  954. })
  955. },
  956. // 获取销售类型列表
  957. getSalesTypeList() {
  958. getTypeList({
  959. pageNum: 1,
  960. pageSize: -1
  961. }).then((res) => {
  962. this.salesTypeList = res.data.records
  963. })
  964. },
  965. // 查询列表
  966. getList() {
  967. this.listLoading = true
  968. const params = {
  969. pageNum: this.currentPage,
  970. pageSize: this.pageSize,
  971. examineStatus: this.screenForm.status.join(','),
  972. enginOrderNo: this.screenForm.orderNum,
  973. refProjectNo: this.screenForm.enginNum,
  974. refEnginRecordNo: this.screenForm.loginNum,
  975. refTradeCategory: this.screenForm.refTradeCategory,
  976. startCreateTime: this.screenForm.date ? this.screenForm.date[0] : '',
  977. endCreateTime: this.screenForm.date ? this.screenForm.date[1] : '',
  978. startOrderTime: this.screenForm.orderTime ? this.screenForm.orderTime[0] : '',
  979. endOrderTime: this.screenForm.orderTime ? this.screenForm.orderTime[1] : '',
  980. saleTypeId: this.screenForm.saleType,
  981. createName: this.screenForm.createMan,
  982. confirmName: this.screenForm.examineMan,
  983. serviceId: this.screenForm.salesMan,
  984. refUseUnit: this.screenForm.refUseUnit,
  985. materialOldNumber: this.screenForm.materialOldNumber,
  986. specification: this.screenForm.specification,
  987. customerKeyword: this.screenForm.customerKeyword,
  988. refRegionWork: this.screenForm.refRegionWork,
  989. remark: this.screenForm.remark,
  990. geLiInerNote: this.screenForm.geLiInerNote,
  991. refFactoryNo: this.screenForm.refFactoryNo,
  992. refBuyUnitName: this.screenForm.refBuyUnitName,
  993. isDirectTransfer: this.screenForm.isDirectTransfer,
  994. refPromiseProvide: this.screenForm.refPromiseProvide,
  995. enginOrderType: 'HOME' // TRADE=商用 HOME=家用
  996. }
  997. getOrderList(params).then((res) => {
  998. res.data.records.forEach(item => {
  999. item.sums1 = ['qty', 'directTransferQty', 'hasSendQty']
  1000. item.sums2 = ['price', 'totalAmount', 'payAmount', 'discAmount']
  1001. })
  1002. this.dataList = res.data.records
  1003. this.listTotal = res.data.total
  1004. this.listLoading = false
  1005. })
  1006. },
  1007. // 提交筛选表单
  1008. submitScreenForm() {
  1009. this.currentPage = 1
  1010. this.getList()
  1011. },
  1012. // 重置筛选表单
  1013. resetScreenForm() {
  1014. this.$refs.screenForm.resetFields()
  1015. this.currentPage = 1
  1016. this.getList()
  1017. },
  1018. // 更改每页数量
  1019. handleSizeChange(val) {
  1020. this.pageSize = val
  1021. this.currentPage = 1
  1022. this.getList()
  1023. },
  1024. // 更改当前页
  1025. handleCurrentChange(val) {
  1026. this.currentPage = val
  1027. this.getList()
  1028. },
  1029. // 进入表单
  1030. toForm(item) {
  1031. this.queryItem = item
  1032. this.isShowForm = true
  1033. },
  1034. // 进入审批
  1035. toExamine(item) {
  1036. this.queryItem = item
  1037. this.isShowExamine = true
  1038. },
  1039. // 进入详情
  1040. toDetail(item) {
  1041. this.queryItem = item
  1042. this.isShowDetail = true
  1043. },
  1044. // 进入退订
  1045. toReturn(item) {
  1046. if (item.refundableQty <= 0) {
  1047. return this.$errorMsg('可退数量为0')
  1048. }
  1049. this.queryItem = item
  1050. this.isShowReturn = true
  1051. },
  1052. backList() {
  1053. this.queryItem = {}
  1054. this.isShowDetail = false
  1055. this.isShowForm = false
  1056. this.isShowExamine = false
  1057. this.isShowReturn = false
  1058. },
  1059. // 申请
  1060. handleSubmit(id, row) {
  1061. this.$confirm('发货时将暂扣工程押金,请确保钱包余额充足', '温馨提示').then(() => {
  1062. applyHome({ id, refEnginRecordNo: row.refEnginRecordNo }).then(res => {
  1063. this.$successMsg()
  1064. this.getList()
  1065. })
  1066. })
  1067. },
  1068. // 撤回
  1069. handleWithdraw(id, row) {
  1070. withdrawHome({ id, refEnginRecordNo: row.refEnginRecordNo }).then(res => {
  1071. this.$successMsg()
  1072. this.getList()
  1073. })
  1074. },
  1075. // 弃审
  1076. handleAbandon(id, row) {
  1077. abandonHome({ id, refEnginRecordNo: row.refEnginRecordNo }).then(res => {
  1078. this.$successMsg()
  1079. this.getList()
  1080. })
  1081. },
  1082. // 删除
  1083. handleDelete(id, row) {
  1084. deleteHome({ ids: id }).then(res => {
  1085. this.$successMsg()
  1086. this.getList()
  1087. })
  1088. },
  1089. // 批量删除
  1090. batchDelete() {
  1091. this.$confirm('此操作将永久删除, 是否继续?', '提示', {
  1092. confirmButtonText: '确定',
  1093. cancelButtonText: '取消',
  1094. type: 'warning'
  1095. }).then(() => {
  1096. const ids = this.multipleSelection.map(item => {
  1097. return item.parentId
  1098. })
  1099. deleteHome({ ids: ids.join(',') }).then(res => {
  1100. this.$successMsg()
  1101. this.getList()
  1102. })
  1103. }).catch(() => {})
  1104. },
  1105. handleSelectionChange(val) {
  1106. this.multipleSelection = val
  1107. },
  1108. // 打开 修改订单日期
  1109. editDate(item) {
  1110. this.editId = item.parentId
  1111. this.dateForm.date = item.orderDate.slice(0, 10)
  1112. this.isShowEditDateDialog = true
  1113. },
  1114. // 提交 修改订单日期
  1115. submitDateForm() {
  1116. editDateHome({
  1117. enginOrderId: this.editId,
  1118. orderDate: this.dateForm.date + ' 00:00:00'
  1119. }).then(res => {
  1120. this.isShowEditDateDialog = false
  1121. this.getList()
  1122. this.$successMsg('修改成功')
  1123. })
  1124. }
  1125. }
  1126. }
  1127. </script>
  1128. <style lang="scss" scoped></style>