GenerateDocumentTool.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520
  1. <template>
  2. <div class="contain-fluid">
  3. <div class="panel panel-default">
  4. <div class="panel-heading">
  5. <h4 class="title">{{ title }}</h4>
  6. </div>
  7. <div class="panel-body">
  8. <div style="margin-bottom: 10px;">
  9. <div class="btn-group">
  10. <button
  11. class="btn btn-primary"
  12. @click="generate()"
  13. >
  14. 确定
  15. </button>
  16. <button
  17. class="btn btn-warning"
  18. @click="back()"
  19. >
  20. 撤销
  21. </button>
  22. <button
  23. class="btn btn-default"
  24. @click="refresh()"
  25. >
  26. 刷新
  27. </button>
  28. </div>
  29. </div>
  30. <DocGenerate
  31. ref="docGenerate"
  32. :info-window-no="infoWindowNo"
  33. :generate-ids="generateIds"
  34. @show-title="showTitle($event)"
  35. />
  36. </div>
  37. </div>
  38. </div>
  39. </template>
  40. <script>
  41. import Common from '../common/Common.js';
  42. import { UserStorageResource } from 'pc-component-v3';
  43. import { Notify, Uuid } from 'pc-component-v3';
  44. export default {
  45. components: { },
  46. data: function () {
  47. return {
  48. uuid: '',
  49. infoWindowNo: '',
  50. cacheData: {},
  51. type: '',
  52. url: '',
  53. obj: {},
  54. title: '',
  55. generateIds: [],
  56. };
  57. },
  58. created: function () {
  59. this.uuid = this.$route.params.uuid;
  60. this.infoWindowNo = this.$route.params.infoWindowNo;
  61. this.type = this.$route.params.type;
  62. },
  63. mounted: function () {
  64. this.getModalDataFromUserStorage();
  65. },
  66. methods: {
  67. showTitle: function (e) {
  68. this.title = e;
  69. },
  70. refresh: function () {
  71. this.$refs.docGenerate.loadInfoWindowDto();
  72. },
  73. generate: function () {
  74. var _self = this;
  75. var data = _self.$refs.docGenerate.getSelectedData();
  76. let key = _self.uuid + '_modelData';
  77. UserStorageResource.uniqueByKey(key).then(successData => {
  78. // if(successData.errorCode != 0) {
  79. // Notify.error('提示', successData.errorMessage, false);
  80. // return;
  81. // }
  82. if (successData.data != null && successData.data != '') {
  83. let cacheModelData = JSON.parse(successData.data);
  84. if (cacheModelData.id > 0) {
  85. Notify.error('错误', '已经保存过的单据不允许生单,请新建单据然后生单。', true);
  86. setTimeout(function () {
  87. history.back();
  88. }, 1000);
  89. } else {
  90. _self.cacheData = cacheModelData;
  91. // 父页签的数据
  92. data.infoWindowNo = cacheModelData.windowNo;
  93. var inputDatas = this.$refs.docGenerate.getSelectedItems();
  94. _self.obj = {
  95. windowNo: cacheModelData.windowNo,
  96. documentDto: data,
  97. modelData: cacheModelData,
  98. tabIndex: cacheModelData.tabIndex,
  99. inputDatas: inputDatas,
  100. saveDatas: cacheModelData.saveDatas,
  101. };
  102. // 生单数据模型
  103. _self.generateURL(data);
  104. }
  105. }
  106. }, errorData => {
  107. Common.processException(errorData);
  108. });
  109. },
  110. generateURL: function (data) {
  111. if (data.recordIds == null || data.recordIds.length == 0) {
  112. Notify.error('提示', '未选择任何数据。', false);
  113. return;
  114. }
  115. var _self = this;
  116. if (_self.type == 'purchaseRequest') {
  117. _self.url = 'PurchaseOrderResource/generatePurchaseOrderModelData';
  118. } else if (_self.type == 'purchaseOrder') {
  119. _self.url = 'purchaseOrderArrivalResource/generatePurchaseOrderArrivalModelData';
  120. } else if (_self.type == 'purchaseOrderArrival') {
  121. _self.url = 'incomingInspectionRequestResource/generateInspectRequestModelData';
  122. } else if (_self.type == 'inspectionRequest') {
  123. if (data.recordIds != undefined && data.recordIds.length > 1) {
  124. Notify.error('数据选择错误', '只能选择一条报检单明细数据', false);
  125. return;
  126. } else {
  127. _self.url = 'incomingInspectionResource/generateInspectionModelData';
  128. }
  129. } else if (_self.type == 'inspectionReject') {
  130. if (data.recordIds != undefined && data.recordIds.length > 1) {
  131. Notify.error('数据选择错误', '只能选择一条检验单数据', false);
  132. return;
  133. } else {
  134. _self.url = 'incomingInspectionRejectResource/generateInspectionRejectModelData';
  135. }
  136. } else if (_self.type == 'inspectionStockIn') {
  137. _self.url = 'stockInResource/generateStockInModelDataByInspection';
  138. } else if (_self.type == 'purchaseOrderArrivalStockIn') {
  139. _self.url = 'stockInResource/generateStockInModelDataByArrival';
  140. } else if (_self.type == 'purchaseStockIn') {
  141. _self.url = 'StockOutResource/generateMaterialStockOutModelData';
  142. } else if (_self.type == 'AssetOrder') {
  143. _self.url = 'AssetOrderResource/generateAssetOrderModelData';
  144. } else if (_self.type == 'newAssetOrder') {
  145. //资产申购单生成资产采购单
  146. _self.url = 'AssetOrderResource/generateModelData';
  147. } else if (_self.type == 'purchaseOrderReturn') {
  148. _self.url = 'purchaseOrderReturnResource/generatePurchaseOrderReturnModelData';
  149. } else if (_self.type == 'materialStockOut') {
  150. _self.url = 'StockOutResource/generateRedStockOutModelData';
  151. } else if (_self.type == 'redPurchaseStockIn') {
  152. _self.url = 'stockInResource/generateRedStockInModelData';
  153. } else if (_self.type == 'stockInPrepareLine') {
  154. _self.url = 'stockInResource/generateRedStockInPrepareModelData';
  155. } else if (_self.type == 'generateStockInByOrder') {
  156. _self.url = 'stockInResource/generateStockInByOrder';
  157. } else if (_self.type == 'newPurchaseRequest') {
  158. //仓库模块-采购订单
  159. _self.url = 'PurchaseOrderResource/generateModelData';
  160. } else if (_self.type == 'newPurchaseOrder') {
  161. //仓库模块-采购到货单
  162. _self.url = 'purchaseOrderArrivalResource/generateModelData';
  163. } else if (_self.type == 'newArrivalStockIn') {
  164. //仓库模块-(到货单生成)入库单
  165. _self.url = 'stockInResource/generateArrivalStockInModelData';
  166. } else if (_self.type == 'newArrivalInspectionRequest') {
  167. //仓库模块-来料报检单
  168. _self.url = 'incomingInspectionRequestResource/generateModelData';
  169. } else if (_self.type == 'newInspectionRequest') {
  170. //仓库模块-来料检验单
  171. if (data.recordIds != undefined && data.recordIds.length > 1) {
  172. Notify.error('数据选择错误', '只能选择一条报检单数据', false);
  173. return;
  174. } else {
  175. _self.url = 'incomingInspectionResource/generateModelData';
  176. }
  177. } else if (_self.type == 'newInspectionReject') {
  178. //仓库模块-不良品处理单
  179. if (data.recordIds != undefined && data.recordIds.length > 1) {
  180. Notify.error('数据选择错误', '只能选择一条检验单数据', false);
  181. return;
  182. } else {
  183. _self.url = 'incomingInspectionRejectResource/generateModelData';
  184. }
  185. } else if (_self.type == 'newCurrentStock') {
  186. //仓库模块-(仓库库存生成)出库单
  187. _self.url = 'StockOutResource/generateModelData';
  188. } else if (_self.type == 'newRedStockOut') {
  189. //仓库模块-红字出库单
  190. _self.url = 'StockOutResource/generateRedModelData';
  191. } else if (_self.type == 'newPurchaseOrderReturn') {
  192. //仓库模块-采购退货单
  193. _self.url = 'purchaseOrderReturnResource/generateModelData';
  194. } else if (_self.type == 'newStockOut') {
  195. //仓库模块-红字出库单
  196. _self.url = 'StockOutResource/generateRedModelData';
  197. } else if (_self.type == 'newRedStockIn') {
  198. //仓库模块-红字入库单
  199. _self.url = 'stockInResource/generateRedModelData';
  200. } else if (_self.type == 'invStockIn') {
  201. //仓库模块-(物料批量)入库单
  202. _self.url = 'stockInResource/generateModelDataByInventory';
  203. } else if (_self.type == 'orderToIn') {
  204. //仓库模块-(订单生成)入库单
  205. _self.url = 'stockInResource/generateOrderToInModelData';
  206. } else if (_self.type == 'saleOrderToIn') {
  207. //仓库模块-销售订单生成入库单
  208. _self.url = 'stockInResource/generateSaleOrderToInModelData';
  209. } else if (_self.type == 'saleOrderToOut') {
  210. //仓库模块-销售订单生成出库单
  211. _self.url = 'StockOutResource/generateSaleOrderToOutModelData';
  212. } else if (_self.type == 'saleOrderToPrepare') {
  213. //仓库模块-销售订单生成领料单
  214. _self.url = 'stockOutPrepareResource/generateSaleOrderToPrepareModelData';
  215. } else if (_self.type == 'prepareToOut') {
  216. //仓库模块-领料单生成出库单
  217. _self.url = 'StockOutResource/generatePrepareToOutModelData';
  218. } else if (_self.type == 'saleOrderToStockUp') {
  219. //销售订单生成备货单
  220. _self.url = 'StockUpResource/generateSaleOrderToStockUpModelData';
  221. } else if (_self.type == 'applyToStockUp') {
  222. //布草管理-出库申请单生成仓库备货单
  223. _self.url = 'StockUpResource/generateApplyToUpModelData';
  224. } else if (_self.type == 'purchaseOrderToStockOut') {
  225. //布草管理-采购订单详单生成工厂出库单
  226. _self.url = 'StockOutResource/generateStockOutByPurchaseOrder';
  227. } else if (_self.type == 'newAssetCheck') {
  228. //资产采购单生成验收单
  229. _self.url = 'assetCheckResource/generateModelData';
  230. } else if (_self.type == 'newPurchaseBill') {
  231. //采购单生成采购丁单发票
  232. _self.url = 'purchaseOrderBillResource/generateModelData';
  233. } else if (_self.type == 'newPurchaseOrderPayment') {
  234. //采购订单生成付款单
  235. _self.url = 'purchaseOrderPaymentResource/generateModelData';
  236. } else if (_self.type == 'newSaleOrderReceivables') {
  237. //销售订单生成收款单
  238. _self.url = 'SaleOrderReceiptResource/generateModelData';
  239. } else if (_self.type == 'newSaleOrderBill') {
  240. //销售订单生成销售订单发票
  241. _self.url = 'saleOrderBillResource/generateModelData';
  242. } else if (_self.type == 'newSaleOrderReceipt') {
  243. //销售订单生成收款单
  244. _self.url = 'SaleOrderReceiptResource/generateModelData';
  245. } else if (_self.type == 'generatePurchaseRequest') {
  246. //申购单生成采购订单
  247. _self.url = 'PurchaseOrderResource/generateModelData';
  248. } else if (_self.type == 'generatePurchaseOrder') {
  249. //采购订单生成采购到货
  250. _self.url = 'PurchaseOrderArrivalResource/generateModelData';
  251. } else if (_self.type == 'generatePurchaseOrderReturn') {
  252. //退货单生成换货单
  253. _self.url = 'PurchaseOrderArrivalResource/generateModelDataReturn';
  254. } else if (_self.type == 'fiveOneOneInspectionOrder') {
  255. //511送检单生单
  256. _self.url = 'FiveOneOneInspectionOrderResource/generateModelData';
  257. } else if (_self.type == 'sevenOneOneInspectionOrder') {
  258. //711送检单生单
  259. _self.url = 'SevenOneOneInspectionOrderResource/generateModelData';
  260. } else if (_self.type == 'twoZeroOneInspectionOrder') {
  261. //201送检单生单
  262. _self.url = 'TwoZeroOneInspectionOrderResource/generateModelData';
  263. } else if (_self.type == 'eightZeroEightInspectionOrder') {
  264. //808送检单生单
  265. _self.url = 'EightZeroEightInspectionOrderResource/generateModelData';
  266. } else if (_self.type == 'spaceCenterInspectionOrder') {
  267. //空间中心送检单
  268. _self.url = 'SpaceCenterInspectionOrderResource/generateModelData';
  269. } else if (_self.type == 'sethInspectionOrder') {
  270. //赛思送检单
  271. _self.url = 'SethInspectionOrderResource/generateModelData';
  272. } else if (_self.type == 'purchaseOrderRetest') {
  273. //到货生成采购复验单
  274. _self.url = 'PurchaseOrderRetestResource/generateModelData';
  275. } else if (_self.type == 'generatePurchaseOrderRetest') {
  276. //采购复验单生成退货单
  277. _self.url = 'PurchaseOrderReturnResource/generateModelData';
  278. } else if (_self.type == 'generateEntryInspectionLine') {
  279. //入所检验生成退货单
  280. _self.url = 'PurchaseOrderReturnResource/generateModelData1';
  281. } else if (_self.type == 'generateStockInLine') {
  282. //入库单生成质量处补充信息
  283. _self.url = 'QualityDepartmentSupplementResource/generateModelData';
  284. } else if (_self.type == 'newReceiveOrder') {
  285. //到货生成民品领用单
  286. _self.url = 'ReceiveOrderResource/generateModelData';
  287. } else if (_self.type == 'generatePurchaseRequestLine') {
  288. //申购单生成申购变更单
  289. _self.url = 'PurchaseRequestChangeResource/generateModelData';
  290. } else if (_self.type == 'generatePurchaseOrderLine') {
  291. //采购订单生成采购变更单
  292. _self.url = 'PurchaseOrderChangeResource/generateModelData';
  293. } else if (_self.type == 'generateStockOutPrepareLine') {
  294. //库存生成借用明细单
  295. _self.url = 'stockOutPrepareResource/generateModelData';
  296. } else if (_self.type == 'generateStockInLineByReportNumberRecord') {
  297. //入库单生成添加报告号
  298. _self.url = 'ReportNumberRecordResource/generateModelData';
  299. } else if (_self.type == 'generateStockIn') {
  300. //入所检验生成入库单
  301. _self.url = 'stockInResource/generateModelData';
  302. } else if (_self.type == 'generateStockIn1') {
  303. //采购复验生成入库单
  304. _self.url = 'stockInResource/generateModelData1';
  305. } else if (_self.type == 'generatePurchaseOrderArrival1') {
  306. //借用详单生成归还单
  307. _self.url = 'PurchaseOrderArrivalResource/generateModelData1';
  308. } else if (_self.type == 'generateCompanyChangeOrder') {
  309. //申购单生成筛选单位更改单
  310. _self.url = 'CompanyChangeOrderResource/generateModelData';
  311. } else if (_self.type == 'generateInspectionOrder') {
  312. //到货单生成送检单
  313. _self.url = 'InspectionOrderResource/generateModelData';
  314. } else if (_self.type == 'generateEntryInspection') {
  315. //送检单生成入所检验单
  316. _self.url = 'EntryInspectionResource/generateModelData';
  317. } else if (_self.type == 'generateQualityDepartmentInspection') {
  318. //到货单生成所质量处送检
  319. _self.url = 'QualityDepartmentInspectionResource/generateModelData';
  320. } else if (_self.type == 'generatePurchaseInquiry') {
  321. //申购生成国产订货单
  322. _self.url = 'PurchaseInquiryResource/generateModelData';
  323. } else if (_self.type == 'generateStockIn2') {
  324. //申购生成国产订货单
  325. _self.url = 'EntryInspectionResource/generateModelData1';
  326. }
  327. _self.responseReceiveData(_self.obj);
  328. },
  329. responseReceiveData: function (obj) {
  330. var _self = this;
  331. if (_self.url != undefined && _self.url != '') {
  332. $.ajax({
  333. url: Common.getApiURL(_self.url),
  334. type: 'post',
  335. contentType: 'application/json',
  336. data: JSON.stringify(obj),
  337. beforeSend: function (request) {
  338. Common.addTokenToRequest(request);
  339. },
  340. success: function (modelData) {
  341. if (modelData != undefined) {
  342. if (modelData.saveDatas != undefined) {
  343. modelData.saveDatas.forEach(function (item) {
  344. if(item.editMode == null){
  345. item.editMode = true;
  346. }
  347. item.tabIndex = 1;
  348. });
  349. }
  350. console.log(modelData);
  351. _self.cacheData = modelData;
  352. // 存放modalData到后台数据库
  353. _self.setModalDataToUserStorage(obj);
  354. }
  355. },
  356. error: function (XMLHttpRequest, textStatus, errorThrown) {
  357. Common.processException(XMLHttpRequest, textStatus, errorThrown);
  358. },
  359. });
  360. }
  361. },
  362. isShowVendorDialogA: function (data) {
  363. var _self = this;
  364. var messageStr = '';
  365. data.forEach(function (item, index) {
  366. if (index == data.length - 1) {
  367. messageStr += item.name;
  368. } else {
  369. messageStr += item.name + ',';
  370. }
  371. });
  372. Notify.show({
  373. title: '项目确认',
  374. message: '您选择的请购订单明细中存在不同项目【' + messageStr + '】',
  375. buttons: [{
  376. label: '取消',
  377. action: function (dialogItself) {
  378. dialogItself.close();
  379. },
  380. }],
  381. });
  382. },
  383. isShowVendorDialog: function (data) {
  384. var _self = this;
  385. var messageStr = '';
  386. data.forEach(function (item, index) {
  387. if (index == data.length - 1) {
  388. messageStr += item.vendorName;
  389. } else {
  390. messageStr += item.vendorName + ',';
  391. }
  392. });
  393. Notify.show({
  394. title: '供应商确认',
  395. message: '您选择的请购订单明细中存在不同供应商【'
  396. + messageStr
  397. + '】,如果点击【确定】按钮,将从供应商【'
  398. + data[data.length - 1].vendorName
  399. + '】下订单,否则点击【取消】按钮',
  400. buttons: [
  401. {
  402. label: '确定',
  403. cssClass: 'btn-primary',
  404. action: function (dialogItself) {
  405. dialogItself.close();
  406. _self.url = 'PurchaseOrderResource/generatePurchaseOrderModelData';
  407. _self.responseReceiveData(_self.obj);
  408. },
  409. }, {
  410. label: '取消',
  411. action: function (dialogItself) {
  412. dialogItself.close();
  413. },
  414. },
  415. ],
  416. });
  417. },
  418. /**
  419. * 返回
  420. */
  421. back: function () {
  422. // history.back();
  423. // 当你在iframe页面关闭自身时
  424. var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
  425. parent.layer.close(index); //再执行关闭
  426. },
  427. /**
  428. * 从UserStorage中获取modalData
  429. * @author LeiGuoXian
  430. * @date 2020-09-16
  431. */
  432. getModalDataFromUserStorage: function () {
  433. var _self = this;
  434. let key = _self.uuid + '_modelData';
  435. UserStorageResource.uniqueByKey(key).then(successData => {
  436. // if(successData.errorCode != 0) {
  437. // Notify.error('提示', successData.errorMessage, false);
  438. // return;
  439. // }
  440. if (successData.data != null && successData.data != '') {
  441. let cacheModelData = JSON.parse(successData.data);
  442. if (cacheModelData.id > 0) {
  443. Notify.error('错误', '已经保存过的单据不允许生单,请新建单据然后生单。', true);
  444. setTimeout(function () {
  445. history.back();
  446. }, 1000);
  447. } else {
  448. let cacheModelData = JSON.parse(successData.data);
  449. var savaDatas = cacheModelData.saveDatas;
  450. _self.generateIds = [];
  451. if (savaDatas != null) {
  452. savaDatas.forEach(function (item, index) {
  453. _self.generateIds.push(item.data['generateId'].id);
  454. });
  455. }
  456. }
  457. }
  458. }, errorData => {
  459. Common.processException(errorData);
  460. });
  461. },
  462. /**
  463. * 存放modalData在UserStorage中
  464. * @author LeiGuoXian
  465. * @date 2020-09-16
  466. */
  467. setModalDataToUserStorage: function (obj) {
  468. var _self = this;
  469. let key = _self.uuid + '_modelData';
  470. let userStorageDtos = [
  471. {
  472. key: key,
  473. value: JSON.stringify(_self.cacheData),
  474. },
  475. ];
  476. // 组装查询条件,然后放到后台数据库当中
  477. UserStorageResource.uploadUserStorage(userStorageDtos).then(successData => {
  478. _self.$router.push('/desktop/window/window-edit/restore/' + obj.windowNo + '/0' + '?currPage=' + 1 + '&currIndex=' + 1 + '&totalCount=' + 1 + '&uuid=' + _self.uuid);
  479. }, errorData => {
  480. Common.processException(errorData);
  481. });
  482. },
  483. },
  484. };
  485. </script>
  486. <style scoped>
  487. .title {
  488. margin-top: 5px;
  489. margin-bottom: 0px;
  490. }
  491. </style>