PurchaseOrderFormForm.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621
  1. <template>
  2. <a-spin :spinning="loading">
  3. <JFormContainer :disabled="disabled">
  4. <template #detail>
  5. <a-form v-bind="formItemLayout" name="SaleOrderForm" ref="formRef">
  6. <a-row>
  7. <a-col :span="12">
  8. <a-form-item label="订单编号(bill code)" v-bind="validateInfos.billCode" id="SaleOrderForm-billCode" name="billCode">
  9. <a-input v-model:value="formData.billCode" placeholder="订单编号(bill code)" disabled></a-input>
  10. </a-form-item>
  11. </a-col>
  12. <a-col :span="12">
  13. <a-form-item label="单据日期(bill date)" v-bind="validateInfos.billDate" id="SaleOrderForm-billDate" name="billDate">
  14. <a-date-picker placeholder="请选择单据日期(bill date)" v-model:value="formData.billDate" value-format="YYYY-MM-DD" style="width: 100%" allow-clear />
  15. </a-form-item>
  16. </a-col>
  17. <a-col :span="12">
  18. <a-form-item label="项目(project)" v-bind="validateInfos.projectName" id="SaleOrderForm-projectName" name="projectName">
  19. <a-input-search v-model:value="formData.projectName" placeholder="请输入项目(project)" :disabled="notAllowEdit" allow-clear enter-button="Search" @search="onSearchProject"></a-input-search>
  20. </a-form-item>
  21. </a-col>
  22. <a-col :span="12">
  23. <a-form-item label="供应商(supplier)" v-bind="validateInfos.supplier" id="SaleOrderForm-supplier" name="supplier">
  24. <a-input v-model:value="formData.supplierName" placeholder="请选择" allow-clear ></a-input>
  25. </a-form-item>
  26. </a-col>
  27. <a-col :span="12">
  28. <a-form-item label="优先级(priority)" v-bind="validateInfos.priority" id="SaleOrderForm-priority" name="priority">
  29. <JDictSelectTag v-model:value="formData.priority" placeholder="请选择" dictCode="priority" disabled/>
  30. </a-form-item>
  31. </a-col>
  32. <a-col :span="12">
  33. <a-form-item label="产品分类(production class)" v-bind="validateInfos.productionClass" id="SaleOrderForm-productionClass" name="productionClass">
  34. <a-input v-model:value="formData.productionClass" placeholder="请输入" allow-clear disabled ></a-input>
  35. </a-form-item>
  36. </a-col>
  37. <a-col :span="12">
  38. <a-form-item label="机型(model)" v-bind="validateInfos.model" id="SaleOrderForm-model" name="model">
  39. <JDictSelectTag v-model:value="formData.model" placeholder="请选择" dictCode="model_typer" disabled />
  40. </a-form-item>
  41. </a-col>
  42. <a-col :span="12">
  43. <a-form-item label="厂家(maker)" v-bind="validateInfos.maker" id="SaleOrderForm-maker" name="maker">
  44. <a-input v-model:value="formData.maker" placeholder="请输入厂家(maker)" allow-clear disabled></a-input>
  45. </a-form-item>
  46. </a-col>
  47. <a-col :span="12">
  48. <a-form-item label="贸易条款(trade term)" v-bind="validateInfos.tradeTerms" id="SaleOrderForm-tradeTerms" name="tradeTerms">
  49. <JDictSelectTag v-model:value="formData.tradeTerms" placeholder="请选择" dictCode="delivery_terms"/>
  50. </a-form-item>
  51. </a-col>
  52. <a-col :span="12">
  53. <a-form-item label="是否出口(export)" v-bind="validateInfos.isExport" id="SaleOrderForm-isExport" name="isExport">
  54. <JDictSelectTag v-model:value="formData.isExport" placeholder="请选择" dictCode="yes_or_no" />
  55. </a-form-item>
  56. </a-col>
  57. <a-col :span="12">
  58. <a-form-item label="包装要求(package requirement)" v-bind="validateInfos.packagebRequirement" id="SaleOrderForm-packagebRequirement" name="packagebRequirement">
  59. <a-input v-model:value="formData.packagebRequirement" placeholder="请输入包装要求(package requirement)" allow-clear ></a-input>
  60. </a-form-item>
  61. </a-col>
  62. <a-col :span="12">
  63. <a-form-item label="收件人(recipient)" v-bind="validateInfos.recipient" id="SaleOrderForm-recipient" name="recipient">
  64. <a-input v-model:value="formData.recipient" placeholder="请选择" />
  65. </a-form-item>
  66. </a-col>
  67. <a-col :span="12">
  68. <a-form-item label="收件人电话(recipient tel)" v-bind="validateInfos.recipientTel" id="SaleOrderForm-recipientTel" name="recipientTel">
  69. <a-input v-model:value="formData.recipientTel" placeholder="请选择" />
  70. </a-form-item>
  71. </a-col>
  72. <a-col :span="12">
  73. <a-form-item label="收件人地址(recipient address)" v-bind="validateInfos.recipientAddress" id="SaleOrderForm-recipientAddress" name="recipientAddress">
  74. <a-input v-model:value="formData.recipientAddress" placeholder="请选择" />
  75. </a-form-item>
  76. </a-col>
  77. <a-col :span="12">
  78. <a-form-item label="付款条件(payment terms)" v-bind="validateInfos.paymentTerms" id="SaleOrderForm-paymentTerms" name="paymentTerms">
  79. <JDictSelectTag v-model:value="formData.paymentTerms" placeholder="请选择" dictCode="payment_terms" />
  80. </a-form-item>
  81. </a-col>
  82. <a-col :span="12">
  83. <a-form-item label="发货方式(delivery)" v-bind="validateInfos.delivery" id="SaleOrderForm-delivery" name="delivery">
  84. <JDictSelectTag v-model:value="formData.delivery" placeholder="请选择" dictCode="delivery_methods" />
  85. </a-form-item>
  86. </a-col>
  87. <a-col :span="12">
  88. <a-form-item label="质保期(warranty period)" v-bind="validateInfos.warrantyPeriod" id="SaleOrderForm-warrantyPeriod" name="warrantyPeriod">
  89. <a-input v-model:value="formData.warrantyPeriod" placeholder="请输入" style="width: 85%;margin-right: 1%;"/>月(month)
  90. </a-form-item>
  91. </a-col>
  92. <a-col :span="12">
  93. <a-form-item label="质保条款(warranty terms)" v-bind="validateInfos.warrantyTerms" id="SaleOrderForm-warrantyTerms" name="warrantyTerms">
  94. <a-input v-model:value="formData.warrantyTerms" placeholder="请输入质保条款(warranty terms)" allow-clear ></a-input>
  95. </a-form-item>
  96. </a-col>
  97. <a-col :span="12">
  98. <a-form-item label="汇率(exchange rate)" v-bind="validateInfos.exchangeRate" id="SaleOrderForm-exchangeRate" name="exchangeRate">
  99. <a-input v-model:value="formData.exchangeRate" placeholder="请输入厂家(maker)" allow-clear ></a-input>
  100. </a-form-item>
  101. </a-col>
  102. <a-col :span="12">
  103. <a-form-item label="采购部门(purchase department)" v-bind="validateInfos.purchaseDepartment" id="SaleOrderForm-purchaseDepartment" name="purchaseDepartment">
  104. <a-input v-model:value="formData.purchaseDepartment" placeholder="请输入" allow-clear disabled></a-input>
  105. </a-form-item>
  106. </a-col>
  107. <a-col :span="12">
  108. <a-form-item label="采购员(purchasesman)" v-bind="validateInfos.purchaseman" id="SaleOrderForm-purchaseman" name="purchaseman">
  109. <a-input v-model:value="formData.purchaseman" placeholder="请输入采购员(salesman)" allow-clear disabled ></a-input>
  110. </a-form-item>
  111. </a-col>
  112. <a-col :span="12">
  113. <a-form-item label="币种(currency)" v-bind="validateInfos.currency" id="SaleOrderForm-currency" name="currency">
  114. <JDictSelectTag v-model:value="formData.currency" placeholder="请选择" dictCode="currency" />
  115. </a-form-item>
  116. </a-col>
  117. <a-col :span="12">
  118. <a-form-item label="备注(notes)" v-bind="validateInfos.notes" id="SaleOrderForm-notes" name="notes">
  119. <a-input v-model:value="formData.notes"></a-input>
  120. </a-form-item>
  121. </a-col>
  122. </a-row>
  123. </a-form>
  124. </template>
  125. </JFormContainer>
  126. <!-- 子表单区域 -->
  127. <a-tabs v-model:activeKey="activeKey" animated style=" padding: 24px;padding-top: 0px;">
  128. <a-tab-pane tab="采购订单 - 船明细(ship details)" key="PurOrderFormShipFormShip" :forceRender="true">
  129. <j-vxe-table
  130. :keep-source="true"
  131. resizable
  132. ref="PurOrderFormShipFormShipTableRef"
  133. :loading="PurOrderFormShipFormShipTable.loading"
  134. :columns="PurOrderFormShipFormShipTable.columns"
  135. :dataSource="PurOrderFormShipFormShipTable.dataSource"
  136. :height="340"
  137. :disabled="disabled"
  138. :rowNumber="true"
  139. :rowSelection="true"
  140. >
  141. <template #action="props" >
  142. <a @click="viewAccessory(props)">查看配件信息(view accessory information)</a>
  143. </template>
  144. </j-vxe-table>
  145. </a-tab-pane>
  146. <a-tab-pane tab="采购订单 - 产品明细(product details)" key="purOrderFormShipFormProduct" :forceRender="true">
  147. <a-button type="primary" style="margin-right: 1%;margin-bottom: 1%;" @click="selectSaleOrderList"> 选择销售订单(select saleorder)</a-button>
  148. <a-button type="primary" style="margin-right: 1%;margin-bottom: 1%;" @click="SelectSupplierQuotationList"> 选择报价单(select quotation)</a-button>
  149. <a-button type="primary" style="margin-right: 1%;margin-bottom: 1%;" @click="selectProductList"> 选择产品(select product)</a-button>
  150. <j-vxe-table
  151. :keep-source="true"
  152. resizable
  153. ref="purOrderFormShipFormProductTableRef"
  154. :loading="purOrderFormShipFormProductTable.loading"
  155. :columns="purOrderFormShipFormProductTable.columns"
  156. :dataSource="purOrderFormShipFormProductTable.dataSource"
  157. :height="340"
  158. :disabled="disabled"
  159. :rowNumber="true"
  160. :rowSelection="true"
  161. asyncRemove
  162. >
  163. <template #action="props">
  164. <a-popconfirm title="确定删除吗?" @confirm="handleDelete(props)">
  165. <a>删除(delete)</a>
  166. </a-popconfirm>
  167. </template>
  168. </j-vxe-table>
  169. </a-tab-pane>
  170. </a-tabs>
  171. <SelectPrpductModal ref="SelectPrpductModalRef" @selectProduct ='addProduct'></SelectPrpductModal>
  172. <SelectProjectModal ref="SelectProjectModalRef" @selectProject="addProject"></SelectProjectModal>
  173. <BaseShipArchiveAccessoriesModal ref="BaseShipArchiveAccessoriesModalRef"></BaseShipArchiveAccessoriesModal>
  174. <SelectSupplierQuotationModal ref="SelectSupplierQuotationModalRef" @selectSupplierQuotation="addFromQuotation"></SelectSupplierQuotationModal>
  175. <SelectSaleOrderModal ref="SelectSaleOrderModalRef" @selectSaleOrder="addFormSaleOrder"></SelectSaleOrderModal>
  176. </a-spin>
  177. </template>
  178. <script lang="ts">
  179. import { defineComponent, ref, reactive, computed, toRaw} from 'vue';
  180. import { defHttp } from '/@/utils/http/axios';
  181. import { useValidateAntFormAndTable } from '/@/hooks/system/useJvxeMethods';
  182. import { queryPurOrderFormShipFormShippTable, queryPurOrderFormProductListByMainId, queryDataById, saveOrUpdate,queryVersonHistoryById,queryPurVersonFormShipListByMainId, queryPurVersonProductListByMainId} from '../PurchaseOrderyForm.api';
  183. import { JVxeTable } from '/@/components/jeecg/JVxeTable';
  184. import {purchaseOrderShipColumns, purchaseOrderProductColumns} from '../PurchaseOrderForm.data';
  185. import SelectPrpductModal from '../../../publicComponents/SelectPrpductModal.vue';
  186. import SelectProjectModal from '../../../publicComponents/SelectProjectModal.vue';
  187. import SelectSaleOrderModal from '../../../publicComponents/SelectSaleOrderModal.vue';
  188. import SelectSupplierQuotationModal from '../../../publicComponents/SelectSupplierQuotationModal.vue';
  189. import BaseShipArchiveAccessoriesModal from '../../../publicComponents/BaseShipArchiveAccessoriesModal.vue';
  190. import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
  191. import JUpload from '/@/components/Form/src/jeecg/components/JUpload/JUpload.vue';
  192. import { JDictSelectTag} from '/@/components/Form';
  193. import JSelectInput from '/@/components/Form/src/jeecg/components/JSelectInput.vue';
  194. import { Form, message } from 'ant-design-vue';
  195. import { useUserStore } from '/@/store/modules/user';
  196. import moment from 'moment';
  197. const useForm = Form.useForm;
  198. export default defineComponent({
  199. name: "SaleOrderForm",
  200. components:{
  201. JVxeTable,
  202. JFormContainer,
  203. SelectPrpductModal,
  204. JUpload,
  205. JDictSelectTag,
  206. JSelectInput,
  207. SelectProjectModal,
  208. BaseShipArchiveAccessoriesModal,
  209. SelectSupplierQuotationModal,
  210. SelectSaleOrderModal
  211. },
  212. props:{
  213. formDisabled:{
  214. type: Boolean,
  215. default: false
  216. },
  217. formData: { type: Object, default: ()=>{} },
  218. formBpm: { type: Boolean, default: true }
  219. },
  220. emits:['success'],
  221. setup(props, {emit}) {
  222. const userStore = useUserStore();
  223. const loading = ref(false);
  224. const formRef = ref();
  225. const PurOrderFormShipFormShipTableRef = ref();
  226. const SelectPrpductModalRef = ref()
  227. const SelectProjectModalRef = ref()
  228. const BaseShipArchiveAccessoriesModalRef = ref();
  229. const SelectSupplierQuotationModalRef = ref();
  230. const SelectSaleOrderModalRef = ref();
  231. const PurOrderFormShipFormShipTable = reactive<Record<string, any>>({
  232. loading: false,
  233. columns: purchaseOrderShipColumns,
  234. dataSource: []
  235. });
  236. const purOrderFormShipFormProductTableRef = ref();
  237. const purOrderFormShipFormProductTable = reactive<Record<string, any>>({
  238. loading: false,
  239. columns: purchaseOrderProductColumns,
  240. dataSource: []
  241. });
  242. const activeKey = ref('PurOrderFormShipFormShip');
  243. var notAllowEdit = ref(false);
  244. const formData = reactive<Record<string, any>>({
  245. id: '',
  246. status: undefined,
  247. delFlag: undefined,
  248. sourceCode:'',
  249. sourceCode2:'',
  250. submit:'',
  251. billCode:'',
  252. billDate: moment(new Date()).format('YYYY-MM-DD'),
  253. project: '',
  254. projectName:'',
  255. supplier:"",
  256. supplierName:'',
  257. priority: '',
  258. productionClass: '',
  259. model: '',
  260. maker: '',
  261. tradeTerms:'',
  262. isExport:'',
  263. packagebRequirement:'',
  264. recipient:'',
  265. recipientTel:'',
  266. recipientAddress:'',
  267. paymentTerms:'',
  268. delivery:'',
  269. warrantyPeriod:'',
  270. warrantyTerms:'',
  271. exchangeRate:'',
  272. purchaseDepartment:"",
  273. purchaseman:'',
  274. currency:'',
  275. notes:''
  276. });
  277. //表单验证
  278. const validatorRules = reactive({
  279. });
  280. const {resetFields, validate, validateInfos} = useForm(formData, validatorRules, {immediate: false});
  281. const dbData = {};
  282. const formItemLayout = {
  283. labelCol: {xs: {span: 24}, sm: {span: 5}},
  284. wrapperCol: {xs: {span: 24}, sm: {span: 16}},
  285. };
  286. // 表单禁用
  287. const disabled = computed(()=>{
  288. if(props.formBpm === true){
  289. if(props.formData.disabled === false){
  290. return false;
  291. }else{
  292. return true;
  293. }
  294. }
  295. return props.formDisabled;
  296. });
  297. function add() {
  298. resetFields();
  299. PurOrderFormShipFormShipTable.dataSource = [];
  300. purOrderFormShipFormProductTable.dataSource = [];
  301. activeKey.value = 'PurOrderFormShipFormShip'
  302. formData.purchaseman=userStore.getUserInfo.username;
  303. formData.purchaseDepartment = userStore.getUserInfo.orgCode
  304. }
  305. async function copy(data,id){
  306. //主表数据
  307. await queryMainData(id);
  308. formData.id = ''
  309. formData.billCode = ''
  310. //子表数据
  311. const PurOrderFormShipFormShipDataList = await queryPurOrderFormShipFormShippTable(id);
  312. PurOrderFormShipFormShipTable.dataSource = [...PurOrderFormShipFormShipDataList];
  313. purOrderFormShipFormProductTable.dataSource = [...data];
  314. isSelect()
  315. }
  316. // 判断有没有参照的子表
  317. function isSelect(){
  318. var arrQuo = [],
  319. arrCon=[]
  320. purOrderFormShipFormProductTable.dataSource.map(item=>{
  321. var sign = ''
  322. sign = item.sourceId?(item.sourceId).substring(0, 3):''
  323. if(item.sourceId&&sign=='Quo'){
  324. arrQuo.push(item.sourceId)
  325. }else if(item.sourceId&&sign=='Con'){
  326. arrCon.push(item.sourceId)
  327. }
  328. })
  329. if(arrQuo.length==0&&arrCon.length==0){
  330. formData.sourceCode2 = ''
  331. formData.sourceCode = ''
  332. notAllowEdit.value=false
  333. }else if(arrQuo.length==0){
  334. formData.sourceCode = ''
  335. }else if(arrCon.length==0){
  336. formData.sourceCode2 = ''
  337. }
  338. }
  339. async function edit(row) {
  340. //主表数据
  341. await queryMainData(row.id);
  342. //子表数据
  343. const PurOrderFormShipFormShipDataList = await queryPurOrderFormShipFormShippTable(row['id']);
  344. PurOrderFormShipFormShipTable.dataSource = [...PurOrderFormShipFormShipDataList];
  345. const purOrderFormShipFormProductDataList = await queryPurOrderFormProductListByMainId(row['id']);
  346. purOrderFormShipFormProductTable.dataSource = [...purOrderFormShipFormProductDataList];
  347. }
  348. async function queryMainData(id) {
  349. const row = await queryDataById(id);
  350. resetFields();
  351. const tmpData = {};
  352. Object.keys(formData).forEach((key) => {
  353. if(row.hasOwnProperty(key)){
  354. tmpData[key] = row[key]
  355. }
  356. })
  357. //赋值
  358. Object.assign(formData,tmpData);
  359. }
  360. //查看版本详情
  361. async function VersionDetail(record){
  362. //主表数据
  363. await queryVersonHistoryData(record.id);
  364. //子表数据
  365. const SaleOrderFormShipFormShipDataList = await queryPurVersonFormShipListByMainId(record.id);
  366. PurOrderFormShipFormShipTable.dataSource = [...SaleOrderFormShipFormShipDataList];
  367. const purOrderFormShipFormProductDataList = await queryPurVersonProductListByMainId(record.id);
  368. purOrderFormShipFormProductTable.dataSource = [...purOrderFormShipFormProductDataList];
  369. }
  370. async function queryVersonHistoryData(id){
  371. const row = await queryVersonHistoryById(id);
  372. resetFields();
  373. const tmpData = {};
  374. Object.keys(formData).forEach((key) => {
  375. if(row.hasOwnProperty(key)){
  376. tmpData[key] = row[key]
  377. }
  378. })
  379. //赋值
  380. Object.assign(formData,tmpData);
  381. }
  382. const {getSubFormAndTableData, transformData} = useValidateAntFormAndTable(activeKey, {
  383. 'purOrderShip': PurOrderFormShipFormShipTableRef,
  384. 'purOrderProduct': purOrderFormShipFormProductTableRef,
  385. });
  386. async function getFormData() {
  387. try {
  388. // 触发表单验证
  389. await validate();
  390. } catch ({ errorFields }) {
  391. if (errorFields) {
  392. const firstField = errorFields[0];
  393. if (firstField) {
  394. formRef.value.scrollToField(firstField.name, { behavior: 'smooth', block: 'center' });
  395. }
  396. }
  397. return Promise.reject(errorFields);
  398. }
  399. return transformData(toRaw(formData))
  400. }
  401. async function submitForm() {
  402. if(formData.sourceCode==''&&formData.sourceCode2==''){
  403. message.warning('请选择销售订单或报价单')
  404. }else{
  405. const mainData = await getFormData();
  406. const subData = await getSubFormAndTableData();
  407. const values = Object.assign({}, dbData, mainData, subData);
  408. console.log('表单提交数据', values)
  409. const isUpdate = values.id ? true : false
  410. const isRevise = values.submit=='1' ? true : false
  411. await saveOrUpdate(values, isUpdate,isRevise);
  412. //关闭弹窗
  413. emit('success');
  414. }
  415. }
  416. function setFieldsValue(values) {
  417. if(values){
  418. Object.keys(values).map(k=>{
  419. formData[k] = values[k];
  420. });
  421. }
  422. }
  423. function selectProductList(){
  424. SelectPrpductModalRef.value.getTable()
  425. }
  426. function onSearchProject(){
  427. SelectProjectModalRef.value.getTable()
  428. }
  429. function addProduct(data){
  430. var arrProduct = data.concat(purOrderFormShipFormProductTable.dataSource)
  431. arrProduct.map(item=>{
  432. item.productClass = item.classId_dictText
  433. item.productCode = item.code
  434. item.productId = item.id
  435. })
  436. purOrderFormShipFormProductTable.dataSource=arrProduct
  437. }
  438. function getShipList(id,status){
  439. let params = {id:id}
  440. let url = status=='quotation'?'/purCode/purPurchaseQuotation/queryPurPurchaseQuotationShipByMainId':'/saleCode/saleOrder/querySaleOrderShipByMainId'
  441. defHttp.get({url:url,params}, { isTransformResponse: false }).then(res=>{
  442. if(res){
  443. PurOrderFormShipFormShipTable.dataSource = res.result
  444. }
  445. })
  446. }
  447. function addFromQuotation(data){
  448. data.map(item=>{
  449. item.model = item.childModel
  450. item.sourceId = 'Quo'+item.childId
  451. item.sourceCode =data[0].billCode
  452. })
  453. var arrProduct = data.concat(purOrderFormShipFormProductTable.dataSource)
  454. purOrderFormShipFormProductTable.dataSource=arrProduct
  455. notAllowEdit.value=true
  456. formData.sourceCode =data[0].billCode
  457. if(formData.sourceCode2==''){
  458. formData.project = data[0].quotationProject
  459. formData.projectName = data[0].projectName
  460. formData.supplier= data[0].quotationSuppiler
  461. formData.supplierName= data[0].suppilerName
  462. formData.priority =data[0].priority
  463. formData.productionClass =data[0].productionClass
  464. formData.model =data[0].headModel
  465. formData.maker =data[0].maker
  466. getShipList(data[0].headId,'quotation')
  467. }
  468. }
  469. function addFormSaleOrder(data){
  470. data.map(item=>{
  471. item.model = item.childModel
  472. item.sourceId = 'Con'+item.childId
  473. item.sourceCode =data[0].billCode
  474. })
  475. var arrProduct = data.concat(purOrderFormShipFormProductTable.dataSource)
  476. purOrderFormShipFormProductTable.dataSource=arrProduct
  477. notAllowEdit.value=true
  478. formData.sourceCode2 =data[0].billCode
  479. if(formData.sourceCode==''){
  480. formData.project = data[0].project
  481. formData.projectName = data[0].projectName
  482. formData.priority =data[0].priority
  483. formData.productionClass =data[0].productionClass
  484. formData.model =data[0].headModel
  485. formData.maker =data[0].maker
  486. getShipList(data[0].headId,'contract')
  487. }
  488. }
  489. function addProject(data){
  490. formData.project = data[0].id
  491. formData.projectName = data[0].name
  492. }
  493. //查看配件信息
  494. function viewAccessory(prop){
  495. BaseShipArchiveAccessoriesModalRef.value.getTable(prop.row)
  496. }
  497. //产品明细-删除行
  498. function handleDelete(prop) {
  499. var newArray = [...purOrderFormShipFormProductTable.dataSource]
  500. newArray.splice(prop.rowIndex, 1)
  501. if( purOrderFormShipFormProductTable.dataSource.length!==0){
  502. purOrderFormShipFormProductTable.dataSource = newArray
  503. var arrQuo = [],
  504. arrCon=[]
  505. purOrderFormShipFormProductTable.dataSource.map(item=>{
  506. var sign = ''
  507. sign = item.sourceId?(item.sourceId).substring(0, 3):''
  508. if(item.sourceId&&sign=='Quo'){
  509. arrQuo.push(item.sourceId)
  510. }else if(item.sourceId&&sign=='Con'){
  511. arrCon.push(item.sourceId)
  512. }
  513. })
  514. if(arrQuo.length==0&&arrCon.length==0){
  515. formData.sourceCode2 = ''
  516. formData.sourceCode = ''
  517. notAllowEdit.value=false
  518. }else if(arrQuo.length==0){
  519. formData.sourceCode = ''
  520. }else if(arrCon.length==0){
  521. formData.sourceCode2 = ''
  522. }
  523. }else{
  524. notAllowEdit.value=false
  525. formData.sourceCode2 = ''
  526. formData.sourceCode = ''
  527. }
  528. }
  529. //选择供应商报价单
  530. function SelectSupplierQuotationList (){
  531. SelectSupplierQuotationModalRef.value.getTable(formData)
  532. }
  533. // 选择销售订单
  534. function selectSaleOrderList(){
  535. SelectSaleOrderModalRef.value.getTable(formData)
  536. }
  537. /**
  538. * 值改变事件触发-树控件回调
  539. * @param key
  540. * @param value
  541. */
  542. function handleFormChange(key, value) {
  543. formData[key] = value;
  544. }
  545. return {
  546. PurOrderFormShipFormShipTableRef,
  547. PurOrderFormShipFormShipTable,
  548. purOrderFormShipFormProductTableRef,
  549. purOrderFormShipFormProductTable,
  550. SelectSupplierQuotationModalRef,
  551. SelectSaleOrderModalRef,
  552. validatorRules,
  553. validateInfos,
  554. activeKey,
  555. loading,
  556. formData,
  557. setFieldsValue,
  558. handleFormChange,
  559. formItemLayout,
  560. disabled,
  561. getFormData,
  562. submitForm,
  563. add,
  564. edit,
  565. copy,
  566. formRef,
  567. selectProductList,
  568. SelectPrpductModalRef,
  569. addProduct,
  570. onSearchProject,
  571. SelectProjectModalRef,
  572. addProject,
  573. handleDelete,
  574. BaseShipArchiveAccessoriesModalRef,
  575. viewAccessory,
  576. VersionDetail,
  577. SelectSupplierQuotationList,
  578. addFromQuotation,
  579. notAllowEdit,
  580. selectSaleOrderList,
  581. addFormSaleOrder
  582. }
  583. }
  584. });
  585. </script>
  586. <style lang="less" scoped>
  587. /** 时间和数字输入框样式 */
  588. :deep(.ant-input-number) {
  589. width: 100%;
  590. }
  591. :deep(.ant-calendar-picker) {
  592. width: 100%;
  593. }
  594. /deep/.vxe-table--body-wrapper{
  595. height: 100% !important;
  596. }
  597. /deep/.ant-modal-body{
  598. padding: 24px !important;
  599. }
  600. /deep/.ant-form-item{
  601. margin-bottom: 8px !important;
  602. }
  603. </style>