baseForm.vue 35 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189
  1. <template>
  2. <el-form
  3. :model="ruleForm"
  4. status-icon
  5. :rules="rulesThis"
  6. ref="ruleForm"
  7. :size="'mini'"
  8. v-loading="loading"
  9. label-width="85px"
  10. class="demo-ruleForm"
  11. >
  12. <el-row>
  13. <el-col
  14. :span="24"
  15. style="padding: 12px 16px 12px 16px; text-align: right"
  16. >
  17. <!-- <span
  18. >成本合计:<span>{{ back_total }}</span></span
  19. > -->
  20. <span
  21. class="fl"
  22. style="height: 28px; font-size: 16px; line-height: 28px"
  23. >{{ title }}</span
  24. >
  25. <el-button :size="'mini'" @click="$emit('cancel')">取 消 </el-button>
  26. <el-button :size="'mini'" type="primary" v-if="type !== 'view'" @click="submitForm"
  27. >保 存
  28. </el-button>
  29. </el-col>
  30. <el-col :span="16">
  31. <el-form-item label="供应商" prop="supplierNo">
  32. <search-supplier
  33. :value="ruleForm.supplierNo"
  34. :placeholder="'供应商'"
  35. :size="'mini'"
  36. :names="supplierNo_name"
  37. :disabled="type === 'view'"
  38. :isDetail="type !== 'add'"
  39. @searchChange="supplierNosearchChange"
  40. />
  41. </el-form-item>
  42. </el-col>
  43. <el-col :span="8">
  44. <el-form-item label="品牌" prop="brandid" label-width="60px">
  45. <search-brand
  46. :value="ruleForm.brandid"
  47. :size="'mini'"
  48. :disabled="true"
  49. :isDetail="true"
  50. :names="brand_name"
  51. :placeholder="'品牌'"
  52. @searchChange="brandidsearchChange"
  53. />
  54. </el-form-item>
  55. </el-col>
  56. <el-col :span="5">
  57. <el-form-item label="有效期" prop="expire_day">
  58. <digital-input
  59. :values="ruleForm.expire_day"
  60. :placeholder="'有效期'"
  61. :min="0"
  62. :max="100000000000"
  63. :position="'right'"
  64. :precision="0"
  65. :size="'mini'"
  66. :disabled="type === 'view'"
  67. :controls="false"
  68. :append="'天'"
  69. @reschange="number_change($event, 'expire_day')"
  70. />
  71. </el-form-item>
  72. </el-col>
  73. <el-col :span="5">
  74. <el-form-item label="物流时间" prop="delivery_day">
  75. <digital-input
  76. :values="ruleForm.delivery_day"
  77. :placeholder="'物流时间'"
  78. :min="0"
  79. :max="100000000000"
  80. :position="'right'"
  81. :precision="0"
  82. :size="'mini'"
  83. :disabled="type === 'view'"
  84. :controls="false"
  85. :append="'天'"
  86. @reschange="number_change($event, 'delivery_day')"
  87. />
  88. </el-form-item>
  89. </el-col>
  90. <el-col :span="5">
  91. <el-form-item label="生产工期" prop="work_day">
  92. <digital-input
  93. :values="ruleForm.work_day"
  94. :placeholder="'生产工期'"
  95. :min="0"
  96. :max="100000000000"
  97. :disabled="type === 'view'"
  98. :position="'right'"
  99. :precision="0"
  100. :size="'mini'"
  101. :controls="false"
  102. :append="'天'"
  103. @reschange="number_change($event, 'work_day')"
  104. />
  105. </el-form-item>
  106. </el-col>
  107. <el-col :span="5">
  108. <el-form-item label="税点" prop="tax" label-width="60px">
  109. <search-tax
  110. :value="ruleForm.tax"
  111. :size="'mini'"
  112. :disabled="type === 'view'"
  113. :isDetail="type !== 'add'"
  114. :placeholder="'税点'"
  115. @searchChange="taxsearchChange"
  116. />
  117. </el-form-item>
  118. </el-col>
  119. <el-col :span="4">
  120. <el-form-item label="单位" prop="unit_id" label-width="60px">
  121. <search-unit
  122. :value="ruleForm.unit_id"
  123. :size="'mini'"
  124. :isDetail="true"
  125. :names="unit_name"
  126. disabled
  127. :placeholder="'单位'"
  128. @searchChange="unitsearchChange"
  129. />
  130. </el-form-item>
  131. </el-col>
  132. <el-col :span="24">
  133. <el-row>
  134. <el-col :span="12">
  135. <el-form-item label="分类" prop="cat_id">
  136. <search-sort
  137. :value="ruleForm.cat_id"
  138. :placeholder="'分类'"
  139. :size="'mini'"
  140. :names="cat_id_name"
  141. :disabled="true"
  142. :isDetail="true"
  143. @searchChange="cat_id_change"
  144. />
  145. </el-form-item>
  146. <el-form-item label="商品名称" prop="pname">
  147. <el-input
  148. placeholder="商品名称"
  149. maxlength="100"
  150. :disabled="type === 'view'"
  151. v-model="ruleForm.pname"
  152. ></el-input>
  153. </el-form-item>
  154. <el-form-item label="产地" prop="origin_place">
  155. <select-area
  156. :placeholder="'产地'"
  157. :value="ruleForm.origin_place"
  158. :size="'mini'"
  159. :disabled="type === 'view'"
  160. :is-detail="id !== 'add'"
  161. @selectChange="selectAreaorigin_place"
  162. />
  163. </el-form-item>
  164. </el-col>
  165. <el-col :span="12" style="padding: 0 0 0 15px">
  166. <el-table
  167. :data="spec_tableData"
  168. :size="'mini'"
  169. border
  170. style="width: 100%"
  171. height="120px"
  172. >
  173. <el-table-column prop="spec_name" label="规格类型" />
  174. <el-table-column prop="spec_value_name" label="规格值" />
  175. <el-table-column
  176. fixed="right"
  177. width="88px"
  178. v-if="type !== 'view'"
  179. >
  180. <template slot="header" slot-scope="scope">
  181. <span>操作</span>
  182. <el-tooltip
  183. class="item"
  184. effect="dark"
  185. content="添加规格类型"
  186. placement="top"
  187. >
  188. <i
  189. class="el-icon-circle-plus-outline fr"
  190. style="font-size: 18px; margin-top: 2px"
  191. @click="openEdit('-1', {})"
  192. />
  193. </el-tooltip>
  194. </template>
  195. <template slot-scope="scope">
  196. <el-tooltip effect="dark" content="修改" placement="top">
  197. <i
  198. class="el-icon-edit tb-icon"
  199. @click="openEdit(scope.$index, scope.row)"
  200. ></i>
  201. </el-tooltip>
  202. <el-tooltip effect="dark" content="删除" placement="top">
  203. <i
  204. class="el-icon-delete tb-icon"
  205. @click="openDelete(scope.$index)"
  206. ></i>
  207. </el-tooltip>
  208. </template>
  209. </el-table-column>
  210. </el-table>
  211. <!-- 弹窗 新增/修改 -->
  212. <base-form-add-edit
  213. :index="modelIndex"
  214. :show-model="showOtherModel"
  215. :sitem="modelSitem"
  216. @refresh="refreshEdit"
  217. @cancel="showOtherModel = false"
  218. />
  219. </el-col>
  220. </el-row>
  221. </el-col>
  222. <el-col :span="6">
  223. <el-form-item label="总重量" prop="weight">
  224. <digital-input
  225. :values="ruleForm.weight"
  226. :placeholder="'总重量'"
  227. :min="0"
  228. :max="100000000000"
  229. :position="'right'"
  230. :precision="3"
  231. :disabled="type === 'view'"
  232. :size="'mini'"
  233. :controls="false"
  234. :append="'g'"
  235. @reschange="number_change($event, 'weight')"
  236. />
  237. </el-form-item>
  238. </el-col>
  239. <el-col :span="6">
  240. <el-form-item label="供货区域" prop="supply_area">
  241. <el-select
  242. v-model="ruleForm.supply_area"
  243. filterable
  244. :disabled="type === 'view'"
  245. clearable
  246. style="width: 100%"
  247. placeholder="供货区域"
  248. >
  249. <el-option
  250. v-for="group in options6"
  251. :key="group.id"
  252. :label="group.name"
  253. :value="group.id"
  254. />
  255. </el-select>
  256. </el-form-item>
  257. </el-col>
  258. <el-col :span="6">
  259. <el-form-item label="付款方式" prop="pay_way" class="clear">
  260. <el-select
  261. v-model="ruleForm.pay_way"
  262. filterable
  263. :disabled="type === 'view'"
  264. clearable
  265. style="width: 100%"
  266. placeholder="付款方式"
  267. >
  268. <el-option
  269. v-for="group in options10"
  270. :key="group.id"
  271. :label="group.name"
  272. :value="group.id"
  273. />
  274. </el-select>
  275. </el-form-item>
  276. </el-col>
  277. <el-col :span="6">
  278. <el-form-item label="发货方式" prop="send_way" class="clear">
  279. <el-select
  280. v-model="ruleForm.send_way"
  281. filterable
  282. clearable
  283. :disabled="type === 'view'"
  284. style="width: 100%"
  285. placeholder="发货方式"
  286. >
  287. <el-option
  288. v-for="group in options11"
  289. :key="group.id"
  290. :label="group.name"
  291. :value="group.id"
  292. />
  293. </el-select>
  294. </el-form-item>
  295. </el-col>
  296. <el-col :span="6">
  297. <el-form-item label="证书费" prop="cert_fee">
  298. <digital-input
  299. :values="ruleForm.cert_fee"
  300. :placeholder="'证书费'"
  301. :min="0"
  302. :disabled="type === 'view'"
  303. :max="100000000000"
  304. :position="'right'"
  305. :precision="2"
  306. :size="'mini'"
  307. :controls="false"
  308. :append="'元'"
  309. @reschange="number_change($event, 'cert_fee')"
  310. />
  311. </el-form-item>
  312. </el-col>
  313. <el-col :span="6">
  314. <el-form-item label="包装费" prop="pakge_fee">
  315. <digital-input
  316. :values="ruleForm.pakge_fee"
  317. :placeholder="'包装费'"
  318. :min="0"
  319. :disabled="type === 'view'"
  320. :max="100000000000"
  321. :position="'right'"
  322. :precision="2"
  323. :size="'mini'"
  324. :controls="false"
  325. :append="'元'"
  326. @reschange="number_change($event, 'pakge_fee')"
  327. />
  328. </el-form-item>
  329. </el-col>
  330. <el-col :span="6">
  331. <el-form-item label="工艺费" prop="cost_fee">
  332. <digital-input
  333. :values="ruleForm.pcost_fee"
  334. :placeholder="'工艺费'"
  335. :min="0"
  336. :disabled="type === 'view'"
  337. :max="100000000000"
  338. :position="'right'"
  339. :precision="2"
  340. :size="'mini'"
  341. :controls="false"
  342. :append="'元'"
  343. @reschange="number_change($event, 'cost_fee')"
  344. />
  345. </el-form-item>
  346. </el-col>
  347. <el-col :span="6">
  348. <el-form-item label="加标费" prop="mark_fee">
  349. <digital-input
  350. :values="ruleForm.mark_fee"
  351. :placeholder="'加标费'"
  352. :min="0"
  353. :disabled="type === 'view'"
  354. :max="100000000000"
  355. :position="'right'"
  356. :precision="2"
  357. :size="'mini'"
  358. :controls="false"
  359. :append="'元'"
  360. @reschange="number_change($event, 'mark_fee')"
  361. />
  362. </el-form-item>
  363. </el-col>
  364. <el-col :span="6">
  365. <el-form-item label="打样费" prop="demo_fee">
  366. <digital-input
  367. :values="ruleForm.demo_fee"
  368. :placeholder="'打样费'"
  369. :min="0"
  370. :disabled="type === 'view'"
  371. :max="100000000000"
  372. :position="'right'"
  373. :precision="2"
  374. :size="'mini'"
  375. :controls="false"
  376. :append="'元'"
  377. @reschange="number_change($event, 'demo_fee')"
  378. />
  379. </el-form-item>
  380. </el-col>
  381. <el-col :span="6">
  382. <el-form-item label="开模费" prop="open_fee">
  383. <digital-input
  384. :values="ruleForm.open_fee"
  385. :placeholder="'开模费'"
  386. :min="0"
  387. :disabled="type === 'view'"
  388. :max="100000000000"
  389. :position="'right'"
  390. :precision="2"
  391. :size="'mini'"
  392. :controls="false"
  393. :append="'元'"
  394. @reschange="number_change($event, 'open_fee')"
  395. />
  396. </el-form-item>
  397. </el-col>
  398. <el-col :span="6">
  399. <el-form-item label="物流费" prop="delivery_fee">
  400. <digital-input
  401. :values="ruleForm.delivery_fee"
  402. :placeholder="'物流费'"
  403. :min="0"
  404. :disabled="type === 'view'"
  405. :max="100000000000"
  406. :position="'right'"
  407. :precision="2"
  408. :size="'mini'"
  409. :controls="false"
  410. :append="'元'"
  411. @reschange="number_change($event, 'delivery_fee')"
  412. />
  413. </el-form-item>
  414. </el-col>
  415. <el-col :span="6">
  416. <el-form-item label="裸价" prop="nake_fee" class="clear">
  417. <digital-input
  418. :values="ruleForm.nake_fee"
  419. :placeholder="'裸价'"
  420. :min="0"
  421. :disabled="type === 'view'"
  422. :max="100000000000"
  423. :position="'right'"
  424. :precision="2"
  425. :size="'mini'"
  426. :controls="false"
  427. :append="'元'"
  428. @reschange="number_change($event, 'nake_fee')"
  429. />
  430. </el-form-item>
  431. </el-col>
  432. <el-col :span="24" v-show="is_noble">
  433. <el-col :span="6">
  434. <el-form-item label="金属重量" prop="noble_weight">
  435. <digital-input
  436. :values="ruleForm.noble_weight"
  437. :placeholder="'金属重量'"
  438. :min="0"
  439. :disabled="type === 'view'"
  440. :max="100000000000"
  441. :position="'right'"
  442. :precision="3"
  443. :size="'mini'"
  444. :controls="false"
  445. :append="'g'"
  446. @reschange="number_change($event, 'noble_weight')"
  447. />
  448. </el-form-item>
  449. </el-col>
  450. <el-col :span="6">
  451. <el-form-item label="金属种类" prop="metal_id">
  452. <search-metal-kind
  453. :value="ruleForm.metal_id"
  454. :size="'mini'"
  455. :disabled="true"
  456. :isDetail="true"
  457. :placeholder="'金属种类'"
  458. @searchChange="metal_idsearchChange"
  459. />
  460. </el-form-item>
  461. </el-col>
  462. <el-col :span="6">
  463. <el-form-item label="启用金价" prop="is_gold_price">
  464. <el-select
  465. v-model="ruleForm.is_gold_price"
  466. filterable
  467. clearable
  468. :disabled="type === 'view'"
  469. style="width: 100%"
  470. placeholder="启用金价"
  471. >
  472. <el-option
  473. v-for="group in options5"
  474. :key="group.id"
  475. :label="group.name"
  476. :value="group.id"
  477. />
  478. </el-select>
  479. </el-form-item>
  480. </el-col>
  481. <el-col :span="6">
  482. <el-form-item label="有无工差" prop="is_diff">
  483. <el-select
  484. v-model="ruleForm.is_diff"
  485. filterable
  486. clearable
  487. :disabled="type === 'view'"
  488. style="width: 100%"
  489. placeholder="有无工差"
  490. >
  491. <el-option
  492. v-for="group in options8"
  493. :key="group.id"
  494. :label="group.name"
  495. :value="group.id"
  496. />
  497. </el-select>
  498. </el-form-item>
  499. </el-col>
  500. <el-col :span="12">
  501. <el-form-item label="配置要求" prop="config">
  502. <el-select
  503. v-model="ruleForm.config"
  504. multiple
  505. :disabled="type === 'view'"
  506. style="width: 100%"
  507. placeholder="配置要求"
  508. >
  509. <el-option
  510. v-for="(item, index) in options9"
  511. :key="item + index"
  512. :label="item"
  513. :value="item"
  514. >
  515. </el-option>
  516. </el-select>
  517. </el-form-item>
  518. </el-col>
  519. <el-col :span="12">
  520. <el-form-item
  521. label="其他配置要求"
  522. prop="other_config"
  523. label-width="120px"
  524. >
  525. <el-input
  526. placeholder="其他要求"
  527. maxlength="100"
  528. :disabled="type === 'view'"
  529. v-model="ruleForm.other_config"
  530. >
  531. </el-input>
  532. </el-form-item>
  533. </el-col>
  534. </el-col>
  535. <el-col :span="18">
  536. <el-form-item label="采购备注" prop="remark">
  537. <el-input
  538. placeholder="采购备注"
  539. maxlength="500"
  540. :disabled="type === 'view'"
  541. v-model="ruleForm.remark"
  542. >
  543. </el-input>
  544. </el-form-item>
  545. <el-form-item label="工艺说明" prop="cost_desc">
  546. <el-input
  547. placeholder="工艺说明"
  548. maxlength="500"
  549. :disabled="type === 'view'"
  550. v-model="ruleForm.cost_desc"
  551. >
  552. </el-input>
  553. </el-form-item>
  554. </el-col>
  555. <el-col :span="6">
  556. <el-form-item
  557. label="商品图片(<1mb)"
  558. prop="good_img"
  559. class="activity-upload"
  560. >
  561. <div class="btnupload" style="position: relative">
  562. <img
  563. v-if="ruleForm.good_img"
  564. :src="ruleForm.good_img"
  565. class="avatar"
  566. />
  567. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  568. <file-upload
  569. class="Upload"
  570. :accept="'.jpg,.png,.jpeg'"
  571. :multiple="true"
  572. :disabled="type === 'view'"
  573. :uploadcondition="beforeAvatarUpload"
  574. @UploadErrorEvent="UploadErrorEventgood_img"
  575. @UploadSuccessEvent="UploadSuccessEventgood_img"
  576. ></file-upload>
  577. </div>
  578. </el-form-item>
  579. </el-col>
  580. </el-row>
  581. </el-form>
  582. </template>
  583. <script>
  584. import asyncRequest from "@/apis/service/purchaseIn/workbench";
  585. import resToken from "@/mixins/resToken";
  586. import { mapGetters } from "vuex";
  587. import baseFormAddEdit from "./baseFormAddEdit";
  588. import {
  589. options1,
  590. options2,
  591. options3,
  592. options4,
  593. options5,
  594. options6,
  595. options7,
  596. options8,
  597. options9,
  598. options10,
  599. options11,
  600. rules,
  601. } from "../columns";
  602. export default {
  603. name: "goodsCostAdd",
  604. mixins: [resToken],
  605. props: ["showModel", "id", "type", "sitem", "askItem", "newTime", "editId"],
  606. components: {
  607. baseFormAddEdit,
  608. },
  609. computed: {
  610. ...mapGetters(["tablebtnSize", "searchSize", "size"]),
  611. powers() {
  612. let tran =
  613. this.$store.getters.btnList.find(
  614. (item) => item.menu_route == "goodsCostAdd"
  615. ) || {};
  616. if (tran && tran.action && tran.action.length > 0) {
  617. return tran.action;
  618. } else {
  619. return [];
  620. }
  621. },
  622. },
  623. watch: {
  624. newTime: function (val) {
  625. if (val) {
  626. this.initForm();
  627. }
  628. },
  629. },
  630. data() {
  631. return {
  632. cat_id_name: "",
  633. supplierNo: "",
  634. brand_name: "",
  635. unit_name: "",
  636. title: "",
  637. modelIndex: "",
  638. modelSitem: {},
  639. showOtherModel: false,
  640. is_noble: false,
  641. status: "",
  642. rulesThis: this.rules,
  643. activeName: "1",
  644. loading: true,
  645. options1: options1,
  646. options2: options2,
  647. options3: options3,
  648. options4: options4,
  649. options5: options5,
  650. options6: options6,
  651. options7: options7,
  652. options8: options8,
  653. options9: options9,
  654. options10: options10,
  655. options11: options11,
  656. ruleForm: {},
  657. rules: JSON.parse(JSON.stringify(rules)),
  658. };
  659. },
  660. mounted() {
  661. this.initForm();
  662. },
  663. methods: {
  664. async initForm() {
  665. this.supplierNo = [];
  666. console.log(this.id);
  667. this.loading = true;
  668. if (this.type === "add") {
  669. this.title = "新建采返商品";
  670. } else if (this.type === "edit") {
  671. this.title = "编辑采返商品";
  672. } else {
  673. this.title = "采返商品详情";
  674. }
  675. console.log(this.type);
  676. this.resetFormData();
  677. this.rulesThis = this.rules;
  678. await this.resetForm();
  679. if (this.type === "edit" || this.type === "view") {
  680. await this.initData();
  681. }
  682. this.setrules();
  683. this.loading = false;
  684. },
  685. number_change(e, key) {
  686. this.ruleForm[key] = e + "" || "0";
  687. this.$refs.ruleForm.validateField(key);
  688. },
  689. async initData() {
  690. this.loading = true;
  691. const { code, message, data } = await asyncRequest.good_detail({
  692. bidNo: this.editId,
  693. });
  694. console.log(data);
  695. if (code === 0) {
  696. const {
  697. bidNo,
  698. good_name, //string 名称
  699. cat_id, //array 分类
  700. cat_info,
  701. brand_id, //string 品牌id
  702. unit, // string 单位
  703. unit_id, //单位ID
  704. tax, //string 税率
  705. supplierNo, // string 供应商
  706. cost_desc, // string 工艺说明
  707. remark, // string 采购备注
  708. weight, // string 重量
  709. supply_area, // string 供货区域 1 全国2 除偏远地区
  710. origin_place, // string 产地
  711. delivery_day, // string 物流天数
  712. expire_day, // string 信息有效期
  713. good_img, //
  714. // good_name,
  715. cert_fee, // string 证书费
  716. pakge_fee, // string 打包费
  717. cost_fee, // string 工艺费
  718. mark_fee, // string 加标费
  719. demo_fee, // string 打样费
  720. open_fee, // string 开模费
  721. metal_id, // string 金属类别
  722. noble_weight, // string 金属重量
  723. is_gold_price, // string 是否使用实时金价
  724. delivery_fee, // string 物流费
  725. status, // string 状态
  726. brand_name,
  727. work_day,
  728. pay_way,
  729. send_way,
  730. is_diff,
  731. config,
  732. nake_fee,
  733. other_config,
  734. supplierName,
  735. specinfo,
  736. } = JSON.parse(JSON.stringify(data));
  737. if (specinfo && specinfo.length > 0) {
  738. this.spec_tableData = JSON.parse(JSON.stringify(specinfo));
  739. }
  740. this.cat_id_name = "";
  741. if (cat_info && cat_info.length) {
  742. cat_info.forEach((e, ei) => {
  743. this.cat_id_name += `${ei !== 0 ? "_" : ""}${e.name}`;
  744. });
  745. }
  746. this.supplierNo_name = supplierName || "";
  747. console.log(this.supplierNo_name);
  748. this.is_noble = this.askItem.is_metal;
  749. this.brand_name = brand_name || "";
  750. this.unit_name = unit || "";
  751. this.ruleForm = {
  752. infoNo: this.id || "",
  753. bidNo: bidNo || "",
  754. infoNo: this.id || "",
  755. cat_id: cat_id ? [cat_id] : [],
  756. supplierNo: supplierNo ? [supplierNo] : [],
  757. pname: good_name || "",
  758. expire_day: expire_day || "0", //有效期
  759. delivery_day: delivery_day || "0", //物流时间
  760. work_day: work_day || "0", //生产工期
  761. brandid: brand_id ? [brand_id] : [],
  762. unit_id: unit_id ? [unit_id] : [],
  763. weight: weight || "0.000",
  764. tax: tax ? tax + "%" : "",
  765. supply_area: supply_area || "",
  766. origin_place: origin_place ? origin_place.split(",") : [],
  767. cert_fee: cert_fee || "0.00",
  768. pakge_fee: pakge_fee || "0.00",
  769. cost_fee: cost_fee || "0.00",
  770. mark_fee: mark_fee || "0.00",
  771. demo_fee: demo_fee || "0.00",
  772. open_fee: open_fee || "0.00",
  773. delivery_fee: delivery_fee || "0.00",
  774. nake_fee: nake_fee || "0.00",
  775. pay_way: pay_way || "",
  776. send_way: send_way || "",
  777. noble_weight: noble_weight || "0.000",
  778. metal_id: metal_id || "",
  779. is_gold_price: is_gold_price || "",
  780. is_diff: is_diff || "",
  781. config: config ? config.split(",") : [],
  782. other_config: other_config || "",
  783. remark: remark || "",
  784. cost_desc: cost_desc || "",
  785. good_img: good_img || "",
  786. };
  787. this.status = status;
  788. console.log(this.ruleForm.origin_place);
  789. } else if (code >= 100 && code <= 104) {
  790. await this.logout();
  791. } else {
  792. this.$message.warning(message);
  793. }
  794. },
  795. async submitForm() {
  796. await this.$refs.ruleForm.validate(async (valid) => {
  797. if (valid) {
  798. this.loading = true;
  799. if (this.spec_tableData.length === 0) {
  800. this.$message.warning("请填写规格!");
  801. this.loading = false;
  802. return;
  803. }
  804. let model = JSON.parse(JSON.stringify(this.ruleForm));
  805. model.cat_id = model.cat_id[model.cat_id.length - 1];
  806. model.brandid = model.brandid.toString();
  807. model.supplierNo = model.supplierNo.toString();
  808. model.origin_place = model.origin_place.toString();
  809. model.unit_id = model.unit_id.toString();
  810. model.config = model.config.toString();
  811. model.tax = parseInt(model.tax + "") + "";
  812. model.specinfo = [];
  813. let list = JSON.parse(JSON.stringify(this.spec_tableData));
  814. list.forEach((a) => {
  815. let am = {
  816. specid: a.specid,
  817. spec_value_id: a.spec_value_id,
  818. };
  819. model.specinfo.push(am);
  820. });
  821. console.log(model);
  822. let res = {};
  823. if (this.type === "add") {
  824. delete model["bidNo"];
  825. res = await asyncRequest.good_add(model);
  826. } else {
  827. res = await asyncRequest.good_update(model);
  828. }
  829. console.log(res);
  830. this.loading = false;
  831. if (res && res.code === 0) {
  832. const title = this.type === "add" ? "新建成功!" : "修改成功!";
  833. this.$notify.success({
  834. title: title,
  835. message: "",
  836. });
  837. this.showModelThis = false;
  838. // 刷新
  839. this.$emit("refresh");
  840. } else if (res && res.code >= 100 && res.code <= 104) {
  841. await this.logout();
  842. } else {
  843. this.$message.warning(res.message);
  844. }
  845. } else {
  846. console.log("error submit!!");
  847. return false;
  848. }
  849. });
  850. },
  851. async resetForm() {
  852. // 重置
  853. await this.$nextTick(async () => {
  854. if (this.$refs.ruleForm) {
  855. this.$refs.ruleForm.resetFields();
  856. this.$refs.ruleForm.clearValidate();
  857. this.spec_tableData = [];
  858. console.log(this.askItem);
  859. // const { can_id_arr } = this.askItem;
  860. this.is_noble = this.askItem.is_metal;
  861. this.cat_id_name = this.type === "add" ? this.askItem.can_name : "";
  862. this.brand_name = this.type === "add" ? this.askItem.brand : "";
  863. this.unit_name = this.type === "add" ? this.askItem.unit_name : "";
  864. this.ruleForm = {
  865. infoNo: this.id || "",
  866. cat_id: this.type === "add" ? [this.askItem.cat_id] : [],
  867. supplierNo: [],
  868. pname: this.type === "add" ? this.askItem.good_name : "",
  869. expire_day: "0", //有效期
  870. delivery_day: "0", //物流时间
  871. work_day: "0", //生产工期
  872. brandid:
  873. this.type === "add" && this.askItem.brand_id
  874. ? [this.askItem.brand_id]
  875. : [],
  876. unit_id: this.type === "add" ? [this.askItem.unit] : [],
  877. weight: this.type === "add" ? this.askItem.total_weight : "0.000",
  878. tax: "",
  879. supply_area: "",
  880. origin_place: [],
  881. cert_fee: "0.00",
  882. pakge_fee: "0.00",
  883. cost_fee: "0.00",
  884. mark_fee: "0.00",
  885. demo_fee: "0.00",
  886. open_fee: "0.00",
  887. delivery_fee: "0.00",
  888. nake_fee: "0.00",
  889. pay_way: "",
  890. send_way: "",
  891. noble_weight:
  892. this.type === "add" ? this.askItem.specs_weight : "0.000",
  893. metal_id: this.type === "add" ? this.askItem.metal_id : "",
  894. is_gold_price:
  895. this.type === "add" ? this.askItem.is_gold_price : "",
  896. is_diff: "",
  897. config:
  898. this.type === "add"
  899. ? this.askItem.config
  900. ? this.askItem.config.split(",")
  901. : []
  902. : [],
  903. other_config: this.type === "add" ? this.askItem.other_config : "",
  904. remark: "",
  905. cost_desc: this.type === "add" ? this.askItem.cost_desc : "",
  906. good_img: this.type === "add" ? this.askItem.good_img : "",
  907. };
  908. if (this.type === "add") {
  909. this.spec_tableData = JSON.parse(
  910. JSON.stringify(this.askItem.specinfo)
  911. );
  912. }
  913. }
  914. });
  915. },
  916. openEdit(index, sitem) {
  917. this.modelIndex = index;
  918. this.modelSitem = sitem;
  919. this.showOtherModel = true;
  920. },
  921. openDelete(index) {
  922. this.spec_tableData.splice(index, 1);
  923. },
  924. //规格编辑修改结果
  925. refreshEdit(e) {
  926. let item = JSON.parse(JSON.stringify(e));
  927. const { index, specid, spec_name, spec_value_id, spec_value_name } = item;
  928. if (index + "" === "-1") {
  929. this.spec_tableData.push(item);
  930. } else {
  931. let findex = parseInt(index + "");
  932. this.spec_tableData[findex].specid = specid;
  933. this.spec_tableData[findex].spec_name = spec_name;
  934. this.spec_tableData[findex].spec_value_id = spec_value_id;
  935. this.spec_tableData[findex].spec_value_name = spec_value_name;
  936. }
  937. this.showOtherModel = false;
  938. },
  939. //分类选择
  940. async cat_id_change(e) {
  941. const { pid, id, label } = e;
  942. this.ruleForm.cat_id = id ? [id] : [];
  943. this.is_noble = pid === "6";
  944. this.$refs.ruleForm.validateField("cat_id");
  945. this.setrules();
  946. },
  947. setrules() {
  948. let list = [
  949. "noble_weight",
  950. "metal_id",
  951. "is_gold_price",
  952. "is_diff",
  953. "config",
  954. "other_config",
  955. ];
  956. for (let i = 0; i < list.length; i++) {
  957. this.rules[list[i]][0].required = this.is_noble;
  958. }
  959. },
  960. //品牌选择
  961. brandidsearchChange(e) {
  962. const { id, code, label } = e;
  963. if (id) {
  964. this.ruleForm.brandid = [id];
  965. } else {
  966. this.ruleForm.brandid = [];
  967. }
  968. this.$refs.ruleForm.validateField("brandid");
  969. },
  970. //供应商选择
  971. supplierNosearchChange(e) {
  972. console.log(e);
  973. const { id, code, label } = e;
  974. if (id) {
  975. this.ruleForm.supplierNo = [code];
  976. } else {
  977. this.ruleForm.supplierNo = [];
  978. }
  979. this.$refs.ruleForm.validateField("supplierNo");
  980. },
  981. //税点选择
  982. taxsearchChange(e) {
  983. this.ruleForm.tax = e;
  984. this.$refs.ruleForm.validateField("tax");
  985. },
  986. //单位选择
  987. unitsearchChange(e) {
  988. const { id, code, label } = e;
  989. if (id) {
  990. this.ruleForm.unit_id = [code];
  991. } else {
  992. this.ruleForm.unit_id = [];
  993. }
  994. this.$refs.ruleForm.validateField("unit_id");
  995. },
  996. //金属种类选择
  997. metal_idsearchChange(e) {
  998. console.log(e);
  999. const { id, code, label } = e;
  1000. if (id) {
  1001. this.ruleForm.metal_id = id;
  1002. } else {
  1003. this.ruleForm.metal_id = "";
  1004. }
  1005. this.$refs.ruleForm.validateField("metal_id");
  1006. },
  1007. //仓库省市区
  1008. selectAreaorigin_place(e) {
  1009. this.ruleForm.origin_place = e;
  1010. this.$refs.ruleForm.validateField("origin_place");
  1011. },
  1012. //图片上传成功
  1013. async UploadSuccessEventgood_img(data) {
  1014. await this.UploadSuccessEvent(1, data);
  1015. },
  1016. //图片上传成功
  1017. async UploadSuccessEvent(type, data) {
  1018. const { url } = data;
  1019. if (url === "noToken") {
  1020. await this.logout();
  1021. } else {
  1022. if (type === 1) {
  1023. this.ruleForm.good_img = url;
  1024. this.$refs.ruleForm.validateField("good_img");
  1025. } else if (type === 2) {
  1026. this.ruleForm.good_img = url;
  1027. this.$refs.ruleForm.validateField("good_img");
  1028. }
  1029. this.$message.success("图片上传成功!");
  1030. }
  1031. },
  1032. //图片上传失败
  1033. UploadErrorEventgood_img(res) {
  1034. this.imgUploadError(1, res);
  1035. },
  1036. imgUploadError(type, res) {
  1037. if (res !== "break") {
  1038. this.$message.error("图片上传失败!");
  1039. this.$refs.ruleForm.validateField(
  1040. type === 1 ? "good_img" : type === 2 ? "good_img" : ""
  1041. );
  1042. }
  1043. },
  1044. //判断图片规格
  1045. beforeAvatarUpload(file) {
  1046. let isJPG = false;
  1047. if (
  1048. file.type === "image/jpg" ||
  1049. file.type === "image/png" ||
  1050. file.type === "image/jpeg"
  1051. ) {
  1052. isJPG = true;
  1053. }
  1054. const isLt2M = file.size / 1024 / 1024 < 1;
  1055. if (!isJPG) {
  1056. this.$message.error("图片格式不正确!");
  1057. }
  1058. if (!isLt2M) {
  1059. this.$message.error("图片大小不能超过 1MB!");
  1060. }
  1061. return isJPG && isLt2M;
  1062. },
  1063. resetFormData() {
  1064. this.status = "";
  1065. this.is_noble = false;
  1066. this.cat_id_name = "";
  1067. this.brand_name = "";
  1068. this.unit_name = "";
  1069. this.ruleForm = {
  1070. infoNo: "",
  1071. cat_id: [],
  1072. supplierNo: [],
  1073. pname: "",
  1074. expire_day: "0", //有效期
  1075. delivery_day: "0", //物流时间
  1076. work_day: "0", //生产工期
  1077. color: "",
  1078. model: "",
  1079. material: "",
  1080. brandid: [],
  1081. unit_id: [],
  1082. weight: "0.000",
  1083. tax: "",
  1084. supply_area: "",
  1085. origin_place: [],
  1086. cert_fee: "0.00",
  1087. pakge_fee: "0.00",
  1088. cost_fee: "0.00",
  1089. mark_fee: "0.00",
  1090. demo_fee: "0.00",
  1091. open_fee: "0.00",
  1092. delivery_fee: "0.00",
  1093. nake_fee: "0.00",
  1094. pay_way: "",
  1095. send_way: "",
  1096. noble_weight: "0.000",
  1097. metal_id: "",
  1098. is_gold_price: "",
  1099. is_diff: "",
  1100. config: [],
  1101. other_config: "",
  1102. remark: "",
  1103. cost_desc: "",
  1104. good_img: "",
  1105. };
  1106. },
  1107. addFormData() {
  1108. this.status = "";
  1109. this.is_noble = false;
  1110. this.cat_id_name = "";
  1111. this.brand_name = "";
  1112. this.unit_name = "";
  1113. this.ruleForm = {
  1114. infoNo: "",
  1115. cat_id: [],
  1116. supplierNo: [],
  1117. pname: "",
  1118. expire_day: "0", //有效期
  1119. delivery_day: "0", //物流时间
  1120. work_day: "0", //生产工期
  1121. color: "",
  1122. model: "",
  1123. material: "",
  1124. brandid: [],
  1125. unit_id: [],
  1126. weight: "0.000",
  1127. tax: "",
  1128. supply_area: "",
  1129. origin_place: [],
  1130. cert_fee: "0.00",
  1131. pakge_fee: "0.00",
  1132. cost_fee: "0.00",
  1133. mark_fee: "0.00",
  1134. demo_fee: "0.00",
  1135. open_fee: "0.00",
  1136. delivery_fee: "0.00",
  1137. nake_fee: "0.00",
  1138. pay_way: "",
  1139. send_way: "",
  1140. noble_weight: "0.000",
  1141. metal_id: "",
  1142. is_gold_price: "",
  1143. is_diff: "",
  1144. config: [],
  1145. other_config: "",
  1146. remark: "",
  1147. cost_desc: "",
  1148. good_img: "",
  1149. };
  1150. },
  1151. },
  1152. };
  1153. </script>
  1154. <style lang="scss" scoped>
  1155. .goodsCostDetail {
  1156. .goodsCostAdd-title {
  1157. border-top: 1px solid #ebeef5;
  1158. span {
  1159. height: 50px;
  1160. line-height: 50px;
  1161. font-family: "微软雅黑", sans-serif;
  1162. font-weight: 400;
  1163. font-style: normal;
  1164. font-size: 16px;
  1165. text-align: left;
  1166. }
  1167. }
  1168. }
  1169. </style>