From 3216dd138838db1a0c1c7a918a8160321004987b Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 03 十二月 2024 16:29:35 +0800
Subject: [PATCH] 表单定义日期类型样式更改
---
Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue | 520 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 504 insertions(+), 16 deletions(-)
diff --git a/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue b/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue
index b2eb1c6..cb054cb 100644
--- a/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue
+++ b/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue
@@ -1,27 +1,133 @@
<template>
- <div style="padding: 10px 0">
- <el-tabs tab-position="left" :style="'height: '+height+';'">
- <el-tab-pane label="涓讳綋">
- <fieldset>
- <legend> 涓婚 </legend>
- <div>
- <div v-if="!readOnly">
- <el-button plain size="mini" type="primary" @click="userHandler">閫変腑鐢ㄦ埛</el-button>
- <el-button plain size="mini" type="primary" @click="roleHandler">閫夋嫨瑙掕壊</el-button>
- <el-button plain size="mini" type="primary" @click="deptHandler">閫夋嫨鐢ㄦ埛缁�</el-button>
+ <div>
+ <el-tabs tab-position="left" :style="'height: '+height+'px;'">
+ <el-tab-pane>
+ <span slot="label"><i class="el-icon-s-custom"></i> 涓讳綋</span>
+ <div v-if="!readOnly" style="margin-bottom: 10px;">
+ <el-button plain size="mini" type="primary" @click="userHandler">閫夋嫨鐢ㄦ埛</el-button>
+ <el-button plain size="mini" type="primary" @click="roleHandler">閫夋嫨瑙掕壊</el-button>
+ <el-button plain size="mini" type="primary" @click="deptHandler">閫夋嫨鐢ㄦ埛缁�</el-button>
+ </div>
+ <div v-if="!readOnly" style="display: flex;justify-content: space-between;align-items: center;">
+ <fieldset style="width: 48%">
+ <legend> 涓讳綋 </legend>
+ <div>
+ <avue-crud ref="mainCrud" :data="mainData" :option="mainOption">
+ <template #type="{ row }">
+ <el-tag v-if="row.type=='鐢ㄦ埛'" :key="row.oid" effect="dark">{{ row.type }}</el-tag>
+ <el-tag v-else-if="row.type=='瑙掕壊'" type="info" :key="row.oid" effect="dark">{{ row.type }}</el-tag>
+ <el-tag v-else="row.type=='閮ㄩ棬'" type="warning" :key="row.oid" effect="dark">{{ row.type }}</el-tag>
+ </template>
+ </avue-crud>
</div>
+ </fieldset>
+ <div style="text-align: center;">
+ <el-button icon="el-icon-arrow-right" size="mini" @click="rightHandler" style="margin-bottom: 50px;"></el-button><br/>
+ <el-button icon="el-icon-arrow-left" size="mini" @click="leftHandler"></el-button>
+ </div>
+ <fieldset style="width: 42%">
+ <legend> 鎺堟潈涓讳綋 </legend>
+ <div>
+ <avue-crud ref="authCrud" :data="authData" :option="authOption" :table-loading="tableLoading">
+ </avue-crud>
+ </div>
+ </fieldset>
+ </div>
+ <div v-else>
+ <fieldset style="width: 99.5%">
+ <legend> 鎺堟潈涓讳綋 </legend>
+ <div>
+ <avue-crud ref="authCrud" :data="authData" :option="authOption" :table-loading="tableLoading">
+ </avue-crud>
+ </div>
+ </fieldset>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane>
+ <span slot="label"><i class="el-icon-eleme"></i> 瀹綋</span>
+ <div>
+ <basic-form key="queryForm" style="margin-bottom: 0"
+ ref="form"
+ :span="8"
+ :formItems="formItems"
+ :formData="form"
+ @getFormData="getFormData">
+ </basic-form>
+ <el-container v-if="!readOnly">
+ <el-aside style="width:350px">
+ <fieldset>
+ <legend> 鍊欓�夋潯浠� </legend>
+ <div>
+ <avue-radio v-model="radioForm" :dic="radioDic" style="margin: 0 10px 5px"></avue-radio>
+ <div v-show="radioForm==1">
+ 鏌ヨ妯℃澘瀹氫箟
+ <avue-select @change="linkQueryDefineChange" class="el-input--small" v-model="linkQueryDefineForm" placeholder="璇烽�夋嫨鍐呭" type="tree" :dic="linkQueryDefineDic" style="width:245px"></avue-select>
+ <avue-tree :style="'width:335px;height: '+(height-155)+'px;'" :data="linkTreeData" :option="treeOption" @node-drag-start="handleDragStart" @node-drag-end="handleDragEnd">
+ </avue-tree>
+ </div>
+ <div v-show="radioForm==0">
+ 鏌ヨ妯℃澘瀹氫箟
+ <avue-select @change="businessQueryDefineChange" class="el-input--small" v-model="businessQueryDefineForm" placeholder="璇烽�夋嫨鍐呭" type="tree" :dic="businessQueryDefineDic" style="width: 245px;"></avue-select>
+ <avue-tree :style="'width:335px;height: '+(height-155)+'px;'" :data="businessTreeData" :option="treeOption" @node-drag-start="handleDragStart" @node-drag-end="handleDragEnd">
+ </avue-tree>
+ </div>
+ </div>
+ </fieldset>
+ </el-aside>
+ <el-main>
+ <fieldset style="margin: 0 10px">
+ <legend> 鏌ヨ鏉′欢 </legend>
+ <form-query-dialog ref="formQuery"
+ :style="'height: '+(height-100)+'px;'"
+ :queryCondition="queryCondition"
+ :queryTree="queryTree"
+ :levelFlag.sync="form.levelFlag"
+ @queryHandler="queryHandler"
+ ></form-query-dialog>
+ </fieldset>
+ </el-main>
+ </el-container>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane>
+ <span slot="label"><i class="el-icon-s-tools"></i> 鎿嶄綔</span>
+ <fieldset :style="'width:99.5%;height: '+(height/2+20)+'px;margin-bottom:10px;'">
+ <legend> 涓�鑸搷浣� </legend>
+ <div>
+ <avue-checkbox :disabled="readOnly" key="actionCheck" :all="!readOnly" v-model="actionForm" placeholder="璇烽�夋嫨鍐呭" :dic="actionDic"></avue-checkbox>
+ </div>
+ </fieldset>
+ <fieldset :style="'width:99.5%;height: '+(height/2-30)+'px;'">
+ <legend> 鍏崇郴鍜岃穬杩� </legend>
+ <div>
+ <avue-checkbox :disabled="readOnly" key="linkActionCheck" :all="!readOnly" v-model="linkactionForm" placeholder="璇烽�夋嫨鍐呭" :dic="linkactionDic"></avue-checkbox>
</div>
</fieldset>
</el-tab-pane>
- <el-tab-pane label="瀹綋">瀹綋</el-tab-pane>
- <el-tab-pane label="鎿嶄綔">鎿嶄綔</el-tab-pane>
</el-tabs>
+ <!-- 閫夋嫨鐢ㄦ埛绌挎妗� -->
+ <transfer ref="usertransfer" :left-role-data="leftUserData" :right-role-data="rightUserData"
+ :transferTitle="['鏈�夋嫨鐢ㄦ埛','宸查�夋嫨鐢ㄦ埛']" title="涓讳綋娣诲姞鐢ㄦ埛"
+ @transferSend="userSendHandler">
+ </transfer>
+ <!-- 閫夋嫨鐢ㄦ埛绌挎妗� -->
+ <transfer ref="roletransfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData"
+ :transferTitle="['鐜版湁瑙掕壊','鎷ユ湁瑙掕壊']" title="娣诲姞瑙掕壊"
+ @transferSend="roleSendHandler">
+ </transfer>
</div>
</template>
<script>
+import basicOption from "@/util/basic-option";
+import formQueryDialog from "@/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue";
+import {queryTemplateListByAttr} from "@/api/queryTemplate/queryDefine";
+import {getCriteria} from "@/api/queryTemplate/linkTypeQuery";
+import {listUserByRoleOid, listUserUnInRoleOid, saveRight} from "@/api/system/role/api";
+
export default {
name: "dataView",
+ components:{formQueryDialog},
props: {
//閫変腑鐨勪笟鍔$被鍨嬭妭鐐�
btmNode: {
@@ -38,26 +144,408 @@
default: false
},
height: {
- type: String,
- default: '400px'
+ type: Number,
+ default: 400
},
+ actionDic:{
+ type: Object,
+ default: {}
+ }
},
data() {
return {
+ leftUserData: [], // 閫夋嫨鎴愬憳绌挎妗嗗乏渚у垵濮嬫暟鎹�
+ rightUserData: [], // 閫夋嫨鎴愬憳绌挎妗嗗彸渚у垵濮嬫暟鎹�
+ leftRoleData: [], // 閫夋嫨瑙掕壊绌挎妗嗗乏渚у垵濮嬫暟鎹�
+ rightRoleData: [], // 閫夋嫨瑙掕壊绌挎妗嗗彸渚у垵濮嬫暟鎹�
+ mainData:[],
+ tableLoading: false,
+ mainOption: {
+ ...basicOption,
+ header:false,
+ addBtn: false,
+ editBtn: false,
+ delBtn: false,
+ selection: false,
+ index:false,
+ menu:false,
+ height: this.height-80,
+ tip:false,
+ size:'mini',
+ column: [{
+ label: ' 鍒嗙被',
+ prop: 'type',
+ sortable: true,
+ width:110
+ },{
+ label: '缂栫爜',
+ prop: 'id'
+ },{
+ label: '鍚嶇О',
+ prop: 'name'
+ }]
+ },
+ authData:[],
+ authOption:{
+ ...basicOption,
+ header:false,
+ addBtn: false,
+ editBtn: false,
+ delBtn: false,
+ selection: false,
+ index:false,
+ menu:false,
+ height: this.readOnly?this.height-50:this.height-80,
+ tip:false,
+ showHeader:false,
+ size:'mini',
+ column: [{
+ label: '鍚嶇О',
+ prop: 'name'
+ }]
+ },
+ formItems:[{
+ label: '瑙勫垯鍚嶇О',
+ prop: 'qtName',
+ type: 'input',
+ span:8,
+ labelWidth: 100,
+ disabled:this.readOnly,
+ rules: [{
+ required: true,
+ message: "璇疯緭鍏ヨ鍒欏悕绉�",
+ trigger: "blur"
+ }]
+ }, {
+ label: '瑙勫垯绫诲瀷',
+ prop: 'version',
+ type: 'select',
+ span:6,
+ labelWidth:110,
+ disabled:this.readOnly,
+ dicData: [{
+ label: '鍏ㄩ儴鍏佽',
+ value: 1
+ }, {
+ label: '鍏佽鏉冮檺',
+ value: 2
+ }, {
+ label: '鍏ㄩ儴鎷掔粷',
+ value: 3
+ }, {
+ label: '鎷掔粷鏉冮檺',
+ value: 7
+ }],
+ value: 1
+ }],
+ form:{
+ btmName:'',
+ qtName: '',
+ levelFlag:0,//0:鏅�氭煡璇㈡ā鏉�; 1:楂樼骇鏌ヨ妯℃澘"
+ queryTemplate:{}
+ },
+ radioForm:0,
+ radioDic:[{
+ label:'涓氬姟绫诲瀷 ',
+ value:0
+ },{
+ label:'閾炬帴绫诲瀷',
+ value:1
+ }],
+ treeOption: {
+ defaultExpandAll: true,
+ menu: false,
+ addBtn: false,
+ filter: false,
+ draggable: true,
+ allowDrop: () => {
+ return false;
+ },
+ allowDrag: (dropNode) => {
+ if (dropNode.data.attrs && dropNode.data.attrs.length > 0) {
+ return false;
+ } else {
+ return true;
+ }
+ },
+ props: {
+ label: 'name',
+ value: 'name',
+ children: 'attrs'
+ }
+ },
+ linkQueryDefineForm:'',//閾炬帴绫诲瀷鏌ヨ妯℃澘瀹氫箟閫変腑鍊�
+ linkQueryDefineDic:[],//閾炬帴绫诲瀷鏌ヨ妯℃澘瀹氫箟涓嬫媺鏁版嵁
+ //閾炬帴绫诲瀷鏌ヨ妯℃澘瀹氫箟閫変腑椤瑰睘鎬�
+ linkTreeData: [],
+ businessQueryDefineForm:'',//涓氬姟绫诲瀷鏌ヨ妯℃澘瀹氫箟閫変腑鍊�
+ businessQueryDefineDic:[],//涓氬姟绫诲瀷鏌ヨ妯℃澘瀹氫箟涓嬫媺鏁版嵁
+ //涓氬姟绫诲瀷鏌ヨ妯℃澘瀹氫箟閫変腑椤瑰睘鎬�
+ businessTreeData: [],
+ //楂樼骇鏌ヨ鏉′欢
+ queryTree:{},
+ //鏅�氭煡璇㈡潯浠�
+ queryCondition:[],
+ actionForm:[],//涓�鑸搷浣滈�変腑鍊�
+ actionDic:[],//涓�鑸搷浣滈�変腑椤�
+ linkactionForm:[],//鍏崇郴鍜岃穬杩侀�変腑鍊�
+ linkactionDic:[{
+ label:'閫夐」111',
+ value:0
+ },{
+ label:'閫夐」222',
+ value:1
+ }]//鍏崇郴鍜岃穬杩侀�変腑椤�
}
},
created() {
+
+ },
+ watch: {
+ data:{
+ handler(val) {
+ if(val && val.oid){
+ this.getTemp(true);
+ this.getTemp(false)
+ }
+ },
+ immediate: true,
+ deep: true
+ },
+ actionMap:{
+ handler(val) {
+ this.actionDic=[{
+ label:'閫夐」1',
+ value:0
+ },{
+ label:'閫夐」2',
+ value:1
+ }];
+ },
+ immediate: true,
+ deep: true
+ },
},
methods: {
+ //閫変腑鐢ㄦ埛
+ userHandler(){
+ Promise.all([
+ listUserUnInRoleOid({pkRole: this.selectList.oid}),
+ listUserByRoleOid({pkRole: this.selectList.oid})
+ ]).then(([unInRoleRes, byRoleRes]) => {
+ if (unInRoleRes.data.code === 200 && byRoleRes.data.code === 200) {
+ const leftData = [...unInRoleRes.data.data, ...byRoleRes.data.data];
+ // 缁勮濂界┛姊鍙敤鏁版嵁
+ this.leftUserData = leftData.map(item => {
+ return {
+ name: item.name + `(${item.id})`,
+ oid: item.oid
+ }
+ })
+ this.rightUserData = byRoleRes.data.data.map(item => item.oid);
+ this.$refs.usertransfer.visible = true;
+ }
+ });
+ },
+
+ // 閫変腑鐢ㄦ埛绌挎妗嗗洖濉�
+ userSendHandler(row) {
+ row.forEach((item,index)=>{
+ this.authData.push({
+ type:'user',
+ ...item
+ })
+ })
+ },
+ //閫夋嫨瑙掕壊
+ roleHandler(){
+ Promise.all([
+ listUserUnInRoleOid({pkRole: this.selectList.oid}),
+ listUserByRoleOid({pkRole: this.selectList.oid})
+ ]).then(([unInRoleRes, byRoleRes]) => {
+ if (unInRoleRes.data.code === 200 && byRoleRes.data.code === 200) {
+ const leftData = [...unInRoleRes.data.data, ...byRoleRes.data.data];
+ // 缁勮濂界┛姊鍙敤鏁版嵁
+ this.leftRoleData = leftData.map(item => {
+ return {
+ name: item.name + `(${item.id})`,
+ oid: item.oid
+ }
+ })
+ this.rightRoleData = byRoleRes.data.data.map(item => item.oid);
+ this.$refs.transfer.visible = true;
+ }
+ });
+ },
+ // 閫夋嫨瑙掕壊绌挎妗嗗洖濉�
+ roleSendHandler(row) {
+ row.forEach((item,index)=>{
+ this.authData.push({
+ type:'role',
+ ...item
+ })
+ })
+ },
+ //閫夋嫨鐢ㄦ埛缁�
+ deptHandler(){
+
+ },
+ 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锛歊ECRETURNMODE_FLAT, 2锛歊ECRETURNMODE_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(linkFlag) {
+ if (this.btmNode.attributes) {
+ queryTemplateListByAttr({btmName: this.btmNode.attributes.name, linkFlag: linkFlag,direction:linkFlag?null: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) {
+ this.linkTreeData = [{
+ name: data.value,
+ attrs: data.item.attrs
+ }]
+ }
+ },
+ //涓氬姟绫诲瀷鏌ヨ妯℃澘鍒囨崲
+ businessQueryDefineChange(data) {
+ if (data.value) {
+ this.businessTreeData = [{
+ name: data.value,
+ attrs: data.item.attrs
+ }]
+ }
+ },
+ // 寮�濮嬫嫋鎷芥爲鑺傜偣浜嬩欢
+ handleDragStart(node, ev) {
+ // 浣跨敤 setData 鏂规硶璁剧疆鏁版嵁
+ ev.dataTransfer.setData('item', JSON.stringify(node.data));
+ if(this.form.levelFlag==1){
+ this.$refs.formQuery.$refs.tree.$emit('tree-node-drag-start', ev,{node:this.$refs.formQuery.initItem(node)});
+ }
+ },
+ handleDragEnd(draggingNode,endNode,position,ev){
+ if(this.form.levelFlag==1) {
+ this.$refs.formQuery.$refs.tree.$emit('tree-node-drag-end', ev);
+ }
+ },
+ //鏌ヨ
+ queryHandler(){
+ this.$refs.form.validate((valid) => {
+ if (valid) {
+ this.$refs.formQuery.queryResultDialog.loading=true;
+ const formData=this.initFormData();
+ getCriteria(formData).then(res => {
+ if (res.data.success) {
+ const data = res.data.data;
+ const result = data.map(item => {
+ const filteredAttrs = item.hisAttrValList.filter(attr =>
+ attr.attrName === "OID" || attr.attrName === "CREATOR" || attr.attrName === "CREATETIME"
+ );
+
+ const newObj = filteredAttrs.reduce((acc, attr) => {
+ acc[attr.attrName] = attr.attrVal;
+ return acc;
+ }, {});
+
+ return newObj;
+ });
+
+ this.$refs.formQuery.resultData = result;
+ this.$refs.formQuery.queryResultDialog.showDialog = true;
+ this.$refs.formQuery.queryResultDialog.loading = false;
+ }
+ });
+ } else {
+ return false;
+ }
+ });
+ },
}
}
</script>
-<style scoped>
+<style lang="scss" scoped>
+::v-deep {
+ .el-radio ,.el-checkbox{
+ margin-right: 30px;
+ }
+}
+div{
+ font-size: 14px;
+}
fieldset {
padding: 10px 6px;
- margin: 10px 0 0 0;
+ margin: 0;
border: 1px solid #EBEEF5;
}
</style>
--
Gitblit v1.10.0