settingConfig.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553
  1. <template>
  2. <!-- 配置弹窗 -->
  3. <vxe-modal v-model="setValue" width="60%" height="auto" show-zoom resize transfer show-footer>
  4. <template #title>
  5. <span>{{title}}参数配置</span>
  6. </template>
  7. <template #default>
  8. <by-form v-if="type=='setXForm'" key="setXForm" :propConfig="setXForm" ref="setXForm"></by-form>
  9. <by-form v-if="type=='setCForm'" key="setCForm" :propConfig="setCForm" ref="setCForm"></by-form>
  10. </template>
  11. <template #footer>
  12. <div class="btn">
  13. <el-button type="primary" size="small" @click="determine">保存</el-button>
  14. </div>
  15. </template>
  16. </vxe-modal>
  17. </template>
  18. <script lang="ts">
  19. import { Component, Prop, Vue, Watch } from "vue-property-decorator";
  20. import VueViews from '@/benyun/compVue/VueViews'
  21. import api from "@/api/order";
  22. @Component
  23. export default class SettingConfig extends VueViews {
  24. setValue : any = false
  25. baseInfo : any = ""
  26. get getDepId() {
  27. return this.$store.state.settings.depId;
  28. }
  29. @Prop()
  30. type : any;
  31. @Prop()
  32. title : any;
  33. setXForm : any = {
  34. attr: {
  35. size: 'medium',
  36. },
  37. columns: [
  38. [
  39. {
  40. span: 8,
  41. label: '单据类型',
  42. prop: 'FBillTypeID',
  43. component: 'by-input',
  44. rules: [
  45. { required: true, message: '请输入单据类型', trigger: 'blur' }
  46. ],
  47. compConfig: {
  48. attr: {
  49. placeholder: '请输入单据类型',
  50. clearable: true
  51. }
  52. }
  53. },
  54. {
  55. span: 8,
  56. label: '客户',
  57. prop: 'FCustId',
  58. component: 'by-input',
  59. rules: [
  60. { required: true, message: '请输入客户', trigger: 'blur' }
  61. ],
  62. compConfig: {
  63. attr: {
  64. placeholder: '请输入客户',
  65. clearable: true
  66. }
  67. }
  68. },
  69. {
  70. span: 8,
  71. label: '收货方',
  72. prop: 'FReceiveId',
  73. component: 'by-input',
  74. rules: [
  75. { required: true, message: '请输入收货方', trigger: 'blur' }
  76. ],
  77. compConfig: {
  78. attr: {
  79. placeholder: '请输入收货方',
  80. clearable: true
  81. }
  82. }
  83. },
  84. ],
  85. [
  86. {
  87. span: 8,
  88. label: '结算方',
  89. prop: 'FSettleId',
  90. component: 'by-input',
  91. rules: [
  92. { required: true, message: '请输入结算方', trigger: 'blur' }
  93. ],
  94. compConfig: {
  95. attr: {
  96. placeholder: '请输入结算方',
  97. clearable: true
  98. }
  99. }
  100. },
  101. {
  102. span: 8,
  103. label: '付款方',
  104. prop: 'FNAME',
  105. component: 'by-input',
  106. rules: [
  107. { required: true, message: '请输入付款方', trigger: 'blur' }
  108. ],
  109. compConfig: {
  110. attr: {
  111. placeholder: '请输入付款方',
  112. clearable: true
  113. }
  114. }
  115. },
  116. {
  117. span: 8,
  118. label: '汇率类型',
  119. prop: 'FExchangeTypeId',
  120. component: 'by-input',
  121. rules: [
  122. { required: true, message: '请输入汇率类型', trigger: 'blur' }
  123. ],
  124. compConfig: {
  125. attr: {
  126. placeholder: '请输入汇率类型',
  127. clearable: true
  128. }
  129. }
  130. },
  131. ],
  132. [
  133. {
  134. span: 8,
  135. label: '结算币别',
  136. prop: 'FSettleCurrId',
  137. component: 'by-input',
  138. rules: [
  139. { required: true, message: '请输入结算币别', trigger: 'blur' }
  140. ],
  141. compConfig: {
  142. attr: {
  143. placeholder: '请输入结算币别',
  144. clearable: true
  145. }
  146. }
  147. },
  148. {
  149. span: 8,
  150. label: '产品类型',
  151. prop: 'FRowType',
  152. component: 'by-input',
  153. rules: [
  154. { required: true, message: '请输入产品类型', trigger: 'blur' }
  155. ],
  156. compConfig: {
  157. attr: {
  158. placeholder: '请输入产品类型',
  159. clearable: true
  160. }
  161. }
  162. },
  163. {
  164. span: 8,
  165. label: '货主类型',
  166. prop: 'FOwnerTypeId',
  167. component: 'by-input',
  168. rules: [
  169. { required: true, message: '请输入货主类型', trigger: 'blur' }
  170. ],
  171. compConfig: {
  172. attr: {
  173. placeholder: '请输入货主类型',
  174. clearable: true
  175. }
  176. }
  177. },
  178. ],
  179. [
  180. {
  181. span: 8,
  182. label: 'BOM版本',
  183. prop: 'FBomId',
  184. component: 'by-input',
  185. rules: [
  186. { required: true, message: '请输入BOM版本', trigger: 'blur' }
  187. ],
  188. compConfig: {
  189. attr: {
  190. placeholder: '请输入BOM版本',
  191. clearable: true
  192. }
  193. }
  194. },
  195. {
  196. span: 8,
  197. label: '预留类型',
  198. prop: 'FReserveType',
  199. component: 'by-input',
  200. rules: [
  201. { required: true, message: '请输入预留类型', trigger: 'blur' }
  202. ],
  203. compConfig: {
  204. attr: {
  205. placeholder: '请输入预留类型',
  206. clearable: true
  207. }
  208. }
  209. },
  210. {
  211. span: 8,
  212. label: '超发控制',
  213. prop: 'FOUTLMTUNIT',
  214. component: 'by-input',
  215. rules: [
  216. { required: true, message: '请输入超发控制', trigger: 'blur' }
  217. ],
  218. compConfig: {
  219. attr: {
  220. placeholder: '请输入超发控制',
  221. clearable: true
  222. }
  223. }
  224. }
  225. ]
  226. ]
  227. }
  228. setCForm : any = {
  229. attr: {
  230. size: 'medium',
  231. },
  232. columns: [
  233. [
  234. {
  235. span: 8,
  236. label: '单据类型',
  237. prop: 'FBillTypeID',
  238. component: 'by-input',
  239. rules: [
  240. { required: true, message: '请输入单据类型', trigger: 'blur' }
  241. ],
  242. compConfig: {
  243. attr: {
  244. placeholder: '请输入单据类型',
  245. clearable: true
  246. }
  247. }
  248. },
  249. {
  250. span: 8,
  251. label: '客户',
  252. prop: 'FCustomerID',
  253. component: 'by-input',
  254. rules: [
  255. { required: true, message: '请输入客户', trigger: 'blur' }
  256. ],
  257. compConfig: {
  258. attr: {
  259. placeholder: '请输入客户',
  260. clearable: true
  261. }
  262. }
  263. },
  264. {
  265. span: 8,
  266. label: '收货方',
  267. prop: 'FReceiverID',
  268. component: 'by-input',
  269. rules: [
  270. { required: true, message: '请输入收货方', trigger: 'blur' }
  271. ],
  272. compConfig: {
  273. attr: {
  274. placeholder: '请输入收货方',
  275. clearable: true
  276. }
  277. }
  278. },
  279. ],
  280. [
  281. {
  282. span: 8,
  283. label: '结算方',
  284. prop: 'FSettleID',
  285. component: 'by-input',
  286. rules: [
  287. { required: true, message: '请输入结算方', trigger: 'blur' }
  288. ],
  289. compConfig: {
  290. attr: {
  291. placeholder: '请输入结算方',
  292. clearable: true
  293. }
  294. }
  295. },
  296. {
  297. span: 8,
  298. label: '付款方',
  299. prop: 'FPayerID',
  300. component: 'by-input',
  301. rules: [
  302. { required: true, message: '请输入付款方', trigger: 'blur' }
  303. ],
  304. compConfig: {
  305. attr: {
  306. placeholder: '请输入付款方',
  307. clearable: true
  308. }
  309. }
  310. },
  311. {
  312. span: 8,
  313. label: '汇率类型',
  314. prop: 'FExchangeTypeID',
  315. component: 'by-input',
  316. rules: [
  317. { required: true, message: '请输入汇率类型', trigger: 'blur' }
  318. ],
  319. compConfig: {
  320. attr: {
  321. placeholder: '请输入汇率类型',
  322. clearable: true
  323. }
  324. }
  325. },
  326. ],
  327. [
  328. {
  329. span: 8,
  330. label: '汇率',
  331. prop: 'FExchangeRate',
  332. component: 'by-input',
  333. rules: [
  334. { required: true, message: '请输入汇率', trigger: 'blur' }
  335. ],
  336. compConfig: {
  337. attr: {
  338. placeholder: '请输入汇率',
  339. clearable: true
  340. }
  341. }
  342. },
  343. {
  344. span: 8,
  345. label: '结算币别',
  346. prop: 'FSettleCurrID',
  347. component: 'by-input',
  348. rules: [
  349. { required: true, message: '请输入结算币别', trigger: 'blur' }
  350. ],
  351. compConfig: {
  352. attr: {
  353. placeholder: '请输入结算币别',
  354. clearable: true
  355. }
  356. }
  357. },
  358. {
  359. span: 8,
  360. label: '产品类型',
  361. prop: 'FRowType',
  362. component: 'by-input',
  363. rules: [
  364. { required: true, message: '请输入产品类型', trigger: 'blur' }
  365. ],
  366. compConfig: {
  367. attr: {
  368. placeholder: '请输入产品类型',
  369. clearable: true
  370. }
  371. }
  372. },
  373. ],
  374. [
  375. {
  376. span: 8,
  377. label: '货主类型',
  378. prop: 'FOwnerTypeIdHead',
  379. component: 'by-input',
  380. rules: [
  381. { required: true, message: '请输入货主类型', trigger: 'blur' }
  382. ],
  383. compConfig: {
  384. attr: {
  385. placeholder: '请输入货主类型',
  386. clearable: true
  387. }
  388. }
  389. },
  390. {
  391. span: 8,
  392. label: '本位币',
  393. prop: 'FLocalCurrID',
  394. component: 'by-input',
  395. rules: [
  396. { required: true, message: '请输入本位币', trigger: 'blur' }
  397. ],
  398. compConfig: {
  399. attr: {
  400. placeholder: '请输入本位币',
  401. clearable: true
  402. }
  403. }
  404. },
  405. {
  406. span: 8,
  407. label: '货主',
  408. prop: 'FOwnerID',
  409. component: 'by-input',
  410. rules: [
  411. { required: true, message: '请输入货主', trigger: 'blur' }
  412. ],
  413. compConfig: {
  414. attr: {
  415. placeholder: '请输入货主',
  416. clearable: true
  417. }
  418. }
  419. }
  420. ],
  421. [
  422. {
  423. span: 8,
  424. label: '库存状态',
  425. prop: 'FStockStatusID',
  426. component: 'by-input',
  427. rules: [
  428. { required: true, message: '请输入库存状态', trigger: 'blur' }
  429. ],
  430. compConfig: {
  431. attr: {
  432. placeholder: '请输入库存状态',
  433. clearable: true
  434. }
  435. }
  436. }
  437. ]
  438. ]
  439. }
  440. // 打开弹窗
  441. openSetting() {
  442. this.setValue = true;
  443. let loading = this.$loading({ target: '.main-container' });
  444. api.single({ id: 1 }, "supplyFinanceSetting").then((res : any) => {
  445. loading.close();
  446. if (res.data) {
  447. this.baseInfo = res.data;
  448. if (this.type == "setXForm") {
  449. setTimeout(() => {
  450. if (res.data.saleorderSetting && res.data.saleorderSetting.indexOf(this.getDepId) != -1) {
  451. (this as any).$refs.setXForm.setValue(JSON.parse(res.data.saleorderSetting)[this.getDepId]);
  452. }
  453. }, 0)
  454. } else if (this.type == "setCForm") {
  455. setTimeout(() => {
  456. if (res.data.outorderSetting && res.data.outorderSetting.indexOf(this.getDepId) != -1) {
  457. (this as any).$refs.setCForm.setValue(JSON.parse(res.data.outorderSetting)[this.getDepId]);
  458. }
  459. }, 0)
  460. }
  461. }
  462. }).catch(() => {
  463. loading.close();
  464. this.setValue = false;
  465. })
  466. }
  467. created() {
  468. }
  469. determine() {
  470. let value : any = "";
  471. let data : any = {}
  472. if (this.type == "setXForm") {
  473. (this as any).$refs.setXForm.validate().then(() => {
  474. value = (this as any).$refs.setXForm.getValue();
  475. if (this.baseInfo.saleorderSetting) {
  476. let obj : any = JSON.parse(this.baseInfo.saleorderSetting);
  477. if (obj[this.getDepId]) {
  478. obj[this.getDepId] = value
  479. } else {
  480. if (this.getDepId == "kingdee") {
  481. obj.kingdee = value
  482. } else obj.yonbip = value
  483. }
  484. data.saleorderSetting = JSON.stringify(obj);
  485. } else {
  486. data.saleorderSetting = JSON.stringify({ [this.getDepId]: value })
  487. }
  488. if (this.baseInfo) data.id = this.baseInfo.id;
  489. let loading = this.$loading({ target: '.main-container' });
  490. api.updateList(data, 'supplyFinanceSetting').then((res : any) => {
  491. if (res.code === 200) {
  492. this.setValue = false;
  493. loading.close();
  494. this.$message.success("保存成功");
  495. } else loading.close();
  496. }).catch(() => loading.close());
  497. })
  498. }
  499. if (this.type == "setCForm") {
  500. (this as any).$refs.setCForm.validate().then(() => {
  501. value = (this as any).$refs.setCForm.getValue();
  502. if (this.baseInfo.outorderSetting) {
  503. let obj : any = JSON.parse(this.baseInfo.outorderSetting);
  504. if (obj[this.getDepId]) {
  505. obj[this.getDepId] = value
  506. } else {
  507. if (this.getDepId == "kingdee") {
  508. obj.kingdee = value
  509. } else obj.yonbip = value
  510. }
  511. data.outorderSetting = JSON.stringify(obj);
  512. } else {
  513. data.outorderSetting = JSON.stringify({ [this.getDepId]: value })
  514. }
  515. if (this.baseInfo) data.id = this.baseInfo.id;
  516. let loading = this.$loading({ target: '.main-container' });
  517. api.updateList(data, 'supplyFinanceSetting').then((res : any) => {
  518. if (res.code === 200) {
  519. this.setValue = false;
  520. loading.close();
  521. this.$message.success("保存成功");
  522. } else loading.close();
  523. }).catch(() => loading.close());
  524. })
  525. }
  526. }
  527. }
  528. </script>
  529. <style scoped lang="scss">
  530. .orderType {
  531. .typeText {
  532. width: 40px;
  533. height: 18px;
  534. line-height: 18px;
  535. text-align: center;
  536. background-color: #0089ff;
  537. border-radius: 12px;
  538. color: #fff;
  539. font-size: 12px;
  540. margin-left: -10px;
  541. }
  542. .typeText2 {
  543. background-color: #E6A23C;
  544. }
  545. }
  546. </style>