| | |
| | | <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> |
| | | <avue-radio v-model="radioForm" :dic="radioDic" :disabled="readOnly" |
| | | style="margin: 0 20px 0 0;display: inline-block"></avue-radio> |
| | | <el-button v-if="!readOnly" plain size="mini" type="primary" @click="clearValue">清空值</el-button> |
| | | <el-button v-if="!readOnly" 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"> |
| | | <div v-if="radioForm==0" style="height: calc(100% - 75px);text-align: center;" @drop="drop" @dragover.prevent> |
| | | <div v-for="(condition,index) in conditionList" :key="index" class="el-input--small" |
| | | style="margin-bottom: 5px; text-align:left"> |
| | | <span :title="condition.clause" |
| | | style="width: 32%;display: inline-block;text-align: right;word-break: break-all">{{ condition.clause }}</span> |
| | | <avue-select v-model="condition.operator" :clearable="false" :dic="condition.operatorDic" :disabled="readOnly" |
| | | style="width: 80px;margin: 0 5px;" type="tree"></avue-select> |
| | | <el-date-picker v-if="condition.type=='VTDate'" v-model="condition.ordinaryValue" :disabled="readOnly" |
| | | style="width:36%;margin-right: 5px;display: inline-block;" type="date" |
| | | value-format="YYYY-MM-DD"> |
| | | </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;" |
| | | <el-date-picker v-else-if="condition.type=='VTDateTime'" v-model="condition.ordinaryValue" :disabled="readOnly" |
| | | style="width:36%;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 v-else-if="condition.type=='VTTime'" v-model="condition.ordinaryValue" :disabled="readOnly" |
| | | style="width:36%;margin-right: 5px;display: inline-block;" value-format="HH:mm:ss"> |
| | | </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> |
| | | <!--<avue-input-number v-else-if="condition.type=='VTInteger'" v-model="condition.ordinaryValue" |
| | | :disabled="readOnly" |
| | | precision="0" |
| | | 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" |
| | | :disabled="readOnly" |
| | | style="width:300px;margin-right: 5px;display: inline-block;"></avue-input-number> |
| | | <avue-input v-else v-model="condition.ordinaryValue" :disabled="readOnly" placeholder="" |
| | | style="width: 300px;margin-right: 5px;"></avue-input>--> |
| | | <avue-input v-else v-model="condition.ordinaryValue" :disabled="readOnly" placeholder="" |
| | | style="width: 36%;margin-right: 5px;"></avue-input> |
| | | <el-button v-if="!readOnly" plain size="mini" type="primary" @click="checkTemp(index)">选择查询模板</el-button> |
| | | <el-button v-if="!readOnly" icon="el-icon-delete" size="mini" style="padding: 7px 8px" type="danger" |
| | | @click="delCondition(index)"></el-button> |
| | | </div> |
| | | </div> |
| | | <div v-else @drop="drop" @dragover.prevent style="height: 220px;text-align: left"> |
| | | <avue-tree ref="tree" @node-drag-end="handleDragEnd" @node-drag-leave="handleDragLeave" @node-drag-over="handleDragOver" |
| | | style="height: 220px" :data="treeData" :option="treeOption" @node-click="nodeClick" node-key="value"></avue-tree> |
| | | <div v-else style="height: 220px;text-align: left" @drop="drop" @dragover.prevent> |
| | | <avue-tree ref="tree" :data="treeData" :option="treeOption" |
| | | node-key="value" |
| | | style="height: 220px" @node-drag-end="handleDragEnd" @node-drag-leave="handleDragLeave" |
| | | @node-drag-over="handleDragOver" |
| | | @node-click="nodeClick"></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 v-if="!readOnly" style="text-align: right;margin-top: 10px;"> |
| | | <el-button v-show="radioForm==1" plain size="mini" type="primary" @click="addHandler">增加逻辑</el-button> |
| | | <el-button v-show="radioForm==1" plain size="mini" type="primary" @click="editHandler">修改条件</el-button> |
| | | <el-button v-show="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 |
| | | :append-to-body="true" |
| | | :close-on-click-modal="false" |
| | | :destroy-on-close="true" |
| | | :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" |
| | | width="550px" |
| | | @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"> |
| | | {{ clickNode.showLabel }} |
| | | <avue-select v-if="['VTInteger','VTDouble','VTLong'].includes(clickNode.type)" v-model="clickNode.operator" |
| | | :clearable="false" :dic="operatorIntDic" style="width: 80px;margin: 0 5px;" |
| | | type="tree"></avue-select> |
| | | <avue-select v-else-if="['VTDateTime','VTDate','VTTime'].includes(clickNode.type)" v-model="clickNode.operator" |
| | | :clearable="false" :dic="operatorDateDic" style="width: 80px;margin: 0 5px;" |
| | | type="tree"></avue-select> |
| | | <avue-select v-else v-model="clickNode.operator" :clearable="false" :dic="operatorDic" |
| | | style="width: 80px;margin: 0 5px;" |
| | | type="tree"></avue-select> |
| | | <el-date-picker v-if="clickNode.type=='VTDate'" v-model="clickNode.inputValue" |
| | | style="width:300px;display: inline-block;" type="date" |
| | | value-format="YYYY-MM-DD"> |
| | | </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 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 v-else-if="clickNode.type=='VTTime'" v-model="clickNode.inputValue" |
| | | style="width:300px;display: inline-block;" |
| | | value-format="HH:mm:ss"> |
| | | </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> |
| | | <avue-input-number v-else-if="clickNode.type=='VTInteger'" v-model="clickNode.inputValue" precision="0" |
| | | 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" style="width: 300px;margin-right: 5px;vertical-align: top;" |
| | | type="textarea"></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 v-if="!['VTInteger','VTDouble','VTLong','VTDateTime','VTDate','VTTime'].includes(clickNode.type)" |
| | | size="small" |
| | | @click="checkTemp"> |
| | | 选择查询模板 |
| | | </el-button> |
| | | <el-button plain size="small" type="primary" @click="submitDialog">保 存</el-button> |
| | | <el-button size="small" @click="dialog.showDialog=false">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog v-dialogDrag |
| | | :append-to-body="true" |
| | | :close-on-click-modal="false" |
| | | :destroy-on-close="true" |
| | | :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" |
| | | width="800px" |
| | | @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-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 plain size="small" type="primary" @click="submitQueryDialog">确 定</el-button> |
| | | <el-button size="small" @click="cancleQueryDialog">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <!--查询--> |
| | | <el-dialog v-dialogDrag |
| | | :append-to-body="true" |
| | | :close-on-click-modal="false" |
| | | :destroy-on-close="true" |
| | | :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" |
| | | width="900px" |
| | | @close="queryResultDialog.showDialog=false"> |
| | | <div class="el-input--small"> |
| | | <avue-crud ref="crud" :data="resultData" :option="resultOption" |
| | | :table-loading="queryResultDialog.loading"> |
| | | <avue-crud ref="crud" :data="resultData" :option="resultOption" |
| | | :table-loading="queryResultDialog.loading"> |
| | | </avue-crud> |
| | | </div> |
| | | </el-dialog> |
| | |
| | | <script> |
| | | import basicOption from "@/util/basic-option"; |
| | | import {getAllQTs} from "@/api/queryTemplate/queryDefine"; |
| | | import {getCriteria} from "@/api/queryTemplate/linkTypeQuery"; |
| | | import {dateFormat} from "@/util/date" |
| | | |
| | | export default { |
| | | name: "formQueryDialog", |
| | | name: "formQueryDialog", |
| | | props: { |
| | | queryCondition: { |
| | | type: Array, |
| | |
| | | type: Object, |
| | | default: {} |
| | | }, |
| | | levelFlag:{ |
| | | levelFlag: { |
| | | type: Number, |
| | | default: 0 |
| | | } |
| | | }, |
| | | readOnly: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | searchColumn: { |
| | | type: Array, |
| | | default: [ |
| | | { |
| | | label: 'OID', |
| | | prop: 'OID', |
| | | }, |
| | | { |
| | | label: 'CREATOR', |
| | | prop: 'CREATOR' |
| | | }, |
| | | { |
| | | label: 'CREATETIME', |
| | | prop: 'CREATETIME' |
| | | }, |
| | | ] |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | label: '高级', |
| | | value: 1 |
| | | }], |
| | | conditionList:[], |
| | | treeData:[], |
| | | treeOption:{ |
| | | defaultExpandAll:true, |
| | | conditionList: [], |
| | | treeData: [], |
| | | treeOption: { |
| | | defaultExpandAll: true, |
| | | menu: false, |
| | | addBtn: false, |
| | | filter:false, |
| | | filter: false, |
| | | draggable: true, |
| | | allowDrop: (draggingNode, dropNode, type) => { |
| | | debugger; |
| | |
| | | total: 0, |
| | | pageSizes: [10, 30, 50, 100], |
| | | }, |
| | | crudData:[], |
| | | crudData: [], |
| | | crudOption: { |
| | | ...basicOption, |
| | | addBtn: false, |
| | |
| | | delBtn: false, |
| | | tip: false, |
| | | header: false, |
| | | height: window.innerHeight-220, |
| | | height: window.innerHeight - 220, |
| | | menu: false, |
| | | column: [{ |
| | | label: '查询模板名称', |
| | |
| | | }] |
| | | }, |
| | | tableLoading: false, |
| | | selectionRow:[], |
| | | queryField:'', |
| | | resultData:[], |
| | | selectionRow: [], |
| | | queryField: '', |
| | | resultData: [], |
| | | resultOption: { |
| | | ...basicOption, |
| | | addBtn: false, |
| | |
| | | delBtn: false, |
| | | tip: false, |
| | | header: false, |
| | | height: window.innerHeight-220, |
| | | height: window.innerHeight - 220, |
| | | menu: false, |
| | | column: [{ |
| | | label: 'OID', |
| | | prop: 'OID', |
| | | }, { |
| | | label: 'CREATOR', |
| | | prop: 'CREATOR' |
| | | }, { |
| | | label: 'CREATETIME', |
| | | prop: 'CREATETIME' |
| | | }] |
| | | column: this.searchColumn |
| | | }, |
| | | clickNode:{}, |
| | | operatorIntDic:[{ |
| | | clickNode: {}, |
| | | operatorIntDic: [{ |
| | | label: '=', |
| | | value: '=' |
| | | }, { |
| | |
| | | label: '<', |
| | | value: '<' |
| | | }], |
| | | operatorDateDic : [{ |
| | | operatorDateDic: [{ |
| | | label: '=', |
| | | value: '=' |
| | | }, { |
| | |
| | | label: '<=', |
| | | value: '<=' |
| | | }], |
| | | operatorDic : [{ |
| | | operatorDic: [{ |
| | | label: '=', |
| | | value: '=' |
| | | }, { |
| | |
| | | } |
| | | }, |
| | | computed: { |
| | | radioForm:{ |
| | | radioForm: { |
| | | get() { |
| | | return this.levelFlag; |
| | | }, |
| | |
| | | } |
| | | }, |
| | | watch: { |
| | | queryCondition:{ |
| | | 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; |
| | | if (val && val.cIMap) { |
| | | let list = []; |
| | | let that = this; |
| | | let getValue = function (queryTemplate, item) { |
| | | if(queryTemplate.id.indexOf('qt_')==0){ |
| | | item.clause += '.' + queryTemplate.condition.cIMap['ci1'].leafInfo.clause; |
| | | item.ordinaryValue = queryTemplate.condition.cIMap['ci1'].leafInfo.value.ordinaryValue; |
| | | item.type = queryTemplate.condition.cIMap['ci1'].leafInfo.type; |
| | | }else { |
| | | item.ordinaryValue = queryTemplate.id+';'+queryTemplate.clauseList.join(','); |
| | | /*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={ |
| | | let clause = this.queryCondition.cIMap[key].leafInfo.clause; |
| | | let operator = this.queryCondition.cIMap[key].leafInfo.operator; |
| | | let item = { |
| | | clause: clause, |
| | | operator: operator, |
| | | ordinaryValue: '', |
| | | operatorDic :[] |
| | | 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; |
| | | 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=[] |
| | | this.conditionList = list; |
| | | } else { |
| | | this.conditionList = [] |
| | | } |
| | | }, |
| | | immediate: true, |
| | | deep:true |
| | | deep: true |
| | | }, |
| | | queryTree:{ |
| | | queryTree: { |
| | | handler(val) { |
| | | this.treeIndex=0; |
| | | if(val && Object.keys(val).length>0){ |
| | | this.treeIndex = 0; |
| | | if (val && Object.keys(val).length > 0) { |
| | | let treeData = []; |
| | | let that=this; |
| | | let that = this; |
| | | |
| | | function initValue(nodeChild) { |
| | | let children=[]; |
| | | if(nodeChild){ |
| | | nodeChild.forEach((item,index)=>{ |
| | | let children = []; |
| | | if (nodeChild) { |
| | | nodeChild.forEach((item, index) => { |
| | | that.treeIndex++; |
| | | if(item.column !=null && item.column != undefined){ |
| | | const values= item.column.split(' '); |
| | | let inputValue=''; |
| | | let operator=''; |
| | | let showLabel='' |
| | | if(item.column.indexOf('not in')!=-1){ |
| | | operator='not in'; |
| | | if(values.length>3){ |
| | | inputValue=values[3]; |
| | | if (item.column != null && item.column != undefined) { |
| | | const values = item.column.split(' '); |
| | | let inputValue = ''; |
| | | let operator = ''; |
| | | let showLabel = '' |
| | | if (item.column.indexOf('not in') != -1) { |
| | | operator = 'not in'; |
| | | if (values.length > 3) { |
| | | inputValue = values[3]; |
| | | } |
| | | }else{ |
| | | if(values.length>1){ |
| | | operator=values[1]; |
| | | if(values.length>2){ |
| | | inputValue=values[2]; |
| | | } else { |
| | | if (values.length > 1) { |
| | | operator = values[1]; |
| | | if (values.length > 2) { |
| | | inputValue = values[2]; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if(values[0].indexOf('.')!=-1){ |
| | | const labels=values[0].split('.') |
| | | showLabel=labels[labels.length-1]; |
| | | }else { |
| | | showLabel=values[0]; |
| | | if (values[0].indexOf('.') != -1) { |
| | | const labels = values[0].split('.') |
| | | showLabel = labels[labels.length - 1]; |
| | | } else { |
| | | showLabel = values[0]; |
| | | } |
| | | children.push({ |
| | | label:item.column, |
| | | value:item.column+that.treeIndex, |
| | | type:item.type, |
| | | valueIndex:'v'+that.treeIndex, |
| | | inputValue:inputValue, |
| | | operator:operator, |
| | | showLabel:showLabel |
| | | label: item.column, |
| | | value: item.column + that.treeIndex, |
| | | type: item.type, |
| | | valueIndex: 'v' + that.treeIndex, |
| | | inputValue: inputValue, |
| | | operator: operator, |
| | | showLabel: showLabel |
| | | }) |
| | | }else { |
| | | } else { |
| | | children.push({ |
| | | label:item.connector, |
| | | value:item.connector+that.treeIndex, |
| | | valueIndex:'v'+that.treeIndex, |
| | | children:initValue(item.child) |
| | | 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) |
| | | |
| | | 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=[{ |
| | | } else { |
| | | this.treeData = [{ |
| | | label: '并且', |
| | | value: '并且' + this.treeIndex, |
| | | valueIndex: 'v' + this.treeIndex, |
| | |
| | | } |
| | | }, |
| | | immediate: true, |
| | | deep:true |
| | | deep: true |
| | | } |
| | | }, |
| | | created() { |
| | | this.getTemp(); |
| | | if (!this.readOnly) { |
| | | this.getTemp(); |
| | | } |
| | | }, |
| | | methods: { |
| | | // 拖拽到时 |
| | |
| | | ordinaryValue: '' |
| | | } |
| | | if (data.vtDataType == 'VTInteger' || data.vtDataType == 'VTDouble' || data.vtDataType == 'VTLong') { |
| | | params.operatorDic =JSON.parse(JSON.stringify(this.operatorIntDic)) ; |
| | | params.operatorDic = JSON.parse(JSON.stringify(this.operatorIntDic)); |
| | | } else if (data.vtDataType == 'VTDateTime' || data.vtDataType == 'VTDate' || data.vtDataType == 'VTTime') { |
| | | params.operatorDic = JSON.parse(JSON.stringify(this.operatorDateDic)) |
| | | } else { |
| | | params.operatorDic = JSON.parse(JSON.stringify(this.operatorDic)) |
| | | } |
| | | params.type=data.vtDataType; |
| | | params.type = data.vtDataType; |
| | | this.conditionList.push(params) |
| | | }else { |
| | | } else { |
| | | if (this.clickNode.label != '并且' && this.clickNode.label != '或者') { |
| | | this.$message.error('请选中逻辑条件添加查询项'); |
| | | return; |
| | |
| | | this.$refs.tree.append(this.initItem(data), this.clickNode); |
| | | } |
| | | }, |
| | | initItem(data){ |
| | | initItem(data) { |
| | | this.treeIndex++; |
| | | let item={ |
| | | let item = { |
| | | label: data.name, |
| | | value: data.name + this.treeIndex, |
| | | valueIndex: 'v' + this.treeIndex, |
| | | type:data.vtDataType, |
| | | type: data.vtDataType, |
| | | children: [], |
| | | inputValue:'', |
| | | operator:'=', |
| | | showLabel:data.name |
| | | inputValue: '', |
| | | operator: '=', |
| | | showLabel: data.name |
| | | }; |
| | | let showLabel=''; |
| | | if(data.name.indexOf('.')!=-1){ |
| | | const labels=data.name.split('.') |
| | | showLabel=labels[labels.length-1]; |
| | | }else { |
| | | showLabel=data.name; |
| | | let showLabel = ''; |
| | | if (data.name.indexOf('.') != -1) { |
| | | const labels = data.name.split('.') |
| | | showLabel = labels[labels.length - 1]; |
| | | } else { |
| | | showLabel = data.name; |
| | | } |
| | | item.showLabel=showLabel; |
| | | item.showLabel = showLabel; |
| | | return item |
| | | }, |
| | | handleDragEnd(draggingNode, dropNode, dropType, ev) { |
| | | debugger; |
| | | console.log('tree drag end: ', dropNode && dropNode.label, dropType); |
| | | }, |
| | | handleDragOver({event}) { |
| | |
| | | }) |
| | | this.conditionList = this.conditionList |
| | | } else { |
| | | if(this.treeData[0] && this.treeData[0].children) { |
| | | if (this.treeData[0] && this.treeData[0].children) { |
| | | this.clearTreeValue(this.treeData[0].children) |
| | | } |
| | | } |
| | | }, |
| | | clearTreeValue(nodes){ |
| | | nodes.forEach((node,index)=>{ |
| | | if(node.children){ |
| | | clearTreeValue(nodes) { |
| | | nodes.forEach((node, index) => { |
| | | if (node.children) { |
| | | this.clearTreeValue(node.children) |
| | | }else { |
| | | if(node.label.indexOf('not in')!=-1){ |
| | | node.label=node.label.split(' ')[0]+' not in' |
| | | }else { |
| | | } else { |
| | | if (node.label.indexOf('not in') != -1) { |
| | | node.label = node.label.split(' ')[0] + ' not in' |
| | | } else { |
| | | let values = node.label.split(' '); |
| | | if (values.length > 2) { |
| | | node.label = values[0] + ' ' + values[1]; |
| | |
| | | } else { |
| | | this.treeIndex = 0; |
| | | this.treeData = []; |
| | | this.clickNode={}; |
| | | this.clickNode = {}; |
| | | } |
| | | }, |
| | | nodeClick(data) { |
| | |
| | | }, |
| | | //树 增加逻辑条件 |
| | | addHandler() { |
| | | if (Object.keys(this.clickNode).length>0) { |
| | | if (Object.keys(this.clickNode).length > 0) { |
| | | if (this.clickNode.label == '并且' || this.clickNode.label == '或者') { |
| | | this.treeIndex++; |
| | | this.$refs.tree.append({ |
| | |
| | | this.$message.error("只能对逻辑条件增加逻辑条件"); |
| | | } |
| | | } else { |
| | | if(this.treeData.length==0){ |
| | | if (this.treeData.length == 0) { |
| | | this.treeIndex = 0; |
| | | this.treeData = [{ |
| | | label: '并且', |
| | |
| | | connector: '并且', |
| | | children: [] |
| | | }] |
| | | }else { |
| | | } else { |
| | | this.$message.warning("请选择查询条件"); |
| | | } |
| | | } |
| | | }, |
| | | //树 修改条件 |
| | | editHandler() { |
| | | if (Object.keys(this.clickNode).length>0) { |
| | | if (Object.keys(this.clickNode).length > 0) { |
| | | if (this.clickNode.label == '并且') { |
| | | this.clickNode.label = '或者' |
| | | } else if (this.clickNode.label == '或者') { |
| | |
| | | }, |
| | | //树 删除条件 |
| | | delHandler() { |
| | | if (Object.keys(this.clickNode).length>0) { |
| | | if (Object.keys(this.clickNode).length > 0) { |
| | | this.$confirm('您确定要删除所选择的条件吗?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | |
| | | } |
| | | }, |
| | | //查询 |
| | | queryHandler(){ |
| | | queryHandler() { |
| | | this.$emit('queryHandler'); |
| | | }, |
| | | //选择查询模板 |
| | | checkTemp(index) { |
| | | if(index>=0){ |
| | | if(['VTInteger','VTDouble','VTLong','VTDateTime','VTDate','VTTime'].includes(this.conditionList[index].type)){ |
| | | if (index >= 0) { |
| | | if (['VTDateTime', 'VTDate', 'VTTime'].includes(this.conditionList[index].type)) { |
| | | this.$message.warning("该属性类型不能选择查询模板"); |
| | | return false; |
| | | } |
| | | } |
| | | this.queryIndex=index; |
| | | this.queryDialog.showDialog=true; |
| | | this.$nextTick(()=>{ |
| | | 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; |
| | | try{ |
| | | if(['VTDateTime'].includes(this.clickNode.type)){ |
| | | this.clickNode.label = values[0]+' '+this.clickNode.operator+' '+dateFormat(this.clickNode.inputValue); |
| | | }else if(['VTDate'].includes(this.clickNode.type)){ |
| | | this.clickNode.label = values[0]+' '+this.clickNode.operator+' '+dateFormat(this.clickNode.inputValue ,'yyyy-MM-dd'); |
| | | }else if(['VTTime'].includes(this.clickNode.type)){ |
| | | this.clickNode.label = values[0]+' '+this.clickNode.operator+' '+dateFormat(this.clickNode.inputValue ,'hh:mm:ss'); |
| | | const values = this.clickNode.label.split(' '); |
| | | this.clickNode.label = values[0] + ' ' + this.clickNode.operator + ' ' + this.clickNode.inputValue; |
| | | try { |
| | | if (['VTDateTime'].includes(this.clickNode.type)) { |
| | | this.clickNode.label = values[0] + ' ' + this.clickNode.operator + ' ' + dateFormat(this.clickNode.inputValue); |
| | | } else if (['VTDate'].includes(this.clickNode.type)) { |
| | | this.clickNode.label = values[0] + ' ' + this.clickNode.operator + ' ' + dateFormat(this.clickNode.inputValue, 'yyyy-MM-dd'); |
| | | } else if (['VTTime'].includes(this.clickNode.type)) { |
| | | this.clickNode.label = values[0] + ' ' + this.clickNode.operator + ' ' + dateFormat(this.clickNode.inputValue, 'hh:mm:ss'); |
| | | } |
| | | }catch (e) { |
| | | } catch (e) { |
| | | |
| | | } |
| | | |
| | |
| | | } |
| | | this.cancleQueryDialog(); |
| | | }, |
| | | cancleQueryDialog(){ |
| | | cancleQueryDialog() { |
| | | this.queryDialog.showDialog = false; |
| | | this.selectionClear(); |
| | | this.queryField=''; |
| | | this.queryIndex=null; |
| | | this.queryField = ''; |
| | | this.queryIndex = null; |
| | | }, |
| | | sizeChange(val) { |
| | | this.page.pageSize = val; |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | ::v-deep .el-input--small .el-input__inner{ |
| | | height: 28px; |
| | | line-height: 28px; |
| | | <style lang="scss" scoped> |
| | | ::v-deep { |
| | | .el-input--small .el-input__inner { |
| | | height: 28px; |
| | | line-height: 28px; |
| | | } |
| | | |
| | | .el-radio { |
| | | margin-right: 30px; |
| | | } |
| | | } |
| | | </style> |