edit.vue 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873
  1. <template>
  2. <div>
  3. <el-button type="primary" size="mini" :disabled="data.status !== '新建'" @click="onShow(dialogFormVisible=true)" >{{$t('编 辑')}}</el-button>
  4. <el-drawer append-to-body :title="$t(`编辑产品`)" :visible.sync="dialogFormVisible" :wrapperClosable="false" size="900px" @close="onCancel">
  5. <div class="drawer__panel" >
  6. <el-row :gutter="10">
  7. <el-form label-position="right" :label-width="tool.onlyZh('90px')" :model="form" :rules="rules" ref="form" size="small">
  8. <el-col :span="12">
  9. <el-form-item :label="$t('产品编号')" prop="itemno">
  10. <el-input :disabled="calcDisabled" v-model="form.itemno" :placeholder="$t(`输入产品编号`)" @change="itemnoChange"></el-input>
  11. </el-form-item>
  12. </el-col>
  13. <el-col :span="12">
  14. <el-form-item :label="$t(`产品名称`)" prop="itemname">
  15. <el-input :disabled="calcDisabled" v-model="form.itemname" :placeholder="$t(`输入产品名称`)"></el-input>
  16. </el-form-item>
  17. </el-col>
  18. <el-col :span="12">
  19. <el-form-item :label="$t(`erp品号`)" prop="erpitemno">
  20. <el-input :disabled="calcDisabled" v-model="form.erpitemno" :placeholder="$t(`输入erp品号`)" @change="erpitemnoChange"></el-input>
  21. </el-form-item>
  22. </el-col>
  23. <el-col :span="12">
  24. <el-form-item :label="$t(`erp品名`)" prop="erpitemname">
  25. <el-input :disabled="calcDisabled" v-model="form.erpitemname" :placeholder="$t(`请输入erp品名`)"></el-input>
  26. </el-form-item>
  27. </el-col>
  28. <el-col :span="12">
  29. <el-form-item :label="$t('型号')" prop="model">
  30. <el-input v-model="form.model" :placeholder="$t(`输入产品型号`)"></el-input>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="12">
  34. <el-form-item :label="$t('规格')" prop="spec">
  35. <el-input v-model="form.spec" :placeholder="$t(`输入产品规格`)"></el-input>
  36. </el-form-item>
  37. </el-col>
  38. <el-col :span="12">
  39. <el-form-item :label="$t(`装箱数`)" prop="packqty">
  40. <el-input type="number" v-model="form.packqty" :placeholder="$t(`输入装箱数`)"></el-input>
  41. </el-form-item>
  42. </el-col>
  43. <el-col :span="12" v-if="siteid === 'HY' || siteid === 'YOSTEST1' || siteid === 'TZ'">
  44. <el-form-item :label="$t(`商品大类`)" prop="categories">
  45. <el-select v-model="form.categories" style="width:100%">
  46. <el-option v-for="item in categoriesList" :key="item.index" :value="item.value" :label="$t(item.remarks)"></el-option>
  47. </el-select>
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="12" v-if="siteid === 'HY' || siteid === 'YOSTEST1'">
  51. <el-form-item :label="$t(`公称通径`)" prop="caliber">
  52. <el-input v-model="form.caliber" :placeholder="$t(`输入公称通径`)" :disabled="form.itemtype == '成品'"></el-input>
  53. </el-form-item>
  54. </el-col>
  55. <el-col :span="12" v-if="siteid === 'HY' || siteid === 'YOSTEST1'">
  56. <el-form-item :label="$t(`公称压力`)" prop="nominalpressure">
  57. <el-select v-model="form.nominalpressure" style="width:100%" @focus="pressureChange" multiple :disabled="form.itemtype == '成品'">
  58. <el-option v-for="item in nominalpressure" :key="item.index" :value="item.value" :label="$t(item.value)"></el-option>
  59. </el-select>
  60. </el-form-item>
  61. </el-col>
  62. <el-col :span="24">
  63. <el-form-item :label="$t(`辅助单位`)">
  64. <el-checkbox :true-label="1" :false-label="0" v-model="form.isauxunit" @change="isauxunitChange">{{$t(`是否需要辅助单位`)}}</el-checkbox>
  65. </el-form-item>
  66. </el-col>
  67. <el-col :span="12">
  68. <el-form-item :label="$t(`主单位`)" prop="unitid">
  69. <el-select style="width:100%" v-model="form.unitid" :placeholder="$t('请选择')" @change="unitChange">
  70. <el-option
  71. v-for="item in unitData"
  72. :key="item.unitid"
  73. :label="$t(item.unitname)"
  74. :value="item.unitid">
  75. </el-option>
  76. </el-select>
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="12">
  80. <el-form-item :label="$t(`辅助单位`)">
  81. <el-select style="width:100%" v-model="form.unitgroupid" :disabled="form.isauxunit === 0" :placeholder="$t('请选择')">
  82. <el-option
  83. v-for="item in unitGroupData"
  84. :key="item.unitgroupid"
  85. :label="$t(item.unitgroupname)"
  86. :value="item.unitgroupid">
  87. <p style="float: left">{{ item.unitgroupname }}</p>
  88. <p style="float:right;color: #8492a6; font-size: 13px">{{ item.conversionrate }}{{item.unitname}}/{{item.auxunitname}},{{$t(`换算率`)}}:{{'1:'+ item.conversionrate}}</p>
  89. </el-option>
  90. </el-select>
  91. </el-form-item>
  92. </el-col>
  93. <el-col :span="12">
  94. <el-form-item :label="$t(`领域`)" prop="tradefields">
  95. <el-select style="width:100%" v-model="form.tradefields" multiple :placeholder="$t('请选择')" clearable>
  96. <el-option
  97. v-for="item in tradefield"
  98. :key="item.value"
  99. :label="$t(item.value)"
  100. :value="item.value">
  101. </el-option>
  102. </el-select>
  103. </el-form-item>
  104. </el-col>
  105. <el-col :span="12">
  106. <el-form-item :label="$t(`产品标准`)">
  107. <el-select style="width:100%" v-model="form.standards" :placeholder="$t('请选择')" clearable @change="standardChange">
  108. <el-option
  109. v-for="item in standards"
  110. :key="item.value"
  111. :label="$t(item.value)"
  112. :value="item">
  113. </el-option>
  114. </el-select>
  115. </el-form-item>
  116. </el-col>
  117. <el-col :span="24">
  118. <el-form-item :label="$t(`标准明细`)">
  119. <el-select style="width:43.5%" v-model="form.standardsmx" :placeholder="$t('请选择')" clearable >
  120. <el-option
  121. v-for="item in standardsmx"
  122. :key="item.index"
  123. :label="$t(item)"
  124. :value="item">
  125. </el-option>
  126. </el-select>
  127. </el-form-item>
  128. </el-col>
  129. <el-col :span="12">
  130. <el-form-item :label="$t(`起订量`)" prop="orderminqty">
  131. <el-input :placeholder="$t(`起订量`)" v-model="form.orderminqty" class="input-with-select">
  132. <el-select style="width:100px" v-model="form.orderminqty_auxunit" slot="prepend" :placeholder="$t('请选择')">
  133. <el-option :label="$t(`主单位`)" :value="0"></el-option>
  134. <el-option :disabled="form.isauxunit === 0" :label="$t(`辅助单位`)" :value="1"></el-option>
  135. </el-select>
  136. </el-input>
  137. </el-form-item>
  138. </el-col>
  139. <el-col :span="12">
  140. <el-form-item :label="$t(`增量`)" prop="orderaddqty">
  141. <el-input :placeholder="$t(`增量`)" v-model="form.orderaddqty" class="input-with-select">
  142. <el-select style="width:100px" v-model="form.orderaddqty_auxunit" slot="prepend" :placeholder="$t('请选择')">
  143. <el-option :label="$t(`主单位`)" :value="0"></el-option>
  144. <el-option :disabled="form.isauxunit === 0" :label="$t(`辅助单位`)" :value="1"></el-option>
  145. </el-select>
  146. </el-input>
  147. </el-form-item>
  148. </el-col>
  149. <el-col :span="12">
  150. <el-form-item :label="$t('材质')" >
  151. <el-select style="width:100%" v-model="form.material" :placeholder="$t('请选择')" clearable>
  152. <el-option
  153. v-for="item in itemmaterial"
  154. :key="item.value"
  155. :label="$t(item.value)"
  156. :value="item.value">
  157. </el-option>
  158. </el-select>
  159. </el-form-item>
  160. </el-col>
  161. <el-col :span="12">
  162. <el-form-item :label="$t(`重量(kg)`)" prop="weight">
  163. <el-input v-model="form.weight" :placeholder="$t(`重量(kg)`)"></el-input>
  164. </el-form-item>
  165. </el-col>
  166. <el-col :span="12">
  167. <el-form-item :label="$t(`交期`)" prop="delivery">
  168. <el-input v-model="form.delivery" :placeholder="$t(`输入交期`)"></el-input>
  169. </el-form-item>
  170. </el-col>
  171. <el-col :span="12">
  172. <el-form-item :label="$t(`保修期限`)" prop="warrantyday">
  173. <el-input v-model="form.warrantyday" :placeholder="$t(`输入保修期限`)"></el-input>
  174. </el-form-item>
  175. </el-col>
  176. <el-col :span="12">
  177. <el-form-item :label="$t(`满库存量`)" prop="stockstatus1">
  178. <el-input v-model="form.stockstatus1" :placeholder="$t(`满库存量`)"></el-input>
  179. </el-form-item>
  180. </el-col>
  181. <el-col :span="12">
  182. <el-form-item :label="$t(`缺货提醒`)" prop="stockstatus2">
  183. <el-input v-model="form.stockstatus2" :placeholder="$t(`缺货提醒`)"></el-input>
  184. </el-form-item>
  185. </el-col>
  186. <el-col :span="12">
  187. <el-form-item :label="$t(`工具`)">
  188. <el-checkbox :true-label="1" :false-label="0" v-model="form.istool">{{$t(`是否工具`)}}</el-checkbox>
  189. </el-form-item>
  190. </el-col>
  191. <el-col :span="12">
  192. <el-form-item :label="$t(`营销物料`)">
  193. <el-checkbox :true-label="1" :false-label="0" v-model="form.iswuliao">{{$t(`是否物料`)}}</el-checkbox>
  194. </el-form-item>
  195. </el-col>
  196. <el-col :span="12">
  197. <el-form-item :label="$t('产线')">
  198. <el-select style="width:100%" v-model="form.prodline" :placeholder="$t('请选择')" clearable @focus="lineData">
  199. <el-option
  200. v-for="item in prodlines"
  201. :key="item.value"
  202. :label="$t(item.value)"
  203. :value="item.value">
  204. <span style="float: left">{{ $t(item.value) }}</span>
  205. <span
  206. style="float: right; color: #8492a6; font-size: 12px"
  207. >{{ item.remarks ? $t(item.remarks) : "暂无描述" }}</span
  208. >
  209. </el-option>
  210. </el-select>
  211. </el-form-item>
  212. </el-col>
  213. <el-col :span="12">
  214. <el-form-item :label="$t('装置')">
  215. <el-input v-model="form.device" :placeholder="$t(`输入装置`)"></el-input>
  216. </el-form-item>
  217. </el-col>
  218. <el-col :span="24">
  219. <el-form-item :label="$t('备注')">
  220. <el-input v-model="form.specalnote" type="textarea" :placeholder="$t(`输入备注`)"></el-input>
  221. </el-form-item>
  222. </el-col>
  223. <!-- <el-col :span="8">
  224. <el-form-item :label="$t(`单品管理`)">
  225. <el-checkbox :true-label="1" :false-label="0" v-model="form.skucontrol" @change="isauxunitChange">是否需要单品管理</el-checkbox>
  226. </el-form-item>
  227. </el-col>
  228. <el-col :span="8">
  229. <el-form-item :label="$t(`批次管理`)">
  230. <el-checkbox :true-label="1" :false-label="0" v-model="form.batchcontrol" @change="isauxunitChange">是否需要批次管理</el-checkbox>
  231. </el-form-item>
  232. </el-col>-->
  233. <el-col :span="12">
  234. <el-form-item :label="$t(`服务物料`)">
  235. <el-checkbox :true-label="1" :false-label="0" v-model="form.isservice">{{$t(`是否服务物料`)}}</el-checkbox>
  236. </el-form-item>
  237. </el-col>
  238. <el-col :span="12">
  239. <el-form-item :label="$t(`中线蝶阀`)">
  240. <el-checkbox :true-label="1" :false-label="0" v-model="form.isbutterfly">{{$t(`是否中线蝶阀`)}}</el-checkbox>
  241. </el-form-item>
  242. </el-col>
  243. <el-col :span="12">
  244. <el-form-item :label="$t(`压力等级`)" >
  245. <el-select :disabled="calcDisabled" style="width:100%" v-model="form.pressure" :placeholder="$t('请选择')" clearable>
  246. <el-option
  247. v-for="item in pressures"
  248. :key="item.value"
  249. :label="$t(item.value)"
  250. :value="item.value">
  251. </el-option>
  252. </el-select>
  253. </el-form-item>
  254. </el-col>
  255. <el-col :span="12">
  256. <el-form-item :label="$t(`蝶板驱动`)" >
  257. <el-select :disabled="calcDisabled" style="width:100%" v-model="form.butterflyplatedrive" :placeholder="$t('请选择')" clearable>
  258. <el-option
  259. v-for="item in butterflyplatedrive"
  260. :key="item.value"
  261. :label="$t(item.value)"
  262. :value="item.value">
  263. </el-option>
  264. </el-select>
  265. </el-form-item>
  266. </el-col>
  267. <el-col :span="12">
  268. <el-form-item :label="$t(`连接形式`)" >
  269. <el-select :disabled="calcDisabled" style="width:100%" v-model="form.connection" :placeholder="$t('请选择')" clearable>
  270. <el-option
  271. v-for="item in connectionmode"
  272. :key="item.value"
  273. :label="$t(item.value)"
  274. :value="item.value">
  275. </el-option>
  276. </el-select>
  277. </el-form-item>
  278. </el-col>
  279. <el-col :span="12">
  280. <el-form-item :label="$t(`阀板材质`)" >
  281. <el-select :disabled="calcDisabled" style="width:100%" v-model="form.valveplatematerial" :placeholder="$t('请选择')" clearable>
  282. <el-option
  283. v-for="item in valveplatematerial"
  284. :key="item.value"
  285. :label="$t(item.value)"
  286. :value="item.value">
  287. </el-option>
  288. </el-select>
  289. </el-form-item>
  290. </el-col>
  291. <el-col :span="12">
  292. <el-form-item :label="$t(`阀体材质`)" >
  293. <el-select :disabled="calcDisabled" style="width:100%" v-model="form.bodymaterial" :placeholder="$t('请选择')" clearable>
  294. <el-option
  295. v-for="item in bodymaterial"
  296. :key="item.value"
  297. :label="$t(item.value)"
  298. :value="item.value">
  299. </el-option>
  300. </el-select>
  301. </el-form-item>
  302. </el-col>
  303. <el-col :span="12">
  304. <el-form-item :label="$t(`执行器类型`)" >
  305. <el-select :disabled="calcDisabled" style="width:100%" v-model="form.actuatortype" :placeholder="$t('请选择')" clearable>
  306. <el-option
  307. v-for="item in actuatortype"
  308. :key="item.value"
  309. :label="$t(item.value)"
  310. :value="item.value">
  311. </el-option>
  312. </el-select>
  313. </el-form-item>
  314. </el-col>
  315. <el-col :span="12">
  316. <el-form-item :label="$t(`执行器品牌`)">
  317. <el-select :disabled="calcDisabled" style="width:100%" v-model="form.actuatorbrand" :placeholder="$t('请选择')" clearable>
  318. <el-option
  319. v-for="item in actuatorbrand"
  320. :key="item.value"
  321. :label="$t(item.value)"
  322. :value="item.value">
  323. </el-option>
  324. </el-select>
  325. </el-form-item>
  326. </el-col>
  327. <el-col :span="20">
  328. <el-form-item :label="$t('产品图')">
  329. <div class="flex-align-center" style="flex-wrap:wrap">
  330. <uploadFile
  331. style="margin:10px 10px 10px 0;"
  332. ref="upload"
  333. :folderid="folderid"
  334. accept=".JPG,.PNG,.jpg,.png"
  335. btntype="image"
  336. :bindData="bindData"
  337. @onSuccess="uploadSuccess">
  338. </uploadFile>
  339. <previewImage style="margin-right: 10px;margin-bottom:10px" v-for="image in form.attinfos" :key="image.index" :image="image" :deletebtn="true"
  340. @onSuccess="clearCover"></previewImage>
  341. </div>
  342. <small style="display:block;margin-top:20px" class="info">{{$t(`注:建议上传图片大小`)}}1024x1024px,{{$t('大小不超过')}}2M,{{$t('格式为')}}JPG/PNG</small>
  343. </el-form-item>
  344. </el-col>
  345. </el-form>
  346. </el-row>
  347. </div>
  348. <div class="fixed__btn__panel">
  349. <el-button size="small" @click="onCancel" class="normal-btn-width">{{$t('取 消')}}</el-button>
  350. <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">{{$t('确 定')}}</el-button>
  351. </div>
  352. </el-drawer>
  353. </div>
  354. </template>
  355. <script>
  356. import uploadFile from '@/components/upload/preview_upload.vue'
  357. import previewImage from '@/components/previewImage/index.vue'
  358. export default {
  359. props:['data'],
  360. components:{uploadFile,previewImage},
  361. data () {
  362. return {
  363. dialogFormVisible:false,
  364. folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
  365. form:{
  366. "attinfos":[],
  367. "itemid":0,
  368. "isauxunit":0,
  369. "unitid":'',
  370. "unitgroupid":'',
  371. "itemno":'',
  372. "itemname":'',
  373. "model": "",
  374. "spec": "",
  375. "orderminqty": '', //订单起订量
  376. "orderaddqty": '', //订单增量
  377. "orderminqty_auxunit": 0, //订单起订量控制单位(0:主单位;1:辅助单位)
  378. "orderaddqty_auxunit": 0, //订单增量控制单位(0:主单位;1:辅助单位
  379. "remarks": "", //可选
  380. "barcode": "", //可选
  381. "skucontrol": 0, //可选
  382. "batchcontrol": 1, //可选
  383. "grossweight": '', //可选
  384. "weight": '', //可选
  385. "height": '', //可选
  386. "width": '', //可选
  387. "length": '', //可选
  388. "caliber": "", //可选,口径
  389. "pressure": "", //可选,压力
  390. "material": "", //可选,材质
  391. "standards": "", //可选,产品标准
  392. "tradefields": [], //可选,领域
  393. "stockstatus2": '', //可选,库存缺货标准
  394. "stockstatus1": '', //可选,库存充足标准
  395. "warrantyday": '', //可选,保修期(年)
  396. "iswuliao": 0, //可选,是否营销物料
  397. "isservice": 0, //可选,是否服务物料
  398. "butterflyplatedrive": "",
  399. "connection": "",
  400. "valveplatematerial": "",
  401. "bodymaterial": "",
  402. "actuatortype": "",
  403. "actuatorbrand": "",
  404. "isbutterfly": 0,
  405. "erpitemno": "",
  406. "erpitemname": "",
  407. "specalnote": "",
  408. "prodline": "",
  409. "device": "",
  410. "tags":"",
  411. "categories":"",
  412. "standardsmx":""
  413. },
  414. rules:{
  415. itemno: [
  416. { required: true, message: this.$t('请输入输入产品编号'), trigger: 'blur' },
  417. ],
  418. itemname: [
  419. { required: true, message: this.$t('请输入输入产品名称'), trigger: 'blur' },
  420. ],
  421. model: [
  422. { required: true, message: this.$t('输入产品型号'), trigger: 'blur' },
  423. ],
  424. isauxunit: [
  425. { type: 'number', required: true, message: this.$t('辅助单位管理不可为空'), trigger: 'change' },
  426. ],
  427. batchcontrol: [
  428. { required: true,message:this.$t('批次管理不可为空'), trigger:'change'}
  429. ],
  430. skucontrol: [
  431. { required: true,message:this.$t('单品管理不可为空'), trigger:'change'}
  432. ],
  433. unitid: [
  434. { required: true,message:this.$t('请输入主单位'), trigger:'change'}
  435. ],
  436. tradefields: [
  437. { required: true,message:this.$t('请选择领域'), trigger:'change'}
  438. ],
  439. categories: [
  440. { required: true,message:this.$t('请选择商品大类'), trigger:'change'}
  441. ],
  442. weight:[
  443. // { required: false,message:this.$t('不可输入空格'), trigger:'blur'}
  444. {
  445. validator: (rule, value, callback) => {
  446. if (value == null || value === '') {
  447. return callback(); // 允许为空
  448. }
  449. // 去掉前后空格后判断是否为空(可选)
  450. // if (value.trim() === '') return callback(new Error(self.$t('不可全为空格')));
  451. // 检查是否包含任何空格字符(包括全角空格)
  452. const hasSpace = /[\s\u3000]/.test(value);
  453. if (hasSpace) {
  454. callback(new Error(this.$t('不可输入空格')));
  455. } else {
  456. callback();
  457. }
  458. },
  459. trigger: 'change'
  460. }
  461. ],
  462. delivery:[
  463. // { required: false,message:this.$t('不可输入空格'), trigger:'blur'}
  464. {
  465. validator: (rule, value, callback) => {
  466. if (value == null || value === '') {
  467. return callback(); // 允许为空
  468. }
  469. // 去掉前后空格后判断是否为空(可选)
  470. // if (value.trim() === '') return callback(new Error(self.$t('不可全为空格')));
  471. // 检查是否包含任何空格字符(包括全角空格)
  472. const hasSpace = /[\s\u3000]/.test(value);
  473. if (hasSpace) {
  474. callback(new Error(this.$t('不可输入空格')));
  475. } else {
  476. callback();
  477. }
  478. },
  479. trigger: 'change'
  480. }
  481. ],
  482. warrantyday:[
  483. // { required: false,message:this.$t('不可输入空格'), trigger:'blur'}
  484. {
  485. validator: (rule, value, callback) => {
  486. if (value == null || value === '') {
  487. return callback(); // 允许为空
  488. }
  489. // 去掉前后空格后判断是否为空(可选)
  490. // if (value.trim() === '') return callback(new Error(self.$t('不可全为空格')));
  491. // 检查是否包含任何空格字符(包括全角空格)
  492. const hasSpace = /[\s\u3000]/.test(value);
  493. if (hasSpace) {
  494. callback(new Error(this.$t('不可输入空格')));
  495. } else {
  496. callback();
  497. }
  498. },
  499. trigger: 'change'
  500. }
  501. ],
  502. stockstatus1:[
  503. // { required: false,message:this.$t('不可输入空格'), trigger:'blur'}
  504. {
  505. validator: (rule, value, callback) => {
  506. if (value == null || value === '') {
  507. return callback(); // 允许为空
  508. }
  509. // 去掉前后空格后判断是否为空(可选)
  510. // if (value.trim() === '') return callback(new Error(self.$t('不可全为空格')));
  511. // 检查是否包含任何空格字符(包括全角空格)
  512. const hasSpace = /[\s\u3000]/.test(value);
  513. if (hasSpace) {
  514. callback(new Error(this.$t('不可输入空格')));
  515. } else {
  516. callback();
  517. }
  518. },
  519. trigger: 'change'
  520. }
  521. ],
  522. stockstatus2:[
  523. // { required: false,message:this.$t('不可输入空格'), trigger:'blur'}
  524. {
  525. validator: (rule, value, callback) => {
  526. if (value == null || value === '') {
  527. return callback(); // 允许为空
  528. }
  529. // 去掉前后空格后判断是否为空(可选)
  530. // if (value.trim() === '') return callback(new Error(self.$t('不可全为空格')));
  531. // 检查是否包含任何空格字符(包括全角空格)
  532. const hasSpace = /[\s\u3000]/.test(value);
  533. if (hasSpace) {
  534. callback(new Error(this.$t('不可输入空格')));
  535. } else {
  536. callback();
  537. }
  538. },
  539. trigger: 'change'
  540. }
  541. ]
  542. },
  543. unitGroupData:[],
  544. unitData:[],
  545. bindData:{},
  546. tradefield:[],// 领域
  547. standards:[],// 产品标准
  548. pressures:[],// 压力等级
  549. itemmaterial:[], // 材质
  550. butterflyplatedrive:[],// 蝶板驱动
  551. valveplatematerial:[],// 阀板材质
  552. bodymaterial:[],// 阀体材质
  553. actuatortype:[], // 执行器类型
  554. actuatorbrand:[],// 执行器品牌
  555. connectionmode:[],// 连接形式
  556. tagList:[],
  557. siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid,
  558. categoriesList:[],
  559. prodlines:[],
  560. standardsmx:[],
  561. nominalpressure:[]
  562. }
  563. },
  564. computed: {
  565. calcDisabled () {
  566. return !!this.data.itemtype
  567. }
  568. },
  569. methods:{
  570. onShow () {
  571. this.queryMain()
  572. this.unitlist()
  573. this.unitGrouplist()
  574. this.fieldData()
  575. this.standardData()
  576. this.pressureData()
  577. this.itemmaterialData()
  578. this.butterflyplatedriveData()
  579. this.valveplatematerialData()
  580. this.bodymaterialData()
  581. this.actuatortypeData()
  582. this.actuatorbrandData()
  583. this.connectionmodeData()
  584. this.getCategoriesList()
  585. },
  586. async queryMain(fn) {
  587. const res = await this.$api.requested({
  588. "id": 20220923155302,
  589. "content": {
  590. "itemid": this.data.itemid
  591. },
  592. })
  593. this.form = Object.assign({},this.form,res.data)
  594. this.form.categories = this.form.categories?this.form.categories:this.categoriesList.length > 0?this.categoriesList[0].remarks:''
  595. this.form.tradefields = this.form.tradefield.map(e=>{
  596. return e.tradefield
  597. })
  598. fn?fn():''
  599. },
  600. // 查询领域
  601. async fieldData () {
  602. const res = await this.$store.dispatch('optiontypeselect','tradefield')
  603. this.tradefield = res.data
  604. },
  605. // 查询产品标准
  606. async standardData () {
  607. const res = await this.$store.dispatch('optiontypeselect','itemstandards')
  608. this.standards = res.data
  609. },
  610. standardChange(val){
  611. this.form.standards = val.value
  612. this.form.standardsmx = ''
  613. this.standardsmx = val.subvalues
  614. },
  615. // 查询压力等级
  616. async pressureData () {
  617. const res = await this.$store.dispatch('optiontypeselect','pressurelevel')
  618. this.pressures = res.data
  619. },
  620. // 查询材质
  621. async itemmaterialData () {
  622. const res = await this.$store.dispatch('optiontypeselect','itemmaterial')
  623. this.itemmaterial = res.data
  624. },
  625. // 查询蝶板驱动
  626. async butterflyplatedriveData () {
  627. const res = await this.$store.dispatch('optiontypeselect','butterflyplatedrive')
  628. this.butterflyplatedrive = res.data
  629. },
  630. // 阀板材质
  631. async valveplatematerialData () {
  632. const res = await this.$store.dispatch('optiontypeselect','valveplatematerial')
  633. this.valveplatematerial = res.data
  634. },
  635. // 阀体材质
  636. async bodymaterialData () {
  637. const res = await this.$store.dispatch('optiontypeselect','bodymaterial')
  638. this.bodymaterial = res.data
  639. },
  640. // 执行器类型
  641. async actuatortypeData () {
  642. const res = await this.$store.dispatch('optiontypeselect','actuatortype')
  643. this.actuatortype = res.data
  644. },
  645. // 执行器品牌
  646. async actuatorbrandData () {
  647. const res = await this.$store.dispatch('optiontypeselect','actuatorbrand')
  648. this.actuatorbrand = res.data
  649. },
  650. // 连接形式
  651. async connectionmodeData () {
  652. const res = await this.$store.dispatch('optiontypeselect','connectionmode')
  653. this.connectionmode = res.data
  654. },
  655. async unitlist () {
  656. const res = await this.$api.requested({
  657. "id": "20220922084803",
  658. "version":1,
  659. "nocache": true,
  660. "content": {
  661. "pageSize":1000,
  662. "where":{
  663. "condition":""
  664. }
  665. }
  666. })
  667. this.unitData = res.data
  668. },
  669. async unitGrouplist () {
  670. const res = await this.$api.requested({
  671. "id": "20220922084503",
  672. "version":1,
  673. "nocache": true,
  674. "content": {
  675. "pageSize":1000,
  676. "where":{
  677. "condition":"",
  678. "unitid":this.form.unitid
  679. }
  680. }
  681. })
  682. this.unitGroupData = res.data
  683. },
  684. /*公称压力*/
  685. async pressureChange(){
  686. if (this.nominalpressure.length < 1){
  687. let res = await this.$store.dispatch('optiontypeselect','nominalpressure')
  688. this.nominalpressure = res.data
  689. }
  690. },
  691. onSubmit () {
  692. this.$refs['form'].validate(async (valid) => {
  693. if (!valid) return false
  694. this.form.nominalpressure = this.form.nominalpressure?typeof (this.form.nominalpressure) == 'object'?this.form.nominalpressure:[this.form.nominalpressure]:''
  695. const res = await this.$api.requested({
  696. "id": 20220923141502,
  697. "content": this.form
  698. })
  699. this.tool.showMessage(res,()=>{
  700. this.bindData = {
  701. ownertable:'plm_item',
  702. ownerid:res.data.itemid,
  703. usetype:'default'
  704. }
  705. this.setTag(this.$route.query.id)
  706. this.$refs['form'].resetFields();
  707. this.$refs['upload'].toUpload()
  708. this.$emit('onSuccess')
  709. this.refresh()
  710. this.dialogFormVisible = false
  711. })
  712. })
  713. },
  714. async setTag(id,rowindex){
  715. const res = await this.$api.requested({
  716. "id": 20220929090901,
  717. "content": {
  718. "ownertable":"plm_item",
  719. "ownerid":id,
  720. "datatag":[this.form.tags]
  721. }
  722. })
  723. console.log(res.data,'标签设置结果')
  724. this.$refs['form'].resetFields();
  725. this.$refs['upload'].toUpload()
  726. this.$emit('onSuccess')
  727. this.refresh()
  728. },
  729. onCancel(){
  730. this.dialogFormVisible = false
  731. this.$refs['form'].resetFields();
  732. this.form={
  733. "attinfos":[],
  734. "itemid":0,
  735. "isauxunit":0,
  736. "unitid":'',
  737. "unitgroupid":'',
  738. "itemno":'',
  739. "itemname":'',
  740. "model": "",
  741. "spec": "",
  742. "orderminqty": '', //订单起订量
  743. "orderaddqty": '', //订单增量
  744. "orderminqty_auxunit": 0, //订单起订量控制单位(0:主单位;1:辅助单位)
  745. "orderaddqty_auxunit": 0, //订单增量控制单位(0:主单位;1:辅助单位
  746. "remarks": "", //可选
  747. "barcode": "", //可选
  748. "skucontrol": 0, //可选
  749. "batchcontrol": 1, //可选
  750. "grossweight": '', //可选
  751. "weight": '', //可选
  752. "height": '', //可选
  753. "width": '', //可选
  754. "length": '' //可选
  755. }
  756. },
  757. unitChange () {
  758. this.unitGrouplist()
  759. },
  760. isauxunitChange (val) {
  761. if (val === 0) {
  762. this.form.orderminqty_auxunit = this.form.orderaddqty_auxunit = 0
  763. this.form.unitgroupid = ''
  764. }
  765. },
  766. uploadSuccess(res){
  767. this.$emit('onSuccess')
  768. },
  769. refresh () {
  770. this.form = {
  771. "attinfos":[],
  772. "itemid":0,
  773. "isauxunit":0,
  774. "unitid":'',
  775. "unitgroupid":'',
  776. "itemno":'',
  777. "itemname":'',
  778. "model": "",
  779. "spec": "",
  780. "orderminqty": '', //订单起订量
  781. "orderaddqty": '', //订单增量
  782. "orderminqty_auxunit": 0, //订单起订量控制单位(0:主单位;1:辅助单位)
  783. "orderaddqty_auxunit": 0, //订单增量控制单位(0:主单位;1:辅助单位
  784. "remarks": "", //可选
  785. "barcode": "", //可选
  786. "skucontrol": 0, //可选
  787. "batchcontrol": 1, //可选
  788. "grossweight": '', //可选
  789. "weight": '', //可选
  790. "height": '', //可选
  791. "width": '', //可选
  792. "length": '', //可选
  793. "caliber": "", //可选,口径
  794. "pressure": "", //可选,压力
  795. "material": "", //可选,材质
  796. "standards": "", //可选,产品标准
  797. "tradefields": [], //可选,领域
  798. "stockstatus2": 0, //可选,库存缺货标准
  799. "stockstatus1": 100, //可选,库存充足标准
  800. "warrantyday": 1, //可选,保修期(年)
  801. "iswuliao": 0, //可选,是否营销物料
  802. "isservice": 0, //可选,是否服务物料
  803. "butterflyplatedrive": "",
  804. "connection": "",
  805. "valveplatematerial": "",
  806. "bodymaterial": "",
  807. "actuatortype": "",
  808. "actuatorbrand": "",
  809. "isbutterfly": 0,
  810. "erpitemno": "",
  811. "erpitemname": "",
  812. "specalnote": "",
  813. "prodline": "",
  814. "device": "",
  815. "categories":""
  816. }
  817. },
  818. clearCover () {
  819. this.queryMain()
  820. },
  821. itemnoChange(){
  822. this.form.itemno=this.form.itemno.replace(/^\s+|\s+$/g,'')
  823. },
  824. erpitemnoChange(){
  825. this.form.erpitemno = this.form.erpitemno.replace(/^\s+|\s+$/g,'')
  826. },
  827. /*获取可选商品大类*/
  828. async getCategoriesList () {
  829. let res = await this.$store.dispatch('optiontypeselect','categories')
  830. this.categoriesList= res.data
  831. },
  832. /*获取产线数据*/
  833. async lineData(){
  834. if (this.prodlines){
  835. let res = await this.$store.dispatch('optiontypeselect','productline')
  836. this.prodlines= res.data
  837. }
  838. }
  839. },
  840. mounted () {
  841. }
  842. }
  843. </script>
  844. <style>
  845. </style>