order-search.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828
  1. <!-- 搜索表单 -->
  2. <template>
  3. <el-form
  4. label-width="90px"
  5. class="ele-form-search"
  6. @keyup.enter.native="search"
  7. @submit.native.prevent
  8. >
  9. <el-row :gutter="15">
  10. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  11. <!-- <el-form-item label="关键字:">-->
  12. <!-- <el-input-->
  13. <!-- v-model="where.keyWord"-->
  14. <!-- size="mini"-->
  15. <!-- placeholder="请输入"-->
  16. <!-- ></el-input>-->
  17. <!-- </el-form-item>-->
  18. <!-- </el-col>-->
  19. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  20. <!-- <el-form-item label="销售订单号:">-->
  21. <!-- <el-input-->
  22. <!-- v-model="where.code"-->
  23. <!-- size="mini"-->
  24. <!-- placeholder="请输入"-->
  25. <!-- ></el-input>-->
  26. <!-- </el-form-item>-->
  27. <!-- </el-col>-->
  28. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  29. <!-- <el-form-item label="产品编码:">-->
  30. <!-- <el-input-->
  31. <!-- v-model="where.productCode"-->
  32. <!-- size="mini"-->
  33. <!-- placeholder="请输入"-->
  34. <!-- ></el-input>-->
  35. <!-- </el-form-item>-->
  36. <!-- </el-col>-->
  37. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  38. <!-- <el-form-item label="行号:">-->
  39. <!-- <el-input-->
  40. <!-- v-model="where.lineNumber"-->
  41. <!-- size="mini"-->
  42. <!-- placeholder="请输入"-->
  43. <!-- ></el-input>-->
  44. <!-- </el-form-item>-->
  45. <!-- </el-col>-->
  46. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  47. <!-- <el-form-item label="牌号:">-->
  48. <!-- <el-input-->
  49. <!-- v-model="where.brandNo"-->
  50. <!-- size="mini"-->
  51. <!-- placeholder="请输入"-->
  52. <!-- ></el-input>-->
  53. <!-- </el-form-item>-->
  54. <!-- </el-col>-->
  55. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  56. <!-- <el-form-item label="型号:">-->
  57. <!-- <el-input-->
  58. <!-- v-model="where.model"-->
  59. <!-- size="mini"-->
  60. <!-- placeholder="请输入"-->
  61. <!-- ></el-input>-->
  62. <!-- </el-form-item>-->
  63. <!-- </el-col>-->
  64. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  65. <!-- <el-form-item label="订单来源:">-->
  66. <!-- <DictSelection-->
  67. <!-- dictName="订单来源"-->
  68. <!-- size="mini"-->
  69. <!-- clearable-->
  70. <!-- v-model="where.orderSource"-->
  71. <!-- >-->
  72. <!-- </DictSelection>-->
  73. <!-- </el-form-item>-->
  74. <!-- </el-col>-->
  75. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  76. <!-- <el-form-item label="客户名称:">-->
  77. <!-- <el-input-->
  78. <!-- v-model="where.customerName"-->
  79. <!-- size="mini"-->
  80. <!-- placeholder="请输入"-->
  81. <!-- ></el-input>-->
  82. <!-- </el-form-item>-->
  83. <!-- </el-col>-->
  84. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  85. <!-- <el-form-item label="订单类型:">-->
  86. <!-- <DictSelection-->
  87. <!-- dictName="订单类型"-->
  88. <!-- clearable-->
  89. <!-- size="mini"-->
  90. <!-- v-model="where.orderType"-->
  91. <!-- >-->
  92. <!-- </DictSelection>-->
  93. <!-- </el-form-item>-->
  94. <!-- </el-col>-->
  95. <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
  96. <el-form-item label="生产状态:">
  97. <el-select
  98. v-model="where.proStu"
  99. placeholder="请选择"
  100. class="w100"
  101. size="mini"
  102. >
  103. <el-option
  104. v-if="activeName == 'first'"
  105. v-for="item in awaitProcuct"
  106. :key="item.value"
  107. :label="item.label"
  108. :value="item.value"
  109. >
  110. </el-option>
  111. <el-option
  112. v-if="activeName == 'three'"
  113. v-for="item in treatProcuct"
  114. :key="item.value"
  115. :label="item.label"
  116. :value="item.value"
  117. >
  118. </el-option>
  119. <el-option
  120. v-if="activeName == 'second'"
  121. v-for="item in alreadyProcuct"
  122. :key="item.value"
  123. :label="item.label"
  124. :value="item.value"
  125. >
  126. </el-option>
  127. </el-select>
  128. </el-form-item>
  129. </el-col>
  130. <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
  131. <el-form-item label="订单类型:">
  132. <el-select
  133. v-model="where.orderType"
  134. placeholder="请选择"
  135. class="w100"
  136. size="mini"
  137. >
  138. <el-option
  139. v-for="item in orderList"
  140. :key="item.value"
  141. :label="item.label"
  142. :value="item.value"
  143. >
  144. </el-option>
  145. </el-select>
  146. </el-form-item>
  147. </el-col>
  148. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  149. <!-- <el-form-item label="业务员:">-->
  150. <!-- <el-input-->
  151. <!-- v-model="where.salesman"-->
  152. <!-- size="mini"-->
  153. <!-- placeholder="请输入"-->
  154. <!-- ></el-input>-->
  155. <!-- </el-form-item>-->
  156. <!-- </el-col>-->
  157. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">-->
  158. <!-- <el-form-item label="产品名称:">-->
  159. <!-- <el-input-->
  160. <!-- v-model="where.productName"-->
  161. <!-- size="mini"-->
  162. <!-- placeholder="请输入"-->
  163. <!-- ></el-input>-->
  164. <!-- </el-form-item>-->
  165. <!-- </el-col>-->
  166. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  167. <el-form-item label="交货日期:">
  168. <el-date-picker
  169. style="width: 100%"
  170. v-model="time"
  171. type="daterange"
  172. range-separator="至"
  173. start-placeholder="开始日期"
  174. end-placeholder="结束日期"
  175. size="mini"
  176. value-format="yyyy-MM-dd HH:mm:ss"
  177. :default-time="['00:00:00', '23:59:59']"
  178. >
  179. </el-date-picker>
  180. </el-form-item>
  181. </el-col>
  182. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 6 } : { span: 6 }">-->
  183. <!-- <el-form-item label="组织机构:">-->
  184. <!-- <auth-selection-->
  185. <!-- data-type="Array"-->
  186. <!-- size="mini"-->
  187. <!-- v-model="where.deptIds"-->
  188. <!-- style="width: 100%"-->
  189. <!-- ></auth-selection>-->
  190. <!-- </el-form-item>-->
  191. <!-- </el-col>-->
  192. <el-col v-bind="styleResponsive ? { lg: 3, md: 12 } : { span: 3 }">
  193. <el-form-item label-width="0">
  194. <el-input
  195. size="mini"
  196. clearable
  197. v-model="where.searchInfo"
  198. placeholder="请输入查询信息"
  199. />
  200. </el-form-item>
  201. </el-col>
  202. <el-col v-bind="styleResponsive ? { lg: 4, md: 6 } : { span: 4 }">
  203. <div class="ele-form-actions">
  204. <el-dropdown trigger="click">
  205. <span class="el-dropdown-link">
  206. 展开<i class="el-icon-arrow-down el-icon--right"></i>
  207. </span>
  208. <el-dropdown-menu>
  209. <div class="searchExpend">
  210. <el-row>
  211. <el-form-item label="关键字:" label-width="80px">
  212. <el-input
  213. v-model="where.keyWord"
  214. size="mini"
  215. placeholder="请输入"
  216. ></el-input>
  217. </el-form-item>
  218. </el-row>
  219. <el-row>
  220. <el-form-item label="销售订单号:">
  221. <el-input
  222. v-model="where.code"
  223. size="mini"
  224. placeholder="请输入"
  225. ></el-input>
  226. </el-form-item>
  227. </el-row>
  228. <el-row>
  229. <el-form-item label="产品编码:">
  230. <el-input
  231. v-model="where.productCode"
  232. size="mini"
  233. placeholder="请输入"
  234. ></el-input>
  235. </el-form-item>
  236. </el-row>
  237. <el-row>
  238. <el-form-item label="订单来源:">
  239. <DictSelection
  240. dictName="订单来源"
  241. size="mini"
  242. clearable
  243. v-model="where.orderSource"
  244. >
  245. </DictSelection>
  246. </el-form-item>
  247. </el-row>
  248. <el-row>
  249. <el-form-item label="客户名称:">
  250. <el-input
  251. v-model="where.customerName"
  252. size="mini"
  253. placeholder="请输入"
  254. ></el-input>
  255. </el-form-item>
  256. </el-row>
  257. <el-row>
  258. <el-form-item label="销售类型:">
  259. <DictSelection
  260. dictName="订单类型"
  261. clearable
  262. size="mini"
  263. v-model="where.saleType"
  264. >
  265. </DictSelection>
  266. </el-form-item>
  267. </el-row>
  268. <el-row>
  269. <el-form-item label="业务员:">
  270. <el-input
  271. v-model="where.salesman"
  272. size="mini"
  273. placeholder="请输入"
  274. ></el-input>
  275. </el-form-item>
  276. </el-row>
  277. <el-row>
  278. <el-form-item label="产品名称:">
  279. <el-input
  280. v-model="where.productName"
  281. size="mini"
  282. placeholder="请输入"
  283. ></el-input>
  284. </el-form-item>
  285. </el-row>
  286. <!-- <el-row>
  287. <el-form-item label="组织机构:">
  288. <auth-selection
  289. data-type="Array"
  290. size="mini"
  291. v-model="where.deptIds"
  292. style="width: 100%"
  293. ></auth-selection>
  294. </el-form-item>
  295. </el-row> -->
  296. <el-row>
  297. <el-form-item label="按单按库:">
  298. <el-select
  299. v-model="where.orderLibraryType"
  300. placeholder="请选择"
  301. class="w100"
  302. size="mini"
  303. >
  304. <el-option
  305. v-for="item in orderTypeList"
  306. :key="item.value"
  307. :label="item.label"
  308. :value="item.value"
  309. >
  310. </el-option>
  311. </el-select>
  312. </el-form-item>
  313. </el-row>
  314. </div>
  315. </el-dropdown-menu>
  316. </el-dropdown>
  317. <el-button
  318. type="primary"
  319. size="mini"
  320. icon="el-icon-search"
  321. class="ele-btn-icon"
  322. @click="search"
  323. >
  324. 查询
  325. </el-button>
  326. <el-button
  327. @click="reset"
  328. size="mini"
  329. icon="el-icon-refresh-left"
  330. type="primary"
  331. >重置</el-button
  332. >
  333. </div>
  334. </el-col>
  335. <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
  336. <el-form-item label-width="0px">
  337. <div class="btn-wrapper">
  338. <!-- <el-button
  339. @click="payBudget"
  340. size="mini"
  341. type="danger"
  342. >
  343. 交期预估</el-button
  344. > -->
  345. <!-- <el-button @click="homogeneityInspect" size="mini" type="success">
  346. 齐套性检查</el-button
  347. > -->
  348. <el-dropdown trigger="click" @command="homogeneityInspect">
  349. <el-button size="mini" type="success">齐套性检查</el-button>
  350. <el-dropdown-menu slot="dropdown">
  351. <el-dropdown-item command="1"> 自制件 </el-dropdown-item>
  352. <el-dropdown-item command="2"> 采购件 </el-dropdown-item>
  353. <!-- <el-dropdown-item command="3"> 外协件 </el-dropdown-item> -->
  354. </el-dropdown-menu>
  355. </el-dropdown>
  356. <el-button
  357. @click="goProduct"
  358. size="mini"
  359. v-if="activeName != 'second'"
  360. >
  361. 转生产计划</el-button
  362. >
  363. <el-button
  364. type="primary"
  365. size="mini"
  366. @click="orderRefresh"
  367. :loading="loading"
  368. >订单刷新</el-button
  369. >
  370. <el-button
  371. type="success"
  372. size="mini"
  373. @click="toCreate"
  374. v-if="activeName == 'first'"
  375. >创建订单</el-button
  376. >
  377. <el-upload
  378. class="avatar-uploader"
  379. action="#"
  380. :show-file-list="false"
  381. v-if="activeName == 'first'"
  382. :http-request="uploadFile"
  383. :before-upload="beforeUpload"
  384. :on-change="handleChange"
  385. ref="uploadFile"
  386. >
  387. <el-button type="warning" size="mini">批量导入</el-button>
  388. </el-upload>
  389. <el-button type="info" size="mini"> 下载模板 </el-button>
  390. <el-button
  391. type="danger"
  392. size="mini"
  393. @click="batchDelete"
  394. v-if="activeName == 'first'"
  395. >批量删除</el-button
  396. >
  397. <el-button
  398. type="danger"
  399. size="mini"
  400. @click="synchronous"
  401. v-if="activeName == 'first' && clientEnvironmentId == 2"
  402. >同步数据</el-button
  403. >
  404. </div>
  405. </el-form-item>
  406. </el-col>
  407. </el-row>
  408. <!-- 导入异常 -->
  409. <import-exception ref="importDialog"> </import-exception>
  410. <!-- 创建订单 -->
  411. <create-order ref="createDialog" @refresh="search"> </create-order>
  412. <!-- 订单组合 -->
  413. <group-order ref="groupDialog"> </group-order>
  414. </el-form>
  415. </template>
  416. <script>
  417. import {
  418. findBomCategoryByCategoryId,
  419. listBomType
  420. } from '@/api/productionPlan/index';
  421. import ImportException from '../components/import-exception.vue';
  422. import CreateOrder from '../components/create-order.vue';
  423. import GroupOrder from '../components/group-order.vue';
  424. import { importFile } from '@/api/saleOrder';
  425. import {
  426. pullSalesOrder,
  427. deleteOrder,
  428. synchronousDataByJDY
  429. } from '@/api/saleOrder';
  430. export default {
  431. props: {
  432. selection: Array,
  433. activeName: String
  434. },
  435. components: {
  436. ImportException,
  437. CreateOrder,
  438. GroupOrder
  439. },
  440. data() {
  441. // 默认表单数据
  442. const defaultWhere = {
  443. keyWord: '',
  444. code: '',
  445. productCode: '',
  446. customerName: '',
  447. lineNumber: '',
  448. model: '',
  449. brandNo: '',
  450. orderSource: 0,
  451. saleType: 0,
  452. proStu: '',
  453. orderLibraryType: 0,
  454. salesman: '',
  455. productName: ''
  456. };
  457. return {
  458. // 表单数据
  459. defaultWhere,
  460. where: { ...defaultWhere },
  461. time: [],
  462. fileList: [],
  463. awaitProcuct: [{ value: 1, label: '待排产' }],
  464. treatProcuct: [{ value: 0, label: '未排完' }],
  465. alreadyProcuct: [
  466. { value: 0, label: '所有状态' },
  467. { value: 2, label: '待发布' },
  468. { value: 3, label: '发布失败' },
  469. { value: 4, label: '待生产' },
  470. { value: 5, label: '生产中' },
  471. { value: 6, label: '已完成' },
  472. { value: 7, label: '已延期' }
  473. ],
  474. orderTypeList: [
  475. { value: 0, label: '所有' },
  476. { value: 1, label: '按单' },
  477. { value: 2, label: '按库' }
  478. ],
  479. orderList: [
  480. {
  481. value: 0,
  482. label: '库存性订单'
  483. },
  484. {
  485. value: 1,
  486. label: '生产性订单'
  487. },
  488. {
  489. value: 2,
  490. label: '无客户生产性订单'
  491. },
  492. {
  493. value: 4,
  494. label: '不定向订单'
  495. }
  496. ],
  497. loading: false
  498. };
  499. },
  500. computed: {
  501. // 是否开启响应式布局
  502. styleResponsive() {
  503. return this.$store.state.theme.styleResponsive;
  504. },
  505. clientEnvironmentId() {
  506. return this.$store.state.user.info.clientEnvironmentId;
  507. }
  508. },
  509. watch: {
  510. activeName: {
  511. handler() {
  512. if (this.activeName == 'first') {
  513. this.where.proStu = 1;
  514. } else {
  515. this.where.proStu = 0;
  516. }
  517. this.reset();
  518. },
  519. immediate: true
  520. }
  521. },
  522. created() {},
  523. methods: {
  524. /* 搜索 */
  525. search() {
  526. if (this.time.length) {
  527. this.where.startTime = this.time[0];
  528. this.where.endTime = this.time[1];
  529. }
  530. this.$emit('search', this.where);
  531. },
  532. /* 重置 */
  533. reset() {
  534. this.time = [];
  535. this.where = { ...this.defaultWhere };
  536. if (this.activeName == 'first') {
  537. this.where.proStu = 1;
  538. } else {
  539. this.where.proStu = 0;
  540. }
  541. this.search();
  542. },
  543. toImport() {
  544. this.$refs.importDialog.open();
  545. },
  546. toCreate() {
  547. this.$refs.createDialog.open();
  548. },
  549. toGroup() {
  550. this.$refs.groupDialog.open();
  551. },
  552. async goProduct() {
  553. console.log(this.selection, 'this.selection 33');
  554. if (!this.selection.length) {
  555. return this.$message.warning('请先勾选一个或多个订单!');
  556. }
  557. const productCode = this.selection[0].productCode;
  558. const orderType = this.selection[0].orderType;
  559. const produceRoutingId = this.selection[0].produceRoutingId;
  560. const measuringUnit = this.selection[0].measuringUnit;
  561. const factoriesId = this.selection[0].factoriesId;
  562. const factoriesIdName = this.selection[0].factoriesIdName;
  563. const bomCategoryId = this.selection[0].bomCategoryId;
  564. const saleType = this.selection[0].saleType;
  565. let produceType = this.selection[0].produceType[0];
  566. // if(!factoriesId){
  567. // this.$message.warning('工厂未选择!');
  568. // return;
  569. // }
  570. for (var i = 0; i < this.selection.length; i++) {
  571. if (productCode != this.selection[i].productCode) {
  572. return this.$message.warning('产品编码不一致!');
  573. }
  574. if (orderType != this.selection[i].orderType) {
  575. return this.$message.warning('订单类型不一致!');
  576. }
  577. if (saleType != this.selection[i].saleType) {
  578. return this.$message.warning('销售类型不一致!');
  579. }
  580. if (produceRoutingId != this.selection[i].produceRoutingId) {
  581. return this.$message.warning('工艺路线不一致!');
  582. }
  583. if (measuringUnit != this.selection[i].measuringUnit) {
  584. return this.$message.warning('计量单位不一致!');
  585. }
  586. if (factoriesId != this.selection[i].factoriesId) {
  587. return this.$message.warning('所属工厂不一致!');
  588. }
  589. }
  590. const list = [];
  591. let startTime = '';
  592. let endTime = '';
  593. this.selection.map((item) => {
  594. if (!startTime) {
  595. startTime = item.releaseTime;
  596. } else {
  597. startTime =
  598. this.compareTimes(startTime, item.releaseTime) == 1
  599. ? item.releaseTime
  600. : startTime;
  601. }
  602. if (!endTime) {
  603. endTime = item.deliveryTime;
  604. } else {
  605. endTime =
  606. this.compareTimes(endTime, item.deliveryTime) == 2
  607. ? item.deliveryTime
  608. : endTime;
  609. }
  610. list.push(item.id);
  611. });
  612. if (produceRoutingId && !bomCategoryId) {
  613. produceType = '';
  614. }
  615. console.log(this.selection, 'this.selection 3333');
  616. let categoryId = this.selection[0].categoryId;
  617. let params = { categoryId: categoryId };
  618. const res = await listBomType(params);
  619. console.log(res, 'res 000');
  620. let bomMap = {
  621. 1: { code: 1, name: 'PBOM' },
  622. 2: { code: 2, name: 'MBOM' },
  623. 3: { code: 3, name: 'ABOM' }
  624. };
  625. let arr = [];
  626. res.map((item) => {
  627. if (bomMap[item.bomType]) {
  628. arr.push(bomMap[item.bomType]);
  629. delete bomMap[item.bomType];
  630. }
  631. });
  632. if (arr.length > 0 && produceType) {
  633. let obj = arr.find((el) => el.code == produceType);
  634. produceType = obj ? produceType : arr[0].code;
  635. }
  636. if(arr.length == 0){
  637. produceType = '';
  638. }
  639. console.log(produceType,'produceType')
  640. console.log(arr, 'arr 222');
  641. // const res = await findBomCategoryByCategoryId(categoryId);
  642. // let arr = [];
  643. // if (res.length > 0) {
  644. // let obj = res.find((item) => item.id === bomCategoryId);
  645. // produceType = obj ? obj.bomType : produceType;
  646. // let listMap = {
  647. // 1: { code: 1, name: 'PBOM' },
  648. // 2: { code: 2, name: 'MBOM' },
  649. // 3: { code: 3, name: 'ABOM' }
  650. // };
  651. // res.forEach((el) => {
  652. // if (listMap[el.bomType]) {
  653. // arr.push(listMap[el.bomType]);
  654. // delete listMap[el.bomType];
  655. // }
  656. // });
  657. // }
  658. this.$router
  659. .push({
  660. path: '/saleOrder/salesToProduction',
  661. query: {
  662. orderType,
  663. selection: JSON.stringify(list),
  664. produceRoutingId: produceRoutingId,
  665. produceRoutingName: this.selection[0].produceRoutingName,
  666. categoryId: this.selection[0].categoryId,
  667. factoriesId: factoriesId,
  668. factoriesIdName: factoriesIdName,
  669. bomCategoryId: bomCategoryId,
  670. produceType: produceType,
  671. startTime,
  672. endTime,
  673. producedList: JSON.stringify(arr)
  674. }
  675. })
  676. .catch((error) => {
  677. // 忽略重复导航错误
  678. if (error.name !== 'NavigationDuplicated') {
  679. console.error('路由跳转失败:', error);
  680. }
  681. });
  682. },
  683. // 比较时间大小
  684. compareTimes(timeStr1, timeStr2) {
  685. // 将时间字符串转换为Date对象
  686. // 注意:需要将空格替换为'T'以符合ISO格式,或者直接按格式解析
  687. const date1 = new Date(timeStr1.replace(' ', 'T'));
  688. const date2 = new Date(timeStr2.replace(' ', 'T'));
  689. if (date1 > date2) {
  690. return 1;
  691. } else {
  692. return 2;
  693. }
  694. },
  695. // 刷新订单
  696. orderRefresh() {
  697. this.loading = true;
  698. pullSalesOrder()
  699. .then((res) => {
  700. this.$message.success('刷新成功!');
  701. this.loading = false;
  702. })
  703. .catch(() => {
  704. this.loading = false;
  705. });
  706. },
  707. // 点击批量删除
  708. batchDelete() {
  709. if (!this.selection.length) {
  710. return this.$message.warning('请先勾选一个或多个订单!');
  711. }
  712. let ids = [];
  713. this.selection.map((item) => {
  714. ids.push(item.id);
  715. });
  716. this.$confirm('此操作将永久删除所选择的订单, 是否继续?', '提示', {
  717. confirmButtonText: '确定',
  718. cancelButtonText: '取消',
  719. type: 'warning'
  720. })
  721. .then(() => {
  722. deleteOrder(ids).then((res) => {
  723. this.$message.success(res);
  724. this.search();
  725. });
  726. })
  727. .catch(() => {});
  728. },
  729. handleChange(file, fileList) {
  730. this.fileList = fileList;
  731. console.log(fileList);
  732. },
  733. //上传限制
  734. beforeUpload(file) {
  735. const isLt10M = file.size / 1024 / 1024 < 10;
  736. if (!isLt10M) {
  737. this.$message.error('上传文件大小不能超过 10MB!');
  738. }
  739. return isLt10M;
  740. },
  741. //文件上传
  742. uploadFile(param) {
  743. let fd = new FormData();
  744. this.fileList.forEach((item) => {
  745. fd.append('importExcel', item.raw);
  746. });
  747. importFile(fd)
  748. .then((res) => {
  749. this.$emit('search', this.where);
  750. this.$refs.uploadFile.clearFiles();
  751. })
  752. .catch((data) => {
  753. if (data.code != -1) {
  754. this.$message.error(data.message);
  755. }
  756. })
  757. .finally(() => {
  758. this.$refs.uploadFile.clearFiles();
  759. });
  760. },
  761. synchronous() {
  762. synchronousDataByJDY().then((res) => {
  763. this.$message.success('同步成功!');
  764. this.reset();
  765. });
  766. },
  767. // payBudget() {},
  768. homogeneityInspect(val) {
  769. console.log(val, 'val');
  770. this.$emit('check', val);
  771. }
  772. }
  773. };
  774. </script>
  775. <style lang="scss" scoped>
  776. .ele-form-actions {
  777. display: flex;
  778. align-items: center;
  779. justify-content: flex-start;
  780. padding-top: 4.5px;
  781. }
  782. .btn-wrapper {
  783. display: flex;
  784. align-items: center;
  785. justify-content: flex-start;
  786. flex-wrap: wrap;
  787. }
  788. .avatar-uploader {
  789. display: inline-block;
  790. margin: 0 10px;
  791. }
  792. .button-link {
  793. color: #fff;
  794. }
  795. .searchExpend {
  796. padding: 20px 50px 0 30px;
  797. }
  798. </style>