saleOrderSteel.vue 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131
  1. <template>
  2. <!-- 销售订单页面 -->
  3. <div class="salePlan">
  4. <div class="top">
  5. <el-form :inline="true">
  6. <el-form-item v-if="activeName != 'first'">
  7. <el-date-picker
  8. v-model="startTime"
  9. type="datetime"
  10. placeholder="选择日期"
  11. style="width:220px"
  12. >
  13. </el-date-picker>
  14. <span>至</span>
  15. <el-date-picker
  16. v-model="endTime"
  17. type="datetime"
  18. placeholder="选择日期"
  19. style="width:220px"
  20. >
  21. </el-date-picker>
  22. </el-form-item>
  23. <el-form-item>
  24. <el-input
  25. placeholder="请输入内容"
  26. v-model="input"
  27. clearable
  28. style="width:250px"
  29. >
  30. </el-input>
  31. <el-button type="primary" @click="onclick">
  32. <i class="el-icon-search"></i>
  33. </el-button>
  34. </el-form-item>
  35. <el-form-item>
  36. <el-button type="primary" @click="btnclick(0)">
  37. <i class="el-icon-plus"></i>新增
  38. </el-button>
  39. <el-button type="primary" @click="refresh">
  40. <i class="el-icon-refresh"></i>
  41. </el-button>
  42. <el-button type="primary" @click="batchReport">
  43. <i class="upload2"></i>批量上传
  44. </el-button>
  45. <el-button
  46. type="primary"
  47. @click="exportData()"
  48. v-if="activeName == 'first'"
  49. ><i class="el-icon-download"></i>导出Excel</el-button
  50. >
  51. <el-form-item v-if="activeName == 'first'">
  52. <el-upload
  53. class="upload-excel"
  54. action=""
  55. :on-change="importExcel"
  56. :show-file-list="false"
  57. accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
  58. :auto-upload="false"
  59. >
  60. <el-button type="primary" icon="el-icon-upload"
  61. >导入Excel</el-button
  62. >
  63. </el-upload>
  64. </el-form-item>
  65. <el-button disabled>物资总件数</el-button>
  66. <el-input
  67. placeholder=""
  68. v-model="matSum"
  69. clearable
  70. style="width:100px"
  71. disabled
  72. >
  73. </el-input>
  74. </el-form-item>
  75. </el-form>
  76. </div>
  77. <div class="table">
  78. <el-tabs v-model="activeName" @tab-click="handleClick">
  79. <!-- 未上报 -->
  80. <el-tab-pane label="未上报" name="first">
  81. <mergeRowTable
  82. v-bind.sync="option"
  83. ref="excelDom"
  84. @selection-change="selectionChange"
  85. :pageSize="200"
  86. @func="func"
  87. >
  88. <el-table-column
  89. fixed="right"
  90. label="操作"
  91. align="center"
  92. width="200"
  93. >
  94. <template slot-scope="scope">
  95. <el-button
  96. @click="uploadclick(scope.row.saleOrderId)"
  97. type="text"
  98. size="small"
  99. >上传</el-button
  100. >
  101. <el-button
  102. @click="click(scope.row.saleOrderId)"
  103. type="text"
  104. size="small"
  105. >修改</el-button
  106. >
  107. <el-button
  108. type="text"
  109. size="small"
  110. @click="deleteclick(scope.row.saleOrderId)"
  111. >删除</el-button
  112. >
  113. <el-button
  114. type="text"
  115. size="small"
  116. @click="copyClick(scope.row.saleOrderId)"
  117. >复制</el-button
  118. >
  119. </template>
  120. </el-table-column>
  121. </mergeRowTable>
  122. </el-tab-pane>
  123. <!-- 已审批 -->
  124. <el-tab-pane label="已审批" name="four">
  125. <mergeRowTable
  126. v-bind.sync="option4"
  127. ref="table"
  128. :pageSize="200"
  129. @func="func1"
  130. >
  131. <el-table-column
  132. fixed="right"
  133. label="操作"
  134. align="center"
  135. width="280"
  136. >
  137. <template slot-scope="scope">
  138. <el-button
  139. @click="getOrderDetails(scope.row.saleOrderId)"
  140. type="text"
  141. size="small"
  142. >运单</el-button
  143. >
  144. <el-button
  145. @click="deleteSaleOrder(scope.row)"
  146. type="text"
  147. size="small"
  148. >关闭订单</el-button
  149. >
  150. <el-button
  151. @click="adverseCloseSaleOrder(scope.row)"
  152. type="text"
  153. size="small"
  154. >反关闭订单</el-button
  155. >
  156. <el-button
  157. @click="updateSaleOrder(scope.row)"
  158. type="text"
  159. size="small"
  160. >异常处理</el-button
  161. >
  162. <el-button
  163. type="text"
  164. size="small"
  165. @click="copyClick(scope.row.saleOrderId)"
  166. >复制</el-button
  167. >
  168. </template>
  169. </el-table-column>
  170. </mergeRowTable>
  171. </el-tab-pane>
  172. <el-tab-pane label="反审批" name="five">
  173. <mergeRowTable
  174. v-bind.sync="option5"
  175. ref="table2"
  176. :pageSize="200"
  177. @func="func3"
  178. >
  179. <el-table-column
  180. fixed="right"
  181. label="操作"
  182. align="center"
  183. width="200"
  184. >
  185. <template slot-scope="scope">
  186. <el-button
  187. @click="updateSaleOrder(scope.row)"
  188. type="text"
  189. size="small"
  190. >异常处理</el-button
  191. >
  192. </template>
  193. </el-table-column></mergeRowTable
  194. >
  195. </el-tab-pane>
  196. <!-- 已上报 -->
  197. <el-tab-pane label="已上报" name="second">
  198. <mergeRowTable
  199. v-bind.sync="option2"
  200. ref="table2"
  201. :pageSize="200"
  202. @func="func2"
  203. >
  204. <el-table-column
  205. fixed="right"
  206. label="操作"
  207. align="center"
  208. width="200"
  209. >
  210. <template slot-scope="scope">
  211. <el-button
  212. @click="closeSteelOrderAndEas(scope.row)"
  213. type="text"
  214. size="small"
  215. >关闭订单</el-button
  216. >
  217. <el-button
  218. @click="updateReportedSaleOrder(scope)"
  219. type="text"
  220. size="small"
  221. >修改</el-button
  222. >
  223. </template>
  224. </el-table-column>
  225. </mergeRowTable>
  226. </el-tab-pane>
  227. </el-tabs>
  228. </div>
  229. <div>
  230. <el-dialog
  231. title="销售订单预览"
  232. :visible.sync="dialogTableVisible"
  233. :center="true"
  234. width="100%"
  235. >
  236. <ExcelSaleOrder :tableData="tableData"></ExcelSaleOrder>
  237. <div class="btn">
  238. <el-button
  239. type="primary"
  240. @click="addExcelInport"
  241. @keyup.native.enter="addExcelInport"
  242. >确认</el-button
  243. >
  244. <el-button type="primary" @click="cancelExcelInport">取消</el-button>
  245. </div>
  246. </el-dialog>
  247. </div>
  248. </div>
  249. </template>
  250. <script>
  251. import { getCookie } from "@/utils/util.js";
  252. import { sjTime } from "@/utils/sharedJsFile";
  253. import { isNumber } from "../../../ADMINISTRATORS/app";
  254. import ExcelSaleOrder from "../saleContract/importExcelSaleOrder.vue";
  255. export default {
  256. name: "saleOrder",
  257. components: {
  258. ExcelSaleOrder
  259. },
  260. data() {
  261. return {
  262. dialogTableVisible: false,
  263. startTime: null,
  264. endTime: null,
  265. batchReportList: [],
  266. activeName: "first",
  267. tableTitle: "未上传销售订单报表",
  268. drawer: false,
  269. input: "",
  270. index: "",
  271. carrierId: null,
  272. carrierName: null,
  273. shipperName: "四川省达州钢铁集团有限责任公司",
  274. shipperId: 1,
  275. receivingCompany: [
  276. "四川省达州钢铁集团有限责任公司",
  277. "四川达钢商贸有限公司"
  278. ],
  279. option: {
  280. // 表格请求数据的地址
  281. requestUrl: "",
  282. selectionType: "select",
  283. comparison: "saleNumber",
  284. columnIndexs: [0, 1, 2, 3, 4, 9, 10, 11, 12, 13, 14, 15, 16, 17]
  285. },
  286. option2: {
  287. // 表格请求数据的地址
  288. requestUrl: "",
  289. comparison: "saleNumber",
  290. columnIndexs: [0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15, 16]
  291. },
  292. option4: {
  293. // 表格请求数据的地址
  294. requestUrl: "",
  295. comparison: "saleNumber",
  296. columnIndexs: [
  297. 0,
  298. 1,
  299. 2,
  300. 3,
  301. 8,
  302. 9,
  303. 10,
  304. 11,
  305. 12,
  306. 13,
  307. 14,
  308. 15,
  309. 16,
  310. 17,
  311. 18,
  312. 20,
  313. 21,
  314. 22
  315. ]
  316. },
  317. option5: {
  318. // 表格请求数据的地址
  319. requestUrl: "",
  320. comparison: "saleNumber",
  321. columnIndexs: [
  322. 0,
  323. 1,
  324. 2,
  325. 3,
  326. 7,
  327. 8,
  328. 9,
  329. 10,
  330. 11,
  331. 12,
  332. 13,
  333. 14,
  334. 15,
  335. 16,
  336. 17,
  337. 18,
  338. 20,
  339. 21
  340. ]
  341. },
  342. mapList: [],
  343. mapItemList: [],
  344. matSum: null,
  345. tableData: [],
  346. saleDateOfReceipt: null,
  347. //销售订单主表数据
  348. saleOrderList: [
  349. "receiveName",
  350. "isSelfMention",
  351. "saleRemark",
  352. "saleOrderReceiveCustomer",
  353. "salerName"
  354. ],
  355. saleOrderMapList: [
  356. "truckNo",
  357. "province",
  358. "district",
  359. "town",
  360. "truckRemark",
  361. "place",
  362. "saleOrderConsigneeTel",
  363. "saleDateOfReceipt",
  364. "materialName",
  365. "materialSpecification",
  366. "materialModel",
  367. "materialNumber",
  368. "steelMeters",
  369. "isPoundSale"
  370. ]
  371. };
  372. },
  373. created() {
  374. if (getCookie("orgCode") == "shouhuokehu") {
  375. this.option.requestUrl =
  376. "/api/v1/ams/getSaleOrderInfoes?apiId=408&consigneeSsoId=" +
  377. getCookie("userId") +
  378. "&i=" +
  379. new Date();
  380. this.option2.requestUrl =
  381. "/api/v1/ams/getSaleOrderReportedes?apiId=408&consigneeSsoId=" +
  382. getCookie("userId") +
  383. "&i=" +
  384. new Date();
  385. this.option4.requestUrl =
  386. "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&shipperId=1&saleType=1&consigneeSsoId=" +
  387. getCookie("userId");
  388. this.option5.requestUrl =
  389. "/api/v1/ams/getSteelOrderDeletedList?apiId=409&consigneeSsoId=" +
  390. getCookie("userId") +
  391. "&i=" +
  392. new Date();
  393. } else if (getCookie("orgCode") == "xiaoshouyewuyuan") {
  394. this.option.requestUrl =
  395. "/api/v1/ams/getSaleOrderInfoes?apiId=408&saler=" +
  396. getCookie("loginName") +
  397. "&i=" +
  398. new Date();
  399. this.option2.requestUrl =
  400. "/api/v1/ams/getSaleOrderReportedes?apiId=408&saler=" +
  401. getCookie("loginName") +
  402. "&i=" +
  403. new Date();
  404. this.option4.requestUrl =
  405. "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&shipperId=1&saleType=1&saler=" +
  406. getCookie("loginName") +
  407. "&i=" +
  408. new Date();
  409. this.option5.requestUrl =
  410. "/api/v1/ams/getSteelOrderDeletedList?apiId=409&saler=" +
  411. getCookie("loginName");
  412. } else {
  413. this.option.requestUrl =
  414. "/api/v1/ams/getSaleOrderInfoes?apiId=408&consigneeSsoId=" +
  415. null +
  416. "&i=" +
  417. new Date();
  418. this.option2.requestUrl =
  419. "/api/v1/ams/getSaleOrderReportedes?apiId=408&consigneeSsoId=" +
  420. null +
  421. "&i=" +
  422. new Date();
  423. this.option4.requestUrl =
  424. "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&shipperId=1&saleType=1&consigneeSsoId=" +
  425. null +
  426. "&i=" +
  427. new Date();
  428. this.option5.requestUrl =
  429. "/api/v1/ams/getSteelOrderDeletedList?apiId=409&consigneeSsoId=" +
  430. null +
  431. "&i=" +
  432. new Date();
  433. }
  434. let loadTime1 = new Date(
  435. new Date(new Date().toLocaleDateString()).getTime() +
  436. (3600 * 1000 * 8 - 1)
  437. ); // 当天8点前
  438. let loadTime2 = new Date(
  439. new Date(new Date().toLocaleDateString()).getTime() +
  440. (3600 * 1000 * 32 - 1)
  441. ); // 次天8点前
  442. if (new Date().getTime() - loadTime1 > 0) {
  443. this.saleDateOfReceipt = loadTime2;
  444. } else {
  445. this.saleDateOfReceipt = loadTime1;
  446. }
  447. // document.addEventListener("keydown", e => {
  448. // let key = window.event.keyCode;
  449. // if (key == 13) {
  450. // // 13是enter键的键盘码 如果等于13 就调用click的登录方法
  451. // this.addExcelInport();
  452. // }
  453. // });
  454. },
  455. // beforeDestroy() {
  456. // //这里的 this.login('loginForm') 指的是键盘事件的方法名
  457. // document.removeEventListener("keydown", this.addExcelInport());
  458. // },
  459. activated() {
  460. if (getCookie("orgCode") == "shouhuokehu") {
  461. this.option.requestUrl =
  462. "/api/v1/ams/getSaleOrderInfoes?apiId=408&consigneeSsoId=" +
  463. getCookie("userId") +
  464. "&i=" +
  465. new Date();
  466. } else if (getCookie("orgCode") == "xiaoshouyewuyuan") {
  467. this.option.requestUrl =
  468. "/api/v1/ams/getSaleOrderInfoes?apiId=408&saler=" +
  469. getCookie("loginName") +
  470. "&i=" +
  471. new Date();
  472. } else {
  473. this.option.requestUrl =
  474. "/api/v1/ams/getSaleOrderInfoes?apiId=408&consigneeSsoId=" +
  475. null +
  476. "&i=" +
  477. new Date();
  478. }
  479. let loadTime1 = new Date(
  480. new Date(new Date().toLocaleDateString()).getTime() +
  481. (3600 * 1000 * 8 - 1)
  482. ); // 当天8点前
  483. let loadTime2 = new Date(
  484. new Date(new Date().toLocaleDateString()).getTime() +
  485. (3600 * 1000 * 32 - 1)
  486. ); // 次天8点前
  487. if (new Date().getTime() - loadTime1 > 0) {
  488. this.saleDateOfReceipt = loadTime2;
  489. } else {
  490. this.saleDateOfReceipt = loadTime1;
  491. }
  492. },
  493. methods: {
  494. //导入Excel格式
  495. //导入excel
  496. importExcel(file) {
  497. let that = this;
  498. if (!file) {
  499. that.$message({
  500. message: "文件错误!",
  501. type: "warning"
  502. });
  503. return;
  504. }
  505. this.tableData = [];
  506. var reader = new FileReader();
  507. var data = null;
  508. var workbook = null;
  509. //设置读取操作
  510. reader.onload = function(e) {
  511. console.log(e);
  512. data = e.target.result;
  513. workbook = XLSX.read(data, {
  514. type: "binary"
  515. });
  516. let rows = XLSX.utils.sheet_to_json(
  517. workbook.Sheets[workbook.SheetNames[0]]
  518. ); //只取第一页
  519. console.log("rows", rows);
  520. Array.from(rows).forEach((e, index) => {
  521. let map = {};
  522. try {
  523. Object.keys(e).forEach(e1 => {
  524. if (e1.includes("物资名称")) {
  525. map.materialName = e[e1];
  526. }
  527. if (e1.includes("下单客户")) {
  528. map.receiveName = e[e1];
  529. }
  530. if (e1.includes("米数")) {
  531. map.steelMeters = e[e1];
  532. }
  533. if (e1.includes("物资规格")) {
  534. if ((e[e1] + "").includes("Φ")) {
  535. map.materialSpecification = e[e1];
  536. } else {
  537. map.materialSpecification = "Φ" + e[e1];
  538. }
  539. }
  540. if (e1.includes("物资型号")) {
  541. map.materialModel = e[e1];
  542. }
  543. if (e1.includes("物资件数")) {
  544. if (isNumber(e[e1])) {
  545. map.materialNumber = e[e1];
  546. } else {
  547. throw new Error(
  548. `该Excel第--${index +
  549. 2}--行-“物资件数”错误,请核实后再输入(件数输入整数)`
  550. );
  551. }
  552. }
  553. if (e1.includes("车序号")) {
  554. if (isNumber(e[e1])) {
  555. map.truckNo = e[e1];
  556. } else {
  557. throw new Error(
  558. `该Excel第--${index +
  559. 2}--行-“车序号”错误,请核实后再输入(车序号输入正整数)`
  560. );
  561. }
  562. }
  563. if (e1.includes("收款公司")) {
  564. if (that.receivingCompany.indexOf(e[e1]) === -1) {
  565. throw new Error(
  566. `该Excel第--${index + 2}--行-“收款公司”错误,请核实后再输入`
  567. );
  568. } else {
  569. map.saleOrderReceiveCustomer = e[e1];
  570. }
  571. }
  572. if (e1.includes("业务员")) {
  573. map.salerName = e[e1];
  574. }
  575. if (e1.includes("摘要")) {
  576. map.saleRemark = e[e1];
  577. }
  578. if (e1.includes("省")) {
  579. map.province = e[e1];
  580. }
  581. if (e1.includes("市")) {
  582. map.district = e[e1];
  583. }
  584. if (e1.includes("县/区")) {
  585. map.town = e[e1];
  586. }
  587. if (e1.includes("具体收货地址")) {
  588. map.place = e[e1];
  589. }
  590. if (e1.includes("收货客户电话")) {
  591. map.saleOrderConsigneeTel = e[e1];
  592. }
  593. if (e1.includes("备注")) {
  594. map.truckRemark = e[e1];
  595. }
  596. if (e1.includes("是否磅重交货")) {
  597. if (e[e1] == "是") {
  598. map.isPoundSale = 0;
  599. } else if (e[e1] == "否") {
  600. map.isPoundSale = 1;
  601. } else {
  602. throw new Error(
  603. `该Excel第--${index +
  604. 2}--行-“是否磅重交货”-错误,请核实后再输入`
  605. );
  606. }
  607. }
  608. if (e1.includes("是否自提")) {
  609. if (e[e1] === "是" || e[e1] === "否") {
  610. map.isSelfMention = e[e1];
  611. } else {
  612. throw new Error(
  613. `该Excel第--${index + 2}--行-“是否自提”-错误,请核实后再输入`
  614. );
  615. }
  616. }
  617. });
  618. map.shipperName = that.shipperName;
  619. that.tableData.push(map);
  620. } catch (e) {
  621. that.$message.error(e.message);
  622. }
  623. });
  624. that.dialogTableVisible = true;
  625. return;
  626. };
  627. reader.readAsBinaryString(file.raw); //以二进制方式读取
  628. },
  629. addExcelInport() {
  630. this.$confirm("以上均核对正确,确定导入Excel", "提示", {
  631. cancelButtonText: "取消",
  632. confirmButtonText: "确认",
  633. center: true
  634. })
  635. .then(() => {
  636. let map = {};
  637. let arr = [];
  638. this.tableData.forEach(e => {
  639. let mapMaterial = {};
  640. Object.keys(e).forEach(e1 => {
  641. if (this.saleOrderList.includes(e1)) {
  642. map[e1] = e[e1];
  643. }
  644. if (this.saleOrderMapList.includes(e1)) {
  645. mapMaterial[e1] = e[e1];
  646. }
  647. });
  648. mapMaterial.saleDateOfReceipt = sjTime(this.saleDateOfReceipt);
  649. arr.push(mapMaterial);
  650. });
  651. map.shipperId = 1;
  652. map.mapList = arr;
  653. console.log(map);
  654. this.axios
  655. .post("/api/v1/ams/addSteelSaleOrder", map)
  656. .then(res => {
  657. if (res.data.code == "200") {
  658. this.$message.success("新增销售订单成功!");
  659. this.getRequestUrl();
  660. this.dialogTableVisible = false;
  661. this.tableData = [];
  662. } else {
  663. this.$message.error(res.data.data);
  664. this.getRequestUrl();
  665. this.dialogTableVisible = false;
  666. this.tableData = [];
  667. }
  668. })
  669. .catch(e => {
  670. this.$message.error("生成错误!");
  671. this.dialogTableVisible = false;
  672. this.tableData = [];
  673. });
  674. })
  675. .catch(() => {
  676. this.$message.info("取消导入");
  677. });
  678. },
  679. cancelExcelInport() {
  680. this.dialogTableVisible = false;
  681. },
  682. adverseCloseSaleOrder(row) {
  683. console.log(row);
  684. this.$confirm("确定反关闭整条订单吗?", "继续?", {
  685. cancelButtonText: "取消",
  686. confirmButtonText: "确定",
  687. center: true
  688. }).then(() => {
  689. this.axios
  690. .post(
  691. "/api/v1/ams/adverseCloseSaleOrder?saleOrderId=" + row.saleOrderId
  692. )
  693. .then(res => {
  694. if (res.data.code == "200") {
  695. this.$message.success("反关闭成功");
  696. this.getRequestUrl();
  697. } else {
  698. this.$message.error("反关闭失败");
  699. this.getRequestUrl();
  700. }
  701. })
  702. .catch(() => {
  703. this.$message.error("反关闭失败");
  704. });
  705. });
  706. },
  707. updateReportedSaleOrder(scope) {
  708. this.$router.push("/editSaleOrder/" + scope.row.saleOrderId);
  709. },
  710. updateSaleOrderStatusById(scope) {
  711. console.log(scope.row.saleOrderId);
  712. this.$confirm("是否撤销", "警告", {
  713. confirmButtonText: "确定撤销",
  714. cancelButtonText: "取消撤销",
  715. type: "warning",
  716. center: true
  717. })
  718. .then(() => {
  719. this.axios
  720. .post(
  721. "/api/v1/uc/updateSaleOrderStatusById?saleOrderId=" +
  722. scope.row.saleOrderId
  723. )
  724. .then(res => {
  725. if (res.data.code == "200") {
  726. this.$message.success("撤销成功");
  727. this.activeName = "first";
  728. this.getRequestUrl();
  729. } else {
  730. this.$message.error("撤销失败");
  731. }
  732. })
  733. .catch(() => {
  734. this.$message.error("撤销失败");
  735. });
  736. })
  737. .catch(() => {
  738. console.log("取消撤销");
  739. });
  740. },
  741. func(res) {
  742. this.matSum = res.list.reduce(function(prev, item) {
  743. return prev + item.materialNumber;
  744. }, 0);
  745. },
  746. func1(res) {
  747. this.matSum = res.list.reduce(function(prev, item) {
  748. return prev + item.materialNumber;
  749. }, 0);
  750. },
  751. func2(res) {
  752. this.matSum = res.list.reduce(function(prev, item) {
  753. return prev + item.materialNumber;
  754. }, 0);
  755. },
  756. func3(res) {
  757. this.matSum = res.list.reduce(function(prev, item) {
  758. return prev + item.materialNumber;
  759. }, 0);
  760. },
  761. closeSteelOrderAndEas(row) {
  762. this.$prompt("此操作将同步关闭金蝶和物流的销售订单,是否继续?", "提示", {
  763. confirmButtonText: "确定",
  764. cancelButtonText: "取消",
  765. inputPlaceholder: "请输入关闭原因-必填!!!",
  766. center: true,
  767. type: "warning"
  768. })
  769. .then(({ value }) => {
  770. if (value != null) {
  771. let mapValue = {
  772. number: row.saleNumber,
  773. saleOrderId: row.saleOrderId,
  774. reason: value
  775. };
  776. console.log(mapValue);
  777. this.axios
  778. .post("/api/v1/ams/deleteSaleOrderSame", mapValue)
  779. .then(res => {
  780. if (res.data.code == 200) {
  781. this.$message.success("关闭成功");
  782. this.getRequestUrl();
  783. } else {
  784. this.$message.error("关闭失败,请联系管理员");
  785. }
  786. })
  787. .catch(() => {
  788. this.$message.error("关闭失败,请联系管理员");
  789. this.getRequestUrl();
  790. });
  791. } else {
  792. this.$message.error("请输入理由");
  793. }
  794. })
  795. .catch(() => {
  796. this.$message({
  797. type: "info",
  798. message: "取消输入"
  799. });
  800. });
  801. },
  802. deleteSaleOrder(row) {
  803. this.$prompt("此操作将关闭订单且下面的待运输订单,是否继续?", "提示", {
  804. confirmButtonText: "确定",
  805. cancelButtonText: "取消",
  806. inputPlaceholder: "请输入关闭原因-必填!!!",
  807. center: true,
  808. type: "warning"
  809. })
  810. .then(({ value }) => {
  811. if (value != null) {
  812. let mapValue = {
  813. number: row.saleNumber,
  814. saleOrderId: row.saleOrderId,
  815. reason: value
  816. };
  817. this.axios
  818. .post("/api/v1/ams/deleteSaleOrderSame", mapValue)
  819. .then(res => {
  820. if (res.data.code == 200) {
  821. this.$message.success("关闭成功");
  822. this.getRequestUrl();
  823. }
  824. });
  825. } else {
  826. this.$message.error("请输入理由");
  827. }
  828. })
  829. .catch(() => {
  830. this.$message({
  831. type: "info",
  832. message: "取消输入"
  833. });
  834. });
  835. },
  836. updateSaleOrder(row) {
  837. console.log(row);
  838. this.$router.push(
  839. "updateSaleOrderSteel/" + row.saleOrderId + "/" + row.deleted
  840. );
  841. },
  842. getOrderDetails(saleOrderId) {
  843. console.log(saleOrderId);
  844. this.$router.push("saleOrderOODetails/" + saleOrderId);
  845. },
  846. getRequestUrl() {
  847. if (getCookie("orgCode") == "shouhuokehu") {
  848. this.option.requestUrl =
  849. "/api/v1/ams/getSaleOrderInfoes?apiId=408&consigneeSsoId=" +
  850. getCookie("userId") +
  851. "&i=" +
  852. new Date();
  853. this.option2.requestUrl =
  854. "/api/v1/ams/getSaleOrderReportedes?apiId=408&consigneeSsoId=" +
  855. getCookie("userId") +
  856. "&i=" +
  857. new Date();
  858. this.option4.requestUrl =
  859. "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&shipperId=1&saleType=1&consigneeSsoId=" +
  860. getCookie("userId") +
  861. "&i=" +
  862. new Date();
  863. this.option5.requestUrl =
  864. "/api/v1/ams/getSteelOrderDeletedList?apiId=409&consigneeSsoId=" +
  865. getCookie("userId") +
  866. "&i=" +
  867. new Date();
  868. } else if (getCookie("orgCode") == "xiaoshouyewuyuan") {
  869. this.option.requestUrl =
  870. "/api/v1/ams/getSaleOrderInfoes?apiId=408&saler=" +
  871. getCookie("loginName") +
  872. "&i=" +
  873. new Date();
  874. this.option2.requestUrl =
  875. "/api/v1/ams/getSaleOrderReportedes?apiId=408&saler=" +
  876. getCookie("loginName") +
  877. "&i=" +
  878. new Date();
  879. this.option4.requestUrl =
  880. "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&shipperId=1&saleType=1&saler=" +
  881. getCookie("loginName") +
  882. "&i=" +
  883. new Date();
  884. this.option5.requestUrl =
  885. "/api/v1/ams/getSteelOrderDeletedList?apiId=409&saler=" +
  886. getCookie("loginName");
  887. } else {
  888. this.option.requestUrl =
  889. "/api/v1/ams/getSaleOrderInfoes?apiId=408&consigneeSsoId=" +
  890. null +
  891. "&i=" +
  892. new Date();
  893. this.option2.requestUrl =
  894. "/api/v1/ams/getSaleOrderReportedes?apiId=408&consigneeSsoId=" +
  895. null +
  896. "&i=" +
  897. new Date();
  898. this.option4.requestUrl =
  899. "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&shipperId=1&saleType=1&consigneeSsoId=" +
  900. null +
  901. "&i=" +
  902. new Date();
  903. this.option5.requestUrl =
  904. "/api/v1/ams/getSteelOrderDeletedList?apiId=409&consigneeSsoId=" +
  905. null +
  906. "&i=" +
  907. new Date();
  908. }
  909. },
  910. batchReport() {
  911. if (this.batchReportList.length === 0) {
  912. this.$message.error("请先选择需要批量上传的销售订单");
  913. return;
  914. }
  915. const loading = this.$loading({
  916. lock: true,
  917. text: "正在努力上传",
  918. spinner: "el-icon-loading",
  919. background: "rgba(0, 0, 0, 0.7)"
  920. });
  921. this.axios
  922. .post("/api/v1/ams/uploadSaleOrderList", this.batchReportList)
  923. .then(res => {
  924. if (res.data.code == "200") {
  925. this.$message.success("上传成功");
  926. this.getRequestUrl();
  927. loading.close();
  928. } else {
  929. this.$message.error("上传失败");
  930. loading.close();
  931. }
  932. })
  933. .catch(() => {
  934. this.$message.error("上传失败");
  935. loading.close();
  936. });
  937. },
  938. selectionChange(selection) {
  939. console.log(selection);
  940. this.batchReportList = [];
  941. this.batchReportList = selection;
  942. },
  943. refresh() {
  944. this.getRequestUrl();
  945. },
  946. handleClick(tab, event) {
  947. console.log(tab, event);
  948. },
  949. onclick() {
  950. var startTime = null;
  951. var endTime = null;
  952. if (this.startTime && this.endTime) {
  953. startTime = sjTime(this.startTime);
  954. endTime = sjTime(this.endTime);
  955. }
  956. if (getCookie("orgCode") == "shouhuokehu") {
  957. if (this.activeName == "first") {
  958. this.option.requestUrl =
  959. "/api/v1/ams/getSaleOrderInfoes?apiId=408&saleType=1&con=" +
  960. this.input +
  961. "&consigneeSsoId=" +
  962. getCookie("userId") +
  963. "&startTime=" +
  964. startTime +
  965. "&endTime=" +
  966. endTime +
  967. "&i=" +
  968. new Date();
  969. } else if (this.activeName == "second") {
  970. this.option2.requestUrl =
  971. "/api/v1/ams/getSaleOrderReportedes?apiId=408&saleType=1&con=" +
  972. this.input +
  973. "&consigneeSsoId=" +
  974. getCookie("userId") +
  975. "&startTime=" +
  976. startTime +
  977. "&endTime=" +
  978. endTime +
  979. "&i=" +
  980. new Date();
  981. } else if (this.activeName == "four") {
  982. this.option4.requestUrl =
  983. "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&saleType=1&shipperId=1&con=" +
  984. this.input +
  985. "&consigneeSsoId=" +
  986. getCookie("userId") +
  987. "&startTime=" +
  988. startTime +
  989. "&endTime=" +
  990. endTime +
  991. "&i=" +
  992. new Date();
  993. }
  994. } else {
  995. if (this.activeName == "first") {
  996. this.option.requestUrl =
  997. "/api/v1/ams/getSaleOrderInfoes?apiId=408&saleType=1&con=" +
  998. this.input +
  999. "&startTime=" +
  1000. startTime +
  1001. "&endTime=" +
  1002. endTime +
  1003. "&i=" +
  1004. new Date();
  1005. } else if (this.activeName == "second") {
  1006. this.option2.requestUrl =
  1007. "/api/v1/ams/getSaleOrderReportedes?apiId=408&saleType=1&con=" +
  1008. this.input +
  1009. "&startTime=" +
  1010. startTime +
  1011. "&endTime=" +
  1012. endTime +
  1013. "&i=" +
  1014. new Date();
  1015. } else if (this.activeName == "four") {
  1016. this.option4.requestUrl =
  1017. "/api/v1/ams/getSaleOrderListBySaleCompanyes?apiId=409&saleType=1&shipperId=1&con=" +
  1018. this.input +
  1019. "&startTime=" +
  1020. startTime +
  1021. "&endTime=" +
  1022. endTime +
  1023. "&i=" +
  1024. new Date();
  1025. }
  1026. }
  1027. },
  1028. handleClose() {},
  1029. seeclick(saleOrderId) {
  1030. this.$router.push("/saleOrderDetail/" + saleOrderId);
  1031. },
  1032. btnclick() {
  1033. this.$router.push("/addSaleOrder");
  1034. },
  1035. click(saleOrderId) {
  1036. this.$router.push("/editSaleOrder/" + saleOrderId);
  1037. },
  1038. copyClick(saleOrderId) {
  1039. this.$router.push("/copySteelOrder/" + saleOrderId);
  1040. },
  1041. // 上传
  1042. uploadclick(saleOrderId) {
  1043. this.$confirm("是否上传", "提示", {
  1044. confirmButtonText: "确定",
  1045. cancelButtonText: "取消",
  1046. type: "warning",
  1047. center: true
  1048. })
  1049. .then(() => {
  1050. const loading = this.$loading({
  1051. lock: true,
  1052. text: "正在努力上传",
  1053. spinner: "el-icon-loading",
  1054. background: "rgba(0, 0, 0, 0.7)"
  1055. });
  1056. this.axios
  1057. .post("/api/v1/ams/uploadSaleOrder?saleOrderId=" + saleOrderId)
  1058. .then(res => {
  1059. if (res.data.code == "200") {
  1060. this.$message.success("上传成功!");
  1061. this.getRequestUrl();
  1062. loading.close();
  1063. } else {
  1064. this.$message.success("上传失败!");
  1065. this.getRequestUrl();
  1066. loading.close();
  1067. }
  1068. })
  1069. .catch(() => {
  1070. loading.close();
  1071. });
  1072. })
  1073. .catch(() => {
  1074. this.$message({
  1075. type: "info",
  1076. message: "取消上传!"
  1077. });
  1078. });
  1079. },
  1080. //删除
  1081. deleteclick(scope) {
  1082. let saleOrderId = scope;
  1083. this.$confirm("是否删除", "提示", {
  1084. confirmButtonText: "确定",
  1085. cancelButtonText: "取消",
  1086. type: "warning",
  1087. center: true
  1088. })
  1089. .then(() => {
  1090. this.axios
  1091. .post(
  1092. "/api/v1/ams/deleteAmsSaleOrderBySaleOrderId?saleOrderId=" +
  1093. saleOrderId
  1094. )
  1095. .then(res => {
  1096. if (res.data.code == "200") {
  1097. this.$message.success("删除成功");
  1098. this.getRequestUrl();
  1099. } else {
  1100. this.$message.success("删除失败");
  1101. this.getRequestUrl();
  1102. }
  1103. });
  1104. })
  1105. .catch(() => {
  1106. this.$message({
  1107. type: "info",
  1108. message: "取消删除!"
  1109. });
  1110. });
  1111. }
  1112. }
  1113. };
  1114. </script>
  1115. <style lang="scss" scoped>
  1116. .salePlan {
  1117. .top {
  1118. margin-left: 20px;
  1119. margin-top: 20px;
  1120. }
  1121. .table {
  1122. margin-left: 20px;
  1123. margin-top: 20px;
  1124. }
  1125. .btn {
  1126. display: flex;
  1127. justify-content: center;
  1128. align-items: center;
  1129. }
  1130. }
  1131. </style>