taskForm.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. <template>
  2. <view class="">
  3. <u-sticky offset-top="50">
  4. <u-subsection fontSize='25' mode='subsection' :list="list" :current="curNow" @change="sectionChange"
  5. activeColor='#157A2C'></u-subsection>
  6. </u-sticky>
  7. <view v-show='curNow===0'>
  8. <u--form style="margin: 0 20px;" labelPosition="left" :model="form" ref="uForm" labelWidth='140rpx'>
  9. <!-- @tap="showDeptPicker" -->
  10. <u-form-item label="合同类型" prop="categoryName" borderBottom>
  11. <u--input style="width: 100%;" disabled :value='`${form.typeName} ${form.categoryName}`'></u--input>
  12. </u-form-item>
  13. <!-- @tap="showUserPicker" -->
  14. <u-form-item label="来源类型" prop="sourceType" borderBottom>
  15. <u--input style="width: 100%;" disabled :value='`${form.sourceTypeName}`'>
  16. </u--input>
  17. </u-form-item>
  18. <u-form-item v-if="form.sourceType && form.sourceName" :label="sourceName" prop="sourceName" borderBottom>
  19. <u--input style="width: 100%;" disabled :value='`${form.sourceName}`'>
  20. </u--input>
  21. </u-form-item>
  22. <u-form-item label="合同名称" prop="contractName" borderBottom>
  23. <u--input style="width: 100%;" disabled v-model="form.contractName"></u--input>
  24. <!-- <u-icon slot="right" name="arrow-right"></u-icon> -->
  25. </u-form-item>
  26. <u-form-item label="合同编号" prop="contractNumber" borderBottom>
  27. <u--input style="width: 100%;" disabled v-model="form.contractNumber"></u--input>
  28. </u-form-item>
  29. <u-form-item label="需求类型" prop="requireSourceTypeName" borderBottom v-if="form.type == 2">
  30. <u--input style="width: 100%;" disabled v-model="form.requireSourceTypeName"></u--input>
  31. </u-form-item>
  32. <u-form-item label="需求部门" prop="requireDeptName" borderBottom v-if="form.type == 2">
  33. <u--input style="width: 100%;" disabled v-model="form.requireDeptName"></u--input>
  34. </u-form-item>
  35. <u-form-item label="需求人" prop="requireUserId" borderBottom v-if="form.type == 2">
  36. <u--input style="width: 100%;" disabled v-model="form.requireUserName"></u--input>
  37. </u-form-item>
  38. <u-form-item :label="form.type == 2 ? '采购部门' : '销售部门'" prop="businessDeptName" borderBottom>
  39. <u--input style="width: 100%;" disabled v-model="form.businessDeptName"></u--input>
  40. </u-form-item>
  41. <u-form-item :label="form.type == 2 ? '采购员' : '业务员'" prop="businessUserName" borderBottom>
  42. <u--input style="width: 100%;" disabled v-model="form.businessUserName"></u--input>
  43. </u-form-item>
  44. <u-form-item label="编码" prop="contractNo" borderBottom>
  45. <u--input style="width: 100%;" disabled v-model="form.contractNo"></u--input>
  46. </u-form-item>
  47. <u-form-item label="编号" prop="contractNumber" borderBottom>
  48. <u--input style="width: 100%;" disabled v-model="form.contractNumber"></u--input>
  49. </u-form-item>
  50. <u-form-item label="签订日期" prop="contractStartDate" borderBottom>
  51. <u--input style="width: 100%;" disabled v-model="form.contractStartDate"></u--input>
  52. </u-form-item>
  53. <u-form-item label="结束日期" prop="contractEndDate" borderBottom>
  54. <u--input style="width: 100%;" disabled v-model="form.contractEndDate"></u--input>
  55. </u-form-item>
  56. <u-form-item label="交易方式" prop="transactionMode" borderBottom>
  57. <u--input style="width: 100%;" disabled :value="form.transactionModeName"></u--input>
  58. </u-form-item>
  59. <u-form-item :label="form.type == 2 ? '收货模式' : '发货模式'" prop="deliveryMode" borderBottom>
  60. <u--input style="width: 100%;" disabled :value="form.deliveryModeName"></u--input>
  61. </u-form-item>
  62. <u-form-item label="结算方式" prop="settlementModeName" borderBottom>
  63. <u--input style="width: 100%;" disabled v-model="form.settlementModeName"></u--input>
  64. </u-form-item>
  65. <u-form-item v-if="form.settlementMode == 2 || form.settlementMode == 1" :label="form.settlementMode == 2 ? '结算月份范围' : '结算日期范围'" prop="settlementDate" borderBottom>
  66. <u--input style="width: 100%;" disabled v-model="form.settlementDate"></u--input>
  67. </u-form-item>
  68. <u-form-item label="收款日期" prop="receiptDate" borderBottom v-if="form.settlementMode == 2">
  69. <u--input style="width: 100%;" disabled v-model="form.receiptDate"></u--input>
  70. </u-form-item>
  71. <u-form-item label="期数" prop="issueNumber" borderBottom>
  72. <u--input style="width: 100%;" disabled v-model="form.issueNumber"></u--input>
  73. </u-form-item>
  74. <u-form-item label="附件" prop="settlementModeName" borderBottom>
  75. <fileMain v-model="form.fileId" type="view"></fileMain>
  76. </u-form-item>
  77. </u--form>
  78. </view>
  79. <view v-show='curNow===1'>
  80. <u--form style="margin: 0 20px;" labelPosition="left" :model="form" ref="uForm" labelWidth='140rpx'>
  81. <u-form-item label="甲方名称" prop="partaName" borderBottom>
  82. <u--input style="width: 100%;" disabled :value='`${form.partaName}`'></u--input>
  83. </u-form-item>
  84. <u-form-item label="甲方代码" prop="partaUnifiedSocialCreditCode" borderBottom>
  85. <u--input style="width: 100%;" disabled v-model="form.partaUnifiedSocialCreditCode"></u--input>
  86. </u-form-item>
  87. <u-form-item label="甲方联系人" prop="partaLinkName" borderBottom>
  88. <u--input style="width: 100%;" disabled v-model="form.partaLinkName"></u--input>
  89. </u-form-item>
  90. <u-form-item label="甲方电话" prop="partaTel" borderBottom>
  91. <u--input style="width: 100%;" disabled v-model="form.partaTel"></u--input>
  92. </u-form-item>
  93. <u-form-item label="甲方传真" prop="partaFax" borderBottom>
  94. <u--input style="width: 100%;" disabled v-model="form.partaFax"></u--input>
  95. </u-form-item>
  96. <u-form-item label="甲方Email" prop="partaEmail" borderBottom>
  97. <u--input style="width: 100%;" disabled v-model="form.partaEmail"></u--input>
  98. </u-form-item>
  99. <u-form-item label="甲方地址" prop="partaAddress" borderBottom>
  100. <u--input style="width: 100%;" disabled v-model="form.partaAddress"></u--input>
  101. </u-form-item>
  102. <u-form-item label="乙方名称" prop="partbName" borderBottom>
  103. <u--input style="width: 100%;" disabled :value='`${form.partbName}`'></u--input>
  104. </u-form-item>
  105. <u-form-item label="乙方代码" prop="partbUnifiedSocialCreditCode" borderBottom>
  106. <u--input style="width: 100%;" disabled v-model="form.partbUnifiedSocialCreditCode"></u--input>
  107. </u-form-item>
  108. <u-form-item label="乙方联系人" prop="partbLinkName" borderBottom>
  109. <u--input style="width: 100%;" disabled v-model="form.partbLinkName"></u--input>
  110. </u-form-item>
  111. <u-form-item label="乙方电话" prop="partbTel" borderBottom>
  112. <u--input style="width: 100%;" disabled v-model="form.partbTel"></u--input>
  113. </u-form-item>
  114. <u-form-item label="乙方传真" prop="partbFax" borderBottom>
  115. <u--input style="width: 100%;" disabled v-model="form.partbFax"></u--input>
  116. </u-form-item>
  117. <u-form-item label="乙方Email" prop="partbEmail" borderBottom>
  118. <u--input style="width: 100%;" disabled v-model="form.partbEmail"></u--input>
  119. </u-form-item>
  120. <u-form-item label="乙方地址" prop="partbAddress" borderBottom>
  121. <u--input style="width: 100%;" disabled v-model="form.partbAddress"></u--input>
  122. </u-form-item>
  123. </u--form>
  124. </view>
  125. <view v-show='curNow===2'>
  126. <u-sticky offset-top="100">
  127. <u-tag
  128. :text="`总计: ${form.totalPrice&&form.totalPrice} 优惠总计: ${form.discountTotalPrice&&form.discountTotalPrice}`"
  129. size="large" type="success"></u-tag>
  130. </u-sticky>
  131. <view v-for="(item,index) in detailData['productList']" :key="index">
  132. <u--form style="margin: 0 20px;" labelPosition="left" :model="form" ref="uForm" labelWidth='140rpx'>
  133. <u-row v-for="(key,index1) in tableField" :key="index1">
  134. <u-col :span="12">
  135. <u-form-item :label="key.label" prop="categoryName" borderBottom>
  136. <u--input style="width: 100%;" :title='item[key.field]' disabled
  137. v-model="item[key.field]"></u--input>
  138. </u-form-item>
  139. </u-col>
  140. </u-row>
  141. </u--form>
  142. <u-gap height="40" bgColor="#f0f0f0"></u-gap>
  143. </view>
  144. </view>
  145. <view v-show='curNow===3'>
  146. <view v-for="(item,index) in detailData['receiptPaymentList']" :key="index">
  147. <u--form style="margin: 0 20px;" labelPosition="left" :model="form" ref="uForm" labelWidth='140rpx'>
  148. <u-row v-for="(key,index1) in feeTableField" :key="index1">
  149. <u-col :span="12">
  150. <u-form-item :label="key.label" prop="categoryName" borderBottom>
  151. <u--input style="width: 100%;" :title='item[key.field]' disabled
  152. v-model="item[key.field]"></u--input>
  153. </u-form-item>
  154. </u-col>
  155. </u-row>
  156. </u--form>
  157. <u-gap height="40" bgColor="#f0f0f0"></u-gap>
  158. </view>
  159. </view>
  160. </view>
  161. </template>
  162. <script>
  163. import {
  164. getDetail
  165. } from '@/api/wt/index.js'
  166. import fileMain from "@/pages/doc/index.vue"
  167. import {transactionMethodsOp,shippingModeOp,shippingModePurchaseOp, pricingWayList, levelList, quoteTypeOp} from '@/enum/dict.js'
  168. export default {
  169. components:{
  170. fileMain
  171. },
  172. props: {
  173. businessId: {
  174. default: ''
  175. },
  176. taskDefinitionKey: {
  177. default: ''
  178. },
  179. },
  180. computed: {
  181. sourceName() {
  182. console.log('this.form.sourceType',this.form.sourceType)
  183. switch (this.form.sourceType) {
  184. case 1:
  185. return '报价单'
  186. case 2:
  187. return '核价单'
  188. case 3:
  189. return '计划名称'
  190. case 4:
  191. return '商机名称'
  192. case 5:
  193. return '退货单'
  194. case 6:
  195. return '客户'
  196. case 7:
  197. return '销售订单'
  198. default:
  199. return ''
  200. }
  201. },
  202. shippingModeOptions() {
  203. return this.form.type == 2 ? shippingModePurchaseOp : shippingModeOp;
  204. },
  205. feeTableField() {
  206. return [{
  207. label: '期数',
  208. field: 'issueNumber',
  209. },
  210. {
  211. label: '款项类型',
  212. field: 'typeName',
  213. },
  214. {
  215. label: '款项名称',
  216. field: 'moneyName',
  217. },
  218. {
  219. label: '比例(%)',
  220. field: 'ratio',
  221. },
  222. {
  223. label: this.form.type == 2 ? '计划付款金额(元)' : '计划收款金额(元)',
  224. field: 'price',
  225. },
  226. {
  227. label: this.form.type == 2 ? '计划付款日期' : '计划收款日期',
  228. field: 'deadLine',
  229. },
  230. {
  231. label: '说明',
  232. field: 'remark',
  233. }
  234. ]
  235. },
  236. list() {
  237. return this.form.type == 2 ? ['合同信息', '基本信息', '产品清单', '付款计划'] : ['合同信息', '基本信息', '产品清单', '收款计划']
  238. },
  239. },
  240. data() {
  241. return {
  242. pricingWayList,
  243. quoteTypeOp,
  244. levelList,
  245. detailData: {},
  246. form: {},
  247. transactionMethodsOp,
  248. sourceTypeList: [
  249. {
  250. code: 1,
  251. name: '报价单',
  252. parentId: '1'
  253. },
  254. {
  255. code: 2,
  256. name: '核价单',
  257. parentId: '2'
  258. },
  259. {
  260. code: 3,
  261. name: '采购计划',
  262. parentId: '2'
  263. },
  264. {
  265. code: 4,
  266. name: '商机',
  267. parentId: '1'
  268. },
  269. {
  270. code: 5,
  271. name: '退货单',
  272. parentId: '1'
  273. },
  274. {
  275. code: 6,
  276. name: '客户',
  277. parentId: '1'
  278. },
  279. {
  280. code: 7,
  281. name: '销售订单',
  282. parentId: '1'
  283. }
  284. ],
  285. tableField: [{
  286. label: '类型',
  287. field: 'productCategoryName',
  288. }, {
  289. label: '名称',
  290. field: 'productName',
  291. },
  292. {
  293. label: '编码',
  294. field: 'productCode',
  295. },
  296. {
  297. field: 'pricingWayName',
  298. label: '计价方式',
  299. },
  300. {
  301. field: 'specification',
  302. label: '规格',
  303. },
  304. {
  305. field: 'brandNo',
  306. label: '牌号',
  307. },
  308. {
  309. label: '客户代号',
  310. field: 'customerMark',
  311. },
  312. {
  313. label: '工序',
  314. field: 'taskName',
  315. },
  316. {
  317. label: '数量',
  318. field: 'totalCount',
  319. },
  320. {
  321. label: '价格类型',
  322. field: 'goodsPriceType ',
  323. },
  324. {
  325. label: '单价',
  326. field: 'singlePrice',
  327. },
  328. {
  329. label: '税率',
  330. field: 'taxRate',
  331. },
  332. {
  333. label: '不含税单价',
  334. field: 'notaxSinglePrice',
  335. },
  336. {
  337. label: '报价方式',
  338. field: 'quoteWayName',
  339. },
  340. {
  341. label: '折让比例',
  342. field: 'discountRatio',
  343. },
  344. {
  345. label: '折让单价',
  346. field: 'discountSinglePrice',
  347. },
  348. {
  349. label: '合计',
  350. field: 'totalPrice',
  351. },
  352. {
  353. label: '折让合计',
  354. field: 'discountTotalPrice',
  355. },
  356. {
  357. label: '生产要求',
  358. field: 'productionRequirements',
  359. },
  360. {
  361. label: '包装规格',
  362. field: 'packingSpecification',
  363. },
  364. {
  365. label: '计量数量',
  366. field: 'totalCount',
  367. },
  368. {
  369. label: '单重',
  370. field: 'singleWeight',
  371. },
  372. {
  373. label: '总重',
  374. field: 'totalWeight',
  375. },
  376. {
  377. label: '增重重量',
  378. field: 'increaseTotalWeight',
  379. },
  380. {
  381. label: '物品级别',
  382. field: 'goodsLevelName',
  383. },
  384. {
  385. label: '批次号',
  386. field: 'batchNo',
  387. },
  388. {
  389. label: '型号',
  390. field: 'modelType',
  391. },
  392. {
  393. label: '机型',
  394. field: 'modelKey',
  395. },
  396. {
  397. label: '颜色',
  398. field: 'colorKey',
  399. },
  400. ],
  401. feeTableField1: [{
  402. label: '款项名称',
  403. field: 'moneyName',
  404. },
  405. {
  406. label: '金额(元)',
  407. field: 'price',
  408. },
  409. {
  410. label: '比例(%)',
  411. field: 'ratio',
  412. },
  413. {
  414. label: '截止日期',
  415. field: 'deadLine',
  416. },
  417. {
  418. label: '说明',
  419. field: 'remark',
  420. }
  421. ],
  422. list1: ['合同信息', '基本信息', '产品清单', '付款方式'],
  423. curNow: 0
  424. }
  425. },
  426. async mounted() {
  427. await this.getDetailData(this.businessId);
  428. },
  429. methods: {
  430. sectionChange(index) {
  431. this.curNow = index;
  432. },
  433. async getDetailData(id) {
  434. const data = await getDetail(id);
  435. if (data) {
  436. const {contractVO} = data
  437. console.log('data~~~',data)
  438. contractVO['sourceTypeName'] = this.sourceTypeList.find(item => item.code == contractVO['sourceType'])?.name || '';
  439. contractVO['transactionModeName'] = this.transactionMethodsOp.find(item => item.value == contractVO['transactionMode'])?.label || '';
  440. contractVO['deliveryModeName'] = this.shippingModeOptions.find(item => item.value == contractVO['deliveryMode'])?.label || '';
  441. contractVO['settlementDate'] = contractVO.startSettlementDate ? `${contractVO.startSettlementDate} - ${contractVO.endSettlementDate}` : '';
  442. data['receiptPaymentList'] = data['receiptPaymentList'].length ? data['receiptPaymentList'] : [{}]
  443. data.productList = data.productList.map(item => {
  444. item.pricingWayName = this.pricingWayList.find(way => way.id == item.pricingWay)?.name || '';
  445. item.quoteWayName = this.quoteTypeOp.find(type => type.value == item.quoteType)?.label || '';
  446. item.goodsLevelName = this.levelList.find(level => level.value == item.goodsLevel)?.label || '';
  447. return item;
  448. })
  449. this.detailData = data;
  450. this.form = contractVO;
  451. }
  452. }
  453. }
  454. }
  455. </script>
  456. <style>
  457. </style>