From 59765cab961847dfd101e69ae6d8d1d501a5284c Mon Sep 17 00:00:00 2001
From: yuxc <yuxc@vci-tech.com>
Date: 星期二, 04 六月 2024 11:10:28 +0800
Subject: [PATCH] 1、ice配置文件上传
---
Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue | 422 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 420 insertions(+), 2 deletions(-)
diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue
index 59ce237..6dca0c5 100644
--- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue
+++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue
@@ -1,10 +1,428 @@
<template>
- <basic-container>琛ㄦ牸娴嬭瘯椤�</basic-container>
+ <div :id="'UI-dynamic-'+areasName+componentVO.oid" class="UI-dynamic">
+ <avue-crud ref="dataTable"
+ v-model="form"
+ :data="tableList"
+ :option="option"
+ :page.sync="pageType"
+ :table-loading="loading"
+ @on-load="onLoad"
+ @search-reset="searchReset"
+ @refresh-change="handleRefresh"
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ @row-click="rowClickChange"
+ @search-change='searchChange'
+ @filter="filterChange"
+ @selection-change="selectChange">
+ <!--top鍖哄煙鎸夐挳-->
+ <template slot="menuLeft" slot-scope="scope">
+ <dynamic-button :componentVO="componentVO"
+ :key="areasName+'buttons-'+componentVO.oid"
+ :butttonList="componentVO.buttons" :dataStore="selectList" LocationType="top" :sourceData="sourceData"
+ @afterMethod="handleRefresh"
+ type="table"></dynamic-button>
+ </template>
+
+ <!--menu鍖哄煙鎸夐挳-->
+ <template slot="menu" slot-scope="scope">
+ <dynamic-button :componentVO="componentVO" :butttonList="componentVO.buttons" :scope="scope" :dataStore="selectList" :sourceData="sourceData"
+ LocationType="menu"
+ @afterMethod="handleRefresh"
+ @rowView="rowView"
+ type="table"></dynamic-button>
+ </template>
+ <template slot="menuRight" slot-scope="scope">
+ <el-tooltip class="item" effect="dark" content="鎵撳嵃" placement="top">
+ <el-button icon="el-icon-printer" circle @click="$refs.dataTable.rowPrint()"
+ :size="scope.size"></el-button>
+ </el-tooltip>
+ <el-tooltip class="item" effect="dark" content="瀵煎嚭" placement="top">
+ <el-button icon="el-icon-download" circle @click="rowExcel"
+ :size="scope.size"></el-button>
+ </el-tooltip>
+ <el-tooltip class="item" effect="dark" content="绛涢��" placement="top">
+ <el-button icon="el-icon-tickets" circle @click="$refs.dataTable.$refs.dialogFilter.box=!0"
+ :size="scope.size"></el-button>
+ </el-tooltip>
+ <el-tooltip class="item" effect="dark" content="鍒楁樉闅�" placement="top">
+ <el-button icon="el-icon-s-operation" circle @click="$refs.dataTable.$refs.dialogColumn.columnBox=!0"
+ :size="scope.size"></el-button>
+ </el-tooltip>
+ <el-tooltip class="item" effect="dark" content="鏌ヨ" placement="top">
+ <el-button icon="el-icon-search" circle @click="$refs.dataTable.$refs.headerSearch.handleSearchShow()"
+ :size="scope.size"></el-button>
+ </el-tooltip>
+ <el-tooltip class="item" effect="dark" content="鍒锋柊" placement="top">
+ <el-button icon="el-icon-refresh" circle @click="$refs.dataTable.refreshChange()"
+ :size="scope.size"></el-button>
+ </el-tooltip>
+ </template>
+ </avue-crud>
+ </div>
</template>
<script>
+import {validatenull} from '@/util/validate'
+import {getList} from '@/api/base/ui'
+
export default {
- name: "dynamic-table"
+ name: "dynamic-table",
+ props: {
+ //ui涓婁笅鏂囩殑涓氬姟绫诲瀷锛堟垨閾炬帴绫诲瀷锛�
+ uiBtmType: {
+ type: String
+ },
+ //ui涓婁笅鏂�
+ uiContext:{
+ type: String
+ },
+ componentVO: {
+ type: Object,
+ default: {}
+ },
+ inDialog: {
+ type: Boolean,
+ default: false
+ },
+ canEdit:{
+ //鍐呭鏄惁鍙紪杈�
+ type:Boolean,
+ default:false
+ },
+ areasName: {
+ type: String,
+ default: ''//westArea瀵艰埅鍖�
+ },
+ sourceData: {
+ //鑿滃崟婧愭暟鎹垨鑰呭脊绐楁椂鎸夐挳鎵�灞炲尯鍩熺殑涓婁竴鍖哄煙閫変腑鏁版嵁
+ type: Object,
+ default: {}
+ },
+ //涓婁竴鍖哄煙涓氬姟绫诲瀷
+ sourceBtmType:{
+ type: String
+ },
+ paramVOS: {
+ type: Object,
+ default: {}
+ },
+ isShow: {
+ //鎵�鍦ㄥ尯鍩熸槸鍚﹀凡鏄剧ず锛岄拡瀵箃ab鍜宑ollapse
+ type: Boolean,
+ default: true
+ },
+ dataStore: {
+ //寮圭獥鏃舵寜閽墍灞炲尯鍩熼�変腑鏁版嵁
+ type: Array,
+ default: []
+ },
+ tableType: {
+ type: String
+ }
+ },
+ data() {
+ return {
+ currentDefineVO:this.componentVO.uiComponentType=='table'?this.componentVO.tableDefineVO:this.componentVO.treeTableDefineVO,
+ parentHeight: '100%',//褰撳墠缁勪欢鏍硅妭鐐瑰厓绱犻珮搴�
+ form: {},
+ query:{},
+ params:{},
+ loading: false,
+ page: {
+ pageSize: 10,
+ currentPage: 1,
+ total: 0,
+ },
+ simplePage: {
+ currentPage: 1,
+ total: 0,
+ pagerCount: 4,
+ layout: "prev, pager, next"
+ },
+ //琛ㄦ牸鏁版嵁
+ tableList: [],
+ option: {
+ index: true,
+ addBtn: false,
+ editBtn: false,
+ delBtn: false,
+ refreshBtn:false,
+ columnBtn:false,
+ searchShowBtn:false,
+ printBtn:false,
+ excelBtn:false,
+ filterBtn:false,
+ selection: true,
+ tip: false,
+ menuWidth:260,
+ height: '100%',
+ calcHeight: 15,
+ indexFixed: false,
+ menuFixed: this.areasName === 'westArea' ? false : 'right',
+ searchMenuSpan:12,
+ searchShow:false,
+ column: [],
+ },
+ selectList: [],
+ columnType: {
+ text: "input",
+ combox: "select",
+ truefalse: "switch",
+ number: "number",
+ textarea: "textarea",
+ datetime: "datetime",
+ date: "date",
+ refer: "refer",
+ },
+ sourceDataMapParams:{}
+ }
+ },
+ computed: {
+ pageType() {
+ return this.areasName === 'westArea' ? this.simplePage : this.page;
+ }
+ },
+ watch: {
+ parentHeight: {
+ handler(newval) {
+ if (newval > 50) {
+ this.option.height = newval;
+ //doLayout涓嶇敓鏁堬紝鎵嬪姩璁剧疆琛ㄦ牸楂樺害
+ this.$children[0].$children[1].$children[1].$children[0].$el.style.height = newval + 'px';
+ /*this.$nextTick(() => {
+ if (this.$refs.dataTable && this.$refs.dataTable.doLayout) {
+ this.$refs.dataTable.doLayout();
+ }
+ })*/
+ }
+ }
+ },
+ isShow: {
+ handler(newval) {
+ debugger;
+ if (newval && this.$el.clientHeight > 50) {
+ this.parentHeight = this.$el.clientHeight - this.$children[0].$children[1].$children[0].$el.clientHeight - this.$children[0].$children[2].$el.clientHeight - 5;
+ }
+ if(newval){
+ this.handleRefresh();
+ }
+ }
+ },
+ tableList:{
+ handler(newval) {
+ if(newval) {
+ this.$emit("setData", {
+ area: this.areasName,
+ type:this.componentVO.uiComponentType,
+ currentDefineVO:this.currentDefineVO,
+ data:newval
+ });
+ }
+ },
+ deep: true,
+ immediate: true
+ },
+ 'sourceData':{
+ handler(newval) {
+ if(newval) {
+ this.sourceDataMapParams=this.sourceDataMap();
+ this.getParams();
+ this.handleRefresh();
+ }
+ },
+ deep: true,
+ immediate: true
+ }
+ },
+ created() {
+ this.getParams();
+ this.option.column = this.updatedColumns();
+ if (this.componentVO.uiComponentType == 'TreeTable') {
+ //鏍戣〃
+ this.option.rowKey = this.currentDefineVO.treeCurrentField || 'oid';
+ this.option.rowParentKey = this.currentDefineVO.treeParentField || 'parentOid'
+ }
+ this.page = {
+ pageSize: this.currentDefineVO.pageVO ? this.currentDefineVO.pageVO.limit : 10,
+ currentPage: this.currentDefineVO.pageVO ? this.currentDefineVO.pageVO.page : 1,
+ total: 0,
+ pageSizes: this.currentDefineVO.limits || [10, 20, 30, 40, 50, 100]
+ };
+ },
+ mounted() {
+ if (this.$el.clientHeight > 50) {
+ //鐖跺厓绱犻珮搴�-鎸夐挳楂樺害-鍒嗛〉楂樺害
+ this.parentHeight = this.$el.clientHeight - this.$children[0].$children[1].$children[0].$el.clientHeight - 57 -5;
+ }
+ },
+ methods: {
+ updatedColumns: function () {
+ const queryFields = !validatenull(this.currentDefineVO.queryColumns) ? this.currentDefineVO.queryColumns.map(item => item.field) : [];
+ return this.currentDefineVO.cols[0].map(item => {
+ const search = queryFields.includes(item.field); // 鍒ゆ柇 field 鏄惁鍦� queryColumns 閲�
+ if (this.currentDefineVO.btmType == 'fileobject' && item.field == 'name') {
+ //鏄枃浠�
+ item.formatter = function (d) {
+ return '<a class="layui-btn layui-btn-intable" lay-event="PREVIEW">' + d.name + '</a>'
+ }
+ }
+ let formatter = item.formatter || item.templet;
+ if (typeof formatter == "string" && formatter != '') {
+ formatter = eval("(" + formatter + ")");
+ }
+ item.type = this.columnType[item.fieldType] || item.fieldType;
+ return {
+ ...item,
+ prop: item.field,
+ label: item.title,
+ search: search,
+ formatter: formatter
+ };
+ });
+ },
+ sourceDataMap: function () {
+ const sourceDataMap = {};
+ if (Object.keys(this.sourceData).length>0) {
+ if(this.sourceData.oid ) {
+ if (this.sourceData.oid.indexOf('@vcitreesep@') > -1) {
+ this.sourceData.oid = this.sourceData.oid.split('@vcitreesep@')[1];
+ }
+ sourceDataMap.sourceBtmName = this.sourceBtmType;;
+ sourceDataMap.sourceOid = this.sourceData.oid;
+ }
+ for (let i in this.sourceData) {
+ const item = this.sourceData[i]
+ if (item && item.constructor === Object) continue;
+ if (i == 'type' || i == 'context' || i == 'content') continue;
+ sourceDataMap['sourceData["' + i + '"]'] = item
+ }
+ }
+
+ if (Object.keys(this.paramVOS).length>0) {
+ for (let j in this.paramVOS) {
+ if (this.paramVOS[j] && this.paramVOS[j].constructor === Object) continue;
+ if (j == 'type' || j == 'context' || j == 'content' || j == "getdataurl" || j == "getdatamethod" || j == "url" || j == "method" || j == "uploadfileurl" || j == "title") continue;
+ sourceDataMap['sourceData["' + j + '"]'] = this.paramVOS[j]
+ }
+ }
+ return sourceDataMap;
+ },
+ getParams: function () {
+ const tableParams = {
+ btmname: this.currentDefineVO.btmType,
+ btmType:this.currentDefineVO.btmType,
+ tableDefineId: this.currentDefineVO.id,
+ componentOid: this.componentVO.oid,
+ uiDefineId: this.uiContext,
+ linkTypeFlag: this.currentDefineVO.linkTypeFlag,
+ treeTableFlag:this.componentVO.uiComponentType == 'TreeTable'
+ };
+
+ const sourceDataMapList = this.sourceDataMapParams;
+
+ this.params = Object.assign({},tableParams, sourceDataMapList);
+ },
+ onLoad(page, params = {}) {
+ if (Object.keys(this.sourceData).length>0 && this.isShow) {
+ this.loading = true;
+ getList(page.currentPage, page.pageSize, Object.assign({},this.params,this.query,params)).then(res => {
+ let data = [];
+ if (res.data && res.data.data) {
+ data = res.data.data;
+ this.page.total = res.data.total;
+ } else {
+ data = res.data;
+ this.page.total = res.total;
+ }
+ if (!data || data == null) {
+ data = [];
+ }
+ this.tableList = data;
+ this.loading = false;
+ this.selectionClear();
+ }).catch(error => {
+ this.$message.error(error);
+ this.loading = false;
+ });
+ }
+ },
+ rowView(row,index){
+ this.$refs.dataTable.rowView(row,index)
+ },
+ rowClickChange(row){
+ this.$refs.dataTable.toggleRowSelection(row);
+ },
+ selectChange(row) {
+ this.selectList = row;
+ this.$emit("setDataStore", {
+ area: this.areasName,
+ type:this.componentVO.uiComponentType,
+ btmType:this.currentDefineVO.btmType,
+ dataStore:row
+ });
+ },
+ currentChange(currentPage) {
+ this.page.currentPage = currentPage;
+ },
+ sizeChange(pageSize) {
+ this.page.pageSize = pageSize;
+ },
+ searchChange(params,done){
+ this.query = {};
+ for (let i in params) {
+ this.query['conditionMap["' + i + '"]'] = "*" + params[i] + "*";
+ }
+ this.page.currentPage = 1;
+ this.onLoad(this.page);
+ done();
+ },
+ filterChange(result){
+ let parms={}
+ for (let i in result) {
+ if(!validatenull(result[i][2])) {
+ const fieldVal = result[i][2]
+ if (result[i][1] == "=") {
+ parms['conditionMap["' + result[i][0] + '"]'] = fieldVal;
+ } else if (result[i][1] == "鈮�") {
+ parms['conditionMap["' + result[i][0] + '"]'] = '!=' + fieldVal;
+ } else if (result[i][1] == "like") {
+ parms['conditionMap["' + result[i][0] + '"]'] = "*" + fieldVal + "*";
+ } else if (result[i][1] == "鈭�") {
+ parms['conditionMap["' + result[i][0] + '"]'] = "*" + fieldVal + "*";
+ } else {
+ parms['conditionMap["' + result[i][0] + '"]'] = result[i][1] + fieldVal;
+ }
+ }
+ }
+ this.onLoad(this.page,parms);
+ },
+ searchReset() {
+ this.query = {};
+ this.onLoad(this.page);
+ },
+ selectionClear() {
+ this.selectionList = [];
+ try {
+ this.$refs.dataTable.toggleSelection();
+ }catch (e) {
+
+ }
+ },
+ handleRefresh(type) {
+ this.onLoad(this.page);
+ },
+ rowExcel() {
+ //瀵煎嚭
+ this.$refs.dataTable.$refs.dialogExcel.handleShow();
+ //瀵煎嚭寮圭獥涓殑纭畾鎸夐挳
+ this.$refs.dataTable.$refs.dialogExcel.handleSubmit = function () {
+ this.$Export.excel({title: this.$refs.dataTable.$refs.dialogExcel.form.name, columns: this.$refs.dataTable.$refs.dialogExcel.columns, data: this.$refs.dataTable.$refs.dialogExcel.handleSum()});
+ this.$refs.dataTable.$refs.dialogExcel.box = !1
+ }
+ //this.$refs.dataTable.rowExcel()
+ }
+ }
}
</script>
--
Gitblit v1.9.3