¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud |
| | | ref="userCrud" |
| | | :data="tableData" |
| | | :option="option" |
| | | :table-loading="tableLoading" |
| | | @on-load="getTableList" |
| | | @refresh-change="handleRefresh" |
| | | @search-change="handleSearch" |
| | | @search-reset="handleReset" |
| | | @selection-change="selectChange" |
| | | @row-click="rowClickHandler" |
| | | > |
| | | |
| | | <template slot="menuLeft" slot-scope="scope"> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="rowSaveHandlerClick">å建</el-button> |
| | | <el-button icon="el-icon-delete" plain size="small" type="danger" @click="allDelHandler">å é¤</el-button> |
| | | <el-button icon="el-icon-view" plain size="small" type="primary" @click="chekView">æ¥ç使ç¨èå´</el-button> |
| | | <el-button icon="el-icon-download" plain size="small" type="primary" @click="downloadTemplateHandler">ä¸è½½å¯¼å
¥æ¨¡æ¿</el-button> |
| | | <el-button icon="el-icon-download" plain size="small" type="primary" @click="downloadHandler">导åº</el-button> |
| | | <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadUser">导å
¥</el-button> |
| | | </template> |
| | | |
| | | <template slot="menu" slot-scope="scope"> |
| | | <el-button icon="el-icon-edit" size="small" type="text" @click="editBtnClick(scope.row)">ç¼è¾ |
| | | </el-button> |
| | | <el-button icon="el-icon-delete" size="small" type="text" @click="rowDeleteHandler(scope.row)">å é¤ |
| | | </el-button> |
| | | </template> |
| | | |
| | | </avue-crud> |
| | | <!-- å建ç¼è¾èªå®ä¹å¯¹è¯æ¡ --> |
| | | <el-dialog |
| | | v-dialogDrag |
| | | v-loading="dialogLoading" |
| | | :title="dialogType === 'add' ? ' å建' : 'ç¼è¾'" |
| | | :visible.sync="dialogVisible" |
| | | append-to-body="true" |
| | | class="avue-dialog" |
| | | width="70%" |
| | | @close="dialogClose" |
| | | > |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="åç§°ï¼" prop="id"> |
| | | <el-input v-model="form.id"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ ç¾ï¼"> |
| | | <el-input v-model="form.name"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç±»åï¼"> |
| | | <el-select v-model="form.enumValueDataType" placeholder="è¯·éæ©ç±»å"> |
| | | <el-option label="String" value="String"></el-option> |
| | | <el-option label="Integer" value="Integer"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é¿åº¦ï¼"> |
| | | <el-input-number v-model="form.length" :max="999" :min="1" label="æè¿°æå"></el-input-number> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <avue-crud |
| | | ref="dialogCrud" |
| | | :data="dialogData" |
| | | :option="dialogOption" |
| | | @row-save="rowSaveDialogHandler" |
| | | @row-update="rowUpdateDialogHandler" |
| | | @row-del="rowDeleteDialogHandler" |
| | | > |
| | | </avue-crud> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="rowSaveHandler">ç¡® å®</el-button> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | <!-- æ¥ç使ç¨èå´ --> |
| | | <el-dialog |
| | | v-dialogDrag |
| | | v-loading="checkViewLoading" |
| | | title="æ¥ç使ç¨èå´" |
| | | :visible.sync="checkViewVisible" |
| | | append-to-body="true" |
| | | class="avue-dialog" |
| | | width="70%" |
| | | > |
| | | <avue-crud |
| | | ref="checkViewCrud" |
| | | :data="checkViewData" |
| | | :option="checkViewOption" |
| | | @search-change="checkHandleSearch" |
| | | @search-reset="checkHandleReset" |
| | | > |
| | | |
| | | </avue-crud> |
| | | </el-dialog> |
| | | |
| | | <!--导å
¥ --> |
| | | <upload-file ref="upload" :tipList="tipList" :fileType="upFileType" :fileUrl="fileUrl" title="导å
¥" @updata="getTableList"></upload-file> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import basicOption from '@/util/basic-option' |
| | | import {getEnumTypeList, addEnumType, updateEnumType, deleteEnumTypes,getUsedEnumList,download,downloadEnumTemplate} from "@/api/modeling/enumType/api"; |
| | | import func from "@/util/func"; |
| | | |
| | | export default { |
| | | name: "index", |
| | | data() { |
| | | return { |
| | | tipList:["导å
¥æ¨¡æ¿ä¸æ æçº¢è²åä½ç为å¿
è¾é¡¹","*注æ*:第äºè¡å¼å§çæ°æ®ä¸ºç¤ºä¾æ°æ®ï¼å¯¼å
¥å请å°å
¶å é¤ï¼å½å¯¼å
¥çæä¸¾ä¸å
·å¤å¤ä¸ªæä¸¾é¡¹æ¶ï¼åºæç
§ç¤ºä¾enum2çåæ³", |
| | | "æä¸¾é¡¹åç§°(å½åæä¸¾ä¸ææä¸¾é¡¹æ¶å¿
å¡«)","æä¸¾å¼(å½åæä¸¾ä¸ææä¸¾é¡¹æ¶å¿
å¡«)"], |
| | | upFileType: ['xls', 'xlsx'], |
| | | fileUrl: 'api/webEnumController/importEnumTypes', |
| | | checkViewOption:{ |
| | | ...basicOption, |
| | | addBtn:false, |
| | | menu:false, |
| | | searchMenuSpan: 8, |
| | | refreshBtn: false, |
| | | selection:false, |
| | | column:[ |
| | | { |
| | | label: 'åç§°', |
| | | prop: 'enumName', |
| | | sortable: true, |
| | | }, |
| | | { |
| | | label: 'æ¥æº', |
| | | prop: 'source', |
| | | sortable: true, |
| | | search:true |
| | | }, |
| | | { |
| | | label: '说æ', |
| | | prop: 'desc', |
| | | } |
| | | ] |
| | | }, |
| | | checkViewData:[], |
| | | checkViewDataSearch:[], |
| | | checkViewVisible:false, |
| | | checkViewLoading:false, |
| | | editRow: {}, |
| | | dialogType: '', |
| | | dialogData: [], |
| | | dialogOption: { |
| | | ...basicOption, |
| | | refreshBtn: false, |
| | | selection: false, |
| | | column: [ |
| | | { |
| | | label: 'æä¸¾é¡¹å', |
| | | prop: 'name', |
| | | sortable: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请è¾å
¥æä¸¾é¡¹å', |
| | | trigger: 'blur' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: 'æä¸¾å¼', |
| | | prop: 'value', |
| | | sortable: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请è¾å
¥æä¸¾å¼', |
| | | trigger: 'blur' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: 'æè¿°', |
| | | prop: 'description', |
| | | sortable: true, |
| | | }, |
| | | ] |
| | | }, |
| | | rules: { |
| | | id: [ |
| | | {required: true, message: '请è¾å
¥æä¸¾é¡¹å', trigger: 'blur'}, |
| | | {validator: this.validateEnglishOnly, trigger: 'blur'} |
| | | ], |
| | | }, |
| | | form: { |
| | | id: '', |
| | | name: '', |
| | | enumValueDataType: 'String', |
| | | length: 50 |
| | | }, |
| | | dialogLoading: false, |
| | | dialogVisible: false, |
| | | tableData: [], |
| | | option: { |
| | | ...basicOption, |
| | | calcHeight: -60, |
| | | searchMenuSpan: 8, |
| | | addBtn: false, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | column: [ |
| | | { |
| | | label: 'æä¸¾åç§°', |
| | | prop: 'id', |
| | | sortable: true, |
| | | search:true |
| | | }, |
| | | { |
| | | label: 'æ ç¾', |
| | | prop: 'name', |
| | | sortable: true, |
| | | }, |
| | | { |
| | | label: 'è¿åç±»å', |
| | | prop: 'enumValueDataTypeText', |
| | | sortable: true, |
| | | } |
| | | ] |
| | | }, |
| | | tableLoading: false, |
| | | selectList: [], |
| | | searchParams:{} |
| | | } |
| | | }, |
| | | methods: { |
| | | //è¡¨æ ¼æ¥è¯¢è¯·æ± |
| | | getTableList() { |
| | | this.tableLoading = true; |
| | | getEnumTypeList(this.searchParams).then(res => { |
| | | const data = res.data.data; |
| | | this.tableData = data; |
| | | this.tableLoading = false; |
| | | }).catch(err => { |
| | | this.$message.error(err) |
| | | }); |
| | | }, |
| | | |
| | | // è¡¨æ ¼å¤´é¨å·æ° |
| | | handleRefresh() { |
| | | this.getTableList(); |
| | | }, |
| | | |
| | | // æç´¢ |
| | | handleSearch(params,done) { |
| | | this.searchParams = { |
| | | enumName:params.id |
| | | }; |
| | | this.getTableList() |
| | | done(); |
| | | }, |
| | | |
| | | // éç½®æç´¢æ¡ä»¶ |
| | | handleReset() { |
| | | this.searchParams = {}; |
| | | this.getTableList(); |
| | | }, |
| | | |
| | | // éæ©æ¡ |
| | | selectChange(row) { |
| | | this.selectList = row; |
| | | }, |
| | | |
| | | // ç¹å»è¡ |
| | | rowClickHandler(row) { |
| | | this.$refs.userCrud.toggleRowSelection(row); |
| | | }, |
| | | |
| | | // å
³éå¯¹è¯æ¡ |
| | | dialogClose() { |
| | | this.dialogData = []; |
| | | this.form = { |
| | | id: '', |
| | | name: '', |
| | | enumValueDataType: 'String', |
| | | length: 50 |
| | | } |
| | | }, |
| | | |
| | | // å建æé®ç¹å» |
| | | rowSaveHandlerClick() { |
| | | this.dialogType = 'add'; |
| | | this.dialogVisible = true; |
| | | this.dialogData = []; |
| | | this.form = { |
| | | id: '', |
| | | name: '', |
| | | enumValueDataType: 'String', |
| | | length: 50 |
| | | } |
| | | }, |
| | | |
| | | // ç¼è¾æé®ç¹å» |
| | | editBtnClick(row) { |
| | | this.dialogType = 'edit'; |
| | | const {id, name, length, enumValueDataType} = row; |
| | | this.form = {id, name, length, enumValueDataType}; |
| | | this.dialogData = row.items; |
| | | this.dialogVisible = true; |
| | | this.editRow = row; |
| | | console.log(row); |
| | | }, |
| | | |
| | | // å 餿é®ç¹å» |
| | | rowDeleteHandler(row) { |
| | | let params = { |
| | | oid: row.oid, |
| | | name: row.id, |
| | | ts: row.ts |
| | | } |
| | | let data = [params]; |
| | | deleteEnumTypes(data).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.obj); |
| | | this.getTableList(); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // å¤éå é¤ |
| | | allDelHandler() { |
| | | let data = this.selectList.map(item => { |
| | | return{ |
| | | oid: item.oid, |
| | | name: item.id, |
| | | ts: item.ts |
| | | } |
| | | }) |
| | | deleteEnumTypes(data).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.obj); |
| | | this.getTableList(); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // å¯¹è¯æ¡æä¸¾ä¿å |
| | | rowSaveHandler() { |
| | | const lengthStatus = this.dialogData.some(item => item.value.length > this.form.length) |
| | | if (lengthStatus) { |
| | | this.$message.error('è¯·æ£æ¥æä¸¾å¼æ¯å¦è¶
è¿æå¤§é¿åº¦ï¼') |
| | | return; |
| | | } |
| | | |
| | | if (this.form.enumValueDataType === "Integer") { |
| | | // 夿æ¯å¦å
å«éæ°åå符 |
| | | const integerStatus = this.dialogData.some(item => { |
| | | if (!/^\-?\d+$/.test(item.value)) { |
| | | return true; |
| | | } |
| | | }) |
| | | |
| | | // 夿æ¯å¦æ¯integeræ ¼å¼ |
| | | const integerNumStatus = this.dialogData.some(item => { |
| | | let numValue = parseInt(item.value); |
| | | if (isNaN(numValue) || !Number.isInteger(numValue)) { |
| | | return true; |
| | | } |
| | | }) |
| | | |
| | | if (integerStatus || integerNumStatus) { |
| | | this.$message.error('æä¸¾å¼å¿
é¡»æ¯Integerç±»å'); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | if (this.dialogType === 'add') { |
| | | let params = { |
| | | ...this.form, |
| | | items: this.dialogData |
| | | } |
| | | addEnumType(params).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.obj); |
| | | this.dialogVisible = false; |
| | | this.getTableList(); |
| | | } |
| | | }) |
| | | } else if (this.dialogType === 'edit') { |
| | | let params = { |
| | | ...this.form, |
| | | items: this.dialogData, |
| | | oid: this.editRow.oid, |
| | | ts: this.editRow.ts |
| | | } |
| | | updateEnumType(params).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.obj); |
| | | this.dialogVisible = false; |
| | | this.getTableList(); |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | // æä¸¾é¡¹æ°å¢ |
| | | rowSaveDialogHandler(row, done, loading) { |
| | | const status = this.dialogData.some(item => item.name === row.name); |
| | | if (status) { |
| | | this.$message.error('æä¸¾é¡¹åç§°ä¸è½é夿·»å ï¼') |
| | | loading(); |
| | | } else { |
| | | if (this.form.enumValueDataType === "Integer") { |
| | | let numValue = parseInt(row.value); |
| | | // 夿åå§å符串æ¯å¦å
å«éæ°åå符 |
| | | if ((isNaN(numValue) || !Number.isInteger(numValue)) || !/^\-?\d+$/.test(row.value)) { |
| | | // 夿 numValue æ¯å¦æ¯ NaN æè
䏿¯Integerç±»å |
| | | this.$message.error('æä¸¾å¼å¿
é¡»æ¯Integerç±»å'); |
| | | return loading(); |
| | | } |
| | | } |
| | | if (row.value.length > this.form.num) { |
| | | this.$message.error('æä¸¾å¼è¶
è¿æå¤§é¿åº¦ï¼') |
| | | return loading(); |
| | | } |
| | | |
| | | this.dialogData.push(row); |
| | | done(); |
| | | } |
| | | }, |
| | | |
| | | // æä¸¾é¡¹ä¿®æ¹ |
| | | rowUpdateDialogHandler(row, index, done, loading) { |
| | | if (this.form.enumValueDataType === "Integer") { |
| | | let numValue = parseInt(row.value); |
| | | // 夿åå§å符串æ¯å¦å
å«éæ°åå符 |
| | | if ((isNaN(numValue) || !Number.isInteger(numValue)) || !/^\-?\d+$/.test(row.value)) { |
| | | // 夿 numValue æ¯å¦æ¯ NaN æè
䏿¯Integerç±»å |
| | | this.$message.error('æä¸¾å¼å¿
é¡»æ¯Integerç±»å'); |
| | | return loading(); |
| | | } |
| | | } |
| | | if (row.value.length > this.form.length) { |
| | | this.$message.error('æä¸¾å¼è¶
è¿æå¤§é¿åº¦ï¼') |
| | | return loading(); |
| | | } |
| | | |
| | | this.dialogData.splice(index, 1, row); |
| | | done(); |
| | | }, |
| | | |
| | | // æä¸¾é¡¹å é¤ |
| | | rowDeleteDialogHandler(row, index) { |
| | | this.dialogData.splice(index, 1); |
| | | }, |
| | | |
| | | |
| | | // åªè½è¾å
¥è±ææ£åæ ¡éª |
| | | validateEnglishOnly(rule, value, callback) { |
| | | if (!value) { |
| | | return callback(new Error('请è¾å
¥æä¸¾é¡¹å')); |
| | | } |
| | | if (!/^[A-Za-z]+$/.test(value)) { |
| | | return callback(new Error('åªè½è¾å
¥è±æåæ¯')); |
| | | } |
| | | callback(); // éªè¯éè¿ |
| | | }, |
| | | |
| | | // æ¥ç使ç¨èå´ |
| | | chekView(){ |
| | | if(this.selectList.length <= 0 ){ |
| | | this.$message.warning('请è³å°éæ©ä¸æ¡æ°æ®'); |
| | | return; |
| | | } |
| | | if(this.selectList.length >1 ){ |
| | | this.$message.warning('åªè½éæ©ä¸æ¡æ°æ®è¿è¡æ¥ç'); |
| | | return; |
| | | } |
| | | |
| | | getUsedEnumList({enumName:this.selectList[0].id}).then(res => { |
| | | if(res.data.code === 200){ |
| | | this.checkViewVisible = true; |
| | | this.checkViewData = res.data.data; |
| | | this.checkViewDataSearch = res.data.data; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // æ¥ç使ç¨èå´æ¥è¯¢ |
| | | checkHandleSearch(params, done) { |
| | | const { source } = params; |
| | | |
| | | if(!params.source) { |
| | | this.checkViewData = this.checkViewDataSearch; |
| | | return done(); |
| | | }; |
| | | |
| | | this.checkViewData = this.checkViewData.filter(item => { |
| | | return item.source && item.source.includes(source); |
| | | }); |
| | | |
| | | done(); |
| | | |
| | | }, |
| | | |
| | | // æ¥ç使ç¨èå´éç½® |
| | | checkHandleReset(){ |
| | | this.checkViewData = this.checkViewDataSearch; |
| | | }, |
| | | |
| | | // å¯¼åº |
| | | downloadHandler(){ |
| | | if(this.selectList.length <= 0 ){ |
| | | this.$message.warning('请è³å°éæ©ä¸æ¡æ°æ®è¿è¡å¯¼åº'); |
| | | return; |
| | | } |
| | | |
| | | let enumNames = this.selectList.map(item => item.id).join(','); |
| | | download({enumNames:enumNames}).then(res => { |
| | | func.downloadFileByBlobHandler(res); |
| | | this.$message.success('å¯¼åºæå'); |
| | | }).catch(err => { |
| | | this.$message.error(err); |
| | | }) |
| | | }, |
| | | |
| | | // ä¸è½½å¯¼å
¥æ¨¡æ¿ |
| | | downloadTemplateHandler(){ |
| | | downloadEnumTemplate().then(res => { |
| | | func.downloadFileByBlobHandler(res); |
| | | this.$message.success('ä¸è½½æå'); |
| | | }).catch(err => { |
| | | this.$message.error(err); |
| | | }) |
| | | }, |
| | | |
| | | uploadUser(){ |
| | | this.$refs.upload.visible = true; |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |