sales_list.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933
  1. <template>
  2. <div class="app-container">
  3. <div v-show="!isShowDetail && !isShowExamine && !isShowReturnForm">
  4. <!-- 筛选条件 -->
  5. <div class="screen-container">
  6. <el-form
  7. ref="screenForm"
  8. :model="screenForm"
  9. label-width="120px"
  10. size="mini"
  11. label-position="left"
  12. >
  13. <el-row :gutter="20">
  14. <el-col :xs="24" :sm="24" :lg="24">
  15. <el-form-item prop="orderNum" label-width="0">
  16. <el-radio-group v-model="screenForm.status" @change="getList()">
  17. <el-radio-button label="">全部</el-radio-button>
  18. <el-radio-button
  19. v-for="(item, index) in statusList"
  20. :key="index"
  21. :label="item.value"
  22. >{{ item.label }}</el-radio-button>
  23. </el-radio-group>
  24. </el-form-item>
  25. </el-col>
  26. <el-col :xs="24" :sm="12" :lg="6">
  27. <el-form-item label="发货单号" prop="orderNum">
  28. <el-input
  29. v-model="screenForm.orderNum"
  30. placeholder="请输入发货单号(多个单号请用逗号隔开)"
  31. />
  32. </el-form-item>
  33. </el-col>
  34. <el-col :xs="24" :sm="12" :lg="6">
  35. <el-form-item label="订单号" prop="mainOrderId">
  36. <el-input
  37. v-model="screenForm.mainOrderId"
  38. placeholder="请输入订单号"
  39. />
  40. </el-form-item>
  41. </el-col>
  42. <el-col :xs="24" :sm="12" :lg="6">
  43. <el-form-item label="经销商名称" prop="jxsName">
  44. <el-input
  45. v-model="screenForm.jxsName"
  46. placeholder="请输入经销商名称"
  47. />
  48. </el-form-item>
  49. </el-col>
  50. <el-col :xs="24" :sm="12" :lg="6">
  51. <el-form-item label="经销商编号" prop="jxsNum">
  52. <el-input
  53. v-model="screenForm.jxsNum"
  54. placeholder="请输入规格型号"
  55. />
  56. </el-form-item>
  57. </el-col>
  58. <el-col :xs="24" :sm="12" :lg="6">
  59. <el-form-item label="产品名称" prop="chName">
  60. <el-input
  61. v-model="screenForm.chName"
  62. placeholder="请输入产品名称"
  63. />
  64. </el-form-item>
  65. </el-col>
  66. <el-col :xs="24" :sm="12" :lg="6">
  67. <el-form-item label="物料编码" prop="chNum">
  68. <el-input
  69. v-model="screenForm.chNum"
  70. placeholder="请输入物料编码"
  71. />
  72. </el-form-item>
  73. </el-col>
  74. <el-col :xs="24" :sm="12" :lg="6">
  75. <el-form-item label="规格型号" prop="model">
  76. <el-input
  77. v-model="screenForm.model"
  78. placeholder="请输入规格型号"
  79. />
  80. </el-form-item>
  81. </el-col>
  82. <el-col :xs="24" :sm="12" :lg="6">
  83. <el-form-item label="仓库" prop="warehouse">
  84. <el-select
  85. v-model="screenForm.warehouse"
  86. placeholder="请选择仓库"
  87. filterable
  88. clearable
  89. multiple
  90. collapse-tags
  91. style="width: 100%"
  92. >
  93. <el-option
  94. v-for="(item, index) in warehouseList"
  95. :key="index"
  96. :label="item.name"
  97. :value="item.id"
  98. />
  99. </el-select>
  100. </el-form-item>
  101. </el-col>
  102. <el-col :xs="24" :sm="12" :lg="6">
  103. <el-form-item label="单据日期" prop="date">
  104. <el-date-picker
  105. v-model="screenForm.date"
  106. type="datetimerange"
  107. range-separator="至"
  108. style="width: 100%"
  109. value-format="yyyy-MM-dd HH:mm:ss"
  110. start-placeholder="开始日期"
  111. end-placeholder="结束日期"
  112. />
  113. </el-form-item>
  114. </el-col>
  115. <el-col :xs="24" :sm="12" :lg="6">
  116. <el-form-item label="审核日期" prop="approval">
  117. <el-date-picker
  118. v-model="screenForm.approval"
  119. type="datetimerange"
  120. range-separator="至"
  121. style="width: 100%"
  122. value-format="yyyy-MM-dd HH:mm:ss"
  123. start-placeholder="开始日期"
  124. end-placeholder="结束日期"
  125. />
  126. </el-form-item>
  127. </el-col>
  128. <!-- <el-col :xs="24" :sm="12" :lg="6">
  129. <el-form-item label="打印时间排序" prop="printDesc">
  130. <el-select v-model="screenForm.printDesc" clearable filterable>
  131. <el-option label="默认" :value="null"> </el-option>
  132. <el-option label="倒序" :value="1"> </el-option>
  133. </el-select>
  134. </el-form-item>
  135. </el-col> -->
  136. <el-col :xs="24" :sm="12" :lg="6">
  137. <el-form-item label="打印日期" prop="printTime">
  138. <el-date-picker
  139. v-model="screenForm.printTime"
  140. type="datetimerange"
  141. range-separator="至"
  142. style="width: 100%"
  143. value-format="yyyy-MM-dd HH:mm:ss"
  144. start-placeholder="开始日期"
  145. end-placeholder="结束日期"
  146. />
  147. </el-form-item>
  148. </el-col>
  149. <el-col :xs="24" :sm="12" :lg="6">
  150. <el-form-item label="出库单号" prop="id">
  151. <el-input
  152. v-model="screenForm.id"
  153. placeholder="请输入出库单号(多个单号请用逗号隔开)"
  154. />
  155. </el-form-item>
  156. </el-col>
  157. <el-col :xs="24" :sm="12" :lg="6">
  158. <el-form-item label="金蝶推送状态" prop="syncStatus">
  159. <el-select v-model="screenForm.syncStatus" clearable filterable>
  160. <el-option label="未推送" :value="0" />
  161. <el-option label="推送成功" :value="1" />
  162. <el-option label="失败推送" :value="-1" />
  163. </el-select>
  164. </el-form-item>
  165. </el-col>
  166. <el-col :xs="24" :sm="12" :lg="24" class="tr">
  167. <el-form-item label="">
  168. <el-button @click="resetScreenForm">清空</el-button>
  169. <el-button
  170. type="primary"
  171. @click="submitScreenForm"
  172. >搜索</el-button>
  173. </el-form-item>
  174. </el-col>
  175. </el-row>
  176. </el-form>
  177. </div>
  178. <div class="mymain-container">
  179. <div class="btn-group clearfix">
  180. <div class="fl">
  181. <el-button
  182. v-if="$checkBtnRole('refund', $route.meta.roles)"
  183. size="mini"
  184. type="primary"
  185. icon="el-icon-plus"
  186. @click="toReturnForm()"
  187. >退货申请</el-button>
  188. <el-button
  189. v-if="$checkBtnRole('examine', $route.meta.roles)"
  190. size="mini"
  191. type="warning"
  192. icon="el-icon-finished"
  193. :disabled="multipleSelection.length < 1"
  194. @click="batchExamine"
  195. >批量审批</el-button>
  196. </div>
  197. <div class="fr">
  198. <ExportButton
  199. :ex-url="'sale/order/exportChuku'"
  200. :ex-params="exParams"
  201. />
  202. </div>
  203. </div>
  204. <div class="table">
  205. <el-table
  206. v-loading="listLoading"
  207. :data="dataList"
  208. element-loading-text="Loading"
  209. border
  210. fit
  211. :row-style="rowClass"
  212. show-summary
  213. :summary-method="$getSummaries"
  214. @selection-change="handleSelectionChange"
  215. >
  216. <el-table-column
  217. align="center"
  218. type="selection"
  219. width="55"
  220. fixed="left"
  221. />
  222. <el-table-column
  223. align="left"
  224. label="金蝶推送状态"
  225. prop="syncStatus"
  226. min-width="130"
  227. show-overflow-tooltip
  228. sortable
  229. >
  230. <template slot-scope="scope">
  231. {{ scope.row.syncStatus ==0 ?"未推送": scope.row.syncStatus ==1 ?"推送成功": "失败推送" }}
  232. </template>
  233. </el-table-column>
  234. <el-table-column
  235. align="left"
  236. label="状态"
  237. prop="examineStatus"
  238. min-width="100"
  239. show-overflow-tooltip
  240. sortable
  241. >
  242. <template slot-scope="scope">
  243. {{ scope.row.examineStatus | statusFilter }}
  244. </template>
  245. </el-table-column>
  246. <el-table-column
  247. align="left"
  248. label="打印时间"
  249. prop="printTime"
  250. min-width="100"
  251. show-overflow-tooltip
  252. sortable
  253. />
  254. <el-table-column
  255. align="left"
  256. label="订单类型"
  257. prop="orderType"
  258. min-width="100"
  259. show-overflow-tooltip
  260. sortable
  261. >
  262. <template slot-scope="scope">
  263. {{ scope.row.orderType | orderTypeFilter }}
  264. </template>
  265. </el-table-column>
  266. <!-- <el-table-column
  267. align="left"
  268. label="发票号"
  269. prop="billReceipt"
  270. min-width="250"
  271. show-overflow-tooltip
  272. sortable
  273. >
  274. <template slot-scope="scope">
  275. {{ scope.row.billReceipt }}
  276. </template>
  277. </el-table-column> -->
  278. <el-table-column
  279. align="left"
  280. label="销售出库单号"
  281. prop="id"
  282. min-width="140"
  283. show-overflow-tooltip
  284. sortable
  285. >
  286. <template slot-scope="scope">
  287. <CopyButton :copy-text="scope.row.id" />
  288. <span>{{ scope.row.id }}</span>
  289. </template>
  290. </el-table-column>
  291. <el-table-column
  292. align="left"
  293. label="发货单号"
  294. prop="orderNo"
  295. min-width="130"
  296. show-overflow-tooltip
  297. sortable
  298. >
  299. <template slot-scope="scope">
  300. <CopyButton :copy-text="scope.row.orderNo" />
  301. <span>{{ scope.row.orderNo }}</span>
  302. </template>
  303. </el-table-column>
  304. <el-table-column
  305. align="left"
  306. label="订单号"
  307. prop="orderNo"
  308. min-width="140"
  309. show-overflow-tooltip
  310. sortable
  311. >
  312. <template slot-scope="scope">
  313. <CopyButton
  314. :copy-text="(scope.row.orderType === &quot;TRADE&quot; ||
  315. scope.row.orderType === &quot;HOME&quot; || scope.row.orderType
  316. ===&quot;REQUISITION_TRADE&quot; || scope.row.orderType
  317. ===&quot;REQUISITION_HOME&quot;)? scope.row.enginOrderNo:scope.row.mainOrderId"
  318. /> <span>{{
  319. (scope.row.orderType === "TRADE" ||
  320. scope.row.orderType === "HOME" ||
  321. scope.row.orderType === "REQUISITION_TRADE" ||
  322. scope.row.orderType === "REQUISITION_HOME")
  323. ? scope.row.enginOrderNo
  324. : scope.row.mainOrderId
  325. }}</span>
  326. </template>
  327. </el-table-column>
  328. <el-table-column
  329. align="left"
  330. label="仓库"
  331. prop="correspondName"
  332. min-width="100"
  333. show-overflow-tooltip
  334. sortable
  335. />
  336. <el-table-column
  337. align="left"
  338. label="经销商编码"
  339. prop="customerNumber"
  340. min-width="120"
  341. show-overflow-tooltip
  342. sortable
  343. >
  344. <template slot-scope="scope">
  345. <CopyButton :copy-text="scope.row.customerNumber" />
  346. <span>{{ scope.row.customerNumber }}</span>
  347. </template>
  348. </el-table-column>
  349. <el-table-column
  350. align="left"
  351. label="经销商名称"
  352. prop="customerName"
  353. min-width="250"
  354. show-overflow-tooltip
  355. sortable
  356. >
  357. <template slot-scope="scope">
  358. <CopyButton :copy-text="scope.row.customerName" />
  359. <span>{{ scope.row.customerName }}</span>
  360. </template>
  361. </el-table-column>
  362. <el-table-column
  363. align="left"
  364. label="物料编码"
  365. prop="materialCode"
  366. min-width="120"
  367. show-overflow-tooltip
  368. sortable
  369. >
  370. <template slot-scope="scope">
  371. <CopyButton :copy-text="scope.row.materialCode" />
  372. <span>{{ scope.row.materialCode }}</span>
  373. </template>
  374. </el-table-column>
  375. <el-table-column
  376. align="left"
  377. label="产品编码"
  378. prop="materialOldNumber"
  379. min-width="140"
  380. show-overflow-tooltip
  381. sortable
  382. >
  383. <template slot-scope="scope">
  384. <CopyButton :copy-text="scope.row.materialOldNumber" />
  385. <span>{{ scope.row.materialOldNumber }}</span>
  386. </template>
  387. </el-table-column>
  388. <el-table-column
  389. align="left"
  390. label="产品名称"
  391. prop="materialName"
  392. min-width="160"
  393. show-overflow-tooltip
  394. sortable
  395. >
  396. <template slot-scope="scope">
  397. <CopyButton :copy-text="scope.row.materialName" />
  398. <span>{{ scope.row.materialName }}</span>
  399. </template>
  400. </el-table-column>
  401. <el-table-column
  402. align="left"
  403. label="规格型号"
  404. prop="specification"
  405. min-width="350"
  406. show-overflow-tooltip
  407. sortable
  408. >
  409. <template slot-scope="scope">
  410. <CopyButton :copy-text="scope.row.specification" />
  411. <span>{{ scope.row.specification }}</span>
  412. </template>
  413. </el-table-column>
  414. <el-table-column
  415. align="left"
  416. label="单位"
  417. prop="unit"
  418. min-width="100"
  419. show-overflow-tooltip
  420. sortable
  421. />
  422. <el-table-column
  423. align="left"
  424. label="制单人"
  425. prop="createBy"
  426. min-width="100"
  427. show-overflow-tooltip
  428. sortable
  429. />
  430. <el-table-column
  431. align="left"
  432. label="审核时间"
  433. prop="approvalTime"
  434. min-width="150"
  435. show-overflow-tooltip
  436. sortable
  437. />
  438. <el-table-column
  439. align="right"
  440. label="数量"
  441. prop="refundableQty"
  442. min-width="100"
  443. show-overflow-tooltip
  444. sortable
  445. />
  446. <!-- <el-table-column align="right" label="单价" prop="price" min-width="100" show-overflow-tooltip
  447. sortable>
  448. <template slot-scope="scope">
  449. {{ scope.row.price | numToFixed }}
  450. </template>
  451. </el-table-column> -->
  452. <!-- <el-table-column align="right" label="订单金额" prop="payAmount" min-width="100" show-overflow-tooltip
  453. sortable>
  454. <template slot-scope="scope">
  455. {{ scope.row.payAmount | numToFixed }}
  456. </template>
  457. </el-table-column> -->
  458. <!-- <el-table-column align="left" label="订单备注" prop="headerRemark" min-width="160" show-overflow-tooltip
  459. sortable></el-table-column> -->
  460. <!-- <el-table-column align="left" label="发货申请备注" prop="remark" min-width="160" show-overflow-tooltip
  461. sortable></el-table-column> -->
  462. <!-- <el-table-column align="left" label="表体备注" prop="invoiceRemark" min-width="160" show-overflow-tooltip
  463. sortable></el-table-column> -->
  464. <!-- <el-table-column align="left" label="业务员" prop="serviceName" min-width="100" show-overflow-tooltip
  465. sortable></el-table-column> -->
  466. <!-- <el-table-column align="left" label="表头业务员" prop="k3ServiceName" min-width="100" show-overflow-tooltip
  467. sortable></el-table-column> -->
  468. <el-table-column
  469. align="center"
  470. label="操作"
  471. width="120"
  472. fixed="right"
  473. >
  474. <template slot-scope="scope">
  475. <el-button
  476. type="text"
  477. @click="toDetail(scope.row)"
  478. >详情</el-button>
  479. <el-button
  480. v-if="
  481. scope.row.type === 2 && scope.row.examineStatus !== 'OK'
  482. "
  483. type="text"
  484. @click="toDetail(scope.row), (edit = true)"
  485. >编辑</el-button>
  486. <el-button
  487. v-if="
  488. $checkBtnRole('examine', $route.meta.roles) &&
  489. scope.row.examineStatus === 'WAIT'
  490. "
  491. type="text"
  492. @click="toExamine(scope.row)"
  493. >审批</el-button>
  494. <el-popconfirm
  495. v-if="
  496. $checkBtnRole('examine', $route.meta.roles) &&
  497. scope.row.examineStatus === 'OK'
  498. "
  499. style="margin-left: 10px"
  500. title="确定弃审吗?"
  501. @onConfirm="handleAbandon(scope.row.id)"
  502. >
  503. <el-button slot="reference" type="text">弃审</el-button>
  504. </el-popconfirm>
  505. </template>
  506. </el-table-column>
  507. </el-table>
  508. </div>
  509. </div>
  510. <div class="pagination clearfix">
  511. <div class="fr">
  512. <el-pagination
  513. :current-page="currentPage"
  514. :page-sizes="[10, 20, 30, 50, 100]"
  515. :page-size="10"
  516. layout="total, sizes, prev, pager, next, jumper"
  517. :total="listTotal"
  518. @size-change="handleSizeChange"
  519. @current-change="handleCurrentChange"
  520. />
  521. </div>
  522. </div>
  523. </div>
  524. <ExamineDialog
  525. :is-show.sync="isShowExamineDialog"
  526. :examine-form.sync="examineForm"
  527. />
  528. <SalesDetail
  529. v-if="isShowDetail"
  530. :list-item="queryItem"
  531. :edit="edit"
  532. @backListFormDetail="backList"
  533. />
  534. <SalesExamine
  535. v-if="isShowExamine"
  536. :list-item="queryItem"
  537. @backListFormExamine="backList"
  538. />
  539. <SalesReturnForm
  540. v-if="isShowReturnForm"
  541. :list-item="queryItem"
  542. @backListFormDetail="backList"
  543. />
  544. </div>
  545. </template>
  546. <script>
  547. import {
  548. abandonData,
  549. examineBatch,
  550. examineJudge,
  551. getList,
  552. getWarehouseList,
  553. getListOrderNo
  554. } from '@/api/supply/sales'
  555. import SalesDetail from '@/views/supply/sales/components/sales_detail'
  556. import SalesExamine from '@/views/supply/sales/components/sales_examine'
  557. import SalesReturnForm from '@/views/supply/sales/components/sales_return_form'
  558. import ExamineDialog from '@/components/Common/examine-dialog'
  559. let that
  560. export default {
  561. components: {
  562. SalesDetail,
  563. SalesExamine,
  564. SalesReturnForm,
  565. ExamineDialog
  566. },
  567. filters: {
  568. statusFilter(val) {
  569. if (that.statusList.length) {
  570. const obj = that.statusList.find(o => o.value == val)
  571. return obj ? obj.label : ''
  572. }
  573. return ''
  574. },
  575. orderTypeFilter(val) {
  576. if (that.orderTypeList.length) {
  577. const obj = that.orderTypeList.find(o => o.value == val)
  578. return obj ? obj.label : ''
  579. }
  580. return ''
  581. },
  582. billStatusFilter(val) {
  583. const MAP = {
  584. 1: '已开票',
  585. 0: '未开票'
  586. }
  587. return MAP[val]
  588. }
  589. },
  590. data() {
  591. return {
  592. currentPage: 1, // 当前页码
  593. pageSize: 10, // 每页数量
  594. listTotal: 0, // 列表总数
  595. dataList: null, // 列表数据
  596. listLoading: false, // 列表加载loading
  597. screenForm: {
  598. // 筛选表单数据
  599. orderNum: '',
  600. jxsName: '',
  601. jxsNum: '',
  602. chName: '',
  603. chNum: '',
  604. model: '',
  605. warehouse: [],
  606. date: '',
  607. status: '',
  608. mainOrderId: '',
  609. approval: '',
  610. printTime: '',
  611. printDesc: null,
  612. syncStatus: '',
  613. id: ''
  614. },
  615. statusList: [
  616. { label: '已保存', value: 'SAVE' },
  617. { label: '待审核', value: 'WAIT' },
  618. { label: '审核通过', value: 'OK' }
  619. // { label: '审核驳回', value: 'FAIL' },,
  620. ],
  621. orderTypeList: [
  622. { label: '商用', value: 'TRADE' },
  623. { label: '家用', value: 'HOME' },
  624. { label: '零售单', value: 'RETAIL' },
  625. { label: '销售政策单', value: 'RETAIL_POLICY' },
  626. { label: '置换单家用', value: 'PERMU_HOME' },
  627. { label: '置换商用', value: 'PERMU_TRADE' },
  628. { label: '置换零售', value: 'PERMU_RETAIL' },
  629. { label: '置换销售政策单', value: 'PERMU_RETAIL_POLICY' },
  630. { label: '调拨单零售', value: 'REQUISITION_RETAIL' },
  631. { label: '调拨单销售政策', value: 'REQUISITION_RETAIL_POLICY' },
  632. { label: '调拨单商用', value: 'REQUISITION_TRADE' },
  633. { label: '调拨单家用', value: 'REQUISITION_HOME' }
  634. ],
  635. warehouseList: [],
  636. centerDialogVisible: false,
  637. cid: '',
  638. queryItem: {},
  639. isShowDetail: false,
  640. isShowExamine: false,
  641. isShowReturnForm: false,
  642. value1: '',
  643. qty: '',
  644. edit: false,
  645. choiceDate: '',
  646. selectRow: [],
  647. multipleSelection: [],
  648. isShowExamineDialog: false,
  649. examineForm: {
  650. status: '',
  651. remark: ''
  652. },
  653. setDisabled: {
  654. disabledDate: (time) => {
  655. if (this.choiceDate) {
  656. const res = 13 * 24 * 3600 * 1000
  657. const minTime = this.choiceDate - res
  658. const maxTime = this.choiceDate + res
  659. return time.getTime() < minTime || time.getTime() > maxTime
  660. }
  661. },
  662. onPick: ({ maxDate, minDate }) => {
  663. this.choiceDate = minDate.getTime()
  664. if (maxDate) this.choiceDate = ''
  665. }
  666. }
  667. }
  668. },
  669. computed: {
  670. exParams() {
  671. return {
  672. examineStatus: this.screenForm.status,
  673. orderNo: this.screenForm.orderNum.replace(/,/gi, ','),
  674. customerName: this.screenForm.jxsName,
  675. customerNumber: this.screenForm.jxsNum,
  676. materialName: this.screenForm.chName,
  677. materialNumber: this.screenForm.chNum,
  678. specification: this.screenForm.model,
  679. correspondId: this.screenForm.warehouse.join(','),
  680. startTime: this.screenForm.date ? this.screenForm.date[0] : '',
  681. endTime: this.screenForm.date ? this.screenForm.date[1] : '',
  682. syncStatus: this.screenForm.syncStatus,
  683. approvalStartTime: this.screenForm.approval
  684. ? this.screenForm.approval[0]
  685. : '',
  686. approvalEndTime: this.screenForm.approval
  687. ? this.screenForm.approval[1]
  688. : '',
  689. printStartTime: this.screenForm.printTime
  690. ? this.screenForm.printTime[0]
  691. : '',
  692. printEndTime: this.screenForm.printTime
  693. ? this.screenForm.printTime[1]
  694. : '',
  695. mainOrderId: this.screenForm.mainOrderId,
  696. printTimeDesc: this.screenForm.printDesc,
  697. id: this.screenForm.id.replace(/,/gi, ',')
  698. }
  699. }
  700. },
  701. watch: {
  702. multipleSelection(data) {
  703. // 监听选中状态
  704. this.selectRow = []
  705. if (data.length > 0) {
  706. data.forEach((item, index) => {
  707. this.selectRow.push(item.id)
  708. })
  709. }
  710. }
  711. },
  712. beforeCreate() {
  713. that = this
  714. },
  715. created() {
  716. this.getWarehouseList()
  717. this.getList()
  718. },
  719. methods: {
  720. // 查询列表
  721. getList() {
  722. this.listLoading = true
  723. const params = {
  724. pageNum: this.currentPage,
  725. pageSize: this.pageSize,
  726. examineStatus: this.screenForm.status,
  727. orderNo: this.screenForm.orderNum.replace(/,/gi, ','),
  728. customerName: this.screenForm.jxsName,
  729. customerNumber: this.screenForm.jxsNum,
  730. materialName: this.screenForm.chName,
  731. materialNumber: this.screenForm.chNum,
  732. specification: this.screenForm.model,
  733. correspondId: this.screenForm.warehouse.join(','),
  734. syncStatus: this.screenForm.syncStatus,
  735. startTime: this.screenForm.date ? this.screenForm.date[0] : '',
  736. endTime: this.screenForm.date ? this.screenForm.date[1] : '',
  737. approvalStartTime: this.screenForm.approval
  738. ? this.screenForm.approval[0]
  739. : '',
  740. approvalEndTime: this.screenForm.approval
  741. ? this.screenForm.approval[1]
  742. : '',
  743. mainOrderId: this.screenForm.mainOrderId,
  744. printStartTime: this.screenForm.printTime
  745. ? this.screenForm.printTime[0]
  746. : '',
  747. printEndTime: this.screenForm.printTime
  748. ? this.screenForm.printTime[1]
  749. : '',
  750. printTimeDesc: this.screenForm.printDesc,
  751. id: this.screenForm.id.replace(/,/gi, ',')
  752. }
  753. getList(params).then((res) => {
  754. res.data.records.forEach((item) => {
  755. item.sums1 = ['refundableQty']
  756. item.sums2 = ['price', 'payAmount']
  757. })
  758. this.dataList = res.data.records
  759. this.listTotal = res.data.total
  760. this.listLoading = false
  761. })
  762. },
  763. // 获取仓库列表
  764. getWarehouseList() {
  765. getWarehouseList({
  766. pageNum: 1,
  767. pageSize: -1
  768. }).then((res) => {
  769. this.warehouseList = res.data.records
  770. })
  771. },
  772. updateReceipt() {
  773. if (!this.value1) {
  774. this.$errorMsg('请选择时间')
  775. return
  776. }
  777. // updateReceipt({
  778. // startTime:this.value1[0],
  779. // endTime:this.value1[1]
  780. // }).then(res=>{
  781. // this.getList();
  782. // this.$successMsg("已更新");
  783. // this.value1 = ''
  784. // })
  785. },
  786. // 提交筛选表单
  787. submitScreenForm() {
  788. this.currentPage = 1
  789. this.getList()
  790. if (this.screenForm.orderNum) {
  791. getListOrderNo({
  792. orderNo: this.screenForm.orderNum.replace(/,/gi, ',')
  793. }).then((res) => {
  794. if (res.data) {
  795. this.$confirm(res.data, '提示', {
  796. confirmButtonText: '确定',
  797. showCancelButton: false
  798. })
  799. }
  800. })
  801. }
  802. },
  803. // 重置筛选表单
  804. resetScreenForm() {
  805. this.$refs.screenForm.resetFields()
  806. this.currentPage = 1
  807. this.getList()
  808. },
  809. // 更改每页数量
  810. handleSizeChange(val) {
  811. this.pageSize = val
  812. this.currentPage = 1
  813. this.getList()
  814. },
  815. // 更改当前页
  816. handleCurrentChange(val) {
  817. this.currentPage = val
  818. this.getList()
  819. },
  820. // 判断是否可以审批
  821. async examineJudge(item) {
  822. // 获取页面模版
  823. const result = await new Promise((resolve, reject) => {
  824. examineJudge({ id: item.id })
  825. .then((res) => {
  826. resolve(res.code == 200)
  827. })
  828. .catch((res) => {
  829. resolve(0)
  830. })
  831. })
  832. return result
  833. },
  834. // 进入表单
  835. toReturnForm(item) {
  836. this.queryItem = item
  837. this.isShowReturnForm = true
  838. },
  839. // 进入详情
  840. toDetail(item) {
  841. this.queryItem = item
  842. this.isShowDetail = true
  843. },
  844. // 进入审批
  845. async toExamine(item) {
  846. const canExamine = await this.examineJudge(item)
  847. if (!canExamine) {
  848. return false
  849. }
  850. this.queryItem = item
  851. this.isShowExamine = true
  852. },
  853. backList() {
  854. this.queryItem = {}
  855. this.isShowDetail = false
  856. this.isShowExamine = false
  857. this.isShowReturnForm = false
  858. },
  859. handleSelectionChange(val) {
  860. this.multipleSelection = val
  861. if (val) {
  862. this.selections = val
  863. } else {
  864. this.selections = []
  865. }
  866. },
  867. rowClass({ row, rowIndex }) {
  868. if (this.selectRow.includes(row.id)) {
  869. return { 'background-color': '#ecf5ff' }
  870. }
  871. },
  872. // 打开 批量审批
  873. batchExamine() {
  874. this.isShowExamineDialog = true
  875. },
  876. // 提交 批量审批
  877. submitExamineForm() {
  878. const ids = this.multipleSelection.map((item) => {
  879. return item.id
  880. })
  881. examineBatch({
  882. ids: ids.join(','),
  883. examineStatus: this.examineForm.status,
  884. approvalRemark: this.examineForm.remark
  885. }).then((res) => {
  886. this.isShowExamineDialog = false
  887. this.getList()
  888. this.$successMsg('修改成功')
  889. })
  890. },
  891. // 弃审
  892. handleAbandon(id) {
  893. abandonData({ id }).then((res) => {
  894. this.$successMsg()
  895. this.getList()
  896. })
  897. }
  898. }
  899. }
  900. </script>
  901. <style lang="scss" scoped></style>