¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/router/axios'; |
| | | |
| | | // å表æ¥è¯¢ |
| | | export function getSysModelTreeMenuByPID(params) { |
| | | return request({ |
| | | url: "/api/hmSysModConfigController/getSysModelTreeMenuByPID", |
| | | method: "get", |
| | | params |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢ |
| | | export function addModel(params) { |
| | | return request({ |
| | | url: "/api/hmSysModConfigController/addModel", |
| | | method: "post", |
| | | data:params |
| | | }); |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateModel(params) { |
| | | return request({ |
| | | url: "/api/hmSysModConfigController/updateModel", |
| | | method: "put", |
| | | data:params |
| | | }); |
| | | } |
| | | |
| | | // å é¤ |
| | | export function delModule(params) { |
| | | return request({ |
| | | url: "/api/hmSysModConfigController/delModule", |
| | | method: "delete", |
| | | data:params |
| | | }); |
| | | } |
| | | |
| | | // 导åºsql |
| | | export function exportFunctionSql (params) { |
| | | return request({ |
| | | url: '/api/hmSysModConfigController/exportFunctionSql', |
| | | method: 'get', |
| | | headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}, |
| | | responseType: 'blob', |
| | | params |
| | | }) |
| | | } |
| | | |
| | | // å¢å æä½ç±»å |
| | | export function addOperationType(data) { |
| | | return request({ |
| | | url: "/api/hmSysModConfigController/addOperationType", |
| | | method: "post", |
| | | data |
| | | }); |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-container> |
| | | <el-aside> |
| | | <basic-container> |
| | | <div style="max-height: calc(100vh - 170px);overflow: auto"> |
| | | <avue-tree :key="refresh" ref="tree" :data="treeData" :option="treeOption" @node-click="nodeClick"> |
| | | <span slot-scope="{ node, data }" class="el-tree-node__label"> |
| | | <span style="font-size: 15px"> |
| | | <i class="el-icon-s-promotion"></i> |
| | | {{ (node || {}).label }} |
| | | </span> |
| | | </span> |
| | | </avue-tree> |
| | | </div> |
| | | </basic-container> |
| | | </el-aside> |
| | | |
| | | <el-main> |
| | | <basic-container> |
| | | <el-form ref="form" :model="form" label-width="85px" style="height: 79vh"> |
| | | <span v-if="form.childType !== 0"> |
| | | <el-form-item label="模ååï¼"> |
| | | <el-input v-model="form.name" placeholder="请è¾å
¥æ¨¡åå"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="模åå«åï¼"> |
| | | <el-input v-model="form.alias" placeholder="模åå«åç¨æ¥è®°å½æ¥å¿ä½¿ç¨"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="C/Sï¼"> |
| | | <el-input v-model="form.pathC" :rows="3" placeholder="请è¾å
¥C/Sè·¯å¾" type="textarea"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="B/Sï¼"> |
| | | <el-input v-model="form.path" :rows="3" placeholder="请è¾å
¥B/Sè·¯å¾" type="textarea"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label=".NETï¼"> |
| | | <el-input v-model="form.resourceDotNet" :rows="3" placeholder="请è¾å
¥.NET" type="textarea"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="Mobileï¼"> |
| | | <el-input v-model="form.resourceMobile" :rows="3" placeholder="请è¾å
¥Mobile" type="textarea"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åºå·ï¼"> |
| | | <el-input v-model="form.sort" placeholder="æ°åï¼æè¿°è¯¥æ¨¡åå¨å
¶ç¶æ¨¡åä¸çæ¾ç¤ºé¡ºåº"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç®å¾ï¼"> |
| | | <el-input v-model="form.source"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æè¿°ï¼"> |
| | | <el-input v-model="form.remark" :rows="3" placeholder="请è¾å
¥æè¿°" type="textarea"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦ææï¼"> |
| | | <el-switch |
| | | v-model="form.isValid" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949"> |
| | | </el-switch> |
| | | <el-link :underline="false" style="margin-left: 20px" type="danger">ä¸çæï¼ä¸éæ©ï¼æ¶ï¼è¯¥æ¨¡åå¨åè½æ¨¡åææé䏿¾ç¤º</el-link> |
| | | </el-form-item> |
| | | </span> |
| | | <span v-if="form.childType === 0"> |
| | | <el-form-item label="åç§°ï¼"> |
| | | <el-input v-model="form.name" :disabled="form.childType === 0" placeholder="请è¾å
¥åç§°"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ è¯ï¼"> |
| | | <el-input v-model="form.code" :disabled="form.childType === 0" placeholder="请è¾å
¥æ è¯"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å«åï¼"> |
| | | <el-input v-model="form.alias" placeholder="请è¾å
¥å«å"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¼å·ï¼"> |
| | | <el-input v-model="form.sort" :disabled="form.childType === 0" placeholder="请è¾å
¥ç¼å·"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æè¿°ï¼"> |
| | | <el-input v-model="form.remark" :disabled="form.childType === 0" placeholder="请è¾å
¥æè¿°"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦ææï¼"> |
| | | <el-switch |
| | | v-model="form.isValid" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949"> |
| | | </el-switch> |
| | | |
| | | </el-form-item> |
| | | </span> |
| | | </el-form> |
| | | <div v-if="form.childType && form.childType !== 0" class="btnBox"> |
| | | <el-button v-if="!addStatus" :disabled="mangeShowBtn ? false : !childTypeBtn" icon="el-icon-plus" plain |
| | | size="small" |
| | | type="primary" @click="addClickHandler">å¢å |
| | | </el-button> |
| | | <el-button v-if="addStatus" icon="el-icon-check" plain size="small" |
| | | type="success" @click="addSaveClickHandler">ä¿å |
| | | </el-button> |
| | | <el-button v-if="!editStatus" :disabled="mangeShowBtn" icon="el-icon-edit" plain size="small" type="primary" |
| | | @click="editClickHandler">ä¿®æ¹ |
| | | </el-button> |
| | | <el-button v-if="editStatus" icon="el-icon-check" plain size="small" |
| | | type="success" @click="editSaveClickHandler">ä¿å |
| | | </el-button> |
| | | <el-button :disabled="mangeShowBtn" icon="el-icon-close" plain size="small" type="danger" |
| | | @click="delClickHandler">å é¤ |
| | | </el-button> |
| | | <el-button :disabled="mangeShowBtn ? true : childTypeBtn" icon="el-icon-circle-plus-outline" plain |
| | | size="small" |
| | | type="primary" @click="addMethodsClickHandler">å¢å æä½ç±»å |
| | | </el-button> |
| | | <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small" |
| | | type="danger" |
| | | @click="addClickHandler">å é¤éç³»ç»æ¨¡å |
| | | </el-button> |
| | | <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small" |
| | | type="danger" |
| | | @click="addClickHandler">å é¤ä¸å¡æ¨¡å |
| | | </el-button> |
| | | <el-button :disabled="!mangeShowBtn" icon="el-icon-upload2" plain size="small" type="primary" |
| | | @click="upLoadClickHandler">导å
¥ |
| | | </el-button> |
| | | <el-button :disabled="!mangeShowBtn" icon="el-icon-download" plain size="small" type="primary" |
| | | @click="exportClickHandler">å¯¼åº |
| | | </el-button> |
| | | <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="sqlClickExportClick">导åºsql |
| | | </el-button> |
| | | </div> |
| | | <div v-if="form.childType === 0" class="btnBox"> |
| | | <el-button icon="el-icon-edit" plain size="small" type="primary">ä¿®æ¹å«å |
| | | </el-button> |
| | | <el-button icon="el-icon-close" plain size="small" type="danger">å é¤ |
| | | </el-button> |
| | | </div> |
| | | </basic-container> |
| | | </el-main> |
| | | <el-dialog |
| | | v-dialogDrag |
| | | :visible.sync="methodsVisble" |
| | | append-to-body="true" |
| | | class="avue-dialog" |
| | | title="æä½åç±»" |
| | | width="60%" |
| | | > |
| | | <avue-crud |
| | | ref="methodsCrud" |
| | | :data="methodsData" |
| | | :option="methodsOption" |
| | | :table-loading="methodsLoading" |
| | | @row-click="rowMethodsClickHandler" |
| | | @selection-change="selectMethodsChange"> |
| | | |
| | | </avue-crud> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="methodsVisble = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="methodsSaveClickHandler">ä¿ å</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </el-container> |
| | | </template> |
| | | |
| | | <script> |
| | | //管çåè½æ¨¡å |
| | | import { |
| | | getSysModelTreeMenuByPID, |
| | | addModel, |
| | | updateModel, |
| | | delModule, |
| | | exportFunctionSql, |
| | | addOperationType |
| | | } from "@/api/systemModel/mangeModel/api" |
| | | import func from "@/util/func"; |
| | | import basicOption from "@/util/basic-option"; |
| | | |
| | | export default { |
| | | name: "index", |
| | | data() { |
| | | return { |
| | | lastIndex: null, |
| | | methodsList: [], |
| | | methodsData: [], |
| | | methodsOption: { |
| | | ...basicOption, |
| | | addBtn: false, |
| | | menu: false, |
| | | height: 500, |
| | | column: [ |
| | | { |
| | | label: 'æä½åç±»', |
| | | prop: 'name', |
| | | sortable: true, |
| | | } |
| | | ] |
| | | }, |
| | | methodsLoading: false, |
| | | methodsVisble: false, |
| | | defalutName: ['name', 'alias', 'pathC', 'path', 'resourceDotNet', 'resourceMobile', 'sort', 'source', 'remark', 'code'], |
| | | refresh: Math.random(), |
| | | addStatus: false, |
| | | editStatus: false, |
| | | nodeRow: {}, |
| | | form: {}, |
| | | treeData: [], |
| | | treeOption: { |
| | | height: 'auto', |
| | | menu: false, |
| | | addBtn: false, |
| | | defaultExpandAll: false, |
| | | props: { |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'children', |
| | | }, |
| | | lazy: true, |
| | | treeLoad: (node, resolve) => { |
| | | const params = { |
| | | parentId: node.level === 0 ? "modelManagmentNode" : node.data.id, |
| | | modeType: node.level === 0 ? "firstNode" : node.data.modeType, |
| | | } |
| | | getSysModelTreeMenuByPID(params).then(res => { |
| | | resolve(res.data.data.map(item => { |
| | | return { |
| | | ...item, |
| | | id: item.id, |
| | | name: item.name, |
| | | leaf: !item.hasChildren |
| | | } |
| | | })) |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | /** |
| | | * childType |
| | | * 为-1 å
¨é¨æé®å±ç¤º ç¦ç¨ä¿®æ¹ å é¤ å¢å æä½ç±»å |
| | | * ä¸ä¸º-1 éè å é¤éç³»ç»æ¨¡å å é¤ä¸å¡æ¨¡å |
| | | * 为1æ¶ ç¦ç¨æä½ç±»åã导å
¥ãå¯¼åº |
| | | * 为2æ¶ ç¦ç¨å¢å 导å
¥ å¯¼åº |
| | | * mangeShowBtn 为 true è¯´ææ¯é¡¶å±èç¹ å
¨é¨æé®å±ç¤º ç¦ç¨ä¿®æ¹ å é¤ å¢å æä½ç±»å |
| | | * @returns {Number} |
| | | */ |
| | | mangeShowBtn() { |
| | | return this.form.childType === -1; |
| | | }, |
| | | childTypeBtn() { |
| | | return this.form.childType === 1; |
| | | } |
| | | }, |
| | | methods: { |
| | | // æ è¡ç¹å» |
| | | nodeClick(row) { |
| | | console.log(row.childType); |
| | | this.form = {...row}; |
| | | this.nodeRow = {...row}; |
| | | this.addStatus = false; |
| | | this.editStatus = false; |
| | | }, |
| | | |
| | | // æ°å¢æé® |
| | | addClickHandler() { |
| | | this.resetFormValue(); |
| | | this.addStatus = true; |
| | | this.editStatus = false; |
| | | }, |
| | | |
| | | // æ¸
空表åç»å®å¼ |
| | | resetFormValue() { |
| | | this.defalutName.forEach(key => { |
| | | this.form[key] = null; |
| | | }) |
| | | this.form.isValid = false; |
| | | }, |
| | | |
| | | // æ°å¢ä¿åæé® |
| | | addSaveClickHandler() { |
| | | if (!this.form.name) { |
| | | this.$message.error('模ååä¸è½ä¸ºç©º'); |
| | | return |
| | | } |
| | | if (this.form.name.length > 128) { |
| | | this.$message.error('模ååé¿åº¦è¶
è¿128ï¼'); |
| | | return |
| | | } |
| | | if (this.form.remark && this.form.remark.length > 255) { |
| | | this.$message.error('æè¿°é¿åº¦è¶
è¿255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) { |
| | | this.$message.error('.NETæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.pathC && this.form.pathC.length > 255) { |
| | | this.$message.error('C/Sæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.resourceMobile && this.form.resourceMobile.length > 255) { |
| | | this.$message.error('Mobileæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | this.form.parentId = this.form.id; |
| | | addModel(this.form).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.msg); |
| | | this.addStatus = false; |
| | | this.refresh = Math.random(); // å·æ°å·¦ä¾§æ |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // ä¿®æ¹æé® |
| | | editClickHandler() { |
| | | console.log(this.form); |
| | | this.editStatus = true; |
| | | this.addStatus = false; |
| | | }, |
| | | |
| | | // ä¿®æ¹ä¿å |
| | | editSaveClickHandler() { |
| | | if (!this.form.name) { |
| | | this.$message.error('模ååä¸è½ä¸ºç©º'); |
| | | return |
| | | } |
| | | if (this.form.name.length > 128) { |
| | | this.$message.error('模ååé¿åº¦è¶
è¿128ï¼'); |
| | | return |
| | | } |
| | | if (this.form.remark && this.form.remark.length > 255) { |
| | | this.$message.error('æè¿°é¿åº¦è¶
è¿255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) { |
| | | this.$message.error('.NETæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.pathC && this.form.pathC.length > 255) { |
| | | this.$message.error('C/Sæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.resourceMobile && this.form.resourceMobile.length > 255) { |
| | | this.$message.error('Mobileæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | |
| | | updateModel(this.form).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.msg); |
| | | this.editStatus = false; |
| | | this.refresh = Math.random(); // å·æ°å·¦ä¾§æ |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // å é¤æé® |
| | | delClickHandler() { |
| | | this.$confirm('æ¨ç¡®å®è¦å é¤æéæ©çæ°æ®åï¼', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | delModule(this.form).then(res => { |
| | | console.log(res); |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.msg); |
| | | this.resetFormValue(); |
| | | this.addStatus = false; |
| | | this.editStatus = false; |
| | | this.refresh = Math.random(); // å·æ°å·¦ä¾§æ |
| | | } |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | |
| | | // 导åºsql |
| | | sqlClickExportClick() { |
| | | exportFunctionSql({isFunction: true}).then(res => { |
| | | func.downloadFileByBlobHandler(res); |
| | | this.$message.success('å¯¼åºæå'); |
| | | }).catch(err => { |
| | | this.$message.error(err); |
| | | }); |
| | | }, |
| | | |
| | | // æä½åç±»å¤é |
| | | selectMethodsChange(list) { |
| | | this.methodsList = list; |
| | | }, |
| | | |
| | | // å¢å æä½ç±»å |
| | | addMethodsClickHandler() { |
| | | this.methodsLoading = true; |
| | | getSysModelTreeMenuByPID({parentId: 'sysOptionNode'}).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.methodsVisble = true; |
| | | const data = res.data.data[0].children; |
| | | this.methodsData = data; |
| | | this.methodsLoading = false; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // å¢å æä½ç±»åä¿å |
| | | methodsSaveClickHandler() { |
| | | let list = this.methodsList.map(item => { |
| | | return { |
| | | funcId: this.nodeRow.id, |
| | | operId: item.id, |
| | | operName: item.name, |
| | | operIndentify: item.code, |
| | | operAlias: item.alias, |
| | | operDesc: item.remark |
| | | } |
| | | }) |
| | | addOperationType(list).then(res => { |
| | | console.log(res) |
| | | if (res.data.code === 200) { |
| | | this.methodsVisble = false; |
| | | this.$message.success(res.data.msg); |
| | | this.refresh = Math.random(); // å·æ°å·¦ä¾§æ |
| | | this.resetFormValue(); |
| | | this.form.childType = null; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // ç¹å»è¡ |
| | | rowMethodsClickHandler(row) { |
| | | func.rowClickHandler( |
| | | row, |
| | | this.$refs.methodsCrud, |
| | | this.lastIndex, |
| | | (newIndex) => { |
| | | this.lastIndex = newIndex; |
| | | }, |
| | | () => { |
| | | this.methodsList = []; |
| | | } |
| | | ); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | ::v-deep { |
| | | .el-form-item .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .btnBox { |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-container> |
| | | <el-aside> |
| | | <basic-container> |
| | | <div style="max-height: calc(100vh - 170px);overflow: auto"> |
| | | <avue-tree :key="refresh" ref="tree" :data="treeData" :option="treeOption" @node-click="nodeClick"> |
| | | <span slot-scope="{ node, data }" class="el-tree-node__label"> |
| | | <span style="font-size: 15px"> |
| | | <i class="el-icon-s-promotion"></i> |
| | | {{ (node || {}).label }} |
| | | </span> |
| | | </span> |
| | | </avue-tree> |
| | | </div> |
| | | </basic-container> |
| | | </el-aside> |
| | | |
| | | <el-main> |
| | | <basic-container> |
| | | <el-form ref="form" :model="form" label-width="85px" style="height: 79vh"> |
| | | <span v-if="form.childType !== 0"> |
| | | <el-form-item label="模ååï¼"> |
| | | <el-input v-model="form.name" placeholder="请è¾å
¥æ¨¡åå"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="模åå«åï¼"> |
| | | <el-input v-model="form.alias" placeholder="模åå«åç¨æ¥è®°å½æ¥å¿ä½¿ç¨"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="C/Sï¼"> |
| | | <el-input v-model="form.pathC" :rows="3" placeholder="请è¾å
¥C/Sè·¯å¾" type="textarea"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="B/Sï¼"> |
| | | <el-input v-model="form.path" :rows="3" placeholder="请è¾å
¥B/Sè·¯å¾" type="textarea"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label=".NETï¼"> |
| | | <el-input v-model="form.resourceDotNet" :rows="3" placeholder="请è¾å
¥.NET" type="textarea"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="Mobileï¼"> |
| | | <el-input v-model="form.resourceMobile" :rows="3" placeholder="请è¾å
¥Mobile" type="textarea"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åºå·ï¼"> |
| | | <el-input v-model="form.sort" placeholder="æ°åï¼æè¿°è¯¥æ¨¡åå¨å
¶ç¶æ¨¡åä¸çæ¾ç¤ºé¡ºåº"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç®å¾ï¼"> |
| | | <el-input v-model="form.source"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æè¿°ï¼"> |
| | | <el-input v-model="form.remark" :rows="3" placeholder="请è¾å
¥æè¿°" type="textarea"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦ææï¼"> |
| | | <el-switch |
| | | v-model="form.isValid" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949"> |
| | | </el-switch> |
| | | <el-link :underline="false" style="margin-left: 20px" type="danger">ä¸çæï¼ä¸éæ©ï¼æ¶ï¼è¯¥æ¨¡åå¨åè½æ¨¡åææé䏿¾ç¤º</el-link> |
| | | </el-form-item> |
| | | </span> |
| | | <span v-if="form.childType === 0"> |
| | | <el-form-item label="åç§°ï¼"> |
| | | <el-input v-model="form.name" :disabled="form.childType === 0" placeholder="请è¾å
¥åç§°"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ è¯ï¼"> |
| | | <el-input v-model="form.code" :disabled="form.childType === 0" placeholder="请è¾å
¥æ è¯"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å«åï¼"> |
| | | <el-input v-model="form.alias" placeholder="请è¾å
¥å«å"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¼å·ï¼"> |
| | | <el-input v-model="form.sort" :disabled="form.childType === 0" placeholder="请è¾å
¥ç¼å·"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æè¿°ï¼"> |
| | | <el-input v-model="form.remark" :disabled="form.childType === 0" placeholder="请è¾å
¥æè¿°"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦ææï¼"> |
| | | <el-switch |
| | | v-model="form.isValid" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949"> |
| | | </el-switch> |
| | | |
| | | </el-form-item> |
| | | </span> |
| | | </el-form> |
| | | <div v-if="form.childType && form.childType !== 0" class="btnBox"> |
| | | <el-button v-if="!addStatus" :disabled="mangeShowBtn ? false : !childTypeBtn" icon="el-icon-plus" plain |
| | | size="small" |
| | | type="primary" @click="addClickHandler">å¢å |
| | | </el-button> |
| | | <el-button v-if="addStatus" icon="el-icon-check" plain size="small" |
| | | type="success" @click="addSaveClickHandler">ä¿å |
| | | </el-button> |
| | | <el-button v-if="!editStatus" :disabled="mangeShowBtn" icon="el-icon-edit" plain size="small" type="primary" |
| | | @click="editClickHandler">ä¿®æ¹ |
| | | </el-button> |
| | | <el-button v-if="editStatus" icon="el-icon-check" plain size="small" |
| | | type="success" @click="editSaveClickHandler">ä¿å |
| | | </el-button> |
| | | <el-button :disabled="mangeShowBtn" icon="el-icon-close" plain size="small" type="danger" |
| | | @click="delClickHandler">å é¤ |
| | | </el-button> |
| | | <el-button :disabled="mangeShowBtn ? true : childTypeBtn" icon="el-icon-circle-plus-outline" plain |
| | | size="small" |
| | | type="primary" @click="addMethodsClickHandler">å¢å æä½ç±»å |
| | | </el-button> |
| | | <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small" |
| | | type="danger" |
| | | @click="addClickHandler">å é¤éç³»ç»æ¨¡å |
| | | </el-button> |
| | | <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small" |
| | | type="danger" |
| | | @click="addClickHandler">å é¤ä¸å¡æ¨¡å |
| | | </el-button> |
| | | <el-button :disabled="!mangeShowBtn" icon="el-icon-upload2" plain size="small" type="primary" |
| | | @click="upLoadClickHandler">导å
¥ |
| | | </el-button> |
| | | <el-button :disabled="!mangeShowBtn" icon="el-icon-download" plain size="small" type="primary" |
| | | @click="exportClickHandler">å¯¼åº |
| | | </el-button> |
| | | <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="sqlClickExportClick">导åºsql |
| | | </el-button> |
| | | </div> |
| | | <div v-if="form.childType === 0" class="btnBox"> |
| | | <el-button icon="el-icon-edit" plain size="small" type="primary">ä¿®æ¹å«å |
| | | </el-button> |
| | | <el-button icon="el-icon-close" plain size="small" type="danger">å é¤ |
| | | </el-button> |
| | | </div> |
| | | </basic-container> |
| | | </el-main> |
| | | <el-dialog |
| | | v-dialogDrag |
| | | :visible.sync="methodsVisble" |
| | | append-to-body="true" |
| | | class="avue-dialog" |
| | | title="æä½åç±»" |
| | | width="60%" |
| | | > |
| | | <avue-crud |
| | | ref="methodsCrud" |
| | | :data="methodsData" |
| | | :option="methodsOption" |
| | | :table-loading="methodsLoading" |
| | | @row-click="rowMethodsClickHandler" |
| | | @selection-change="selectMethodsChange"> |
| | | |
| | | </avue-crud> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="methodsVisble = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="methodsSaveClickHandler">ä¿ å</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </el-container> |
| | | </template> |
| | | |
| | | <script> |
| | | //管çåè½æ¨¡å |
| | | import { |
| | | getSysModelTreeMenuByPID, |
| | | addModel, |
| | | updateModel, |
| | | delModule, |
| | | exportFunctionSql, |
| | | addOperationType |
| | | } from "@/api/systemModel/mangeModel/api" |
| | | import func from "@/util/func"; |
| | | import basicOption from "@/util/basic-option"; |
| | | |
| | | export default { |
| | | name: "index", |
| | | data() { |
| | | return { |
| | | lastIndex: null, |
| | | methodsList: [], |
| | | methodsData: [], |
| | | methodsOption: { |
| | | ...basicOption, |
| | | addBtn: false, |
| | | menu: false, |
| | | height: 500, |
| | | column: [ |
| | | { |
| | | label: 'æä½åç±»', |
| | | prop: 'name', |
| | | sortable: true, |
| | | } |
| | | ] |
| | | }, |
| | | methodsLoading: false, |
| | | methodsVisble: false, |
| | | defalutName: ['name', 'alias', 'pathC', 'path', 'resourceDotNet', 'resourceMobile', 'sort', 'source', 'remark', 'code'], |
| | | refresh: Math.random(), |
| | | addStatus: false, |
| | | editStatus: false, |
| | | nodeRow: {}, |
| | | form: {}, |
| | | treeData: [], |
| | | treeOption: { |
| | | height: 'auto', |
| | | menu: false, |
| | | addBtn: false, |
| | | defaultExpandAll: false, |
| | | props: { |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'children', |
| | | }, |
| | | lazy: true, |
| | | treeLoad: (node, resolve) => { |
| | | const params = { |
| | | parentId: node.level === 0 ? "systemManagmentNode" : node.data.id, |
| | | modeType: node.level === 0 ? "firstNode" : node.data.modeType, |
| | | } |
| | | getSysModelTreeMenuByPID(params).then(res => { |
| | | resolve(res.data.data.map(item => { |
| | | return { |
| | | ...item, |
| | | id: item.id, |
| | | name: item.name, |
| | | leaf: !item.hasChildren |
| | | } |
| | | })) |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | /** |
| | | * childType |
| | | * 为-1 å
¨é¨æé®å±ç¤º ç¦ç¨ä¿®æ¹ å é¤ å¢å æä½ç±»å |
| | | * ä¸ä¸º-1 éè å é¤éç³»ç»æ¨¡å å é¤ä¸å¡æ¨¡å |
| | | * 为1æ¶ ç¦ç¨æä½ç±»åã导å
¥ãå¯¼åº |
| | | * 为2æ¶ ç¦ç¨å¢å 导å
¥ å¯¼åº |
| | | * mangeShowBtn 为 true è¯´ææ¯é¡¶å±èç¹ å
¨é¨æé®å±ç¤º ç¦ç¨ä¿®æ¹ å é¤ å¢å æä½ç±»å |
| | | * @returns {Number} |
| | | */ |
| | | mangeShowBtn() { |
| | | return this.form.childType === -1; |
| | | }, |
| | | childTypeBtn() { |
| | | return this.form.childType === 1; |
| | | } |
| | | }, |
| | | methods: { |
| | | // æ è¡ç¹å» |
| | | nodeClick(row) { |
| | | console.log(row.childType); |
| | | this.form = {...row}; |
| | | this.nodeRow = {...row}; |
| | | this.addStatus = false; |
| | | this.editStatus = false; |
| | | }, |
| | | |
| | | // æ°å¢æé® |
| | | addClickHandler() { |
| | | this.resetFormValue(); |
| | | this.addStatus = true; |
| | | this.editStatus = false; |
| | | }, |
| | | |
| | | // æ¸
空表åç»å®å¼ |
| | | resetFormValue() { |
| | | this.defalutName.forEach(key => { |
| | | this.form[key] = null; |
| | | }) |
| | | this.form.isValid = false; |
| | | }, |
| | | |
| | | // æ°å¢ä¿åæé® |
| | | addSaveClickHandler() { |
| | | if (!this.form.name) { |
| | | this.$message.error('模ååä¸è½ä¸ºç©º'); |
| | | return |
| | | } |
| | | if (this.form.name.length > 128) { |
| | | this.$message.error('模ååé¿åº¦è¶
è¿128ï¼'); |
| | | return |
| | | } |
| | | if (this.form.remark && this.form.remark.length > 255) { |
| | | this.$message.error('æè¿°é¿åº¦è¶
è¿255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) { |
| | | this.$message.error('.NETæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.pathC && this.form.pathC.length > 255) { |
| | | this.$message.error('C/Sæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.resourceMobile && this.form.resourceMobile.length > 255) { |
| | | this.$message.error('Mobileæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | this.form.parentId = this.form.id; |
| | | addModel(this.form).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.msg); |
| | | this.addStatus = false; |
| | | this.refresh = Math.random(); // å·æ°å·¦ä¾§æ |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // ä¿®æ¹æé® |
| | | editClickHandler() { |
| | | console.log(this.form); |
| | | this.editStatus = true; |
| | | this.addStatus = false; |
| | | }, |
| | | |
| | | // ä¿®æ¹ä¿å |
| | | editSaveClickHandler() { |
| | | if (!this.form.name) { |
| | | this.$message.error('模ååä¸è½ä¸ºç©º'); |
| | | return |
| | | } |
| | | if (this.form.name.length > 128) { |
| | | this.$message.error('模ååé¿åº¦è¶
è¿128ï¼'); |
| | | return |
| | | } |
| | | if (this.form.remark && this.form.remark.length > 255) { |
| | | this.$message.error('æè¿°é¿åº¦è¶
è¿255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) { |
| | | this.$message.error('.NETæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.pathC && this.form.pathC.length > 255) { |
| | | this.$message.error('C/Sæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.resourceMobile && this.form.resourceMobile.length > 255) { |
| | | this.$message.error('Mobileæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | |
| | | updateModel(this.form).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.msg); |
| | | this.editStatus = false; |
| | | this.refresh = Math.random(); // å·æ°å·¦ä¾§æ |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // å é¤æé® |
| | | delClickHandler() { |
| | | this.$confirm('æ¨ç¡®å®è¦å é¤æéæ©çæ°æ®åï¼', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | delModule(this.form).then(res => { |
| | | console.log(res); |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.msg); |
| | | this.resetFormValue(); |
| | | this.addStatus = false; |
| | | this.editStatus = false; |
| | | this.refresh = Math.random(); // å·æ°å·¦ä¾§æ |
| | | } |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | |
| | | // 导åºsql |
| | | sqlClickExportClick() { |
| | | exportFunctionSql({isFunction: true}).then(res => { |
| | | func.downloadFileByBlobHandler(res); |
| | | this.$message.success('å¯¼åºæå'); |
| | | }).catch(err => { |
| | | this.$message.error(err); |
| | | }); |
| | | }, |
| | | |
| | | // æä½åç±»å¤é |
| | | selectMethodsChange(list) { |
| | | this.methodsList = list; |
| | | }, |
| | | |
| | | // å¢å æä½ç±»å |
| | | addMethodsClickHandler() { |
| | | this.methodsLoading = true; |
| | | getSysModelTreeMenuByPID({parentId: 'sysOptionNode'}).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.methodsVisble = true; |
| | | const data = res.data.data[0].children; |
| | | this.methodsData = data; |
| | | this.methodsLoading = false; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // å¢å æä½ç±»åä¿å |
| | | methodsSaveClickHandler() { |
| | | let list = this.methodsList.map(item => { |
| | | return { |
| | | funcId: this.nodeRow.id, |
| | | operId: item.id, |
| | | operName: item.name, |
| | | operIndentify: item.code, |
| | | operAlias: item.alias, |
| | | operDesc: item.remark |
| | | } |
| | | }) |
| | | addOperationType(list).then(res => { |
| | | console.log(res) |
| | | if (res.data.code === 200) { |
| | | this.methodsVisble = false; |
| | | this.$message.success(res.data.msg); |
| | | this.refresh = Math.random(); // å·æ°å·¦ä¾§æ |
| | | this.resetFormValue(); |
| | | this.form.childType = null; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // ç¹å»è¡ |
| | | rowMethodsClickHandler(row) { |
| | | func.rowClickHandler( |
| | | row, |
| | | this.$refs.methodsCrud, |
| | | this.lastIndex, |
| | | (newIndex) => { |
| | | this.lastIndex = newIndex; |
| | | }, |
| | | () => { |
| | | this.methodsList = []; |
| | | } |
| | | ); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | ::v-deep { |
| | | .el-form-item .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .btnBox { |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-container> |
| | | <el-aside> |
| | | <basic-container> |
| | | <div style="max-height: calc(100vh - 170px);overflow: auto"> |
| | | <avue-tree ref="tree" :data="treeData" :option="treeOption" @node-click="nodeClick"> |
| | | <span slot-scope="{ node, data }" class="el-tree-node__label"> |
| | | <span style="font-size: 15px"> |
| | | <i class="el-icon-s-promotion"></i> |
| | | {{ (node || {}).label }} |
| | | </span> |
| | | </span> |
| | | </avue-tree> |
| | | </div> |
| | | </basic-container> |
| | | </el-aside> |
| | | |
| | | <el-main> |
| | | <basic-container> |
| | | <el-form ref="form" :model="form" label-width="85px" style="height: 79vh"> |
| | | <el-form-item label="åç§°ï¼"> |
| | | <el-input v-model="form.name" placeholder="请è¾å
¥åç§°"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ è¯ï¼"> |
| | | <el-input v-model="form.code" placeholder="请è¾å
¥æ è¯"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å«åï¼"> |
| | | <el-input v-model="form.alias" placeholder="请è¾å
¥å«å"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¼å·ï¼"> |
| | | <el-input v-model="form.sort" placeholder="请è¾å
¥ç¼å·"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æè¿°ï¼"> |
| | | <el-input v-model="form.remark" placeholder="请è¾å
¥æè¿°"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div class="btnBox"> |
| | | <el-button v-if="!addStatus" :disabled="mangeShowBtn ? false : !childTypeBtn" icon="el-icon-plus" plain |
| | | size="small" |
| | | type="primary" @click="addClickHandler">å¢å |
| | | </el-button> |
| | | <el-button v-if="addStatus" icon="el-icon-check" plain size="small" |
| | | type="success" @click="addSaveClickHandler">ä¿å |
| | | </el-button> |
| | | <el-button :disabled="mangeShowBtn" icon="el-icon-edit" plain size="small" type="primary" |
| | | @click="addClickHandler">ä¿®æ¹ |
| | | </el-button> |
| | | <el-button :disabled="mangeShowBtn" icon="el-icon-close" plain size="small" type="danger" |
| | | @click="addClickHandler">å é¤ |
| | | </el-button> |
| | | <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">导å
¥sql |
| | | </el-button> |
| | | </div> |
| | | </basic-container> |
| | | </el-main> |
| | | </el-container> |
| | | </template> |
| | | |
| | | <script> |
| | | //管çåè½æ¨¡å |
| | | import {getSysModelTreeMenuByPID, addModel} from "@/api/systemModel/mangeModel/api" |
| | | |
| | | export default { |
| | | name: "index", |
| | | data() { |
| | | return { |
| | | addStatus: false, |
| | | nodeRow: {}, |
| | | form: {}, |
| | | treeData: [], |
| | | treeOption: { |
| | | height: 'auto', |
| | | menu: false, |
| | | addBtn: false, |
| | | defaultExpandAll: false, |
| | | props: { |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'children', |
| | | }, |
| | | lazy: true, |
| | | treeLoad: (node, resolve) => { |
| | | const params = { |
| | | parentId: node.level === 0 ? "operateNode" : node.data.id, |
| | | modeType: node.level === 0 ? "firstNode" : node.data.modeType, |
| | | } |
| | | getSysModelTreeMenuByPID(params).then(res => { |
| | | resolve(res.data.data.map(item => { |
| | | return { |
| | | ...item, |
| | | id: item.id, |
| | | name: item.name, |
| | | leaf: !item.hasChildren |
| | | } |
| | | })) |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | /** |
| | | * childType |
| | | * 为-1 å
¨é¨æé®å±ç¤º ç¦ç¨ä¿®æ¹ å é¤ å¢å æä½ç±»å |
| | | * ä¸ä¸º-1 éè å é¤éç³»ç»æ¨¡å å é¤ä¸å¡æ¨¡å |
| | | * 为1æ¶ ç¦ç¨æä½ç±»åã导å
¥ãå¯¼åº |
| | | * 为2æ¶ ç¦ç¨å¢å 导å
¥ å¯¼åº |
| | | * mangeShowBtn 为 true è¯´ææ¯é¡¶å±èç¹ å
¨é¨æé®å±ç¤º ç¦ç¨ä¿®æ¹ å é¤ å¢å æä½ç±»å |
| | | * @returns {Number} |
| | | */ |
| | | mangeShowBtn() { |
| | | return this.form.childType === -1; |
| | | }, |
| | | childTypeBtn() { |
| | | return this.form.childType === 1; |
| | | } |
| | | }, |
| | | methods: { |
| | | // æ è¡ç¹å» |
| | | nodeClick(row) { |
| | | console.log(row); |
| | | this.form = {...row}; |
| | | this.nodeRow = {...row}; |
| | | this.addStatus = false; |
| | | }, |
| | | |
| | | // æ°å¢æé® |
| | | addClickHandler() { |
| | | for (const key in this.form) { |
| | | if (this.form.hasOwnProperty(key)) { |
| | | this.form[key] = null; |
| | | } |
| | | } |
| | | this.addStatus = true; |
| | | }, |
| | | |
| | | // ä¿åæé® |
| | | addSaveClickHandler() { |
| | | console.log(this.form) |
| | | if (!this.form.name) { |
| | | this.$message.error('模ååä¸è½ä¸ºç©º'); |
| | | return |
| | | } |
| | | if (this.form.name.length > 128) { |
| | | this.$message.error('模ååé¿åº¦è¶
è¿128ï¼'); |
| | | return |
| | | } |
| | | if (this.form.remark && this.form.remark.length > 255) { |
| | | this.$message.error('æè¿°é¿åº¦è¶
è¿255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) { |
| | | this.$message.error('.NETæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.pathc && this.form.pathc.length > 255) { |
| | | this.$message.error('C/Sæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | if (this.form.resourceMobile && this.form.resourceMobile.length > 255) { |
| | | this.$message.error('Mobileæ è¯é¿åº¦ä¸è½255ï¼'); |
| | | return |
| | | } |
| | | console.log(this.nodeRow); |
| | | this.form.parentId = this.nodeRow.id; |
| | | this.form.modeType = this.nodeRow.modeType; |
| | | addModel(this.form).then(res => { |
| | | console.log(res) |
| | | this.addStatus = false; |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | ::v-deep { |
| | | .el-form-item .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .btnBox { |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | </style> |