user-edit.vue 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. <!-- 用户编辑弹窗 -->
  2. <template>
  3. <ele-modal
  4. width="960px"
  5. :visible="visible"
  6. :append-to-body="true"
  7. :close-on-click-modal="true"
  8. custom-class="ele-dialog-form"
  9. :title="isUpdate ? '修改参数' : '添加参数'"
  10. @update:visible="updateVisible"
  11. >
  12. <header-title title="基本信息"></header-title>
  13. <el-form ref="form" :model="form" :rules="rules" label-width="120px">
  14. <el-row>
  15. <el-col :span="10">
  16. <el-form-item label="参数编码:" prop="code">
  17. <el-input
  18. clearable
  19. disabled
  20. v-model="form.code"
  21. placeholder="请输入"
  22. />
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="10">
  26. <el-form-item label="参数名称:" prop="name">
  27. <el-input v-model="form.name" clearable placeholder="请输入" />
  28. </el-form-item>
  29. </el-col>
  30. <el-col :span="10">
  31. <el-form-item label="默认值:">
  32. <!-- <el-input type="number" v-model="form.defaultValue" maxlength="8" placeholder="请输入" /> -->
  33. <el-input
  34. oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d\d\d\d\d\d\d).*$/, '$1$2.$3').replace(/^\./g, '').replace(/^0+(?!\.|$)/g, ''),value = Number(value) >= 999999.99 ? 999999.99 : value"
  35. v-model="form.defaultValue"
  36. placeholder="请输入"
  37. ></el-input>
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="10">
  41. <el-form-item label="参数单位:">
  42. <el-input placeholder="请输入" v-model="form.unitName" />
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="10">
  46. <el-form-item label="参数上限:">
  47. <!-- <el-input placeholder="请输入" v-model="form.maxValue" /> -->
  48. <el-input
  49. oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d\d\d\d\d\d\d).*$/, '$1$2.$3').replace(/^\./g, '').replace(/^0+(?!\.|$)/g, ''),value = Number(value) >= 999999.99 ? 999999.99 : value"
  50. v-model="form.maxValue"
  51. placeholder="请输入"
  52. ></el-input>
  53. </el-form-item>
  54. </el-col>
  55. <el-col :span="10">
  56. <el-form-item label="参数下限:">
  57. <!-- <el-input placeholder="请输入" v-model="form.minValue" /> -->
  58. <el-input
  59. oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d\d\d\d\d\d\d).*$/, '$1$2.$3').replace(/^\./g, '').replace(/^0+(?!\.|$)/g, ''),value = Number(value) >= 999999.99 ? 999999.99 : value"
  60. v-model="form.minValue"
  61. placeholder="请输入"
  62. ></el-input>
  63. </el-form-item>
  64. </el-col>
  65. <el-col :span="20">
  66. <el-form-item label="文字描述:">
  67. <el-input placeholder="请输入" v-model="form.description" />
  68. </el-form-item>
  69. </el-col>
  70. </el-row>
  71. </el-form>
  72. <header-title title="其他信息"></header-title>
  73. <el-form ref="form1" :model="form" :rules="rules" label-width="120px">
  74. <el-row>
  75. <el-col :span="10">
  76. <el-form-item label="参数类别:" prop="categoryType">
  77. <el-select
  78. v-model="form.categoryType"
  79. filterable
  80. placeholder="请选择"
  81. >
  82. <el-option
  83. v-for="item in statusList"
  84. :key="item.value"
  85. :label="item.label"
  86. :value="item.value"
  87. >
  88. </el-option>
  89. </el-select>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :span="10">
  93. <el-form-item label="是否必填:" prop="notNull">
  94. <el-select v-model="form.notNull" filterable placeholder="请选择">
  95. <el-option
  96. v-for="item in timeType"
  97. :key="item.value"
  98. :label="item.label"
  99. :value="item.value"
  100. >
  101. </el-option>
  102. </el-select>
  103. </el-form-item>
  104. </el-col>
  105. <el-col :span="20">
  106. <el-form-item label="备注:">
  107. <el-input placeholder="请输入" v-model="form.remark" />
  108. </el-form-item>
  109. </el-col>
  110. </el-row>
  111. </el-form>
  112. <template v-slot:footer>
  113. <el-button @click="updateVisible(false)">取消</el-button>
  114. <el-button type="primary" :loading="loading" @click="save">
  115. 保存
  116. </el-button>
  117. </template>
  118. </ele-modal>
  119. </template>
  120. <script>
  121. import parameter from '@/api/technology/parameter';
  122. export default {
  123. props: {
  124. // 弹窗是否打开
  125. visible: Boolean,
  126. // 修改回显的数据
  127. data: Object
  128. },
  129. data() {
  130. const defaultForm = {
  131. id: null,
  132. code: '',
  133. name: '',
  134. categoryType: '',
  135. defaultValue: '',
  136. description: '',
  137. maxValue: '',
  138. minValue: '',
  139. unitName: '',
  140. remark: '',
  141. notNull: 0
  142. };
  143. return {
  144. defaultForm,
  145. // 表单数据
  146. form: { ...defaultForm },
  147. timeType: [
  148. { value: 1, label: '是' },
  149. { value: 0, label: '否' }
  150. ],
  151. statusList: [
  152. { label: '工艺', value: 0 },
  153. { label: '工序', value: 1 },
  154. { label: '产品', value: 2 },
  155. { label: '原料', value: 3 },
  156. { label: '设备', value: 4 },
  157. { label: '其他', value: 5 }
  158. ],
  159. tacticsType: [
  160. { code: 1, label: '标准时间' },
  161. { code: 2, label: '最短时间' }
  162. ],
  163. // 表单验证规则
  164. rules: {
  165. name: [
  166. { required: true, message: '请输入工序名称', trigger: 'blur' }
  167. ],
  168. code: [
  169. { required: true, message: '请输入工序编码', trigger: 'blur' }
  170. ],
  171. categoryType: [
  172. { required: true, message: '请选择参数类别', trigger: 'blur' }
  173. ],
  174. notNull: [
  175. { required: true, message: '请选择是否必填', trigger: 'blur' }
  176. ]
  177. },
  178. // 提交状态
  179. loading: false,
  180. // 是否是修改
  181. isUpdate: false
  182. };
  183. },
  184. computed: {
  185. // 是否开启响应式布局
  186. styleResponsive() {
  187. return this.$store.state.theme.styleResponsive;
  188. }
  189. },
  190. methods: {
  191. /* 保存编辑 */
  192. save() {
  193. this.$refs.form.validate((valid) => {
  194. this.$refs.form1.validate((va) => {
  195. if (!valid || !va) {
  196. return false;
  197. }
  198. this.loading = true;
  199. if (!this.isUpdate) {
  200. delete this.form.id;
  201. }
  202. const saveOrUpdate = this.isUpdate
  203. ? parameter.update
  204. : parameter.save;
  205. const defaultValue = Number(this.form.defaultValue)
  206. const maxValue = Number(this.form.maxValue)
  207. const minValue = Number(this.form.minValue)
  208. if(defaultValue!=''&maxValue!=''){
  209. if(defaultValue>maxValue||defaultValue==maxValue){
  210. this.loading = false;
  211. return this.$message.warning('默认值应小于参数上限')
  212. }
  213. }
  214. if(defaultValue!=''&minValue!=''){
  215. if(defaultValue<minValue||defaultValue==minValue){
  216. this.loading = false;
  217. return this.$message.warning('默认值应大于参数下限')
  218. }
  219. }
  220. if(maxValue!=''&minValue!=''){
  221. if(maxValue<minValue||maxValue==minValue){
  222. this.loading = false;
  223. return this.$message.warning('参数上限应大于参数下限')
  224. }
  225. }
  226. saveOrUpdate(this.form)
  227. .then((msg) => {
  228. this.loading = false;
  229. this.form = {};
  230. const info = this.isUpdate?'修改成功':'新增成功'
  231. this.$message.success(info);
  232. this.updateVisible(false);
  233. this.$emit('done');
  234. })
  235. .catch((e) => {
  236. this.loading = false;
  237. // this.$message.error(e.message);
  238. });
  239. });
  240. });
  241. },
  242. /* 更新visible */
  243. updateVisible(value) {
  244. this.$emit('update:visible', value);
  245. }
  246. },
  247. watch: {
  248. async visible(visible) {
  249. if (visible) {
  250. if (this.data) {
  251. const res = await parameter.getById(this.data.id);
  252. this.$util.assignObject(this.form, {
  253. ...res
  254. });
  255. this.isUpdate = true;
  256. } else {
  257. const res = await parameter.getCode();
  258. this.form.code = res;
  259. this.isUpdate = false;
  260. }
  261. } else {
  262. this.$refs.form.clearValidate();
  263. this.$refs.form1.clearValidate();
  264. this.form = { ...this.defaultForm };
  265. }
  266. }
  267. }
  268. };
  269. </script>