From ca294bbef3a47d80b6f3f44f85ac587a8ee430d2 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 13 七月 2023 10:15:33 +0800 Subject: [PATCH] 提交代码 --- Source/UBCS-WEB/dist/src/views/system/tenant.vue | 579 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 579 insertions(+), 0 deletions(-) diff --git a/Source/UBCS-WEB/dist/src/views/system/tenant.vue b/Source/UBCS-WEB/dist/src/views/system/tenant.vue new file mode 100644 index 0000000..9fae7ab --- /dev/null +++ b/Source/UBCS-WEB/dist/src/views/system/tenant.vue @@ -0,0 +1,579 @@ +<template> + <basic-container> + <avue-crud :option="option" + :table-loading="loading" + :data="data" + ref="crud" + v-model="form" + :page.sync="page" + :permission="permissionList" + :before-open="beforeOpen" + @row-del="rowDel" + @row-update="rowUpdate" + @row-save="rowSave" + @search-change="searchChange" + @search-reset="searchReset" + @selection-change="selectionChange" + @current-change="currentChange" + @size-change="sizeChange" + @refresh-change="refreshChange" + @on-load="onLoad"> + <template slot="menuLeft"> + <el-button type="danger" + size="small" + icon="el-icon-delete" + v-if="permission.tenant_delete" + plain + @click="handleDelete">鍒� 闄� + </el-button> + <el-tooltip class="item" effect="dark" content="缁欑鎴烽厤缃处鍙烽搴︺�佽繃鏈熸椂闂寸瓑鎺堟潈淇℃伅" placement="top"> + <el-button size="small" + plain + v-if="userInfo.role_name.includes('administrator')" + icon="el-icon-setting" + @click="handleSetting">鎺堟潈閰嶇疆 + </el-button> + </el-tooltip> + <el-tooltip class="item" effect="dark" content="缁欑鎴烽厤缃嫭绔嬫暟鎹簮浠ュ疄鐜版暟鎹簱闅旂" placement="top"> + <el-button size="small" + plain + v-if="userInfo.role_name.includes('administrator')" + icon="el-icon-coin" + @click="handleDatasource">鏁版嵁婧愰厤缃� + </el-button> + </el-tooltip> + <el-tooltip class="item" effect="dark" content="灏嗚彍鍗曚骇鍝佸寘涓庣鎴烽厤缃粦瀹�" placement="top"> + <el-button size="small" + plain + v-if="userInfo.role_name.includes('administrator')" + icon="el-icon-notebook-1" + @click="handlePackage">浜у搧鍖呴厤缃� + </el-button> + </el-tooltip> + <el-tooltip class="item" effect="dark" content="灏嗚嚜瀹氫箟鐨勮彍鍗曢泦鍚堝畾鍒朵负绉熸埛缁戝畾鐨勮彍鍗曚骇鍝佸寘" placement="top"> + <el-button size="small" + plain + v-if="userInfo.role_name.includes('administrator')" + icon="el-icon-notebook-2" + @click="handlePackageSetting">浜у搧鍖呯鐞� + </el-button> + </el-tooltip> + </template> + <template slot-scope="{row}" + slot="accountNumber"> + <el-tag>{{ row.accountNumber > 0 ? row.accountNumber : '涓嶉檺鍒�' }}</el-tag> + </template> + <template slot-scope="{row}" + slot="expireTime"> + <el-tag>{{ row.expireTime ? row.expireTime : '涓嶉檺鍒�' }}</el-tag> + </template> + </avue-crud> + + <el-dialog title="绉熸埛鏁版嵁婧愰厤缃�" + append-to-body + :visible.sync="datasourceBox" + width="450px"> + <avue-form :option="datasourceOption" v-model="datasourceForm" @submit="handleDatasourceSubmit"/> + </el-dialog> + <el-dialog title="绉熸埛浜у搧鍖呴厤缃�" + append-to-body + :visible.sync="packageBox" + width="450px"> + <avue-form ref="formPackage" :option="packageOption" v-model="packageForm" @submit="handlePackageSubmit"/> + </el-dialog> + <el-dialog title="绉熸埛浜у搧鍖呯鐞�" + append-to-body + :visible.sync="packageSettingBox" + width="1000px"> + <tenant-package></tenant-package> + </el-dialog> + </basic-container> +</template> + +<script> +import { + getList, + getDetail, + remove, + update, + add, + setting, + datasource, + packageInfo, + packageSetting +} from "@/api/system/tenant"; +import {getDetail as packageDetail} from "@/api/system/tenantpackage"; +import {mapGetters} from "vuex"; +import {getMenuTree} from "@/api/system/menu"; +import {validatenull} from "@/util/validate"; + +export default { + data() { + return { + form: {}, + selectionList: [], + query: {}, + loading: true, + box: false, + datasourceBox: false, + packageBox: false, + packageSettingBox: false, + page: { + pageSize: 10, + currentPage: 1, + total: 0 + }, + option: { + height: 'auto', + calcHeight: 30, + tip: false, + searchShow: true, + searchMenuSpan: 6, + border: true, + index: true, + selection: true, + viewBtn: true, + dialogWidth: 900, + dialogClickModal: false, + column: [ + + { + label: "绉熸埛ID", + prop: "tenantId", + width: 100, + search: true, + addDisplay: false, + editDisplay: false, + span: 24, + rules: [{ + required: true, + message: "璇疯緭鍏ョ鎴稩D", + trigger: "blur" + }] + }, + { + label: "鍏ㄧО", + prop: "fullName", + width: 120, + span:24, + rules: [{ + required: true, + message: "璇疯緭鍏ュ叏绉�", + trigger: "blur" + }] + }, + { + label: "绉熸埛鍚嶇О", + prop: "tenantName", + search: true, + width: 180, + span: 24, + rules: [{ + required: true, + message: "璇疯緭鍏ュ弬鏁板悕绉�", + trigger: "blur" + }] + }, + { + label: "鑱旂郴浜�", + prop: "linkman", + width: 150, + search: true, + rules: [{ + required: true, + message: "璇疯緭鍏ヨ仈绯讳汉", + trigger: "blur" + }] + }, + { + label: "鑱旂郴鐢佃瘽", + prop: "contactNumber", + width: 150, + }, + { + label: "鑱旂郴鍦板潃", + prop: "address", + span: 24, + minRows: 2, + type: "textarea", + hide: true, + }, + { + label: '寮�鍚笁鍛�', + prop: 'ssaEnable', + type: 'radio', + width: 100, + value:0, + disabled:Boolean, + dicData: [{ + label: '寮�鍚�', + value: 0 + }, { + label: '涓嶅紑鍚�', + value: 1 + },], + }, + { + label: "缁戝畾鍩熷悕", + prop: "domainUrl", + span: 24, + }, + { + label: "绯荤粺鑳屾櫙", + prop: "backgroundUrl", + type: 'upload', + listType: 'picture-img', + dataType: 'string', + action: '/api/ubcs-resource/oss/endpoint/put-file', + propsHttp: { + res: 'data', + url: 'link', + }, + hide: true, + span: 24, + }, + ] + }, + data: [], + settingForm: {}, + settingOption: { + column: [ + { + label: "璐﹀彿棰濆害", + prop: "accountNumber", + type: "number", + span: 24, + }, + { + label: "杩囨湡鏃堕棿", + prop: "expireTime", + type: "date", + format: "yyyy-MM-dd hh:mm:ss", + valueFormat: "yyyy-MM-dd hh:mm:ss", + span: 24, + }, + ] + }, + datasourceForm: {}, + datasourceOption: { + column: [ + { + label: "鏁版嵁婧�", + prop: "datasourceId", + search: true, + span: 24, + type: "select", + dicUrl: "/api/ubcs-develop/datasource/select", + props: { + label: "name", + value: "id" + }, + rules: [{ + required: true, + message: "璇烽�夋嫨鏁版嵁婧�", + trigger: "blur" + }] + }, + ] + }, + packageForm: {}, + packageOption: { + column: [ + { + label: "浜у搧鍖�", + prop: "packageId", + search: true, + span: 24, + type: "select", + dicUrl: "/api/ubcs-system/tenant-package/select", + props: { + label: "packageName", + value: "id" + } + }, + { + label: "鑿滃崟棰勮", + prop: "menuId", + span: 24, + type: "tree", + dicData: [], + hide: true, + multiple: true, + props: { + label: "title" + }, + }, + ] + }, + }; + }, + + created() { + // 鑾峰彇鍒皌rue杩樻槸false鐩存帴璧嬪�硷紝瀹氫箟鏂规硶浼氬氨鏄幏鍙栦笉鍒帮紝涓嶇煡閬撲粈涔堥棶棰橈紝寮哄埗鐢↗SON.parse浼氬湪鍚庨潰杩藉姞涓�涓猟isabled锛屾墍浠ョ洿鎺ヨ幏鍙栥�傚悗鏈熷鏋滄坊鍔燾loumn浼氬嚭鐜癰ug锛岀敤foreach寰幆鍑篶olumn鍦ㄥ垽鏂璽ype鏄惁绛変簬radio锛岀劧鍚庡皢鍗曠嫭radio鐨刣isabled鏀逛负res.data.data + this.$axios.get('/api/ubcs-system/tenant/find-ssa-enable').then(res => { + this.option.column[6].disabled= res.data.data + }); + }, + watch: { + 'packageForm.packageId'() { + if (!validatenull(this.packageForm.packageId)) { + packageDetail(this.packageForm.packageId).then(res => { + this.packageForm.menuId = res.data.data.menuId; + this.initData(); + }); + } + } + }, + computed: { + ...mapGetters(["userInfo", "permission"]), + permissionList() { + return { + addBtn: this.vaildData(this.permission.tenant_add, false), + viewBtn: this.vaildData(this.permission.tenant_view, false), + delBtn: this.vaildData(this.permission.tenant_delete, false), + editBtn: this.vaildData(this.permission.tenant_edit, false) + }; + }, + ids() { + let ids = []; + this.selectionList.forEach(ele => { + ids.push(ele.id); + }); + return ids.join(","); + }, + tenantId() { + return this.selectionList[0].tenantId; + } + }, + methods: { + initData() { + getMenuTree().then(res => { + const column = this.findObject(this.packageOption.column, "menuId"); + column.dicData = res.data.data; + }); + }, + rowSave(row, done, loading) { + add(row).then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!" + }); + done(); + console.log(done) + }, error => { + window.console.log(error); + loading(); + }); + }, + rowUpdate(row, index, done, loading) { + update(row).then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!" + }); + done(); + }, error => { + window.console.log(error); + loading(); + }); + }, + rowDel(row) { + this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }) + .then(() => { + return remove(row.id); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!" + }); + }); + }, + beforeOpen(done, type) { + if (["view"].includes(type)) { + getDetail(this.form.id).then(res => { + const data = res.data.data; + if (!(data.accountNumber > 0)) { + data.accountNumber = "涓嶉檺鍒�"; + } + if (!data.expireTime) { + data.expireTime = "涓嶉檺鍒�"; + } + this.form = data; + }); + } + done(); + }, + searchReset() { + this.query = {}; + this.onLoad(this.page); + }, + searchChange(params, done) { + this.query = params; + this.page.currentPage = 1; + this.onLoad(this.page, params); + done(); + }, + selectionChange(list) { + this.selectionList = list; + }, + selectionClear() { + this.selectionList = []; + this.$refs.crud.toggleSelection(); + }, + handleDelete() { + if (this.selectionList.length === 0) { + this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�"); + return; + } + this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }) + .then(() => { + return remove(this.ids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + handleSetting() { + if (this.selectionList.length === 0) { + this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�"); + return; + } + if (this.selectionList.length === 1) { + getDetail(this.selectionList[0].id).then(res => { + const data = res.data.data; + this.settingForm.accountNumber = data.accountNumber; + this.settingForm.expireTime = data.expireTime; + }); + } else { + this.settingForm.accountNumber = -1; + this.settingForm.expireTime = ''; + } + this.box = true; + }, + handleDatasource() { + if (this.selectionList.length === 0) { + this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�"); + return; + } + if (this.selectionList.length !== 1) { + this.$message.warning("鍙兘閫夋嫨涓�鏉℃暟鎹�"); + return; + } + getDetail(this.selectionList[0].id).then(res => { + const data = res.data.data; + this.datasourceForm.datasourceId = data.datasourceId; + }); + this.datasourceBox = true; + }, + handlePackage() { + if (this.selectionList.length === 0) { + this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�"); + return; + } + if (this.selectionList.length !== 1) { + this.$message.warning("鍙兘閫夋嫨涓�鏉℃暟鎹�"); + return; + } + if (this.selectionList.length === 1) { + packageInfo(this.selectionList[0].id).then(res => { + const data = res.data.data; + this.packageForm.packageId = data.id; + this.packageForm.menuId = data.menuId; + }); + } else { + this.packageForm.menuId = ''; + } + this.packageBox = true; + //鏇存柊瀛楀吀杩滅▼鏁版嵁 + setTimeout(() => { + const form = this.$refs.formPackage; + form.updateDic('packageId'); + }, 10); + }, + handlePackageSetting() { + this.packageSettingBox = true; + }, + handleSubmit(form, done, loading) { + setting(this.ids, form).then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "閰嶇疆鎴愬姛!" + }); + done(); + this.box = false; + }, error => { + window.console.log(error); + loading(); + }); + }, + handleDatasourceSubmit(form, done, loading) { + datasource(this.tenantId, form.datasourceId).then(() => { + this.$message({ + type: "success", + message: "閰嶇疆鎴愬姛!" + }); + done(); + this.datasourceBox = false; + }, error => { + window.console.log(error); + loading(); + }); + }, + handlePackageSubmit(form, done, loading) { + packageSetting(this.tenantId, form.packageId).then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "閰嶇疆鎴愬姛!" + }); + done(); + this.packageBox = false; + }, error => { + window.console.log(error); + loading(); + }); + }, + currentChange(currentPage) { + this.page.currentPage = currentPage; + }, + sizeChange(pageSize) { + this.page.pageSize = pageSize; + }, + refreshChange() { + this.onLoad(this.page, this.query); + }, + onLoad(page, params = {}) { + this.loading = true; + getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { + const data = res.data.data; + this.page.total = data.total; + this.data = data.records; + this.loading = false; + this.selectionClear(); + console.log(res) + }); + } + } +}; +</script> + +<style> +</style> -- Gitblit v1.9.3