sales_list.vue 29 KB

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