| | |
| | | } |
| | | .dialog-footer{ |
| | | background-color: #ffffff; |
| | | z-index: 10000; |
| | | } |
| | | .avue-crud .avue-form { |
| | | margin: 0px auto !important; // è¡¨æ ¼å
ç表åï¼æ¯å¦:æç´¢æ ï¼ åæ¶ä¸è¾¹è· |
| | |
| | | params:params |
| | | }); |
| | | } |
| | | // æ¥è¯¢æ¡ä»¶çæ¥è¯¢æ¥å£ï¼æ¥å£æ¹å¼POSTï¼åæ°ä¸ä¿åæ¥å£ä¼ åä¸è´ |
| | | export function getCriteria(params) { |
| | | return request({ |
| | | url: "/api/templateController/getCriteria", |
| | | method: "post", |
| | | data:params |
| | | }); |
| | | } |
| | |
| | | import request from '@/router/axios'; |
| | | //æ¥è¯¢æ¨¡æ¿å®ä¹ |
| | | // 模æ¿å表å®ä¹ä¸ææ¡æ¥è¯¢ |
| | | //btmName: ç±»åå, linkFlag: æ¯å¦é¾æ¥ç±»å |
| | | export function gridTemplate(params) { |
| | | return request({ |
| | | url: "/api/templateController/queryTemplateList", |
| | |
| | | }); |
| | | } |
| | | |
| | | //龿¥ç±»åæ¥è¯¢æ¨¡æ¿å鿡件 |
| | | //btmName: 龿¥ç±»åå, linkFlag: æ¯å¦é¾æ¥ç±»å |
| | | //btmName: ä¸å¡ç±»åå, linkFlag: æ¯å¦é¾æ¥ç±»åï¼directionï¼æ£ååå |
| | | export function queryTemplateListByAttr(params) { |
| | | return request({ |
| | | url: "/api/templateController/queryTemplateListByAttr", |
| | | method: "get", |
| | | params:{ |
| | | ...params |
| | | } |
| | | }); |
| | | } |
| | | |
| | | //è·åæææ¥è¯¢æ¨¡æ¿ |
| | | export function getAllQTs(page,limit) { |
| | | return request({ |
| | | url: "/api/templateController/getAllQTs", |
| | | method: "get" |
| | | }); |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateTemplate(params) { |
| | | return request({ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-dialog v-dialogDrag |
| | | :title="dialog.title" |
| | | :visible.sync="dialog.showDialog" |
| | | width="1620px" |
| | | :append-to-body="true" |
| | | class="avue-dialog" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | @close="cancelDialog"> |
| | | <div style="min-height: 665px;max-height: 85vh;padding-bottom: 50px;"> |
| | | <basic-form key="linkQueryForm" style="margin-bottom: 0" |
| | | ref="form" |
| | | :span="4" |
| | | :formItems="formItems" |
| | | :formData="form" |
| | | @getFormData="getFormData"> |
| | | </basic-form> |
| | | <avue-crud ref="crud" title="设置æåº" |
| | | :data="orderInfoList" :option="crudOption"> |
| | | <template slot="menuLeft" slot-scope="scope"> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="addRow">å建</el-button> |
| | | </template> |
| | | <template slot="menu" slot-scope="scope"> |
| | | <el-button icon="el-icon-delete" size="small" type="text" @click="rowDeleteHandler(scope)">å é¤ |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | <el-dialog v-dialogDrag |
| | | title="å建" |
| | | :visible.sync="crudDialog.showDialog" |
| | | width="500px" |
| | | :append-to-body="true" |
| | | class="avue-dialog" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | @close="crudDialog.showDialog=false"> |
| | | <avue-form ref="tableForm" :option="tableFormOption" v-model="tableForm"></avue-form> |
| | | <div class="dialog-footer avue-dialog__footer"> |
| | | <el-button type="primary" plain size="small" @click="rowSave" >ä¿ å</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <el-container style="margin-top: 10px;"> |
| | | <el-aside style="width:350px"> |
| | | <fieldset> |
| | | <legend> 龿¥ç±»åå鿡件 </legend> |
| | | <div> |
| | | æ¥è¯¢æ¨¡æ¿å®ä¹ |
| | | <avue-select @change="linkQueryDefineChange" class="el-input--small" v-model="linkQueryDefineForm" placeholder="è¯·éæ©å
容" type="tree" :dic="linkQueryDefineDic" style="width:240px"></avue-select> |
| | | <avue-tree style="height: 265px" :data="linkTreeData" :option="treeOption" @node-drag-start="handleDragStart"> |
| | | </avue-tree> |
| | | </div> |
| | | </fieldset> |
| | | </el-aside> |
| | | <el-main> |
| | | <fieldset style="margin: 0 10px"> |
| | | <legend> æ¥è¯¢æ¡ä»¶ </legend> |
| | | <form-query-dialog ref="formQuery" |
| | | style="height: 300px;" |
| | | :queryCondition="queryCondition" |
| | | :queryTree="queryTree" |
| | | :levelFlag.sync="form.levelFlag" |
| | | ></form-query-dialog> |
| | | </fieldset> |
| | | </el-main> |
| | | <el-aside style="width:350px"> |
| | | <fieldset> |
| | | <legend> ä¸å¡ç±»åå鿡件 </legend> |
| | | <div> |
| | | æ¥è¯¢æ¨¡æ¿å®ä¹ |
| | | <avue-select @change="businessQueryDefineChange" class="el-input--small" v-model="businessQueryDefineForm" placeholder="è¯·éæ©å
容" type="tree" :dic="businessQueryDefineDic" style="width: 240px;"></avue-select> |
| | | <avue-tree style="height: 265px" :data="businessTreeData" :option="treeOption" @node-drag-start="handleDragStart"> |
| | | </avue-tree> |
| | | </div> |
| | | </fieldset> |
| | | </el-aside> |
| | | </el-container> |
| | | </div> |
| | | <div class="dialog-footer avue-dialog__footer"> |
| | | <el-button type="primary" plain size="small" @click="submitDialog" >ä¿ å</el-button> |
| | | <el-button size="small" @click="cancelDialog">å æ¶</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import {getAllOrderbyAttributeByLink} from "@/api/modeling/linkType/api"; |
| | | import {linkSave} from "@/api/queryTemplate/linkTypeQuery"; |
| | | import basicOption from "@/util/basic-option"; |
| | | import {queryTemplateListByAttr} from "@/api/queryTemplate/queryDefine"; |
| | | import formQueryDialog from "./formQueryDialog.vue"; |
| | | export default { |
| | | name: "formDialog", |
| | | components:{formQueryDialog}, |
| | | data(){ |
| | | return { |
| | | dialog: { |
| | | showDialog: false, |
| | | title: "å建", |
| | | submitTxt: "ä¿å", |
| | | submitIcon: "el-icon-check", |
| | | loading: false, |
| | | type: "add", |
| | | }, |
| | | crudDialog: { |
| | | showDialog: false, |
| | | submitTxt: "ä¿å", |
| | | submitIcon: "el-icon-check", |
| | | }, |
| | | formItems:[{ |
| | | label: 'æ¥è¯¢æ¨¡æ¿åç§°', |
| | | prop: 'qtName', |
| | | type: 'input', |
| | | span:5, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请è¾å
¥æ¥è¯¢æ¨¡æ¿åç§°", |
| | | trigger: "blur" |
| | | }] |
| | | }], |
| | | form:{ |
| | | btmName:'', |
| | | qtName: '', |
| | | levelFlag:0,//0:æ®éæ¥è¯¢æ¨¡æ¿; 1:é«çº§æ¥è¯¢æ¨¡æ¿" |
| | | queryTemplate:{} |
| | | }, |
| | | //å·²ææåºå表é
ç½® |
| | | crudOption: { |
| | | ...basicOption, |
| | | addBtn: false, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | selection: false, |
| | | height: "220", |
| | | tip: false, |
| | | column: [{ |
| | | label: 'æåºå段', |
| | | prop: 'orderField' |
| | | }, { |
| | | label: 'æåºæ¹å¼', |
| | | prop: 'orderMode' |
| | | }, { |
| | | label: 'ä¼å
级', |
| | | prop: 'level' |
| | | }] |
| | | }, |
| | | //å·²ææåº |
| | | orderInfoList:[], |
| | | //设置æåºå¼¹çªè¡¨åæ°æ® |
| | | tableForm:{ |
| | | orderField:'', |
| | | orderMode:'ASC', |
| | | level:'' |
| | | }, |
| | | //设置æåºå¼¹çªææå¯æåºå段 |
| | | orderFieldList:[], |
| | | //设置æåºå¼¹çªè¡¨åé
ç½® |
| | | tableFormOption: { |
| | | menuBtn: false, |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | span:24, |
| | | column: [{ |
| | | label: 'æåºå段', |
| | | prop: 'orderField', |
| | | type:'select', |
| | | props: { |
| | | label: 'id', |
| | | value: 'id' |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "è¯·éæ©æåºå段", |
| | | trigger: "blur" |
| | | }] |
| | | }, { |
| | | label: 'æåºæ¹å¼', |
| | | prop: 'orderMode', |
| | | type: 'select', |
| | | dicData: [{ |
| | | label: 'ååº', |
| | | value: 'ASC' |
| | | }, { |
| | | label: 'éåº', |
| | | value: 'DESC' |
| | | }], |
| | | value: 'ASC' |
| | | }, { |
| | | label: 'ä¼å
级', |
| | | prop: 'level', |
| | | type: 'number', |
| | | min:1, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请è¾å
¥ä¼å
级", |
| | | trigger: "blur" |
| | | }] |
| | | }] |
| | | }, |
| | | treeOption:{ |
| | | defaultExpandAll:true, |
| | | menu: false, |
| | | addBtn: false, |
| | | filter:false, |
| | | draggable: true, |
| | | allowDrop: () => { |
| | | return false; |
| | | }, |
| | | allowDrag: () => { |
| | | return true; |
| | | }, |
| | | }, |
| | | linkQueryDefineForm:'',//龿¥ç±»åæ¥è¯¢æ¨¡æ¿å®ä¹éä¸å¼ |
| | | linkQueryDefineDic:[],//龿¥ç±»åæ¥è¯¢æ¨¡æ¿å®ä¹ä¸ææ°æ® |
| | | //龿¥ç±»åæ¥è¯¢æ¨¡æ¿å®ä¹éä¸é¡¹å±æ§ |
| | | linkTreeData: [], |
| | | businessQueryDefineForm:'',//ä¸å¡ç±»åæ¥è¯¢æ¨¡æ¿å®ä¹éä¸å¼ |
| | | businessQueryDefineDic:[],//ä¸å¡ç±»åæ¥è¯¢æ¨¡æ¿å®ä¹ä¸ææ°æ® |
| | | //ä¸å¡ç±»åæ¥è¯¢æ¨¡æ¿å®ä¹éä¸é¡¹å±æ§ |
| | | businessTreeData: [], |
| | | //é«çº§æ¥è¯¢æ¡ä»¶ |
| | | queryTree:{}, |
| | | //æ®éæ¥è¯¢æ¡ä»¶ |
| | | queryCondition:[], |
| | | |
| | | }; |
| | | }, |
| | | watch: { |
| | | //æ¹å |
| | | 'form.direction': { |
| | | handler(val) { |
| | | if(val=='positive'){ |
| | | //æ£å |
| | | const dicData=this.treeData.btmItemsTo.map(item=>{ |
| | | return { |
| | | label: item, |
| | | value: item |
| | | } |
| | | }) |
| | | dicData.push({ |
| | | label: 'ææç±»å', |
| | | value: '*' |
| | | }) |
| | | this.$refs.form.updateDic('btmType', dicData); |
| | | this.form.btmType=dicData[0].value |
| | | this.getAllAttr(); |
| | | }else if(val=='opposite'){ |
| | | //åå |
| | | const dicData=this.treeData.btmItemsFrom.map(item=>{ |
| | | return { |
| | | label: item, |
| | | value: item |
| | | } |
| | | }) |
| | | dicData.push({ |
| | | label: 'ææç±»å', |
| | | value: '*' |
| | | }) |
| | | this.$refs.form.updateDic('btmType', dicData); |
| | | this.form.btmType=dicData[0].value |
| | | this.getAllAttr(); |
| | | } |
| | | }, |
| | | immediate: true, |
| | | }, |
| | | //ä¸å¡ç±»å |
| | | 'form.btmType': { |
| | | handler(val) { |
| | | if(val && val!='*'){ |
| | | this.getTemp(val,false); |
| | | } |
| | | }, |
| | | immediate: true, |
| | | } |
| | | }, |
| | | methods: { |
| | | openDialog(btmName, title, mode, data) { |
| | | this.dialog.title = title; |
| | | this.dialog.type = mode; |
| | | this.form.btmName = btmName; |
| | | this.treeData = data.treeData; |
| | | |
| | | if (data.selectData) { |
| | | this.selectData = data.selectData; |
| | | this.form.qtName = this.selectData.qtName; |
| | | if (data.selectData.queryTemplate.orderInfoList && data.selectData.queryTemplate.orderInfoList.length > 0) { |
| | | this.orderInfoList = JSON.parse(JSON.stringify(data.selectData.queryTemplate.orderInfoList));//å·²ææåº |
| | | } |
| | | this.queryCondition=this.selectData.queryTemplate.condition; |
| | | this.queryTree=this.selectData.tree; |
| | | this.form.levelFlag=this.selectData.levelFlag; |
| | | } else { |
| | | this.selectData = {}; |
| | | this.orderInfoList = []; |
| | | this.queryCondition=[]; |
| | | this.queryTree={ |
| | | connector:'å¹¶ä¸', |
| | | child:[] |
| | | }; |
| | | } |
| | | this.dialog.showDialog = true; |
| | | this.getTemp(data.treeData.label, true) |
| | | }, |
| | | cancelDialog() { |
| | | this.dialog.loading = false; |
| | | this.dialog.showDialog = false; |
| | | this.$nextTick(() => { |
| | | this.form = { |
| | | btmName: '', |
| | | qtName: '', |
| | | levelFlag:0, |
| | | queryTemplate: {} |
| | | }; |
| | | this.orderInfoList =[]; |
| | | this.businessQueryDefineForm=''; |
| | | this.linkQueryDefineForm=''; |
| | | this.$refs.form.clearValidate(); |
| | | }); |
| | | }, |
| | | submitDialog() { |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | const formData=this.initFormData(); |
| | | console.log(formData) |
| | | linkSave(formData).then(res => { |
| | | if (res.data.success) { |
| | | this.$message.success("ä¿åæå"); |
| | | this.cancelDialog(); |
| | | this.$emit("refresh"); |
| | | } |
| | | }); |
| | | } else { |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | initFormData() { |
| | | let formData = { |
| | | btmName: this.form.btmName, |
| | | qtName: this.form.qtName, |
| | | levelFlag: this.form.levelFlag, |
| | | queryTemplate: { |
| | | btmType: this.form.btmType, |
| | | clauseList: ['*'], |
| | | id: this.form.qtName, |
| | | level: this.form.level, |
| | | linkType: this.form.btmName, |
| | | orderInfoList: this.orderInfoList, |
| | | recReturnMode: 1,//éå½è¿åæ°æ®æ¨¡å¼:1ï¼RECRETURNMODE_FLAT, 2ï¼RECRETURNMODE_FILTER |
| | | rightFlag: true, |
| | | secretFlag: true, |
| | | type: 'link', |
| | | version: this.form.version |
| | | } |
| | | } |
| | | if (formData.levelFlag == 1) { |
| | | //é«çº§ |
| | | let that = this; |
| | | function initValue(nodeChild) { |
| | | let children = []; |
| | | if (nodeChild) { |
| | | nodeChild.forEach((item, index) => { |
| | | if (item.label != 'å¹¶ä¸' && item.label != 'æè
') { |
| | | children.push(item.label); |
| | | } else { |
| | | children.push({ |
| | | connector: item.label, |
| | | child: initValue(item.children) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | return children; |
| | | } |
| | | |
| | | let treeData = { |
| | | connector: this.$refs.formQuery.treeData[0].label |
| | | }; |
| | | if (this.$refs.formQuery.treeData[0].children) { |
| | | treeData.child = initValue(this.$refs.formQuery.treeData[0].children); |
| | | } |
| | | formData.tree = treeData |
| | | } |
| | | |
| | | formData.condition = this.$refs.formQuery.conditionList; |
| | | |
| | | return formData; |
| | | }, |
| | | getFormData(form) { |
| | | this.form = form; |
| | | }, |
| | | addRow() { |
| | | this.crudDialog.showDialog = true; |
| | | }, |
| | | // è¡å é¤ |
| | | rowDeleteHandler(data) { |
| | | this.orderInfoList.splice(data.index,1); |
| | | this.orderFieldList.unshift({ |
| | | id: data.row.orderField |
| | | }); |
| | | this.tableFormOption.column[0].dicData= this.orderFieldList |
| | | }, |
| | | //è·åæåºè®¾ç½®ä¸æææåºå段 |
| | | getAllAttr() { |
| | | getAllOrderbyAttributeByLink({ |
| | | name: this.treeData.label, |
| | | btmType: this.form.btmType, |
| | | direction: this.form.direction |
| | | }).then(res => { |
| | | const orderInfoStr = JSON.stringify(this.orderInfoList); |
| | | const dicData = []; |
| | | res.data.data.forEach(item => { |
| | | if (orderInfoStr.indexOf('"orderField":"' + item + '"') == -1) { |
| | | dicData.push({id: item}); |
| | | } |
| | | }) |
| | | this.tableFormOption.column[0].dicData=dicData; |
| | | this.orderFieldList=dicData; |
| | | }) |
| | | }, |
| | | //æåºè®¾ç½®ä¿å |
| | | rowSave() { |
| | | this.$refs.tableForm.validate((valid) => { |
| | | if(valid){ |
| | | this.orderInfoList.push(JSON.parse(JSON.stringify(this.tableForm))); |
| | | this.crudDialog.showDialog=false; |
| | | const orderInfoStr = JSON.stringify(this.orderInfoList); |
| | | const dicData = []; |
| | | this.orderFieldList.forEach(item => { |
| | | if (orderInfoStr.indexOf('"orderField":"' + item.id + '"') == -1) { |
| | | dicData.push(item); |
| | | } |
| | | }) |
| | | this.tableFormOption.column[0].dicData=dicData; |
| | | this.orderFieldList=dicData; |
| | | this.tableForm= { |
| | | orderField: '', |
| | | orderMode: 'ASC', |
| | | level: '' |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | //è·åæ¥è¯¢æ¨¡æ¿å®ä¹ä¸æ |
| | | getTemp(btmName,linkFlag) { |
| | | if (btmName) { |
| | | queryTemplateListByAttr({btmName: btmName, linkFlag: linkFlag,direction:this.form.direction}).then(res => { |
| | | const data = res.data.data.map(item => { |
| | | item.label = item.name + '-' + (item.linkTypeName || item.btmName); |
| | | item.value = item.name; |
| | | return item; |
| | | }); |
| | | if(linkFlag){ |
| | | this.linkQueryDefineDic=data |
| | | data.length>0 && (this.linkQueryDefineForm=data[0].value); |
| | | }else { |
| | | this.businessQueryDefineDic=data; |
| | | data.length>0 && (this.businessQueryDefineForm= data[0].value); |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | linkQueryDefineChange(data) { |
| | | if (data.value) { |
| | | const childData = data.item.attrs.map(item => { |
| | | return { |
| | | label: item.name, |
| | | value: item.name, |
| | | atttributes:item |
| | | }; |
| | | }); |
| | | this.linkTreeData = [{ |
| | | label: data.value, |
| | | value: data.value, |
| | | children: childData |
| | | }] |
| | | } |
| | | }, |
| | | businessQueryDefineChange(data) { |
| | | if (data.value) { |
| | | const childData = data.item.attrs.map(item => { |
| | | return { |
| | | label: item.name, |
| | | value: item.name, |
| | | atttributes:item |
| | | }; |
| | | }); |
| | | this.businessTreeData = [{ |
| | | label: data.value, |
| | | value: data.value, |
| | | children: childData |
| | | }] |
| | | } |
| | | }, |
| | | // å¼å§ææ½æ èç¹äºä»¶ |
| | | handleDragStart(node, ev) { |
| | | // ä½¿ç¨ setData æ¹æ³è®¾ç½®æ°æ® |
| | | ev.dataTransfer.setData('item', JSON.stringify(node.data)); |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | fieldset { |
| | | border-radius: 5px; |
| | | -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); |
| | | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); |
| | | padding: 10px 6px; |
| | | box-sizing: border-box; |
| | | margin: 0; |
| | | border: 1px solid #EBEEF5; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div style="padding: 0 10px"> |
| | | <div style="text-align: center;margin-bottom: 10px"> |
| | | <avue-radio v-model="radioForm" :dic="radioDic" style="margin: 0 20px 0 0;display: inline-block"></avue-radio> |
| | | <el-button plain size="mini" type="primary" @click="clearValue">æ¸
空å¼</el-button> |
| | | <el-button plain size="mini" type="primary" @click="delAll">å é¤å
¨é¨æ¡ä»¶</el-button> |
| | | </div> |
| | | <div v-if="radioForm==0" @drop="drop" @dragover.prevent style="height: 220px;text-align: center;"> |
| | | <div v-for="(condition,index) in conditionList" :key="index" class="el-input--small" style="margin-bottom: 5px; text-align:left"> |
| | | <span style="width: 200px;display: inline-block;text-align: right" :title="condition.clause">{{condition.clause}}</span> |
| | | <avue-select v-model="condition.operator" type="tree" :dic="condition.operatorDic" :clearable="false" style="width: 80px;margin: 0 5px;"></avue-select> |
| | | <el-date-picker v-if="condition.type=='VTDate'" v-model="condition.ordinaryValue" style="width:300px;margin-right: 5px;display: inline-block;" value-format="YYYY-MM-DD" |
| | | type="date"> |
| | | </el-date-picker> |
| | | <el-date-picker v-else-if="condition.type=='VTDateTime'" v-model="condition.ordinaryValue" style="width:300px;margin-right: 5px;display: inline-block;" |
| | | type="datetime"> |
| | | </el-date-picker> |
| | | <el-time-select v-else-if="condition.type=='VTTime'" v-model="condition.ordinaryValue" value-format="HH:mm:ss" style="width:300px;margin-right: 5px;display: inline-block;"> |
| | | </el-time-select> |
| | | <avue-input-number v-else-if="condition.type=='VTInteger'" precision="0" v-model="condition.ordinaryValue" style="width:300px;margin-right: 5px;display: inline-block;"></avue-input-number> |
| | | <avue-input-number v-else-if="condition.type=='VTLong' || condition.type=='VTDouble'" v-model="condition.ordinaryValue" style="width:300px;margin-right: 5px;display: inline-block;"></avue-input-number> |
| | | <avue-input v-else v-model="condition.ordinaryValue" placeholder="" style="width: 300px;margin-right: 5px;"></avue-input> |
| | | <el-button plain size="mini" type="primary" @click="checkTemp(index)">éæ©æ¥è¯¢æ¨¡æ¿</el-button> |
| | | <el-button size="mini" type="danger" icon="el-icon-delete" @click="delCondition(index)" style="padding: 7px 8px"></el-button> |
| | | </div> |
| | | </div> |
| | | <div v-else style="height: 220px;text-align: left"> |
| | | <avue-tree ref="tree" @node-drop="handleDrop" style="height: 220px" :data="treeData" :option="treeOption" @node-click="nodeClick" node-key="value"></avue-tree> |
| | | </div> |
| | | <div style="text-align: right;margin-top: 10px;"> |
| | | <el-button v-if="radioForm==1" plain size="mini" type="primary" @click="addHandler">å¢å é»è¾</el-button> |
| | | <el-button v-if="radioForm==1" plain size="mini" type="primary" @click="editHandler">ä¿®æ¹æ¡ä»¶</el-button> |
| | | <el-button v-if="radioForm==1" plain size="mini" type="primary" @click="delHandler">å é¤</el-button> |
| | | <el-button plain size="mini" type="primary" @click="queryHandler">æ¥è¯¢</el-button> |
| | | <el-button plain size="mini" type="primary" @click="">åæ¶</el-button> |
| | | </div> |
| | | |
| | | <el-dialog v-dialogDrag |
| | | :title="dialog.title" |
| | | :visible.sync="dialog.showDialog" |
| | | width="550px" |
| | | :append-to-body="true" |
| | | class="avue-dialog" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | @close="dialog.showDialog=false"> |
| | | <div style="height: 200px;"> |
| | | {{clickNode.showLabel}} |
| | | <avue-select v-if="['VTInteger','VTDouble','VTLong'].includes(clickNode.type)" v-model="clickNode.operator" type="tree" :dic="operatorIntDic" :clearable="false" style="width: 80px;margin: 0 5px;"></avue-select> |
| | | <avue-select v-else-if="['VTDateTime','VTDate','VTTime'].includes(clickNode.type)" v-model="clickNode.operator" type="tree" :dic="operatorDateDic" :clearable="false" style="width: 80px;margin: 0 5px;"></avue-select> |
| | | <avue-select v-else v-model="clickNode.operator" type="tree" :dic="operatorDic" :clearable="false" style="width: 80px;margin: 0 5px;"></avue-select> |
| | | <el-date-picker v-if="clickNode.type=='VTDate'" v-model="clickNode.inputValue" style="width:300px;display: inline-block;" value-format="YYYY-MM-DD" |
| | | type="date"> |
| | | </el-date-picker> |
| | | <el-date-picker v-else-if="clickNode.type=='VTDateTime'" v-model="clickNode.inputValue" style="width:350px;display: inline-block;" |
| | | type="datetime"> |
| | | </el-date-picker> |
| | | <el-time-select v-else-if="clickNode.type=='VTTime'" v-model="clickNode.inputValue" value-format="HH:mm:ss" style="width:300px;display: inline-block;"> |
| | | </el-time-select> |
| | | <avue-input-number v-else-if="clickNode.type=='VTInteger'" precision="0" v-model="clickNode.inputValue" style="width:300px;display: inline-block;"></avue-input-number> |
| | | <avue-input-number v-else-if="clickNode.type=='VTLong' || clickNode.type=='VTDouble'" v-model="clickNode.inputValue" style="width:300px;display: inline-block;"></avue-input-number> |
| | | <avue-input v-else v-model="clickNode.inputValue" type="textarea" style="width: 300px;margin-right: 5px;vertical-align: top;"></avue-input> |
| | | </div> |
| | | <div class="dialog-footer avue-dialog__footer"> |
| | | <el-button size="small" @click="checkTemp" v-if="!['VTInteger','VTDouble','VTLong','VTDateTime','VTDate','VTTime'].includes(clickNode.type)">éæ©æ¥è¯¢æ¨¡æ¿</el-button> |
| | | <el-button type="primary" plain size="small" @click="submitDialog" >ä¿ å</el-button> |
| | | <el-button size="small" @click="dialog.showDialog=false">å æ¶</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog v-dialogDrag |
| | | :title="queryDialog.title" |
| | | :visible.sync="queryDialog.showDialog" |
| | | width="800px" |
| | | :append-to-body="true" |
| | | class="avue-dialog" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | @close="cancleQueryDialog"> |
| | | <div class="el-input--small"> |
| | | è¾å
¥æ¥è¯¢å段ï¼<avue-input v-model="queryField" style="width: 500px;margin-bottom: 10px"></avue-input> |
| | | <avue-crud ref="crud" :data="crudData" :option="crudOption" |
| | | :page.sync="page" |
| | | :table-loading="tableLoading" |
| | | @selection-change="selectionChange" |
| | | @row-click="rowClick" |
| | | @size-change="sizeChange" |
| | | @current-change="currentChange"> |
| | | </avue-crud> |
| | | </div> |
| | | <div class="dialog-footer avue-dialog__footer"> |
| | | <el-button type="primary" plain size="small" @click="submitQueryDialog" >ç¡® å®</el-button> |
| | | <el-button size="small" @click="cancleQueryDialog">å æ¶</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog v-dialogDrag |
| | | :title="queryResultDialog.title" |
| | | :visible.sync="queryResultDialog.showDialog" |
| | | width="900px" |
| | | :append-to-body="true" |
| | | class="avue-dialog" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | @close="queryResultDialog.showDialog='false'"> |
| | | <div class="el-input--small"> |
| | | <avue-crud ref="crud" :data="resultData" :option="resultOption" |
| | | :table-loading="queryResultDialog.loading"> |
| | | </avue-crud> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import basicOption from "@/util/basic-option"; |
| | | import {getAllQTs} from "@/api/queryTemplate/queryDefine"; |
| | | import {getCriteria} from "@/api/queryTemplate/linkTypeQuery"; |
| | | |
| | | export default { |
| | | name: "formQueryDialog", |
| | | props: { |
| | | queryCondition: { |
| | | type: Array, |
| | | default: [] |
| | | }, |
| | | queryTree: { |
| | | type: Object, |
| | | default: {} |
| | | }, |
| | | levelFlag:{ |
| | | type: Number, |
| | | default: 0 |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | dialog: { |
| | | showDialog: false, |
| | | title: "æ¥è¯¢æ¡ä»¶è®¾ç½®æ¡", |
| | | loading: false |
| | | }, |
| | | queryDialog: { |
| | | showDialog: false, |
| | | title: "éæ©æ¥è¯¢æ¨¡æ¿", |
| | | loading: false |
| | | }, |
| | | queryResultDialog: { |
| | | showDialog: false, |
| | | title: "æ¥è¯¢ç»æ", |
| | | loading: false |
| | | }, |
| | | radioDic: [{ |
| | | label: 'æ®é', |
| | | value: 0 |
| | | }, { |
| | | label: 'é«çº§', |
| | | value: 1 |
| | | }], |
| | | conditionList:[], |
| | | treeData:[], |
| | | treeOption:{ |
| | | defaultExpandAll:true, |
| | | menu: false, |
| | | addBtn: false, |
| | | filter:false, |
| | | draggable: true, |
| | | allowDrop: (draggingNode, dropNode, type) => { |
| | | debugger; |
| | | if (dropNode.data.label === 'å¹¶ä¸' || dropNode.data.label === 'æè
') { |
| | | return true; |
| | | } else { |
| | | this.$message.error('请éä¸é»è¾æ¡ä»¶æ·»å æ¥è¯¢é¡¹'); |
| | | return false; |
| | | } |
| | | }, |
| | | allowDrag: (draggingNode) => { |
| | | return false; |
| | | }, |
| | | }, |
| | | page: { |
| | | currentPage: 1, |
| | | pageSize: 10, |
| | | total: 0, |
| | | pageSizes: [10, 30, 50, 100], |
| | | }, |
| | | crudData:[], |
| | | crudOption: { |
| | | ...basicOption, |
| | | addBtn: false, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | tip: false, |
| | | header: false, |
| | | height: window.innerHeight-220, |
| | | menu: false, |
| | | column: [{ |
| | | label: 'æ¥è¯¢æ¨¡æ¿åç§°', |
| | | prop: 'qtName', |
| | | sortable: true, |
| | | }, { |
| | | label: '龿¥ç±»åæä¸å¡ç±»å', |
| | | prop: 'btmName', |
| | | sortable: true, |
| | | }] |
| | | }, |
| | | tableLoading: false, |
| | | selectionRow:[], |
| | | queryField:'', |
| | | resultData:[], |
| | | resultOption: { |
| | | ...basicOption, |
| | | addBtn: false, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | tip: false, |
| | | header: false, |
| | | height: window.innerHeight-220, |
| | | menu: false, |
| | | column: [{ |
| | | label: 'OID', |
| | | prop: 'OID', |
| | | }, { |
| | | label: 'CREATOR', |
| | | prop: 'CREATOR' |
| | | }, { |
| | | label: 'CREATETIME', |
| | | prop: 'CREATETIME' |
| | | }] |
| | | }, |
| | | clickNode:{}, |
| | | operatorIntDic:[{ |
| | | label: '=', |
| | | value: '=' |
| | | }, { |
| | | label: '!=', |
| | | value: '!=' |
| | | }, { |
| | | label: 'å
å«', |
| | | value: 'å
å«' |
| | | }, { |
| | | label: 'in', |
| | | value: 'in' |
| | | }, { |
| | | label: 'not in', |
| | | value: 'not in' |
| | | }, { |
| | | label: '>=', |
| | | value: '>=' |
| | | }, { |
| | | label: '>', |
| | | value: '>' |
| | | }, { |
| | | label: '<=', |
| | | value: '<=' |
| | | }, { |
| | | label: '<', |
| | | value: '<' |
| | | }], |
| | | operatorDateDic : [{ |
| | | label: '=', |
| | | value: '=' |
| | | }, { |
| | | label: '!=', |
| | | value: '!=' |
| | | }, { |
| | | label: 'in', |
| | | value: 'in' |
| | | }, { |
| | | label: 'not in', |
| | | value: 'not in' |
| | | }, { |
| | | label: '>=', |
| | | value: '>=' |
| | | }, { |
| | | label: '<=', |
| | | value: '<=' |
| | | }], |
| | | operatorDic : [{ |
| | | label: '=', |
| | | value: '=' |
| | | }, { |
| | | label: '!=', |
| | | value: '!=' |
| | | }, { |
| | | label: 'å
å«', |
| | | value: 'å
å«' |
| | | }, { |
| | | label: 'in', |
| | | value: 'in' |
| | | }, { |
| | | label: 'not in', |
| | | value: 'not in' |
| | | }] |
| | | } |
| | | }, |
| | | computed: { |
| | | radioForm:{ |
| | | get() { |
| | | return this.levelFlag; |
| | | }, |
| | | set(value) { |
| | | this.$emit('update:levelFlag', value); |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | queryCondition:{ |
| | | handler(val) { |
| | | if(val && val.cIMap){ |
| | | let list=[]; |
| | | let that=this; |
| | | let getValue =function(queryTemplate,item) { |
| | | for (let key in queryTemplate.condition.cIMap) { |
| | | if (queryTemplate.condition.cIMap[key].leaf) { |
| | | item.clause += '.' + queryTemplate.condition.cIMap[key].leafInfo.clause; |
| | | if (queryTemplate.condition.cIMap[key].leafInfo.value.queryTemplate) { |
| | | getValue(queryTemplate.condition.cIMap[key].leafInfo.value.queryTemplate, item) |
| | | } else { |
| | | item.ordinaryValue = queryTemplate.condition.cIMap[key].leafInfo.value.ordinaryValue; |
| | | item.type=queryTemplate.condition.cIMap[key].leafInfo.type; |
| | | if(['VTInteger','VTDouble','VTLong'].includes(item.type)){ |
| | | item.operatorDic=that.operatorIntDic; |
| | | }else if(['VTDateTime','VTDate','VTTime'].includes(item.type)){ |
| | | item.operatorDic=that.operatorDateDic; |
| | | }else{ |
| | | item.operatorDic=that.operatorDic; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | for (let key in val.cIMap) { |
| | | if (this.queryCondition.cIMap[key].leaf) { |
| | | let clause=this.queryCondition.cIMap[key].leafInfo.clause; |
| | | let operator= this.queryCondition.cIMap[key].leafInfo.operator; |
| | | let item={ |
| | | clause: clause, |
| | | operator: operator, |
| | | ordinaryValue: '', |
| | | operatorDic :[] |
| | | } |
| | | if(this.queryCondition.cIMap[key].leafInfo.value.queryTemplate) { |
| | | getValue(this.queryCondition.cIMap[key].leafInfo.value.queryTemplate, item) |
| | | }else { |
| | | item.ordinaryValue=this.queryCondition.cIMap[key].leafInfo.value.ordinaryValue; |
| | | item.type=this.queryCondition.cIMap[key].leafInfo.type; |
| | | if(['VTInteger','VTDouble','VTLong'].includes(item.type)){ |
| | | item.operatorDic=that.operatorIntDic; |
| | | }else if(['VTDateTime','VTDate','VTTime'].includes(item.type)){ |
| | | item.operatorDic=that.operatorDateDic; |
| | | }else{ |
| | | item.operatorDic=that.operatorDic; |
| | | } |
| | | } |
| | | list.push(item) |
| | | } |
| | | } |
| | | this.conditionList= list; |
| | | }else{ |
| | | this.conditionList=[] |
| | | } |
| | | }, |
| | | immediate: true, |
| | | deep:true |
| | | }, |
| | | queryTree:{ |
| | | handler(val) { |
| | | this.treeIndex=0; |
| | | if(val && Object.keys(val).length>0){ |
| | | let treeData = []; |
| | | let that=this; |
| | | function initValue(nodeChild) { |
| | | let children=[]; |
| | | if(nodeChild){ |
| | | nodeChild.forEach((item,index)=>{ |
| | | that.treeIndex++; |
| | | if(item.column !=null && item.column != undefined){ |
| | | children.push({ |
| | | label:item.column, |
| | | value:item.column+that.treeIndex, |
| | | type:item.type, |
| | | valueIndex:'v'+that.treeIndex |
| | | }) |
| | | }else { |
| | | children.push({ |
| | | label:item.connector, |
| | | value:item.connector+that.treeIndex, |
| | | valueIndex:'v'+that.treeIndex, |
| | | children:initValue(item.child) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | return children; |
| | | } |
| | | const node={ |
| | | label:val.connector, |
| | | value:val.connector+this.treeIndex, |
| | | valueIndex:'v'+this.treeIndex, |
| | | children:initValue(val.child) |
| | | } |
| | | treeData.push(node) |
| | | this.treeData = treeData; |
| | | }else { |
| | | this.treeData=[{ |
| | | label: 'å¹¶ä¸', |
| | | value: 'å¹¶ä¸' + this.treeIndex, |
| | | valueIndex: 'v' + this.treeIndex, |
| | | connector: 'å¹¶ä¸', |
| | | children: [] |
| | | }] |
| | | } |
| | | }, |
| | | immediate: true, |
| | | deep:true |
| | | } |
| | | }, |
| | | created() { |
| | | this.getTemp(); |
| | | }, |
| | | methods: { |
| | | // ææ½å°æ¶ |
| | | drop(event) { |
| | | // ä½¿ç¨ getData æ¹æ³è·åæ°æ® |
| | | const data = JSON.parse(event.dataTransfer.getData('item')); |
| | | if (this.radioForm == 0) { |
| | | const params = { |
| | | clause: data.value, |
| | | operator: '=', |
| | | ordinaryValue: '' |
| | | } |
| | | if (data.atttributes.vtDataType == 'VTInteger' || data.atttributes.vtDataType == 'VTDouble' || data.atttributes.vtDataType == 'VTLong') { |
| | | params.operatorDic =JSON.parse(JSON.stringify(this.operatorIntDic)) ; |
| | | } else if (data.atttributes.vtDataType == 'VTDateTime' || data.atttributes.vtDataType == 'VTDate' || data.atttributes.vtDataType == 'VTTime') { |
| | | params.operatorDic = JSON.parse(JSON.stringify(this.operatorDateDic)) |
| | | } else { |
| | | params.operatorDic = JSON.parse(JSON.stringify(this.operatorDic)) |
| | | } |
| | | params.type=data.atttributes.vtDataType; |
| | | this.conditionList.push(params) |
| | | }else {debugger; |
| | | if (this.clickNode.label != 'å¹¶ä¸' && this.clickNode.label != 'æè
') { |
| | | this.$message.error('请éä¸é»è¾æ¡ä»¶æ·»å æ¥è¯¢é¡¹'); |
| | | return; |
| | | } |
| | | this.treeIndex++; |
| | | this.$refs.tree.append({ |
| | | label: data.value, |
| | | value: data.value + this.treeIndex, |
| | | valueIndex: 'v' + this.treeIndex, |
| | | children: [] |
| | | }, this.clickNode); |
| | | } |
| | | }, |
| | | handleDrop(draggingNode, dropNode, dropType, ev) { |
| | | debugger; |
| | | console.log('tree drop: ', dropNode.label, dropType); |
| | | }, |
| | | //å 餿®éæ¥è¯¢æ¡ä»¶ |
| | | delCondition(index) { |
| | | this.conditionList.splice(index, 1); |
| | | }, |
| | | //æ¸
ç©ºå¼ |
| | | clearValue() { |
| | | if (this.radioForm == 0) { |
| | | this.conditionList.map(item => { |
| | | item.ordinaryValue = ''; |
| | | return item; |
| | | }) |
| | | this.conditionList = this.conditionList |
| | | } else { |
| | | if(this.treeData[0] && this.treeData[0].children) { |
| | | this.clearTreeValue(this.treeData[0].children) |
| | | } |
| | | } |
| | | }, |
| | | clearTreeValue(nodes){ |
| | | nodes.forEach((node,index)=>{ |
| | | if(node.children){ |
| | | this.clearTreeValue(node.children) |
| | | }else { |
| | | let values=node.label.split(' '); |
| | | if(values.length>2){ |
| | | node.label=values[0]+' '+values[1]; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | //å é¤å
¨é¨æ¡ä»¶ |
| | | delAll() { |
| | | if (this.radioForm == 0) { |
| | | this.conditionList = []; |
| | | } else { |
| | | this.treeIndex = 0; |
| | | this.treeData = []; |
| | | this.clickNode={}; |
| | | } |
| | | }, |
| | | nodeClick(data) { |
| | | this.clickNode = data |
| | | }, |
| | | //æ å¢å é»è¾æ¡ä»¶ |
| | | addHandler() { |
| | | if (Object.keys(this.clickNode).length>0) { |
| | | if (this.clickNode.label == 'å¹¶ä¸' || this.clickNode.label == 'æè
') { |
| | | this.treeIndex++; |
| | | this.$refs.tree.append({ |
| | | label: 'å¹¶ä¸', |
| | | value: 'å¹¶ä¸' + this.treeIndex, |
| | | valueIndex: 'v' + this.treeIndex, |
| | | children: [] |
| | | }, this.$refs.tree.getCurrentNode()); |
| | | } else { |
| | | this.$message.error("åªè½å¯¹é»è¾æ¡ä»¶å¢å é»è¾æ¡ä»¶"); |
| | | } |
| | | } else { |
| | | if(this.treeData.length==0){ |
| | | this.treeIndex = 0; |
| | | this.treeData = [{ |
| | | label: 'å¹¶ä¸', |
| | | value: 'å¹¶ä¸' + this.treeIndex, |
| | | valueIndex: 'v' + this.treeIndex, |
| | | connector: 'å¹¶ä¸', |
| | | children: [] |
| | | }] |
| | | }else { |
| | | this.$message.warning("è¯·éæ©æ¥è¯¢æ¡ä»¶"); |
| | | } |
| | | } |
| | | }, |
| | | //æ ä¿®æ¹æ¡ä»¶ |
| | | editHandler() { |
| | | if (Object.keys(this.clickNode).length>0) { |
| | | if (this.clickNode.label == 'å¹¶ä¸') { |
| | | this.clickNode.label = 'æè
' |
| | | } else if (this.clickNode.label == 'æè
') { |
| | | this.clickNode.label = 'å¹¶ä¸' |
| | | } else { |
| | | const values= this.clickNode.label.split(' '); |
| | | this.clickNode.inputValue=''; |
| | | if(values.length>1){ |
| | | this.clickNode.operator=values[1]; |
| | | if(values.length>2){ |
| | | if(['VTDateTime','VTDate','VTTime'].includes(this.clickNode.type)){ |
| | | this.clickNode.inputValue=new Date(values[2]); |
| | | }else { |
| | | this.clickNode.inputValue=values[2]; |
| | | } |
| | | } |
| | | } |
| | | if(values[0].indexOf('.')!=-1){ |
| | | const labels=values[0].split('.') |
| | | this.clickNode.showLabel=labels[labels.length-1]; |
| | | }else { |
| | | this.clickNode.showLabel=values[0]; |
| | | } |
| | | this.dialog.showDialog = true; |
| | | } |
| | | } else { |
| | | this.$message.warning("è¯·éæ©æ¥è¯¢æ¡ä»¶"); |
| | | } |
| | | }, |
| | | //æ å 餿¡ä»¶ |
| | | delHandler() { |
| | | if (Object.keys(this.clickNode).length>0) { |
| | | this.$confirm('æ¨ç¡®å®è¦å é¤æéæ©çæ¡ä»¶åï¼', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$refs.tree.remove(this.clickNode); |
| | | this.clickNode = {}; |
| | | }) |
| | | } else { |
| | | this.$message.warning("è¯·éæ©æ¥è¯¢æ¡ä»¶"); |
| | | } |
| | | }, |
| | | //æ¥è¯¢ |
| | | queryHandler(){ |
| | | this.$parent.$parent.$parent.$parent.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | this.queryResultDialog.loading=true; |
| | | const formData=this.$parent.$parent.$parent.$parent.initFormData(); |
| | | getCriteria(formData).then(res => { |
| | | if (res.data.success) { |
| | | this.resultData=res.data.data; |
| | | this.queryResultDialog.showDialog=true; |
| | | this.queryResultDialog.loading=false; |
| | | } |
| | | }); |
| | | } else { |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | //éæ©æ¥è¯¢æ¨¡æ¿ |
| | | checkTemp(index) { |
| | | if(index>=0){ |
| | | if(['VTInteger','VTDouble','VTLong','VTDateTime','VTDate','VTTime'].includes(this.conditionList[index].type)){ |
| | | return false; |
| | | } |
| | | } |
| | | this.queryIndex=index; |
| | | this.queryDialog.showDialog=true; |
| | | this.$nextTick(()=>{ |
| | | this.$refs.crud.doLayout(); |
| | | }); |
| | | }, |
| | | //æ¥è¯¢æ¡ä»¶ä¿å |
| | | submitDialog() { |
| | | const values= this.clickNode.label.split(' '); |
| | | this.clickNode.label = values[0]+' '+this.clickNode.operator+' '+this.clickNode.inputValue; |
| | | this.dialog.showDialog = false; |
| | | }, |
| | | //è·åæ¥è¯¢æ¨¡æ¿å表 |
| | | getTemp() { |
| | | getAllQTs(this.page.currentPage, this.page.pageSize).then(res => { |
| | | this.crudData = res.data.data; |
| | | this.tableLoading = false; |
| | | }) |
| | | }, |
| | | rowClick(row) { |
| | | this.$refs.crud.toggleSelection(); |
| | | this.$refs.crud.toggleRowSelection(row); //éä¸å½åè¡ |
| | | this.selectionRow = [row]; |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionRow = list; |
| | | }, |
| | | selectionClear() { |
| | | this.selectionRow = []; |
| | | this.$refs.crud.toggleSelection(); |
| | | }, |
| | | //éæ©æ¥è¯¢æ¨¡æ¿ |
| | | submitQueryDialog() { |
| | | if (this.selectionRow.length == 0) { |
| | | this.$message.error('è¯·éæ©æ¥è¯¢æ¨¡æ¿åè¿è¡æä½'); |
| | | return; |
| | | } |
| | | if (this.queryField == '') { |
| | | this.$message.error('请填åè¾å
¥æ¥è¯¢å段'); |
| | | return; |
| | | } |
| | | const value = this.selectionRow[0].qtName + ';' + this.queryField |
| | | if (this.radioForm == 0) { |
| | | //æ®é |
| | | this.conditionList[this.queryIndex].ordinaryValue = value; |
| | | } else { |
| | | this.clickNode.inputValue = value; |
| | | } |
| | | this.cancleQueryDialog(); |
| | | }, |
| | | cancleQueryDialog(){ |
| | | this.queryDialog.showDialog = false; |
| | | this.selectionClear(); |
| | | this.queryField=''; |
| | | this.queryIndex=null; |
| | | }, |
| | | sizeChange(val) { |
| | | this.page.pageSize = val; |
| | | this.getTemp(); |
| | | }, |
| | | |
| | | // 页ç |
| | | currentChange(val) { |
| | | this.page.currentPage = val; |
| | | this.getTemp(); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | ::v-deep .el-input--small .el-input__inner{ |
| | | height: 28px; |
| | | line-height: 28px; |
| | | } |
| | | </style> |
| | |
| | | |
| | | <el-main> |
| | | <basic-container> |
| | | <div v-if="this.nodeRow && this.nodeRow.label"> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="addHandler">å建</el-button> |
| | | <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editHandler">ä¿®æ¹</el-button> |
| | | <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">å é¤</el-button> |
| | | <el-button 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="upLoadClickHandler">导å
¥</el-button> |
| | | </div> |
| | | <avue-crud ref="crud" |
| | | @selection-change="selectionChange" |
| | | @row-click="rowClick" |
| | | :data="crudData" :option="crudOption" :table-loading="tableLoading" style="margin-top: 10px"> |
| | | <template slot="menuLeft" slot-scope="scope"> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="addHandler">å建</el-button> |
| | | <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editHandler">ä¿®æ¹</el-button> |
| | | <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">å é¤</el-button> |
| | | <el-button 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="upLoadClickHandler">导å
¥</el-button> |
| | | </template> |
| | | </avue-crud> |
| | | <form-dialog ref="formRef" @refresh="getTemp"></form-dialog> |
| | | </basic-container> |
| | | </el-main> |
| | | |
| | |
| | | import basicOption from "@/util/basic-option"; |
| | | import func from "@/util/func"; |
| | | import {dateFormat} from "@/util/date"; |
| | | import FormDialog from "./formDialog.vue" |
| | | import {deleteLinkTemplate} from "@/api/queryTemplate/linkTypeQuery"; |
| | | export default { |
| | | name: "index", |
| | | components: {FormDialog}, |
| | | data() { |
| | | return { |
| | | treeOption: { |
| | |
| | | this.tableLoading = false; |
| | | }) |
| | | }, |
| | | selectHandler(selection, row) { |
| | | |
| | | rowClick(row) { |
| | | this.$refs.crud.toggleSelection(); |
| | | this.$refs.crud.toggleRowSelection(row); //éä¸å½åè¡ |
| | | this.selectionRow = [row]; |
| | | }, |
| | | changeTemp(data) { |
| | | this.$refs.queryCrud.clearSelection(); |
| | | if (data.value != '') { |
| | | let abNames = data.item.abNames.join(',').toLowerCase().split(',') |
| | | |
| | | } |
| | | selectionChange(list) { |
| | | this.selectionRow = list; |
| | | }, |
| | | selectionClear() { |
| | | this.selectionRow = []; |
| | | this.$refs.crud.toggleSelection(); |
| | | }, |
| | | //å建 |
| | | addHandler() { |
| | | if (func.isEmptyObject(this.nodeRow)) { |
| | | this.$message.error('è¯·éæ©è¦æ·»å çèç¹'); |
| | | return; |
| | | } |
| | | this.title = 'add'; |
| | | this.visible = true; |
| | | this.$nextTick(() => { |
| | | this.$refs.formRef.openDialog(this.nodeRow.label,'å建','add',{treeData:this.nodeRow}); |
| | | this.$nextTick(()=>{ |
| | | this.$refs.formRef.formItems[0].disabled = false; |
| | | this.$refs.formRef.$refs.form.getInit(this.$refs.formRef.formItems) |
| | | }); |
| | | }, |
| | | //ä¿®æ¹ |
| | | editHandler() { |
| | | if (func.isEmptyObject(this.nodeRow)) { |
| | | this.$message.error('请è³å°éæ©ä¸æ¡æ°æ®'); |
| | | if (this.selectionRow.length!=1) { |
| | | this.$message.error('è¯·éæ©ä¸æ¡æ°æ®'); |
| | | return; |
| | | } |
| | | this.form.name = this.templateForm; |
| | | this.title = 'edit'; |
| | | this.visible = true; |
| | | this.$nextTick(() => { |
| | | this.$refs.formRef.openDialog(this.nodeRow.label,'ä¿®æ¹','edit',{treeData:this.nodeRow,selectData:this.selectionRow[0]}); |
| | | this.$nextTick(()=>{ |
| | | this.$refs.formRef.formItems[0].disabled = true; |
| | | this.$refs.formRef.$refs.form.getInit(this.$refs.formRef.formItems) |
| | | }); |
| | | }, |
| | | // æ°å¢ç¼è¾ä¿å |
| | | addDialogSavaHandler() { |
| | | this.$refs.form.validate((valid) => { |
| | | const saveFunction = this.title === 'add' ? saveTemplate : updateTemplate; |
| | | if (valid) { |
| | | saveFunction(this.form).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.obj); |
| | | this.addDialogClose(); |
| | | } |
| | | }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | // æ°å¢ç¼è¾å¯¹è¯æ¡åæ¶ |
| | | addDialogClose() { |
| | | this.form = { |
| | | name: '' |
| | | }; |
| | | this.$refs.form.clearValidate(); |
| | | this.visible = false; |
| | | }, |
| | | //å é¤ |
| | | delHandler() { |
| | | if (func.isEmptyObject(this.nodeRow)) { |
| | | if (this.selectionRow.length==0) { |
| | | this.$message.error('è¯·éæ©æ°æ®'); |
| | | return; |
| | | } |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteTemplate({ |
| | | name: this.templateForm, |
| | | btmName: this.nodeRow.label, |
| | | linkFlag: false |
| | | }).then(res => { |
| | | let names=this.selectionRow.map(item=>{ |
| | | return item.qtName |
| | | }) |
| | | deleteLinkTemplate({names:names.join(',')}).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.obj); |
| | | this.getTemp(); |
| | | } |
| | | }) |
| | | }).catch(() => { |
| | |
| | | <el-dialog v-dialogDrag |
| | | :title="dialog.title" |
| | | :visible.sync="dialog.showDialog" |
| | | width="1600px" |
| | | width="1620px" |
| | | :append-to-body="true" |
| | | class="avue-dialog" |
| | | :destroy-on-close="true" |
| | |
| | | <el-main> |
| | | <fieldset style="margin: 0 10px"> |
| | | <legend> æ¥è¯¢æ¡ä»¶ </legend> |
| | | <form-query-dialog style="height: 300px;" :queryCondition="queryCondition" :queryTree="queryTree"></form-query-dialog> |
| | | <form-query-dialog ref="formQuery" |
| | | style="height: 300px;" |
| | | :queryCondition="queryCondition" |
| | | :queryTree="queryTree" |
| | | :levelFlag.sync="form.levelFlag" |
| | | ></form-query-dialog> |
| | | </fieldset> |
| | | </el-main> |
| | | <el-aside style="width:350px"> |
| | |
| | | import {getAllOrderbyAttributeByLink} from "@/api/modeling/linkType/api"; |
| | | import {linkSave} from "@/api/queryTemplate/linkTypeQuery"; |
| | | import basicOption from "@/util/basic-option"; |
| | | import {gridTemplate} from "@/api/queryTemplate/queryDefine"; |
| | | import {queryTemplateListByAttr} from "@/api/queryTemplate/queryDefine"; |
| | | import formQueryDialog from "./formQueryDialog.vue"; |
| | | export default { |
| | | name: "formDialog", |
| | |
| | | form:{ |
| | | btmName:'', |
| | | qtName: '', |
| | | levelFlag:0,//0:æ®éæ¥è¯¢æ¨¡æ¿; 1:é«çº§æ¥è¯¢æ¨¡æ¿" |
| | | queryTemplate:{} |
| | | }, |
| | | //å·²ææåºå表é
ç½® |
| | |
| | | //é«çº§æ¥è¯¢æ¡ä»¶ |
| | | queryTree:{}, |
| | | //æ®éæ¥è¯¢æ¡ä»¶ |
| | | queryCondition:[] |
| | | queryCondition:[], |
| | | |
| | | }; |
| | | }, |
| | | watch: { |
| | |
| | | } |
| | | }, |
| | | immediate: true, |
| | | }, |
| | | 'dialog.type': { |
| | | handler(val) { |
| | | if(val=='edit'){ |
| | | } |
| | | }, |
| | | immediate: true, |
| | | }, |
| | | } |
| | | }, |
| | | methods: { |
| | | openDialog(btmName, title, mode, data) { |
| | |
| | | this.orderInfoList = JSON.parse(JSON.stringify(data.selectData.queryTemplate.orderInfoList));//å·²ææåº |
| | | } |
| | | this.queryCondition=this.selectData.queryTemplate.condition; |
| | | this.queryTree=this.selectData.queryTemplate.tree; |
| | | this.queryTree=this.selectData.tree; |
| | | this.form.levelFlag=this.selectData.levelFlag; |
| | | } else { |
| | | this.selectData = {}; |
| | | this.orderInfoList = []; |
| | | this.queryCondition=[]; |
| | | this.queryTree={}; |
| | | this.queryTree={ |
| | | connector:'å¹¶ä¸', |
| | | child:[] |
| | | }; |
| | | } |
| | | this.dialog.showDialog = true; |
| | | this.getTemp(data.treeData.label, true) |
| | |
| | | this.form = { |
| | | btmName: '', |
| | | qtName: '', |
| | | levelFlag:0, |
| | | queryTemplate: {} |
| | | }; |
| | | this.orderInfoList =[]; |
| | |
| | | submitDialog() { |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | let formData={ |
| | | btmName:this.form.btmName, |
| | | qtName:this.form.qtName, |
| | | queryTemplate:{ |
| | | btmType:this.form.btmType, |
| | | clauseList:['*'], |
| | | direction:this.form.direction, |
| | | id:this.form.qtName, |
| | | level:this.form.level, |
| | | linkType:this.form.btmName, |
| | | orderInfoList:this.orderInfoList, |
| | | queryISLeaf:this.form.queryISLeaf, |
| | | recReturnMode:1,//éå½è¿åæ°æ®æ¨¡å¼:1ï¼RECRETURNMODE_FLAT, 2ï¼RECRETURNMODE_FILTER |
| | | rightFlag:true, |
| | | secretFlag:true, |
| | | type:'link', |
| | | version:this.form.version |
| | | } |
| | | } |
| | | formData.condition=[] |
| | | const formData=this.initFormData(); |
| | | console.log(formData) |
| | | linkSave(formData).then(res => { |
| | | if (res.data.success) { |
| | | this.$message.success("ä¿åæå"); |
| | |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | initFormData() { |
| | | let formData = { |
| | | btmName: this.form.btmName, |
| | | qtName: this.form.qtName, |
| | | levelFlag: this.form.levelFlag, |
| | | queryTemplate: { |
| | | btmType: this.form.btmType, |
| | | clauseList: ['*'], |
| | | direction: this.form.direction, |
| | | id: this.form.qtName, |
| | | level: this.form.level, |
| | | linkType: this.form.btmName, |
| | | orderInfoList: this.orderInfoList, |
| | | queryISLeaf: this.form.queryISLeaf, |
| | | recReturnMode: 1,//éå½è¿åæ°æ®æ¨¡å¼:1ï¼RECRETURNMODE_FLAT, 2ï¼RECRETURNMODE_FILTER |
| | | rightFlag: true, |
| | | secretFlag: true, |
| | | type: 'link', |
| | | version: this.form.version |
| | | } |
| | | } |
| | | if (formData.levelFlag == 1) { |
| | | //é«çº§ |
| | | let that = this; |
| | | function initValue(nodeChild) { |
| | | let children = []; |
| | | if (nodeChild) { |
| | | nodeChild.forEach((item, index) => { |
| | | if (item.label != 'å¹¶ä¸' && item.label != 'æè
') { |
| | | children.push(item.label); |
| | | } else { |
| | | children.push({ |
| | | connector: item.label, |
| | | child: initValue(item.children) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | return children; |
| | | } |
| | | |
| | | let treeData = { |
| | | connector: this.$refs.formQuery.treeData[0].label |
| | | }; |
| | | if (this.$refs.formQuery.treeData[0].children) { |
| | | treeData.child = initValue(this.$refs.formQuery.treeData[0].children); |
| | | } |
| | | formData.tree = treeData |
| | | } |
| | | |
| | | formData.condition = this.$refs.formQuery.conditionList; |
| | | |
| | | return formData; |
| | | }, |
| | | getFormData(form) { |
| | | this.form = form; |
| | |
| | | //è·åæ¥è¯¢æ¨¡æ¿å®ä¹ä¸æ |
| | | getTemp(btmName,linkFlag) { |
| | | if (btmName) { |
| | | gridTemplate({btmName: btmName, linkFlag: linkFlag}).then(res => { |
| | | queryTemplateListByAttr({btmName: btmName, linkFlag: linkFlag,direction:this.form.direction}).then(res => { |
| | | const data = res.data.data.map(item => { |
| | | item.label = item.name + '-' + (item.linkTypeName || item.btmName); |
| | | item.value = item.name; |
| | |
| | | }, |
| | | linkQueryDefineChange(data) { |
| | | if (data.value) { |
| | | const childData = data.item.abNames.map(item => { |
| | | const childData = data.item.attrs.map(item => { |
| | | return { |
| | | label: item, |
| | | value: item |
| | | label: item.name, |
| | | value: item.name, |
| | | atttributes:item |
| | | }; |
| | | }); |
| | | this.linkTreeData = [{ |
| | |
| | | }, |
| | | businessQueryDefineChange(data) { |
| | | if (data.value) { |
| | | const childData = data.item.abNames.map(item => { |
| | | const childData = data.item.attrs.map(item => { |
| | | return { |
| | | label: item, |
| | | value: item |
| | | label: item.name, |
| | | value: item.name, |
| | | atttributes:item |
| | | }; |
| | | }); |
| | | this.businessTreeData = [{ |
| | |
| | | <el-button plain size="mini" type="primary" @click="delAll">å é¤å
¨é¨æ¡ä»¶</el-button> |
| | | </div> |
| | | <div v-if="radioForm==0" @drop="drop" @dragover.prevent style="height: 220px;text-align: center;"> |
| | | <div v-for="condition in conditionList" class="el-input--small" style="margin-bottom: 5px;"> |
| | | <span style="width: 150px;display: inline-block;text-align: right" :title="condition.clause">{{condition.clause}}</span> |
| | | <avue-select v-model="condition.operator" type="tree" :dic="operatorDic" :clearable="false" style="width: 80px;margin: 0 5px;"></avue-select> |
| | | <avue-input v-model="condition.ordinaryValue" placeholder="" style="width: 300px;margin-right: 5px;"></avue-input> |
| | | <el-button plain size="mini" type="primary" @click="delAll">éæ©æ¥è¯¢æ¨¡æ¿</el-button> |
| | | <div v-for="(condition,index) in conditionList" :key="index" class="el-input--small" style="margin-bottom: 5px; text-align:left"> |
| | | <span style="width: 200px;display: inline-block;text-align: right" :title="condition.clause">{{condition.clause}}</span> |
| | | <avue-select v-model="condition.operator" type="tree" :dic="condition.operatorDic" :clearable="false" style="width: 80px;margin: 0 5px;"></avue-select> |
| | | <el-date-picker v-if="condition.type=='VTDate'" v-model="condition.ordinaryValue" style="width:300px;margin-right: 5px;display: inline-block;" value-format="YYYY-MM-DD" |
| | | type="date"> |
| | | </el-date-picker> |
| | | <el-date-picker v-else-if="condition.type=='VTDateTime'" v-model="condition.ordinaryValue" style="width:300px;margin-right: 5px;display: inline-block;" |
| | | type="datetime"> |
| | | </el-date-picker> |
| | | <el-time-select v-else-if="condition.type=='VTTime'" v-model="condition.ordinaryValue" value-format="HH:mm:ss" style="width:300px;margin-right: 5px;display: inline-block;"> |
| | | </el-time-select> |
| | | <avue-input-number v-else-if="condition.type=='VTInteger'" precision="0" v-model="condition.ordinaryValue" style="width:300px;margin-right: 5px;display: inline-block;"></avue-input-number> |
| | | <avue-input-number v-else-if="condition.type=='VTLong' || condition.type=='VTDouble'" v-model="condition.ordinaryValue" style="width:300px;margin-right: 5px;display: inline-block;"></avue-input-number> |
| | | <avue-input v-else v-model="condition.ordinaryValue" placeholder="" style="width: 300px;margin-right: 5px;"></avue-input> |
| | | <el-button plain size="mini" type="primary" @click="checkTemp(index)">éæ©æ¥è¯¢æ¨¡æ¿</el-button> |
| | | <el-button size="mini" type="danger" icon="el-icon-delete" @click="delCondition(index)" style="padding: 7px 8px"></el-button> |
| | | </div> |
| | | </div> |
| | | <div v-else style="height: 220px;text-align: left"> |
| | | <avue-tree style="height: 220px" :data="treeData" :option="treeOption"></avue-tree> |
| | | <avue-tree ref="tree" @node-drop="handleDrop" style="height: 220px" :data="treeData" :option="treeOption" @node-click="nodeClick" node-key="value"></avue-tree> |
| | | </div> |
| | | <div style="text-align: right;margin-top: 10px;"> |
| | | <el-button v-if="radioForm==1" plain size="mini" type="primary" @click="addHandler">å¢å é»è¾</el-button> |
| | | <el-button v-if="radioForm==1" plain size="mini" type="primary" @click="del">ä¿®æ¹æ¡ä»¶</el-button> |
| | | <el-button v-if="radioForm==1" plain size="mini" type="primary" @click="del">å é¤</el-button> |
| | | <el-button plain size="mini" type="primary" @click="del">æ¥è¯¢</el-button> |
| | | <el-button plain size="mini" type="primary" @click="del">åæ¶</el-button> |
| | | <el-button v-if="radioForm==1" plain size="mini" type="primary" @click="editHandler">ä¿®æ¹æ¡ä»¶</el-button> |
| | | <el-button v-if="radioForm==1" plain size="mini" type="primary" @click="delHandler">å é¤</el-button> |
| | | <el-button plain size="mini" type="primary" @click="queryHandler">æ¥è¯¢</el-button> |
| | | <el-button plain size="mini" type="primary" @click="">åæ¶</el-button> |
| | | </div> |
| | | |
| | | <el-dialog v-dialogDrag |
| | | :title="dialog.title" |
| | | :visible.sync="dialog.showDialog" |
| | | width="550px" |
| | | :append-to-body="true" |
| | | class="avue-dialog" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | @close="dialog.showDialog=false"> |
| | | <div style="height: 200px;"> |
| | | {{clickNode.showLabel}} |
| | | <avue-select v-if="['VTInteger','VTDouble','VTLong'].includes(clickNode.type)" v-model="clickNode.operator" type="tree" :dic="operatorIntDic" :clearable="false" style="width: 80px;margin: 0 5px;"></avue-select> |
| | | <avue-select v-else-if="['VTDateTime','VTDate','VTTime'].includes(clickNode.type)" v-model="clickNode.operator" type="tree" :dic="operatorDateDic" :clearable="false" style="width: 80px;margin: 0 5px;"></avue-select> |
| | | <avue-select v-else v-model="clickNode.operator" type="tree" :dic="operatorDic" :clearable="false" style="width: 80px;margin: 0 5px;"></avue-select> |
| | | <el-date-picker v-if="clickNode.type=='VTDate'" v-model="clickNode.inputValue" style="width:300px;display: inline-block;" value-format="YYYY-MM-DD" |
| | | type="date"> |
| | | </el-date-picker> |
| | | <el-date-picker v-else-if="clickNode.type=='VTDateTime'" v-model="clickNode.inputValue" style="width:350px;display: inline-block;" |
| | | type="datetime"> |
| | | </el-date-picker> |
| | | <el-time-select v-else-if="clickNode.type=='VTTime'" v-model="clickNode.inputValue" value-format="HH:mm:ss" style="width:300px;display: inline-block;"> |
| | | </el-time-select> |
| | | <avue-input-number v-else-if="clickNode.type=='VTInteger'" precision="0" v-model="clickNode.inputValue" style="width:300px;display: inline-block;"></avue-input-number> |
| | | <avue-input-number v-else-if="clickNode.type=='VTLong' || clickNode.type=='VTDouble'" v-model="clickNode.inputValue" style="width:300px;display: inline-block;"></avue-input-number> |
| | | <avue-input v-else v-model="clickNode.inputValue" type="textarea" style="width: 300px;margin-right: 5px;vertical-align: top;"></avue-input> |
| | | </div> |
| | | <div class="dialog-footer avue-dialog__footer"> |
| | | <el-button size="small" @click="checkTemp" v-if="!['VTInteger','VTDouble','VTLong','VTDateTime','VTDate','VTTime'].includes(clickNode.type)">éæ©æ¥è¯¢æ¨¡æ¿</el-button> |
| | | <el-button type="primary" plain size="small" @click="submitDialog" >ä¿ å</el-button> |
| | | <el-button size="small" @click="dialog.showDialog=false">å æ¶</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog v-dialogDrag |
| | | :title="queryDialog.title" |
| | | :visible.sync="queryDialog.showDialog" |
| | | width="800px" |
| | | :append-to-body="true" |
| | | class="avue-dialog" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | @close="cancleQueryDialog"> |
| | | <div class="el-input--small"> |
| | | è¾å
¥æ¥è¯¢å段ï¼<avue-input v-model="queryField" style="width: 500px;margin-bottom: 10px"></avue-input> |
| | | <avue-crud ref="crud" :data="crudData" :option="crudOption" |
| | | :page.sync="page" |
| | | :table-loading="tableLoading" |
| | | @selection-change="selectionChange" |
| | | @row-click="rowClick" |
| | | @size-change="sizeChange" |
| | | @current-change="currentChange"> |
| | | </avue-crud> |
| | | </div> |
| | | <div class="dialog-footer avue-dialog__footer"> |
| | | <el-button type="primary" plain size="small" @click="submitQueryDialog" >ç¡® å®</el-button> |
| | | <el-button size="small" @click="cancleQueryDialog">å æ¶</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog v-dialogDrag |
| | | :title="queryResultDialog.title" |
| | | :visible.sync="queryResultDialog.showDialog" |
| | | width="900px" |
| | | :append-to-body="true" |
| | | class="avue-dialog" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | @close="queryResultDialog.showDialog='false'"> |
| | | <div class="el-input--small"> |
| | | <avue-crud ref="crud" :data="resultData" :option="resultOption" |
| | | :table-loading="queryResultDialog.loading"> |
| | | </avue-crud> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import basicOption from "@/util/basic-option"; |
| | | import {getAllQTs} from "@/api/queryTemplate/queryDefine"; |
| | | import {getCriteria} from "@/api/queryTemplate/linkTypeQuery"; |
| | | |
| | | export default { |
| | | name: "formQueryDialog", |
| | | props: { |
| | |
| | | type: Object, |
| | | default: {} |
| | | }, |
| | | levelFlag:{ |
| | | type: Number, |
| | | default: 0 |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | radioForm: 0, |
| | | dialog: { |
| | | showDialog: false, |
| | | title: "æ¥è¯¢æ¡ä»¶è®¾ç½®æ¡", |
| | | loading: false |
| | | }, |
| | | queryDialog: { |
| | | showDialog: false, |
| | | title: "éæ©æ¥è¯¢æ¨¡æ¿", |
| | | loading: false |
| | | }, |
| | | queryResultDialog: { |
| | | showDialog: false, |
| | | title: "æ¥è¯¢ç»æ", |
| | | loading: false |
| | | }, |
| | | radioDic: [{ |
| | | label: 'æ®é', |
| | | value: 0 |
| | |
| | | label: 'é«çº§', |
| | | value: 1 |
| | | }], |
| | | conditionList:this.queryCondition, |
| | | conditionList:[], |
| | | treeData:[], |
| | | treeOption:{ |
| | | defaultExpandAll:true, |
| | | menu: false, |
| | | addBtn: false, |
| | | filter:false, |
| | | draggable: true, |
| | | allowDrop: (draggingNode, dropNode, type) => { |
| | | debugger; |
| | | if (dropNode.data.label === 'å¹¶ä¸' || dropNode.data.label === 'æè
') { |
| | | return true; |
| | | } else { |
| | | this.$message.error('请éä¸é»è¾æ¡ä»¶æ·»å æ¥è¯¢é¡¹'); |
| | | return false; |
| | | } |
| | | }, |
| | | allowDrag: (draggingNode) => { |
| | | return false; |
| | | }, |
| | | }, |
| | | treeData:this.queryTree, |
| | | //VTIntegerãVTDoubleãVTLong |
| | | page: { |
| | | currentPage: 1, |
| | | pageSize: 10, |
| | | total: 0, |
| | | pageSizes: [10, 30, 50, 100], |
| | | }, |
| | | crudData:[], |
| | | crudOption: { |
| | | ...basicOption, |
| | | addBtn: false, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | tip: false, |
| | | header: false, |
| | | height: window.innerHeight-220, |
| | | menu: false, |
| | | column: [{ |
| | | label: 'æ¥è¯¢æ¨¡æ¿åç§°', |
| | | prop: 'qtName', |
| | | sortable: true, |
| | | }, { |
| | | label: '龿¥ç±»åæä¸å¡ç±»å', |
| | | prop: 'btmName', |
| | | sortable: true, |
| | | }] |
| | | }, |
| | | tableLoading: false, |
| | | selectionRow:[], |
| | | queryField:'', |
| | | resultData:[], |
| | | resultOption: { |
| | | ...basicOption, |
| | | addBtn: false, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | tip: false, |
| | | header: false, |
| | | height: window.innerHeight-220, |
| | | menu: false, |
| | | column: [{ |
| | | label: 'OID', |
| | | prop: 'OID', |
| | | }, { |
| | | label: 'CREATOR', |
| | | prop: 'CREATOR' |
| | | }, { |
| | | label: 'CREATETIME', |
| | | prop: 'CREATETIME' |
| | | }] |
| | | }, |
| | | clickNode:{}, |
| | | operatorIntDic:[{ |
| | | label:'=', |
| | | value:'=' |
| | | },{ |
| | | label:'!=', |
| | | value:'!=' |
| | | },{ |
| | | label:'å
å«', |
| | | value:'å
å«' |
| | | },{ |
| | | label:'in', |
| | | value:'in' |
| | | },{ |
| | | label:'not in', |
| | | value:'not in' |
| | | },{ |
| | | label:'>=', |
| | | value:'>=' |
| | | },{ |
| | | label:'>', |
| | | value:'>' |
| | | },{ |
| | | label:'<=', |
| | | value:'<=' |
| | | },{ |
| | | label:'<', |
| | | value:'<' |
| | | label: '=', |
| | | value: '=' |
| | | }, { |
| | | label: '!=', |
| | | value: '!=' |
| | | }, { |
| | | label: 'å
å«', |
| | | value: 'å
å«' |
| | | }, { |
| | | label: 'in', |
| | | value: 'in' |
| | | }, { |
| | | label: 'not in', |
| | | value: 'not in' |
| | | }, { |
| | | label: '>=', |
| | | value: '>=' |
| | | }, { |
| | | label: '>', |
| | | value: '>' |
| | | }, { |
| | | label: '<=', |
| | | value: '<=' |
| | | }, { |
| | | label: '<', |
| | | value: '<' |
| | | }], |
| | | //VTDateTimeãVTDateãVTTime |
| | | operatorTimeDic:[{ |
| | | label:'=', |
| | | value:'=' |
| | | },{ |
| | | label:'!=', |
| | | value:'!=' |
| | | },{ |
| | | label:'in', |
| | | value:'in' |
| | | },{ |
| | | label:'not in', |
| | | value:'not in' |
| | | },{ |
| | | label:'>=', |
| | | value:'>=' |
| | | },{ |
| | | label:'<=', |
| | | value:'<=' |
| | | operatorDateDic : [{ |
| | | label: '=', |
| | | value: '=' |
| | | }, { |
| | | label: '!=', |
| | | value: '!=' |
| | | }, { |
| | | label: 'in', |
| | | value: 'in' |
| | | }, { |
| | | label: 'not in', |
| | | value: 'not in' |
| | | }, { |
| | | label: '>=', |
| | | value: '>=' |
| | | }, { |
| | | label: '<=', |
| | | value: '<=' |
| | | }], |
| | | //å
¶å® |
| | | operatorDic:[{ |
| | | label:'=', |
| | | value:'=' |
| | | },{ |
| | | label:'!=', |
| | | value:'!=' |
| | | },{ |
| | | label:'å
å«', |
| | | value:'å
å«' |
| | | },{ |
| | | label:'in', |
| | | value:'in' |
| | | },{ |
| | | label:'not in', |
| | | value:'not in' |
| | | operatorDic : [{ |
| | | label: '=', |
| | | value: '=' |
| | | }, { |
| | | label: '!=', |
| | | value: '!=' |
| | | }, { |
| | | label: 'å
å«', |
| | | value: 'å
å«' |
| | | }, { |
| | | label: 'in', |
| | | value: 'in' |
| | | }, { |
| | | label: 'not in', |
| | | value: 'not in' |
| | | }] |
| | | } |
| | | }, |
| | | methods:{ |
| | | computed: { |
| | | radioForm:{ |
| | | get() { |
| | | return this.levelFlag; |
| | | }, |
| | | set(value) { |
| | | this.$emit('update:levelFlag', value); |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | queryCondition:{ |
| | | handler(val) { |
| | | if(val && val.cIMap){ |
| | | let list=[]; |
| | | let that=this; |
| | | let getValue =function(queryTemplate,item) { |
| | | for (let key in queryTemplate.condition.cIMap) { |
| | | if (queryTemplate.condition.cIMap[key].leaf) { |
| | | item.clause += '.' + queryTemplate.condition.cIMap[key].leafInfo.clause; |
| | | if (queryTemplate.condition.cIMap[key].leafInfo.value.queryTemplate) { |
| | | getValue(queryTemplate.condition.cIMap[key].leafInfo.value.queryTemplate, item) |
| | | } else { |
| | | item.ordinaryValue = queryTemplate.condition.cIMap[key].leafInfo.value.ordinaryValue; |
| | | item.type=queryTemplate.condition.cIMap[key].leafInfo.type; |
| | | if(['VTInteger','VTDouble','VTLong'].includes(item.type)){ |
| | | item.operatorDic=that.operatorIntDic; |
| | | }else if(['VTDateTime','VTDate','VTTime'].includes(item.type)){ |
| | | item.operatorDic=that.operatorDateDic; |
| | | }else{ |
| | | item.operatorDic=that.operatorDic; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | for (let key in val.cIMap) { |
| | | if (this.queryCondition.cIMap[key].leaf) { |
| | | let clause=this.queryCondition.cIMap[key].leafInfo.clause; |
| | | let operator= this.queryCondition.cIMap[key].leafInfo.operator; |
| | | let item={ |
| | | clause: clause, |
| | | operator: operator, |
| | | ordinaryValue: '', |
| | | operatorDic :[] |
| | | } |
| | | if(this.queryCondition.cIMap[key].leafInfo.value.queryTemplate) { |
| | | getValue(this.queryCondition.cIMap[key].leafInfo.value.queryTemplate, item) |
| | | }else { |
| | | item.ordinaryValue=this.queryCondition.cIMap[key].leafInfo.value.ordinaryValue; |
| | | item.type=this.queryCondition.cIMap[key].leafInfo.type; |
| | | if(['VTInteger','VTDouble','VTLong'].includes(item.type)){ |
| | | item.operatorDic=that.operatorIntDic; |
| | | }else if(['VTDateTime','VTDate','VTTime'].includes(item.type)){ |
| | | item.operatorDic=that.operatorDateDic; |
| | | }else{ |
| | | item.operatorDic=that.operatorDic; |
| | | } |
| | | } |
| | | list.push(item) |
| | | } |
| | | } |
| | | this.conditionList= list; |
| | | }else{ |
| | | this.conditionList=[] |
| | | } |
| | | }, |
| | | immediate: true, |
| | | deep:true |
| | | }, |
| | | queryTree:{ |
| | | handler(val) { |
| | | this.treeIndex=0; |
| | | if(val && Object.keys(val).length>0){ |
| | | let treeData = []; |
| | | let that=this; |
| | | function initValue(nodeChild) { |
| | | let children=[]; |
| | | if(nodeChild){ |
| | | nodeChild.forEach((item,index)=>{ |
| | | that.treeIndex++; |
| | | if(item.column !=null && item.column != undefined){ |
| | | children.push({ |
| | | label:item.column, |
| | | value:item.column+that.treeIndex, |
| | | type:item.type, |
| | | valueIndex:'v'+that.treeIndex |
| | | }) |
| | | }else { |
| | | children.push({ |
| | | label:item.connector, |
| | | value:item.connector+that.treeIndex, |
| | | valueIndex:'v'+that.treeIndex, |
| | | children:initValue(item.child) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | return children; |
| | | } |
| | | const node={ |
| | | label:val.connector, |
| | | value:val.connector+this.treeIndex, |
| | | valueIndex:'v'+this.treeIndex, |
| | | children:initValue(val.child) |
| | | } |
| | | treeData.push(node) |
| | | this.treeData = treeData; |
| | | }else { |
| | | this.treeData=[{ |
| | | label: 'å¹¶ä¸', |
| | | value: 'å¹¶ä¸' + this.treeIndex, |
| | | valueIndex: 'v' + this.treeIndex, |
| | | connector: 'å¹¶ä¸', |
| | | children: [] |
| | | }] |
| | | } |
| | | }, |
| | | immediate: true, |
| | | deep:true |
| | | } |
| | | }, |
| | | created() { |
| | | this.getTemp(); |
| | | }, |
| | | methods: { |
| | | // ææ½å°æ¶ |
| | | drop(event) { |
| | | // ä½¿ç¨ getData æ¹æ³è·åæ°æ® |
| | | const data = JSON.parse(event.dataTransfer.getData('item')); |
| | | const params = { |
| | | clause: data.value, |
| | | operator: '=', |
| | | ordinaryValue: '' |
| | | if (this.radioForm == 0) { |
| | | const params = { |
| | | clause: data.value, |
| | | operator: '=', |
| | | ordinaryValue: '' |
| | | } |
| | | if (data.atttributes.vtDataType == 'VTInteger' || data.atttributes.vtDataType == 'VTDouble' || data.atttributes.vtDataType == 'VTLong') { |
| | | params.operatorDic =JSON.parse(JSON.stringify(this.operatorIntDic)) ; |
| | | } else if (data.atttributes.vtDataType == 'VTDateTime' || data.atttributes.vtDataType == 'VTDate' || data.atttributes.vtDataType == 'VTTime') { |
| | | params.operatorDic = JSON.parse(JSON.stringify(this.operatorDateDic)) |
| | | } else { |
| | | params.operatorDic = JSON.parse(JSON.stringify(this.operatorDic)) |
| | | } |
| | | params.type=data.atttributes.vtDataType; |
| | | this.conditionList.push(params) |
| | | }else {debugger; |
| | | if (this.clickNode.label != 'å¹¶ä¸' && this.clickNode.label != 'æè
') { |
| | | this.$message.error('请éä¸é»è¾æ¡ä»¶æ·»å æ¥è¯¢é¡¹'); |
| | | return; |
| | | } |
| | | this.treeIndex++; |
| | | this.$refs.tree.append({ |
| | | label: data.value, |
| | | value: data.value + this.treeIndex, |
| | | valueIndex: 'v' + this.treeIndex, |
| | | children: [] |
| | | }, this.clickNode); |
| | | } |
| | | this.conditionList.push(params) |
| | | } |
| | | }, |
| | | handleDrop(draggingNode, dropNode, dropType, ev) { |
| | | debugger; |
| | | console.log('tree drop: ', dropNode.label, dropType); |
| | | }, |
| | | //å 餿®éæ¥è¯¢æ¡ä»¶ |
| | | delCondition(index) { |
| | | this.conditionList.splice(index, 1); |
| | | }, |
| | | //æ¸
ç©ºå¼ |
| | | clearValue() { |
| | | if (this.radioForm == 0) { |
| | | this.conditionList.map(item => { |
| | | item.ordinaryValue = ''; |
| | | return item; |
| | | }) |
| | | this.conditionList = this.conditionList |
| | | } else { |
| | | if(this.treeData[0] && this.treeData[0].children) { |
| | | this.clearTreeValue(this.treeData[0].children) |
| | | } |
| | | } |
| | | }, |
| | | clearTreeValue(nodes){ |
| | | nodes.forEach((node,index)=>{ |
| | | if(node.children){ |
| | | this.clearTreeValue(node.children) |
| | | }else { |
| | | let values=node.label.split(' '); |
| | | if(values.length>2){ |
| | | node.label=values[0]+' '+values[1]; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | //å é¤å
¨é¨æ¡ä»¶ |
| | | delAll() { |
| | | if (this.radioForm == 0) { |
| | | this.conditionList = []; |
| | | } else { |
| | | this.treeIndex = 0; |
| | | this.treeData = []; |
| | | this.clickNode={}; |
| | | } |
| | | }, |
| | | nodeClick(data) { |
| | | this.clickNode = data |
| | | }, |
| | | //æ å¢å é»è¾æ¡ä»¶ |
| | | addHandler() { |
| | | if (Object.keys(this.clickNode).length>0) { |
| | | if (this.clickNode.label == 'å¹¶ä¸' || this.clickNode.label == 'æè
') { |
| | | this.treeIndex++; |
| | | this.$refs.tree.append({ |
| | | label: 'å¹¶ä¸', |
| | | value: 'å¹¶ä¸' + this.treeIndex, |
| | | valueIndex: 'v' + this.treeIndex, |
| | | children: [] |
| | | }, this.$refs.tree.getCurrentNode()); |
| | | } else { |
| | | this.$message.error("åªè½å¯¹é»è¾æ¡ä»¶å¢å é»è¾æ¡ä»¶"); |
| | | } |
| | | } else { |
| | | if(this.treeData.length==0){ |
| | | this.treeIndex = 0; |
| | | this.treeData = [{ |
| | | label: 'å¹¶ä¸', |
| | | value: 'å¹¶ä¸' + this.treeIndex, |
| | | valueIndex: 'v' + this.treeIndex, |
| | | connector: 'å¹¶ä¸', |
| | | children: [] |
| | | }] |
| | | }else { |
| | | this.$message.warning("è¯·éæ©æ¥è¯¢æ¡ä»¶"); |
| | | } |
| | | } |
| | | }, |
| | | //æ ä¿®æ¹æ¡ä»¶ |
| | | editHandler() { |
| | | if (Object.keys(this.clickNode).length>0) { |
| | | if (this.clickNode.label == 'å¹¶ä¸') { |
| | | this.clickNode.label = 'æè
' |
| | | } else if (this.clickNode.label == 'æè
') { |
| | | this.clickNode.label = 'å¹¶ä¸' |
| | | } else { |
| | | const values= this.clickNode.label.split(' '); |
| | | this.clickNode.inputValue=''; |
| | | if(values.length>1){ |
| | | this.clickNode.operator=values[1]; |
| | | if(values.length>2){ |
| | | if(['VTDateTime','VTDate','VTTime'].includes(this.clickNode.type)){ |
| | | this.clickNode.inputValue=new Date(values[2]); |
| | | }else { |
| | | this.clickNode.inputValue=values[2]; |
| | | } |
| | | } |
| | | } |
| | | if(values[0].indexOf('.')!=-1){ |
| | | const labels=values[0].split('.') |
| | | this.clickNode.showLabel=labels[labels.length-1]; |
| | | }else { |
| | | this.clickNode.showLabel=values[0]; |
| | | } |
| | | this.dialog.showDialog = true; |
| | | } |
| | | } else { |
| | | this.$message.warning("è¯·éæ©æ¥è¯¢æ¡ä»¶"); |
| | | } |
| | | }, |
| | | //æ å 餿¡ä»¶ |
| | | delHandler() { |
| | | if (Object.keys(this.clickNode).length>0) { |
| | | this.$confirm('æ¨ç¡®å®è¦å é¤æéæ©çæ¡ä»¶åï¼', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$refs.tree.remove(this.clickNode); |
| | | this.clickNode = {}; |
| | | }) |
| | | } else { |
| | | this.$message.warning("è¯·éæ©æ¥è¯¢æ¡ä»¶"); |
| | | } |
| | | }, |
| | | //æ¥è¯¢ |
| | | queryHandler(){ |
| | | this.$parent.$parent.$parent.$parent.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | this.queryResultDialog.loading=true; |
| | | const formData=this.$parent.$parent.$parent.$parent.initFormData(); |
| | | getCriteria(formData).then(res => { |
| | | if (res.data.success) { |
| | | this.resultData=res.data.data; |
| | | this.queryResultDialog.showDialog=true; |
| | | this.queryResultDialog.loading=false; |
| | | } |
| | | }); |
| | | } else { |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | //éæ©æ¥è¯¢æ¨¡æ¿ |
| | | checkTemp(index) { |
| | | if(index>=0){ |
| | | if(['VTInteger','VTDouble','VTLong','VTDateTime','VTDate','VTTime'].includes(this.conditionList[index].type)){ |
| | | return false; |
| | | } |
| | | } |
| | | this.queryIndex=index; |
| | | this.queryDialog.showDialog=true; |
| | | this.$nextTick(()=>{ |
| | | this.$refs.crud.doLayout(); |
| | | }); |
| | | }, |
| | | //æ¥è¯¢æ¡ä»¶ä¿å |
| | | submitDialog() { |
| | | const values= this.clickNode.label.split(' '); |
| | | this.clickNode.label = values[0]+' '+this.clickNode.operator+' '+this.clickNode.inputValue; |
| | | this.dialog.showDialog = false; |
| | | }, |
| | | //è·åæ¥è¯¢æ¨¡æ¿å表 |
| | | getTemp() { |
| | | getAllQTs(this.page.currentPage, this.page.pageSize).then(res => { |
| | | this.crudData = res.data.data; |
| | | this.tableLoading = false; |
| | | }) |
| | | }, |
| | | rowClick(row) { |
| | | this.$refs.crud.toggleSelection(); |
| | | this.$refs.crud.toggleRowSelection(row); //éä¸å½åè¡ |
| | | this.selectionRow = [row]; |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionRow = list; |
| | | }, |
| | | selectionClear() { |
| | | this.selectionRow = []; |
| | | this.$refs.crud.toggleSelection(); |
| | | }, |
| | | //éæ©æ¥è¯¢æ¨¡æ¿ |
| | | submitQueryDialog() { |
| | | if (this.selectionRow.length == 0) { |
| | | this.$message.error('è¯·éæ©æ¥è¯¢æ¨¡æ¿åè¿è¡æä½'); |
| | | return; |
| | | } |
| | | if (this.queryField == '') { |
| | | this.$message.error('请填åè¾å
¥æ¥è¯¢å段'); |
| | | return; |
| | | } |
| | | const value = this.selectionRow[0].qtName + ';' + this.queryField |
| | | if (this.radioForm == 0) { |
| | | //æ®é |
| | | this.conditionList[this.queryIndex].ordinaryValue = value; |
| | | } else { |
| | | this.clickNode.inputValue = value; |
| | | } |
| | | this.cancleQueryDialog(); |
| | | }, |
| | | cancleQueryDialog(){ |
| | | this.queryDialog.showDialog = false; |
| | | this.selectionClear(); |
| | | this.queryField=''; |
| | | this.queryIndex=null; |
| | | }, |
| | | sizeChange(val) { |
| | | this.page.pageSize = val; |
| | | this.getTemp(); |
| | | }, |
| | | |
| | | // 页ç |
| | | currentChange(val) { |
| | | this.page.currentPage = val; |
| | | this.getTemp(); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | |
| | | }, { |
| | | label: 'æ¹å', |
| | | prop: 'direction', |
| | | width:80, |
| | | formatter:function (row, value) { |
| | | if (row.queryTemplate.direction == 'positive') { |
| | | return 'æ£å' |
| | |
| | | }, { |
| | | label: 'ä¸å¡ç±»å', |
| | | prop: 'btmType', |
| | | width: 130, |
| | | formatter:function (row, value) { |
| | | return row.queryTemplate.btmType; |
| | | } |
| | |
| | | }, { |
| | | label: 'æ¥è¯¢æ¯å¦æä¸çº§', |
| | | prop: 'queryISLeaf', |
| | | width: 120, |
| | | formatter:function (row, value) { |
| | | return row.queryTemplate.queryISLeaf |
| | | } |
| | | }, { |
| | | label: 'åèç¹å±æ¬¡æ°', |
| | | prop: 'level', |
| | | width: 100, |
| | | formatter:function (row, value) { |
| | | return row.queryTemplate.level; |
| | | } |
| | |
| | | } |
| | | this.$refs.formRef.openDialog(this.nodeRow.label,'ä¿®æ¹','edit',{treeData:this.nodeRow,selectData:this.selectionRow[0]}); |
| | | this.$nextTick(()=>{ |
| | | debugger; |
| | | this.$refs.formRef.formItems[0].disabled = true; |
| | | this.$refs.formRef.$refs.form.getInit(this.$refs.formRef.formItems) |
| | | }); |