edit.vue 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. <!-- 用户编辑弹窗 -->
  2. <template>
  3. <el-dialog
  4. class="ele-dialog-form"
  5. :title="title"
  6. :visible.sync="visible"
  7. :before-close="handleClose"
  8. :close-on-click-modal="false"
  9. :close-on-press-escape="false"
  10. width="1000px"
  11. >
  12. <el-form ref="form" :model="form" :rules="rules" label-width="100px">
  13. <el-row>
  14. <el-col :span="12">
  15. <el-form-item label="标准类型:" prop="type">
  16. <DictSelection
  17. dictName="质检标准类型"
  18. v-model="form.type"
  19. ></DictSelection>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="12">
  23. <el-form-item label="标准名称:" prop="name">
  24. <el-input clearable v-model="form.name" placeholder="请输入" />
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="12">
  28. <el-form-item label="标准代码:" prop="standardCode">
  29. <el-input v-model="form.standardCode"></el-input>
  30. </el-form-item>
  31. </el-col>
  32. <el-col :span="12">
  33. <el-form-item label="版本号:" prop="version">
  34. <el-input v-model="form.version"></el-input>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="12">
  38. <el-form-item label="状态:" prop="status">
  39. <el-select
  40. v-model="form.status"
  41. placeholder="请选择"
  42. style="width: 100%"
  43. >
  44. <el-option label="停用" :value="0" />
  45. <el-option label="启用" :value="1" />
  46. </el-select>
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="8">
  50. <el-form-item prop="imgUrl" label="附件">
  51. <fileUpload
  52. v-model="form.imgUrl"
  53. module="main"
  54. :showLib="false"
  55. :limit="1"
  56. />
  57. </el-form-item>
  58. </el-col>
  59. </el-row>
  60. <el-row>
  61. <el-col :span="24">
  62. <!-- <el-button
  63. style="margin-left: 100px"
  64. type="primary"
  65. @click="addParameter"
  66. >选择工艺参数标准</el-button
  67. > -->
  68. <el-table
  69. style="margin-top: 15px"
  70. :data="form.parameterStandards"
  71. border
  72. height="40vh"
  73. >
  74. <el-table-column :label="form.singleWeightDivision" align="center">
  75. <el-table-column label="参数上限" align="center" v-if='form.parameterType==3'>
  76. <template slot-scope="scope">
  77. <el-form-item label-width="0" prop="finalValue">
  78. <el-input
  79. clearable
  80. v-model="scope.row.finalValue"
  81. placeholder="请输入"
  82. />
  83. </el-form-item>
  84. </template>
  85. </el-table-column>
  86. <el-table-column label="参数下限" align="center" v-if='form.parameterType==3'>
  87. <template slot-scope="scope">
  88. <el-form-item label-width="0" prop="initialValue">
  89. <el-input
  90. clearable
  91. v-model="scope.row.initialValue"
  92. placeholder="请输入"
  93. />
  94. </el-form-item>
  95. </template>
  96. </el-table-column>
  97. <el-table-column label="默认值" align="center" v-if='form.parameterType!=3'>
  98. <template slot-scope="scope">
  99. <el-form-item label-width="0" prop="defaultValue">
  100. <el-input
  101. clearable
  102. v-model="scope.row.defaultValue"
  103. placeholder="请输入"
  104. />
  105. </el-form-item>
  106. </template>
  107. </el-table-column>
  108. </el-table-column>
  109. <el-table-column :label="form.tolerance" align="center">
  110. <el-table-column label="质检标准" align="center">
  111. <template slot-scope="scope">
  112. <el-form-item label-width="0" prop="inspectionStandard">
  113. <el-input
  114. clearable
  115. v-model="scope.row.toleranceValue"
  116. placeholder="请输入"
  117. />
  118. </el-form-item>
  119. </template>
  120. </el-table-column>
  121. <el-table-column label="操作" align="center" width="80">
  122. <template slot-scope="scope">
  123. <el-link
  124. type="danger"
  125. :underline="false"
  126. @click="handleDeleteItem(scope.$index, scope.row.id)"
  127. >
  128. 删除
  129. </el-link>
  130. </template>
  131. </el-table-column>
  132. </el-table-column>
  133. </el-table>
  134. <div class="add-product" @click="add">
  135. <i class="el-icon-circle-plus-outline"></i>
  136. </div>
  137. </el-col>
  138. <!-- <inspectionProjectList v-if="visible" :list="form.inspectionItems" ref="inspectionProjectRef" /> -->
  139. </el-row>
  140. </el-form>
  141. <template v-slot:footer>
  142. <el-button @click="handleClose">取消</el-button>
  143. <el-button type="primary" :loading="loading" @click="save">
  144. 保存
  145. </el-button>
  146. </template>
  147. <standardDialog ref="standardDialogRef" @choose="choose" />
  148. </el-dialog>
  149. </template>
  150. <script>
  151. import { save, update, getById } from '@/api/inspectionStandard';
  152. import fileUpload from '@/components/upload/fileUpload';
  153. import standardDialog from './standardDialog';
  154. // import EquipmentDialog from '../../../views/inspectionPoint/components/EquipmentDialog';
  155. export default {
  156. components: {
  157. fileUpload,
  158. standardDialog
  159. },
  160. data() {
  161. const defaultForm = function () {
  162. return {
  163. id: '',
  164. name: '',
  165. status: '',
  166. type: '',
  167. version: '1.0',
  168. standardCode: '',
  169. inspectionId: '',
  170. singleWeightDivision: '',
  171. tolerance: '',
  172. parameterStandards: [],
  173. parameterType:''
  174. };
  175. };
  176. return {
  177. defaultForm,
  178. // 表单数据
  179. form: { ...defaultForm() },
  180. // 表单验证规则
  181. rules: {
  182. name: [{ required: true, message: '请输入', trigger: 'blur' }],
  183. version: [{ required: true, message: '请输入', trigger: 'blur' }],
  184. type: {
  185. required: true,
  186. message: '请选择',
  187. trigger: 'change'
  188. },
  189. status: {
  190. required: true,
  191. message: '请选择',
  192. trigger: 'change'
  193. }
  194. },
  195. visible: false,
  196. type: null,
  197. title: null,
  198. loading: false
  199. };
  200. },
  201. created() {},
  202. methods: {
  203. open(type, row) {
  204. this.title = type == 'add' ? '新增' : '编辑';
  205. this.type = type;
  206. if (this.type == 'edit') {
  207. if (!row.parameterStandards) {
  208. row.parameterStandards = [];
  209. }else{
  210. row.singleWeightDivision=row.parameterStandards[0]?.singleWeightDivision
  211. row.tolerance=row.parameterStandards[0]?.tolerance
  212. row.parameterType=row.parameterStandards[0]?.parameterType
  213. }
  214. this.form = JSON.parse(JSON.stringify(row)) ;
  215. }
  216. this.visible = true;
  217. },
  218. choose(data) {
  219. let obj = {
  220. finalValue: data.parameter?.maxValue,
  221. initialValue: data.parameter?.minValue,
  222. toleranceValue: data.project?.inspectionStandard,
  223. singleWeightDivision: data.parameter?.name +' '+ data.parameter?.unitName,
  224. tolerance: data.project?.inspectionName+' '+data.project?.unit,
  225. parameterType:data.parameter?.textType,
  226. defaultValue:data.parameter?.defaultValue,
  227. };
  228. this.form.singleWeightDivision =obj.singleWeightDivision
  229. this.form.tolerance = obj.tolerance
  230. this.form.parameterType = obj.parameterType
  231. this.form.parameterStandards.push(obj);
  232. },
  233. add() {
  234. if (!this.form.parameterStandards.length) {
  235. this.$refs.standardDialogRef.open();
  236. return;
  237. }
  238. let obj = {
  239. finalValue: '',
  240. initialValue: '',
  241. toleranceValue: '',
  242. singleWeightDivision: '',
  243. tolerance: ''
  244. };
  245. this.form.parameterStandards.push(obj);
  246. },
  247. handleDeleteItem(index) {
  248. this.form.parameterStandards.splice(index, 1);
  249. },
  250. /* 保存编辑 */
  251. save() {
  252. this.$refs.form.validate((valid) => {
  253. if (!valid) {
  254. return false;
  255. }
  256. this.loading = true;
  257. if (this.type == 'add') {
  258. delete this.form.id;
  259. }
  260. // this.form.inspectionId = this.$refs.inspectionProjectRef.getValue();
  261. let URL = this.type == 'add' ? save : update;
  262. URL(this.form)
  263. .then((msg) => {
  264. this.loading = false;
  265. this.$message.success(msg);
  266. this.handleClose();
  267. this.$emit('done');
  268. })
  269. .catch((e) => {
  270. this.loading = false;
  271. });
  272. });
  273. },
  274. restForm() {
  275. this.form = { ...this.defaultForm() };
  276. this.list = [];
  277. this.$nextTick(() => {
  278. this.$refs.form.clearValidate();
  279. });
  280. },
  281. handleClose() {
  282. this.restForm();
  283. this.visible = false;
  284. }
  285. }
  286. };
  287. </script>
  288. <style lang="scss" scoped>
  289. .location-warp {
  290. display: flex;
  291. .detail {
  292. margin-left: 10px;
  293. }
  294. }
  295. :deep(
  296. .el-dialog:not(.ele-dialog-form)
  297. .el-dialog__body
  298. .el-form
  299. .el-form-item:last-child
  300. ) {
  301. margin-bottom: 22px;
  302. }
  303. :deep(
  304. .el-dialog:not(.ele-dialog-form)
  305. .el-dialog__body
  306. .el-form
  307. .el-table__body
  308. .el-table__row
  309. .el-form-item:last-child
  310. ) {
  311. margin-bottom: 0 !important;
  312. }
  313. .add-product {
  314. width: 100%;
  315. display: flex;
  316. align-items: center;
  317. justify-content: flex-end;
  318. font-size: 30px;
  319. color: #1890ff;
  320. margin: 10px 0;
  321. cursor: pointer;
  322. }
  323. </style>