RowForm.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. <template>
  2. <el-form
  3. :model="itemForm"
  4. :rules="customRule"
  5. ref="formCustom"
  6. class="row-form"
  7. >
  8. <el-row>
  9. <el-col
  10. :span="8"
  11. v-if="defaultNum == 'w06' || defaultNum == 'w07' || defaultNum == 'w04'"
  12. >
  13. <el-form-item
  14. label="牌号"
  15. label-width="60px"
  16. :prop="defaultNum == 'w06' ? 'brandNum' : ''"
  17. >
  18. <el-input v-model="itemForm.brandNum" placeholder="请输入"></el-input>
  19. </el-form-item>
  20. </el-col>
  21. <el-col
  22. :span="8"
  23. v-if="
  24. defaultNum == 'w08' ||
  25. defaultNum == 'w01' ||
  26. defaultNum == 'w02' ||
  27. defaultNum == 'w03' ||
  28. defaultNum == 'w05'
  29. "
  30. >
  31. <el-form-item label="规格" prop="specification" label-width="60px">
  32. <el-input
  33. v-model="itemForm.specification"
  34. placeholder="请输入"
  35. ></el-input>
  36. </el-form-item>
  37. </el-col>
  38. <el-col :span="8" v-if="defaultNum != 'w06'">
  39. <el-form-item label="型号" prop="modelType" label-width="60px">
  40. <el-input
  41. v-model="itemForm.modelType"
  42. placeholder="请输入"
  43. ></el-input>
  44. </el-form-item>
  45. </el-col>
  46. <el-col :span="8" v-if="defaultNum == 'w03'">
  47. <el-form-item label="材质" prop="texture" label-width="60px">
  48. <el-input
  49. :disabled="itemForm.isCitation"
  50. v-model="itemForm.info.texture"
  51. placeholder="请输入"
  52. ></el-input>
  53. </el-form-item>
  54. </el-col>
  55. <el-col :span="8" v-if="defaultNum == 'w01'">
  56. <el-form-item label="标准产能" label-width="85px">
  57. <div class="row-col">
  58. <el-input
  59. type="number"
  60. v-model="itemForm.info.standardCapacity"
  61. placeholder="请输入"
  62. ></el-input>
  63. <span>/小时</span>
  64. </div>
  65. </el-form-item>
  66. </el-col>
  67. <el-col :span="8" v-if="defaultNum == 'w07'">
  68. <el-form-item label="标准单重" label-width="85px">
  69. <el-input-number
  70. style="width: 80%"
  71. type="number"
  72. v-model="itemForm.info.pieceWeight"
  73. :min="0"
  74. placeholder="请输入"
  75. ></el-input-number>
  76. <span class="spanbox">KG</span>
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="8" v-if="defaultNum == 'w07'">
  80. <el-form-item label="不良品率" label-width="85px">
  81. <el-input-number
  82. style="width: 85%"
  83. type="number"
  84. v-model="itemForm.info.unqualifiedRate"
  85. :min="0"
  86. :max="100"
  87. placeholder="请输入"
  88. ></el-input-number>
  89. <span class="spanbox">%</span>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :span="8" v-if="defaultNum == 'w02'">
  93. <el-form-item label="角度" label-width="60px">
  94. <el-select v-model="itemForm.info.angle" placeholder="请选择">
  95. <el-option
  96. v-for="item in angleList"
  97. :key="item.id"
  98. :label="item.value"
  99. :value="item.name"
  100. >
  101. </el-option>
  102. </el-select>
  103. </el-form-item>
  104. </el-col>
  105. <el-col :span="8" v-if="defaultNum == 'w02' || defaultNum == 'w03'">
  106. <el-form-item label="长" label-width="60px">
  107. <div>
  108. <el-input-number
  109. style="width: 80%; margin-right: 10px"
  110. type="number"
  111. v-model="itemForm.info.length"
  112. :min="0"
  113. placeholder="请输入"
  114. ></el-input-number>
  115. <span>mm</span>
  116. </div>
  117. </el-form-item>
  118. </el-col>
  119. <el-col :span="8" v-if="defaultNum == 'w02' || defaultNum == 'w03'">
  120. <el-form-item label="宽" label-width="60px">
  121. <div>
  122. <el-input-number
  123. style="width: 80%; margin-right: 10px"
  124. type="number"
  125. v-model="itemForm.info.width"
  126. :min="0"
  127. placeholder="请输入"
  128. ></el-input-number>
  129. <span>mm</span>
  130. </div>
  131. </el-form-item>
  132. </el-col>
  133. <el-col :span="8" v-if="defaultNum == 'w02' || defaultNum == 'w03'">
  134. <el-form-item label="高" label-width="60px">
  135. <div>
  136. <el-input-number
  137. style="width: 80%; margin-right: 10px"
  138. type="number"
  139. v-model="itemForm.info.high"
  140. :min="0"
  141. placeholder="请输入"
  142. ></el-input-number>
  143. <span>mm</span>
  144. </div>
  145. </el-form-item>
  146. </el-col>
  147. <el-col :span="8" v-if="defaultNum == 'w04'">
  148. <el-form-item label="大模体型号" label-width="95px">
  149. <el-input
  150. v-model="itemForm.info.dieBodyModel"
  151. placeholder="请输入"
  152. ></el-input>
  153. </el-form-item>
  154. </el-col>
  155. <el-col :span="8" v-if="defaultNum == 'w04'">
  156. <el-form-item label="收缩系数" label-width="85px">
  157. <el-input
  158. v-model="itemForm.info.shrinkageCoefficient"
  159. placeholder="请输入"
  160. ></el-input>
  161. </el-form-item>
  162. </el-col>
  163. <el-col :span="8" v-if="defaultNum == 'w04'">
  164. <el-form-item label="芯杆数量" label-width="85px">
  165. <el-input
  166. v-model="itemForm.info.mandrelNum"
  167. oninput="value=value.replace(/[^0-9.]/g,'')"
  168. type="number"
  169. placeholder="请输入"
  170. ></el-input>
  171. </el-form-item>
  172. </el-col>
  173. <el-col :span="8" v-if="defaultNum == 'w04'">
  174. <el-form-item label="模孔数量" label-width="85px">
  175. <el-input
  176. v-model="itemForm.info.dieHoleNum"
  177. type="number"
  178. oninput="value=value.replace(/[^0-9.]/g,'')"
  179. placeholder="请输入"
  180. ></el-input>
  181. </el-form-item>
  182. </el-col>
  183. <el-col :span="8" v-if="defaultNum == 'w04'">
  184. <el-form-item label="上冲头数量" label-width="95px">
  185. <el-input
  186. v-model="itemForm.info.upperPunchNum"
  187. type="number"
  188. oninput="value=value.replace(/[^0-9.]/g,'')"
  189. placeholder="请输入"
  190. ></el-input>
  191. </el-form-item>
  192. </el-col>
  193. <el-col :span="8" v-if="defaultNum == 'w04'">
  194. <el-form-item label="下冲头数量" label-width="95px">
  195. <el-input
  196. v-model="itemForm.info.lowerPunchNum"
  197. type="number"
  198. oninput="value=value.replace(/[^0-9.]/g,'')"
  199. placeholder="请输入"
  200. ></el-input>
  201. </el-form-item>
  202. </el-col>
  203. <el-col :span="8" v-if="defaultNum == 'w04'">
  204. <el-form-item label="最大冲压次数" label-width="105px">
  205. <el-input
  206. v-model="itemForm.info.maximumStampingTimes"
  207. type="number"
  208. oninput="value=value.replace(/[^0-9.]/g,'')"
  209. placeholder="请输入"
  210. ></el-input>
  211. </el-form-item>
  212. </el-col>
  213. <el-col :span="8" v-for="(item, index) in itemForm.addList" :key="index">
  214. <el-form-item
  215. :prop="'addList.' + index + '.key'"
  216. :rules="{
  217. required: true,
  218. message: '自定义参数名称不能为空',
  219. trigger: 'blur'
  220. }"
  221. >
  222. <div class="add-col">
  223. <el-input
  224. class="col-input"
  225. v-model="item.key"
  226. placeholder="参数名称"
  227. ></el-input>
  228. <el-input
  229. class="col-input"
  230. v-model="item.value"
  231. placeholder="参数值"
  232. ></el-input>
  233. <el-button type="text" @click="delt(item, index)"> 删除 </el-button>
  234. </div>
  235. </el-form-item>
  236. </el-col>
  237. <el-col :span="8" v-if="itemForm.addList.length < 10">
  238. <el-form-item label-width="20px">
  239. <el-button type="primary" @click="addItem">增加自定义参数</el-button>
  240. </el-form-item>
  241. </el-col>
  242. </el-row>
  243. </el-form>
  244. </template>
  245. <script>
  246. export default {
  247. props: {
  248. itemForm: {
  249. type: Object,
  250. default: {}
  251. },
  252. defaultNum: {
  253. type: String,
  254. default: 'w01'
  255. }
  256. },
  257. components: {},
  258. data() {
  259. return {
  260. // customForm:{
  261. // addList:[]
  262. // },
  263. customRule: {
  264. brandNum: [{ required: true, message: '请输入牌号', trigger: 'blur' }]
  265. },
  266. angleList: [
  267. { id: 0, value: '非A', name: 'notA' },
  268. { id: 1, value: 'A', name: 'A' }
  269. ]
  270. };
  271. },
  272. watch: {
  273. itemForm(val) {
  274. if (val) {
  275. }
  276. }
  277. },
  278. created() {},
  279. methods: {
  280. // 在 Input 值改变时触发
  281. handleEdit(e) {
  282. let value = e.replace(/^(0+)|[^\d]+/g, ''); // 以0开头或者输入非数字,会被替换成空
  283. },
  284. // 添加自定义参数
  285. addItem() {
  286. if (this.itemForm.addList.length < 10) {
  287. let item = { key: '', value: '' };
  288. this.itemForm.addList.push(item);
  289. } else {
  290. this.$message.warning('自定义参数最多添加10条');
  291. }
  292. },
  293. // 删除自定义参数
  294. delt(item, index) {
  295. this.itemForm.addList.splice(index, 1);
  296. },
  297. //子组件接收callback为父组件传过来的next()方法
  298. validateForm(callback) {
  299. // let flag = true;
  300. //开始表单校验
  301. this.$refs.formCustom.validate((valid) => {
  302. callback(valid);
  303. // if (valid) {
  304. // flag = true
  305. // } else {
  306. // return false;
  307. // }
  308. });
  309. // 如果flag为true,则执行callback()
  310. // if (flag) {
  311. // callback();
  312. // }
  313. }
  314. }
  315. };
  316. </script>
  317. <style lang="scss" scoped>
  318. :deep(.row-form) {
  319. width: 100%;
  320. display: flex;
  321. align-items: center;
  322. justify-content: flex-start;
  323. flex-wrap: wrap;
  324. border-bottom: 1px dashed #ccc;
  325. .el-row {
  326. width: 100%;
  327. }
  328. .el-form-item {
  329. margin-bottom: 15px;
  330. }
  331. .row-col {
  332. display: flex;
  333. align-items: center;
  334. justify-content: flex-start;
  335. .el-input--medium {
  336. width: 75%;
  337. margin-right: 10px;
  338. }
  339. }
  340. .spanbox {
  341. display: inline-block;
  342. margin-left: 10px;
  343. }
  344. .add-col {
  345. display: flex;
  346. align-items: center;
  347. margin-left: 20px;
  348. .col-input {
  349. margin-right: 5px;
  350. }
  351. }
  352. }
  353. </style>