edit.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. <template>
  2. <a-button type="primary" :disabled="disabled" @click="showDrawer">
  3. 编辑
  4. </a-button>
  5. <a-modal
  6. title="编辑商品档案"
  7. :width="820"
  8. v-model:open="visible"
  9. @cancel="onClose"
  10. >
  11. <a-form :model="form" ref="formRef" layout="vertical">
  12. <a-row :gutter="16">
  13. <a-col :span="8">
  14. <a-form-item label="财务分类">
  15. <a-select v-model:value="form.financeclasstype" placeholder="选择财务分类">
  16. <a-select-option :value="item.value" v-for="item in finOptions" :key="item.index">{{item.remarks}}</a-select-option>
  17. </a-select>
  18. </a-form-item>
  19. </a-col>
  20. <a-col :span="8">
  21. <a-form-item label="领域">
  22. <a-select v-model:value="form.tradefields" mode="multiple" placeholder="选择域">
  23. <a-select-option :value="item.value" v-for="item in tradefieldOptions" :key="item.index">{{item.remarks}}</a-select-option>
  24. </a-select>
  25. </a-form-item>
  26. </a-col>
  27. <a-col :span="8">
  28. <a-form-item label="标签">
  29. <a-select v-model:value="form.delistingstatus" placeholder="选择标签">
  30. <a-select-option :value="item.value" v-for="item in delistingOptions" :key="item.index">{{item.remarks}}</a-select-option>
  31. </a-select>
  32. </a-form-item>
  33. </a-col>
  34. </a-row>
  35. <a-row :gutter="16">
  36. <a-col :span="8">
  37. <a-form-item label="商品编码" name="itemno">
  38. <a-input v-model:value="form.itemno" placeholder="请输入商品编号" />
  39. </a-form-item>
  40. </a-col>
  41. <a-col :span="8">
  42. <a-form-item label="品名" name="itemname">
  43. <a-input v-model:value="form.itemname" placeholder="请输入商品名称" />
  44. </a-form-item>
  45. </a-col>
  46. <a-col :span="8">
  47. <a-form-item label="选项方案" name="sa_customschemeid">
  48. <a-select v-model:value="form.sa_customschemeid" placeholder="选择选项方案" allowClear>
  49. <a-select-option v-for="item in schemeList"
  50. :key="item.sa_customschemeid" :value="item.sa_customschemeid">{{item.schemename}}</a-select-option>
  51. </a-select>
  52. </a-form-item>
  53. </a-col>
  54. </a-row>
  55. <a-row :gutter="16">
  56. <a-col :span="12">
  57. <a-form-item label="型号" name="model">
  58. <a-input v-model:value="form.model" placeholder="请输入商品型号" />
  59. </a-form-item>
  60. </a-col>
  61. <a-col :span="12">
  62. <a-form-item label="规格" name="standards">
  63. <a-input v-model:value="form.standards" placeholder="请输入商品规格" />
  64. </a-form-item>
  65. </a-col>
  66. <a-col :span="6">
  67. <a-form-item label="尺寸" name="spec">
  68. <a-input v-model:value="form.spec" readonly placeholder="请输入商品尺寸" />
  69. </a-form-item>
  70. </a-col>
  71. <a-col :span="6">
  72. <a-form-item label="工艺" name="cheek">
  73. <a-input v-model:value="form.cheek" readonly placeholder="请输入商品工艺" />
  74. </a-form-item>
  75. </a-col>
  76. <a-col :span="6">
  77. <a-form-item label="颜色" name="color">
  78. <a-input v-model:value="form.color" readonly placeholder="请输入商品颜色" />
  79. </a-form-item>
  80. </a-col>
  81. <a-col :span="6">
  82. <a-form-item label="选项" name="material">
  83. <a-input v-model:value="form.material" readonly placeholder="请输入商品选项" />
  84. </a-form-item>
  85. </a-col>
  86. </a-row>
  87. <a-row :gutter="16">
  88. <!-- <a-col :span="6">
  89. <a-form-item label="配件" name="ismodule">
  90. <a-select v-model:value="form.ismodule" placeholder="选择是否配件">
  91. <a-select-option :value="1">配件</a-select-option>
  92. <a-select-option :value="0">非配件</a-select-option>
  93. </a-select>
  94. </a-form-item>
  95. </a-col>
  96. <a-col :span="6">
  97. <a-form-item label="木制品" name="iswoodproducts">
  98. <a-select v-model:value="form.iswoodproducts" placeholder="选择是否木制品">
  99. <a-select-option :value="1">木制品</a-select-option>
  100. <a-select-option :value="0">非木制品</a-select-option>
  101. </a-select>
  102. </a-form-item>
  103. </a-col> -->
  104. <a-col :span="6">
  105. <a-form-item label="物料" name="iswuliao">
  106. <a-select v-model:value="form.iswuliao" placeholder="选择是否物料">
  107. <a-select-option :value="1">物料</a-select-option>
  108. <a-select-option :value="0">非物料</a-select-option>
  109. </a-select>
  110. </a-form-item>
  111. </a-col>
  112. <a-col :span="6">
  113. <a-form-item label="批次管理" name="batchcontrol">
  114. <a-select v-model:value="form.batchcontrol" placeholder="选择是否批次管理">
  115. <a-select-option :value="1">批次管理</a-select-option>
  116. <a-select-option :value="0">非批次管理</a-select-option>
  117. </a-select>
  118. </a-form-item>
  119. </a-col>
  120. <a-col :span="6">
  121. <a-form-item label="单品管理" name="skucontrol">
  122. <a-select v-model:value="form.skucontrol" placeholder="选择是否单品管理">
  123. <a-select-option :value="1">单品管理</a-select-option>
  124. <a-select-option :value="0">非单品管理</a-select-option>
  125. </a-select>
  126. </a-form-item>
  127. </a-col>
  128. <a-col :span="6">
  129. <a-form-item label="保修期限" name="warrantyday">
  130. <a-input v-model:value="form.warrantyday" placeholder="请输入保修期限" />
  131. </a-form-item>
  132. </a-col>
  133. <a-col :span="6">
  134. <a-form-item label="起订量" name="orderminqty" :rules="[{ required: true,validator: checkNumber,trigger: 'change' }]">
  135. <a-input-number style="width:100%" :precision="2" v-model:value="form.orderminqty" placeholder="请输入起订量"/>
  136. </a-form-item>
  137. </a-col>
  138. <a-col :span="6">
  139. <a-form-item label="增量" name="orderaddqty" :rules="[{ required: true,validator: checkNumber,trigger: 'change' }]">
  140. <a-input-number style="width:100%" :precision="2" v-model:value="form.orderaddqty" placeholder="请输入增量"/>
  141. </a-form-item>
  142. </a-col>
  143. <a-col :span="6">
  144. <a-form-item label="包装数量" :rules="[{ required: true,validator: checkNumber ,trigger: 'change'}]" name="packageqty">
  145. <a-input v-model:value="form.packageqty" :precision="2" placeholder="请输入包装数量" />
  146. </a-form-item>
  147. </a-col>
  148. <a-col :span="6">
  149. <a-form-item label="单位" name="unitid">
  150. <a-select v-model:value="form.unitid" placeholder="选择单位">
  151. <a-select-option :value="item.unitid" v-for="item in unitData" :key="item.index">{{item.unitname}}</a-select-option>
  152. </a-select>
  153. </a-form-item>
  154. </a-col>
  155. </a-row>
  156. <a-row :gutter="16">
  157. <a-col :span="24">
  158. <p class="title">定制信息</p>
  159. </a-col>
  160. <a-col :span="6">
  161. <a-form-item label="是否定制商品" name="iscustomsize" :rules="[{ required: true, message: '请选择定制信息' }]">
  162. <a-select v-model:value="form.iscustomsize" placeholder="选择是否定制商品">
  163. <a-select-option :value="1">定制商品</a-select-option>
  164. <a-select-option :value="0">非定制商品</a-select-option>
  165. </a-select>
  166. </a-form-item>
  167. </a-col>
  168. <a-col :span="6" v-if="form.iscustomsize == 1">
  169. <a-form-item label="长" name="lengthschemeid" :rules="[{ required: true, message: '请选择长度定制方案' }]">
  170. <a-select :disabled="form.spec != '自定义' && form.spec != 'custom'" v-model:value="form.lengthschemeid" placeholder="选择长度定制方案">
  171. <a-select-option :value="item.sa_sizecustomizedschemeid" v-for="item in schemeWhOptions" :key="item.sa_sizecustomizedschemeid">{{item.schemename}}</a-select-option>
  172. </a-select>
  173. </a-form-item>
  174. </a-col>
  175. <a-col :span="6" v-if="form.iscustomsize == 1">
  176. <a-form-item label="宽" name="widthschemeid" :rules="[{ required: true, message: '请选选择宽度定制方案' }]">
  177. <a-select :disabled="form.spec != '自定义' && form.spec != 'custom'" v-model:value="form.widthschemeid" placeholder="选择宽度定制方案">
  178. <a-select-option :value="item.sa_sizecustomizedschemeid" v-for="item in schemeWhOptions" :key="item.sa_sizecustomizedschemeid">{{item.schemename}}</a-select-option>
  179. </a-select>
  180. </a-form-item>
  181. </a-col>
  182. <a-col :span="6" v-if="form.iscustomsize == 1">
  183. <a-form-item label="选项" name="materialschemeid" :rules="[{ required: true, message: '请选选择选项定制方案' }]">
  184. <a-select :disabled="form.material != '自定义' && form.material != 'custom'" v-model:value="form.materialschemeid" placeholder="选择选项定制方案">
  185. <a-select-option :value="item.sa_sizecustomizedschemeid" v-for="item in schemeWhOptions" :key="item.sa_sizecustomizedschemeid">{{item.schemename}}</a-select-option>
  186. </a-select>
  187. </a-form-item>
  188. </a-col>
  189. <a-col :span="6" v-if="form.iscustomsize == 1">
  190. <a-form-item label="颜色" name="colorschemeid" :rules="[{ required: true, message: '请选选择颜色定制方案' }]">
  191. <a-select :disabled="form.color != '自定义' && form.color != 'custom'" v-model:value="form.colorschemeid" placeholder="选择颜色定制方案">
  192. <a-select-option :value="item.sa_sizecustomizedschemeid" v-for="item in schemeWhOptions" :key="item.sa_sizecustomizedschemeid">{{item.schemename}}</a-select-option>
  193. </a-select>
  194. </a-form-item>
  195. </a-col>
  196. <a-col :span="6" v-if="form.iscustomsize == 1">
  197. <a-form-item label="工艺" name="cheekschemeid" :rules="[{ required: true, message: '请选选择工艺定制方案' }]">
  198. <a-select :disabled="form.cheek != '自定义' && form.cheek != 'custom'" v-model:value="form.cheekschemeid" placeholder="选择工艺定制方案">
  199. <a-select-option :value="item.sa_sizecustomizedschemeid" v-for="item in schemeWhOptions" :key="item.sa_sizecustomizedschemeid">{{item.schemename}}</a-select-option>
  200. </a-select>
  201. </a-form-item>
  202. </a-col>
  203. <a-col :span="6" v-if="form.iscustomsize == 1">
  204. <a-form-item label="计价方式" name="pricingmetod">
  205. <a-select v-model:value="form.pricingmetod" placeholder="选择计价方式">
  206. <a-select-option :value="1">平方价</a-select-option>
  207. <a-select-option :value="2">单位价</a-select-option>
  208. </a-select>
  209. </a-form-item>
  210. </a-col>
  211. </a-row>
  212. <a-row>
  213. <a-col :span="24">
  214. <a-form-item label="特殊说明" name="specalnote">
  215. <a-textarea v-model:value="form.specalnote" placeholder="请输入特殊说明" />
  216. </a-form-item>
  217. </a-col>
  218. </a-row>
  219. </a-form>
  220. <template #footer>
  221. <a-space>
  222. <a-button @click="onClose">取消</a-button>
  223. <a-button type="primary" @click="onSubmit">保存</a-button>
  224. </a-space>
  225. </template>
  226. </a-modal>
  227. </template>
  228. <script setup>
  229. import { PlusOutlined } from '@ant-design/icons-vue';
  230. import {reactive, ref,onMounted,defineProps,defineEmits} from 'vue';
  231. import Api from '@/api/api'
  232. import utils from '@/utils/utils'
  233. const props = defineProps({
  234. data:Object,
  235. disabled:Boolean
  236. })
  237. const emit = defineEmits(['onSuccess'])
  238. const form = ref({
  239. packageqty:0,
  240. pricingmetod:1,
  241. });
  242. let visible = ref(false);
  243. const showDrawer = () => {
  244. financial()
  245. fieldData()
  246. delistingData()
  247. unitlist()
  248. schemeData()
  249. schemeWhData()
  250. form.value = Object.assign({},form.value,props.data)
  251. form.value.lengthschemeid = form.value.lengthschemeid == 0 ? null : form.value.lengthschemeid
  252. form.value.widthschemeid = form.value.widthschemeid == 0 ? null : form.value.widthschemeid
  253. visible.value = true;
  254. };
  255. const checkNumber = async (_rule, value) => {
  256. console.log(value)
  257. if (value === '' || value == null) {
  258. return Promise.reject('该输入项不能为空');
  259. } else if(value <=0){
  260. return Promise.reject('输的的值必须大于0');
  261. } else {
  262. return Promise.resolve();
  263. }
  264. };
  265. const onClose = () => {
  266. visible.value = false;
  267. };
  268. // 财务分类
  269. const finOptions = ref([])
  270. const financial = async () => {
  271. const res = await Api.optionstype('financialclassification')
  272. finOptions.value = res.data
  273. };
  274. // 查询领域
  275. const tradefieldOptions = ref([])
  276. const fieldData = async ()=> {
  277. const res = await Api.optionstype('tradefield')
  278. tradefieldOptions.value = res.data
  279. }
  280. // 查询标签
  281. const delistingOptions = ref([])
  282. const delistingData = async ()=> {
  283. const res = await Api.optionstype('delistingstatus')
  284. delistingOptions.value = res.data
  285. }
  286. const formRef = ref()
  287. const onSubmit = ()=>{
  288. formRef.value.validate().then(async () => {
  289. // 不选方案,方案id默认传0
  290. form.value.sa_customschemeid = form.value.sa_customschemeid ? form.value.sa_customschemeid:0
  291. const res = await Api.post({
  292. "id": 20220923141502,
  293. "content": form.value
  294. })
  295. utils.message(res,'保存成功',()=>{
  296. visible.value = false;
  297. emit('onSuccess')
  298. })
  299. }).catch(error => {
  300. console.log('error', error);
  301. });
  302. }
  303. const unitData = ref([])
  304. const unitlist = async ()=> {
  305. const res = await Api.requested({
  306. "id": "20220922084803",
  307. "content": {
  308. "pageSize":1000,
  309. "where":{
  310. "condition":""
  311. }
  312. }
  313. })
  314. unitData.value = res.data
  315. }
  316. const schemeList = ref([])
  317. const schemeData = async ()=>{
  318. const res = await Api.requested({
  319. id:20230321153903,
  320. content:{}
  321. })
  322. schemeList.value = res.data
  323. schemeList.value.push({schemename:'默认',sa_customschemeid:0})
  324. }
  325. const schemeWhOptions = ref([])
  326. const schemeWhData = async ()=>{
  327. const res = await Api.requested({
  328. "content": {
  329. "pageNumber": 1,
  330. "pageSize": 500,
  331. "where": {
  332. "condition": "",
  333. "status": '审核'
  334. }
  335. },
  336. "id": 20230707091703,
  337. })
  338. schemeWhOptions.value = res.data
  339. }
  340. onMounted (()=>{
  341. })
  342. </script>
  343. <style scoped>
  344. .title{
  345. color:#999
  346. }
  347. </style>