| | |
| | | <template> |
| | | <div> |
| | | <div class="param-basic"> |
| | | <el-form style="width:100%;margin-top: 20px;" class="l-mes" :inline="true" :model="searchForm"> |
| | | <el-row> |
| | | <el-col :span="4"> |
| | | <el-form-item label="参数项:"> |
| | | <el-input clearable style="width: 100%;" v-model="searchForm.param" placeholder="参数项"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-form-item label="参数编号:"> |
| | | <el-input clearable style="width: 100%;" v-model="searchForm.code" placeholder="参数编号"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item class="btn-group"> |
| | | <el-button type="" @click="onSearch">查询</el-button> |
| | | <el-button type="primary" @click="addOrUpdateHandle">新增</el-button> |
| | | <el-button @click="showImportDialog">导入</el-button> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <el-form style="width:100%;margin-top: 20px;" class="l-mes" :inline="true" :model="searchForm"> |
| | | <el-row> |
| | | <el-col :span="4"> |
| | | <el-form-item label="参数项:"> |
| | | <el-input clearable style="width: 100%;" v-model="searchForm.param" placeholder="参数项"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-form-item label="参数编号:"> |
| | | <el-input clearable style="width: 100%;" v-model="searchForm.code" placeholder="参数编号"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item class="btn-group"> |
| | | <el-button type="" @click="onSearch">查询</el-button> |
| | | <el-button type="primary" @click="addOrUpdateHandle">新增</el-button> |
| | | <el-button @click="showImportDialog">导入</el-button> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <basic-container> |
| | | <avue-crud :data="tableData" |
| | | ref="crud" |
| | | :option="option" |
| | | :span-method="spanMethod" |
| | | @refresh-change="getData" |
| | | :page="page" |
| | | :table-loading="loading" |
| | | @row-update="updateParam" |
| | | @row-del="delParam"> |
| | | <template #menu="{row,index}"> |
| | | <el-button type="text" icon="el-icon-edit" size="small" @click="showEdit(row,index)">编辑</el-button> |
| | | <el-button type="text" icon="el-icon-delete" size="small" @click="showDel(row,index)">删除</el-button> |
| | | </template> |
| | | <template slot-scope="scope" slot="paramTypeForm"> |
| | | <el-select v-model="scope.row.paramType" @change="changeType(scope.row)" |
| | | filterable placeholder="请选择参数类型" :disabled="formDisabled"> |
| | | <el-option v-for="(item,index) in typeOptions" |
| | | :key="index" :label="item.label" :value="item.value"/> |
| | | </el-select> |
| | | </template> |
| | | <template slot="paramFormatLabel" slot-scope="scope"> |
| | | <span v-if="scope.row.paramType!='2'">参数格式</span> |
| | | <span v-else>数据字典</span> |
| | | </template> |
| | | <template slot-scope="scope" slot="paramFormatForm"> |
| | | <el-input v-if="scope.row.paramType!='2'" v-model="scope.row.paramFormat" |
| | | placeholder="请输入参数格式" :disabled="formDisabled"/> |
| | | <el-select v-else v-model="scope.row.paramFormat" filterable |
| | | placeholder="请选择数据字典" :disabled="formDisabled"> |
| | | <el-option v-for="(item,index) in dictOptions" |
| | | :key="index" :label="item.description" :value="item.type"/> |
| | | </el-select> |
| | | </template> |
| | | </avue-crud> |
| | | <avue-crud :data="tableData" ref="crud" :option="option" :span-method="spanMethod" @refresh-change="getData" |
| | | :page="page" :table-loading="loading" @row-update="updateParam" @row-del="delParam"> |
| | | <template #menu="{ row, index }"> |
| | | <el-button type="text" icon="el-icon-edit" size="small" @click="showEdit(row, index)">编辑</el-button> |
| | | <el-button type="text" icon="el-icon-delete" size="small" @click="showDel(row, index)">删除</el-button> |
| | | </template> |
| | | <template slot-scope="scope" slot="paramTypeForm"> |
| | | <el-select v-model="scope.row.paramType" @change="changeType(scope.row)" filterable placeholder="请选择参数类型" |
| | | :disabled="formDisabled"> |
| | | <el-option v-for="(item, index) in typeOptions" :key="index" :label="item.label" :value="item.value" /> |
| | | </el-select> |
| | | </template> |
| | | <template slot="paramFormatLabel" slot-scope="scope"> |
| | | <span v-if="scope.row.paramType != '2'">参数格式</span> |
| | | <span v-else>数据字典</span> |
| | | </template> |
| | | <template slot-scope="scope" slot="paramFormatForm"> |
| | | <el-input v-if="scope.row.paramType != '2'" v-model="scope.row.paramFormat" placeholder="请输入参数格式" |
| | | :disabled="formDisabled" /> |
| | | <el-select v-else v-model="scope.row.paramFormat" filterable placeholder="请选择数据字典" :disabled="formDisabled"> |
| | | <el-option v-for="(item, index) in dictOptions" :key="index" :label="item.description" :value="item.type" /> |
| | | </el-select> |
| | | </template> |
| | | </avue-crud> |
| | | </basic-container> |
| | | <!-- 弹窗, 新增 / 修改 --> |
| | | <table-form v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getData"></table-form> |
| | | <el-dialog |
| | | title="导入" |
| | | :visible.sync="importDialog" |
| | | width="22%"> |
| | | <el-upload ref="upload" style="width:100%;" class="upload-demo" drag action="#" |
| | | :multiple="false" :file-list="fileList" :auto-upload="false" show-file-list |
| | | :on-change="handleUpload"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
| | | <div class="el-upload__tip" slot="tip"> |
| | | 只能上传xls/xlsx文件,且不超过10MB |
| | | <el-button type="text" style="font-size:15px;text-decoration: underline;" |
| | | <el-dialog title="导入" :visible.sync="importDialog" width="22%"> |
| | | <el-upload ref="upload" style="width:100%;" class="upload-demo" drag action="#" :multiple="false" |
| | | :file-list="fileList" :auto-upload="false" show-file-list :on-change="handleUpload"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
| | | <div class="el-upload__tip" slot="tip"> |
| | | 只能上传xls/xlsx文件,且不超过10MB |
| | | <el-button type="text" style="font-size:15px;text-decoration: underline;" |
| | | @click="downloadTemplate">下载模板</el-button> |
| | | </div> |
| | | </el-upload> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="importDialog = false">取 消</el-button> |
| | | <el-button type="primary" @click="confirmImport()">确 定</el-button> |
| | | </span> |
| | | </div> |
| | | </el-upload> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="importDialog = false">取 消</el-button> |
| | | <el-button type="primary" @click="confirmImport()">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { fetchList, delObj,putObj,uploadParam } from '@/api/basic/param' |
| | | import { fetchList, delObj, putObj, uploadParam } from '@/api/basic/param' |
| | | import { uploadTemplate } from '@/api/basic/template' |
| | | import TableForm from './param-form' |
| | | import { mapGetters } from 'vuex' |
| | | import { remote,fetchList as fetchDictList } from '@/api/admin/dict' |
| | | import { remote, fetchList as fetchDictList } from '@/api/admin/dict' |
| | | export default { |
| | | data() { |
| | | data() { |
| | | return { |
| | | fileList: [], |
| | | importDialog: false, |
| | |
| | | code: null |
| | | }, |
| | | loading: true, |
| | | page:{ |
| | | page: { |
| | | total: 10, |
| | | currentPage: 1, |
| | | pageSize: 10 |
| | |
| | | label: '参数类型', |
| | | prop: 'paramType', |
| | | formslot: true, |
| | | rules:[{ |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择参数类型", |
| | | trigger: "change" |
| | |
| | | }, { |
| | | label: '单位', |
| | | prop: 'unit', |
| | | rules:[{ |
| | | rules: [{ |
| | | required: true, |
| | | message: "单位不能为空", |
| | | trigger: "blur" |
| | |
| | | spanArr: [{ |
| | | prop: 'code', |
| | | span: [] |
| | | },{ |
| | | }, { |
| | | prop: 'paramItem', |
| | | span: [] |
| | | }, { |
| | |
| | | this.getData() |
| | | this.getParamType() |
| | | }, |
| | | beforeUpdate(){ |
| | | beforeUpdate() { |
| | | console.log("updated"); |
| | | this.rowSort() |
| | | this.rowCalc() |
| | | this.loading = false |
| | | }, |
| | | watch:{ }, |
| | | watch: {}, |
| | | methods: { |
| | | //下载模板 |
| | | downloadTemplate() { |
| | |
| | | }) |
| | | }, |
| | | // 文件上传 |
| | | handleUpload(file, fileList) { |
| | | handleUpload(file, fileList) { |
| | | const maxSize = 10 * 1024 * 1024 * 1024;//10MB |
| | | const xlsType = "application/vnd.ms-excel"; |
| | | const xlsxType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" |
| | | if(file.raw.type != xlsType && file.raw.type != xlsxType){ |
| | | if (file.raw.type != xlsType && file.raw.type != xlsxType) { |
| | | this.$message.warning("导入文件格式不符!"); |
| | | fileList.pop() |
| | | return; |
| | | } |
| | | if(Number.parseInt(file.size) > maxSize){ |
| | | if (Number.parseInt(file.size) > maxSize) { |
| | | this.$message.warning("导入文件过大!"); |
| | | fileList.pop() |
| | | return; |
| | | } |
| | | if(fileList.length > 1){ |
| | | if (fileList.length > 1) { |
| | | this.$message.warning("只能导入单个文件!") |
| | | fileList.pop() |
| | | } |
| | | this.fileList = fileList; |
| | | // this.importFile = file; |
| | | }, |
| | | showImportDialog(){ |
| | | showImportDialog() { |
| | | this.importDialog = true |
| | | }, |
| | | //确定导入 |
| | | confirmImport(){ |
| | | confirmImport() { |
| | | console.log(this.fileList) |
| | | const fileData = new FormData(); |
| | | const fileData = new FormData(); |
| | | fileData.append('file', this.fileList[0].raw); |
| | | uploadParam(fileData).then((res)=>{ |
| | | console.log(res); |
| | | // this.exportLoading = false; |
| | | uploadParam(fileData).then((res) => { |
| | | this.$message.success("导入参数成功!") |
| | | this.fileList = [] |
| | | this.importDialog = false |
| | | this.getData() |
| | | this.getParamType() |
| | | }).catch() |
| | | }, |
| | | // 修改参数类型 |
| | | changeType(row) { |
| | | if (row.paramType === '1') { |
| | | row.paramFormat = '#.0000' |
| | | } else if(row.paramType === '2'){ |
| | | } else if (row.paramType === '2') { |
| | | this.getDictOptions() |
| | | }else { |
| | | } else { |
| | | row.paramFormat = '' |
| | | } |
| | | }, |
| | |
| | | } |
| | | }) |
| | | }, |
| | | showEdit(row,index){ |
| | | this.option.column.forEach(item=>{ |
| | | if(row.paramItemThree=="" && item.prop=='paramItemThree'){ |
| | | showEdit(row, index) { |
| | | this.option.column.forEach(item => { |
| | | if (row.paramItemThree == "" && item.prop == 'paramItemThree') { |
| | | item.display = false |
| | | } |
| | | if(row.paramItemTwo=="" && item.prop=='paramItemTwo'){ |
| | | if (row.paramItemTwo == "" && item.prop == 'paramItemTwo') { |
| | | item.display = false |
| | | } |
| | | }) |
| | | this.$refs.crud.rowEdit(row,index) |
| | | this.$refs.crud.rowEdit(row, index) |
| | | }, |
| | | showDel(row,index){ |
| | | this.$refs.crud.rowDel(row,index) |
| | | showDel(row, index) { |
| | | this.$refs.crud.rowDel(row, index) |
| | | }, |
| | | updateParam(row,index,done,loading){ |
| | | updateParam(row, index, done, loading) { |
| | | // this.formDisabled = true |
| | | let data = { |
| | | dict: '', |
| | |
| | | type: row.paramType, |
| | | unit: row.unit, |
| | | } |
| | | row.paramType=='2' ? data.dict=row.paramFormat : data.parameterFormat=row.paramFormat |
| | | if(row.threeId){ |
| | | row.paramType == '2' ? data.dict = row.paramFormat : data.parameterFormat = row.paramFormat |
| | | if (row.threeId) { |
| | | data.id = row.threeId |
| | | data.parameterItem = row.paramItemThree |
| | | }else{ |
| | | if(row.twoId){ |
| | | } else { |
| | | if (row.twoId) { |
| | | data.id = row.twoId |
| | | data.parameterItem = row.paramItemTwo |
| | | }else{ |
| | | } else { |
| | | data.id = row.oneId |
| | | data.parameterItem = row.paramItem |
| | | } |
| | | } |
| | | console.log(data) |
| | | putObj(data).then(res=>{ |
| | | if(res.data.data.code==0){ |
| | | putObj(data).then(res => { |
| | | if (res.data.data.code == 0) { |
| | | this.$message.success("更新成功") |
| | | }else{ |
| | | } else { |
| | | this.$message.error(res.data.data.msg) |
| | | } |
| | | this.getData() |
| | | done(row) |
| | | }).catch(error=>{ |
| | | }).catch(error => { |
| | | console.log(error) |
| | | }) |
| | | }, |
| | | delParam(row){ |
| | | delParam(row) { |
| | | let id; |
| | | if(row.threeId){ |
| | | if (row.threeId) { |
| | | id = row.threeId |
| | | }else{ |
| | | if(row.twoId){ |
| | | } else { |
| | | if (row.twoId) { |
| | | id = row.twoId |
| | | }else{ |
| | | } else { |
| | | id = row.oneId |
| | | } |
| | | } |
| | | this.$confirm('是否确认删除编号为【' + row.code+'】的数据?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | delObj(id).then(res=>{ |
| | | if(res.data.code==0){ |
| | | this.$message.success("删除成功") |
| | | }else{ |
| | | this.$message.error("删除失败") |
| | | } |
| | | this.getData() |
| | | }) |
| | | }).catch(() => {}); |
| | | this.$confirm('是否确认删除编号为【' + row.code + '】的数据?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | delObj(id).then(res => { |
| | | if (res.data.code == 0) { |
| | | this.$message.success("删除成功") |
| | | } else { |
| | | this.$message.error("删除失败") |
| | | } |
| | | this.getData() |
| | | }) |
| | | }).catch(() => { }); |
| | | }, |
| | | // 获取工序参数类型 |
| | | getParamType() { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | onSearch() { |
| | | onSearch() { |
| | | this.getData() |
| | | }, |
| | | // 新增 / 修改 |
| | |
| | | }) |
| | | }, |
| | | //动态合并方法 |
| | | rowCalc () { |
| | | rowCalc() { |
| | | this.spanArr.forEach((ele, index) => { |
| | | let parent |
| | | if (index !== 0) parent = this.spanArr[ele.parent || index - 1].span |
| | | ele.span = this.rowSpan(ele.prop, parent) |
| | | }) |
| | | }, |
| | | rowSort (list) { |
| | | rowSort(list) { |
| | | let propList = this.spanArr.map(ele => ele.prop) |
| | | this.spanArr.forEach((ele, index) => { |
| | | let key = ele.prop |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | rowSpan (key, parent) { |
| | | rowSpan(key, parent) { |
| | | let list = []; |
| | | let position = 0; |
| | | this.tableData.forEach((item, index) => { |
| | |
| | | }) |
| | | return list |
| | | }, |
| | | spanMethod ({ row, column, rowIndex, columnIndex }) { |
| | | spanMethod({ row, column, rowIndex, columnIndex }) { |
| | | for (let i = 0; i < this.spanArr.length; i++) { |
| | | const ele = this.spanArr[i] |
| | | if (column.property == ele.prop) { |
| | |
| | | .grid-header { |
| | | display: none; |
| | | } |
| | | |
| | | .param-basic { |
| | | margin: 0 10px; |
| | | border-radius: 0px; |
| | |
| | | } |
| | | |
| | | /*自定义disabled状态下checkbox的样式*/ |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled.is-checked |
| | | .el-checkbox__inner { |
| | | .completeproductstructure-checkout .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { |
| | | background-color: #006eff; |
| | | border-color: #006eff; |
| | | } |
| | | |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled.is-checked |
| | | + span.el-checkbox__label { |
| | | .completeproductstructure-checkout .el-checkbox__input.is-disabled.is-checked+span.el-checkbox__label { |
| | | color: #006eff; |
| | | border-color: #006eff; |
| | | } |
| | | |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled |
| | | .el-checkbox__inner { |
| | | .completeproductstructure-checkout .el-checkbox__input.is-disabled .el-checkbox__inner { |
| | | background-color: #ffffff; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled |
| | | + span.el-checkbox__label { |
| | | .completeproductstructure-checkout .el-checkbox__input.is-disabled+span.el-checkbox__label { |
| | | color: #606266; |
| | | cursor: pointer; |
| | | } |
| | |
| | | .GooFlow .ico .ico_start:before { |
| | | color: red; |
| | | } |
| | | |
| | | .highlight-tab-class { |
| | | color: #006eff; |
| | | background: #e4e7ed; |
| | | border-top: 1px solid #006eff; |
| | | } |
| | | |
| | | .unhighlight-tab-class { |
| | | border: 1px solid #e4e7ed; |
| | | border-bottom: none; |
| | | } |
| | | |
| | | .el-upload-dragger { |
| | | width: 300px; |
| | | } |
| | | |
| | | .upload-demo { |
| | | width: 300px; |
| | | } |
| | | </style> |