From ae6d20ec4a30b7e796feb05958bcfc80e55f247b Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期四, 20 七月 2023 15:21:45 +0800 Subject: [PATCH] 整合代码部署 --- Source/UBCS-WEB/dist/src/views/flow/model.vue | 482 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 482 insertions(+), 0 deletions(-) diff --git a/Source/UBCS-WEB/dist/src/views/flow/model.vue b/Source/UBCS-WEB/dist/src/views/flow/model.vue new file mode 100644 index 0000000..54c7d2a --- /dev/null +++ b/Source/UBCS-WEB/dist/src/views/flow/model.vue @@ -0,0 +1,482 @@ +<template> + <basic-container> + <avue-crud :option="option" + :table-loading="loading" + :data="data" + ref="crud" + v-model="form" + :page.sync="page" + @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="primary" + size="mini" + icon="el-icon-circle-plus" + v-if="permission.flow_model_create" + plain + @click="handleCreate">鍒� 寤� + </el-button> + <el-button type="danger" + size="mini" + icon="el-icon-delete" + v-if="permission.flow_model_delete" + plain + @click="handleDelete">鍒� 闄� + </el-button> + </template> + <template slot-scope="scope" + slot="menu"> + <el-button type="text" + size="mini" + icon="el-icon-setting" + v-if="permission.flow_model_update" + @click.stop="handleUpdate(scope.row,scope.index)">閰嶇疆 + </el-button> + <el-button type="text" + size="mini" + icon="el-icon-upload2" + v-if="permission.flow_model_deploy" + @click.stop="handleDeploy(scope.row,scope.index)">閮ㄧ讲 + </el-button> + <el-button type="text" + size="mini" + icon="el-icon-delete" + v-if="permission.flow_model_delete" + @click.stop="handleSlotDelete(scope.row,scope.index)">鍒犻櫎 + </el-button> + </template> + <template slot-scope="{row}" + slot="version"> + <el-tag>v{{ row.version }}</el-tag> + </template> + </avue-crud> + <el-dialog title="娴佺▼閰嶇疆" + append-to-body + destroy-on-close + :visible.sync="flowBox" + :close-on-press-escape="false" + :fullscreen="true" + :before-close="handleNutflowClose" + custom-class="wf-dialog"> + <wf-design-base v-if="nutflowOption.step === 1" + class="animated fadeIn" + style="height: calc(100vh - 108px);" + ref="wf-design" + :options="nutflowOption.step1"></wf-design-base> + <wf-design-base v-if="nutflowOption.step === 2" + class="animated fadeIn" + style="height: calc(100vh - 108px);" + ref="wf-design-view" + :options="nutflowOption.step2"></wf-design-base> + <span slot="footer" + class="avue-dialog__footer"> + <el-button size="small" + @click="handleNutflowClose(() => {}, true)">鍙� 娑�</el-button> + <el-button v-if="nutflowOption.step === 1" + size="small" + type="success" + @click="handleStep(1)">涓� 涓� 姝�</el-button> + <el-button v-if="nutflowOption.step === 2" + size="small" + type="success" + @click="handleStep(-1)">涓� 涓� 姝�</el-button> + <el-button v-if="nutflowOption.step === 2" + size="small" + type="primary" + @click="handleSubmitModel">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog title="娴佺▼閮ㄧ讲" + append-to-body + :visible.sync="deployBox" + width="20%"> + <avue-form ref="form" + :option="optionDeploy" + v-model="form" + @submit="handleSubmit"/> + <span slot="footer" + class="dialog-footer"> + <el-button @click="deployBox = false">鍙� 娑�</el-button> + <el-button type="primary" + @click="handleDoDeploy" + :loading="deployLoading">纭� 瀹�</el-button> + </span> + </el-dialog> + </basic-container> +</template> + +<script> +import {mapGetters} from "vuex"; +import {modelList, removeModel, deployModel, submitModel, detail} from "@/api/flow/flow"; +import {flowCategory} from "@/util/flow"; + +export default { + data() { + return { + form: {}, + optionDeploy: { + menuBtn: false, + column: [ + { + label: "娴佺▼绫诲瀷", + type: "select", + dicUrl: "/api/ubcs-system/dict/dictionary?code=flow", + props: { + label: "dictValue", + value: "dictKey" + }, + dataType: "number", + slot: true, + prop: "categoryValue", + search: true, + span: 24, + rules: [{ + required: true, + message: "璇烽�夋嫨娴佺▼绫诲瀷", + trigger: "blur" + }] + }, + { + label: "娴佺▼妯″紡", + prop: "flowMode", + type: "radio", + dicData: [ + { + label: "閫氱敤娴佺▼", + value: 1 + }, + { + label: "瀹氬埗娴佺▼", + value: 2 + } + ], + value: 1, + span: 24, + rules: [ + { + required: true, + message: '璇烽�夋嫨娴佺▼妯″紡', + trigger: 'blur' + } + ], + }, + { + label: "鎵�灞炵鎴�", + prop: "tenantId", + type: "tree", + multiple: true, + dicUrl: "/api/ubcs-system/tenant/select", + props: { + label: "tenantName", + value: "tenantId" + }, + display: false, + span: 24, + rules: [ + { + required: true, + message: '璇烽�夋嫨鎵�灞炵鎴�', + trigger: 'blur' + } + ], + }, + ], + }, + selectionId: '', + selectionList: [], + query: {}, + loading: true, + deployLoading: false, + page: { + pageSize: 10, + currentPage: 1, + total: 0 + }, + deployBox: false, + flowBox: false, + option: { + height: 'auto', + calcHeight: 30, + tip: false, + searchShow: true, + searchMenuSpan: 6, + border: true, + index: true, + selection: true, + editBtn: false, + addBtn: false, + viewBtn: false, + delBtn: false, + dialogWidth: 900, + menuWidth: 200, + dialogClickModal: false, + size: 'mini', + searchSize: 'mini', + column: [ + { + label: '妯″瀷涓婚敭', + prop: 'id', + }, + { + label: '妯″瀷鏍囪瘑', + prop: 'modelKey', + search: true, + overHidden: true + }, + { + label: '妯″瀷鍚嶇О', + prop: 'name', + search: true, + overHidden: true + }, + { + label: '娴佺▼鐗堟湰', + prop: 'version', + slot: true, + overHidden: true + }, + { + label: '鍒涘缓鏃堕棿', + prop: 'created', + overHidden: true + }, + { + label: '鏇存柊鏃堕棿', + prop: 'lastUpdated', + overHidden: true + }, + ] + }, + data: [], + nutflowOption: { + process: {}, + step: 1, + step1: { + toolbar: ['open', 'create', 'fit', 'zoom-in', 'zoom-out', 'undo', 'redo', 'import', 'preview'], + }, + step2: { + mode: 'view', + simulation: true, + minimap: true, + } + } + }; + }, + watch: { + 'form.flowMode'() { + this.$refs.form.option.column.filter(item => { + if (item.prop === "tenantId") { + item.display = this.form.flowMode === 2; + } + }); + } + }, + computed: { + ...mapGetters(["permission"]), + ids() { + let ids = []; + this.selectionList.forEach(ele => { + ids.push(ele.id); + }); + return ids.join(","); + } + }, + methods: { + handleSubmitModel() { + const registry = this.$refs['wf-design-view'].getElementRegistry().getAll() + const {businessObject} = registry[0] + const {id, name, documentation} = businessObject + const description = (documentation && documentation.length > 0) ? documentation[0].text : null + const params = { + ...this.nutflowOption.process, + modelKey: id, + name, + description, + modelEditorXml: this.nutflowOption.process.xml + } + submitModel(params).then(() => { + this.$message.success("鎿嶄綔鎴愬姛") + this.handleNutflowClose() + this.onLoad(this.page, this.query) + }) + }, + handleStep(step) { + if (step === 1) { // 涓嬩竴姝� + this.$refs['wf-design'].getData('xml').then(data => { + this.$set(this.nutflowOption.step1, 'xml', data) + this.$set(this.nutflowOption.step2, 'xml', data) + this.$set(this.nutflowOption.process, 'xml', data) + this.$set(this.nutflowOption, 'step', 2) + }) + } else this.$set(this.nutflowOption, 'step', 1) + }, + handleNutflowClose(done, flag) { + const initOption = { + process: {}, + step: 1, + step1: { + toolbar: ['open', 'create', 'fit', 'zoom-in', 'zoom-out', 'undo', 'redo', 'import', 'preview'], + }, + step2: { + mode: 'view', + simulation: true, + minimap: true, + } + } + if (done || flag) { + this.$confirm('纭畾瑕佸叧闂悧锛熷叧闂湭淇濆瓨鐨勪慨鏀归兘浼氫涪澶便��', '璀﹀憡', { + type: 'warning' + }).then(() => { + this.$set(this, 'nutflowOption', initOption) + if (typeof done == 'function') done() + this.flowBox = false + }).catch(() => { + }) + } else { + this.$set(this, 'nutflowOption', initOption) + this.flowBox = false + } + }, + handleSubmit(form, done) { + this.deployLoading = true; + deployModel({ + modelId: this.selectionId, + category: flowCategory(form.categoryValue), + tenantIds: form.tenantId.join(",") + }).then(res => { + const data = res.data; + if (data.success) { + this.$message({ + type: "success", + message: data.msg + }); + done(); + this.$refs.form.resetForm(); + this.deployBox = false; + this.deployLoading = false; + } else { + done(); + this.deployLoading = false; + this.$message({ + type: "warn", + message: data.msg + }); + } + }) + }, + 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 removeModel(this.ids); + }) + .then(() => { + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!" + }); + this.$refs.crud.toggleSelection(); + this.onLoad(this.page); + }); + }, + handleCreate() { + this.flowBox = true; + }, + handleUpdate(row) { + detail({id: row.id}).then(res => { + const data = res.data.data + const {modelEditorXml} = data + this.$set(this.nutflowOption.step1, 'xml', modelEditorXml) + this.$set(this.nutflowOption, 'process', data) + this.flowBox = true; + }) + }, + handleDeploy(row) { + this.deployBox = true; + this.selectionId = row.id; + }, + handleDoDeploy() { + this.$refs.form.submit(); + }, + handleSlotDelete(row) { + this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }) + .then(() => { + return removeModel(row.id); + }) + .then(() => { + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!" + }); + this.$refs.crud.toggleSelection(); + this.onLoad(this.page); + }); + }, + 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; + modelList(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(); + }); + } + } +}; +</script> + +<style lang="scss"> + +.wf-dialog { + .el-dialog__body { + padding: 5px; + } + + .avue-dialog__footer { + text-align: center; + } +} +</style> -- Gitblit v1.9.3