diff --git a/src/api/bpm/instance.js b/src/api/bpm/instance.js index ae6d9d0f4981d751b242caad8befe4d6372edeb1..9a934893702371785da91e4c026d77aa1bfd76c7 100644 --- a/src/api/bpm/instance.js +++ b/src/api/bpm/instance.js @@ -72,7 +72,18 @@ export function getFlowNodes (instanceId) { export function getCurrentNode (instanceId) { return axios({ url: '/bpm/instance/getCurrentNode', - method: 'POST', + method: 'GET', + params: { instanceId } + }) +} + +/** + * 获取可回退节点信息 + */ +export function getBackNodes (instanceId) { + return axios({ + url: '/bpm/instance/getBackNodes', + method: 'GET', params: { instanceId } }) } @@ -86,4 +97,4 @@ export function close (instanceId) { method: 'POST', params: { instanceId } }) -} \ No newline at end of file +} diff --git a/src/config/vxeTableConfig.js b/src/config/vxeTableConfig.js index 11d098a84c427419ee3b8a921025c7aba4f191a0..2a4afd62d64205c67ca663c951d30fd8f81b8771 100644 --- a/src/config/vxeTableConfig.js +++ b/src/config/vxeTableConfig.js @@ -40,6 +40,5 @@ VXETable.setup({ position: { top: '9%', left: '35%' }, // transfer: true, escClosable: true - } }) diff --git a/src/mixins/FormMixin.js b/src/mixins/FormMixin.js index 9d01f7b08216a3e5f55020fdd10cef8588857c38..023e3c1f7a18fa7c45ee07cf62658889036d1e58 100644 --- a/src/mixins/FormMixin.js +++ b/src/mixins/FormMixin.js @@ -34,6 +34,10 @@ export const FormMixin = { init (record, type, ...vars) { this.type = type this.visible = true + this.visible = true + this.addable = false + this.editable = false + this.showable = false if (type && type === 'add') { this.addable = true this.title = '新增' diff --git a/src/mixins/UploadMixin.js b/src/mixins/UploadMixin.js index 130464e2a49aadeb99df05d016fa5b9976612826..776ac1e08d587607ba397724a4ea41da98b1c5a9 100644 --- a/src/mixins/UploadMixin.js +++ b/src/mixins/UploadMixin.js @@ -38,7 +38,6 @@ export const UploadMixin = { */ uploadSuccess (info) { this.$message.success(`${info.file.name} 上传成功!`) - this.init() }, /** diff --git a/src/views/account/base/BasicSetting.vue b/src/views/account/base/BasicSetting.vue index 17477500fdb690aee07bd216b33d4fd02f067c86..1df0dfb8337035751266213a852f88675c78d577 100644 --- a/src/views/account/base/BasicSetting.vue +++ b/src/views/account/base/BasicSetting.vue @@ -18,7 +18,7 @@ label="名称" prop="name" > - + {{ sex.name }} @@ -38,21 +40,26 @@ - 更新基础信息 + 更新基础信息 + 编辑基础信息 -
+
+
+ +
@@ -75,6 +82,7 @@ export default { }, data () { return { + edit: false, labelCol: { sm: { span: 3 } }, @@ -96,6 +104,7 @@ export default { }, methods: { async init () { + this.edit = false this.confirmLoading = true // 获取用户信息 await getUserBaseInfo().then(res => { @@ -116,8 +125,19 @@ export default { handleOk () { this.$refs.form.validate(async valid => { if (valid) { - this.confirmLoading = true - updateBaseInfo(this.user).then(_ => this.confirmLoading = false) + this.$confirm({ + title: '警告', + content: '是否更新用户基础信息', + okText: '确定', + cancelText: '取消', + onOk: () => { + this.confirmLoading = true + updateBaseInfo(this.user).then(() => { + this.confirmLoading = false + this.edit = false + }) + } + }) } }) }, diff --git a/src/views/modules/develop/codegen/CodeGenForm.vue b/src/views/modules/develop/codegen/CodeGenForm.vue index 550a714a0d6bb47ca10d910f292c2d165a050b69..c7223361445433243132e37d26eac6814933b9d4 100644 --- a/src/views/modules/develop/codegen/CodeGenForm.vue +++ b/src/views/modules/develop/codegen/CodeGenForm.vue @@ -17,11 +17,7 @@ - - - - - + 生成其他参数 @@ -38,11 +34,22 @@ prop="entityName"> + + + Vue2 + Vue3 + + - + - + - + + MySQL + - + - + - + - + - + - + @@ -93,24 +95,45 @@ export default { id: null, code: null, name: null, - databaseType: null, - dbDriver: null, + databaseType: 'mysql', + dbDriver: 'com.mysql.cj.jdbc.Driver', dbUrl: null, dbName: null, dbUsername: null, dbPassword: null, - remark: null, + remark: null }, rules: { - code: [], - name: [], - databaseType: [], - dbDriver: [], - dbUrl: [], - dbName: [], - dbUsername: [], - dbPassword: [], - remark: [], + code: [ { required: true, message: '请输入' } ], + name: [ { required: true, message: '请输入' } ], + databaseType: [ { required: true, message: '请选择' } ], + dbDriver: [ { required: true, message: '请输入' } ], + dbUrl: [ { required: true, message: '请输入' } ], + dbName: [ { required: true, message: '请输入' } ], + dbUsername: [ { required: true, message: '请输入' } ], + dbPassword: [ { required: true, message: '请输入' } ], + remark: [] + } + } + }, + watch: { + 'form.databaseType': function (val) { + console.log(val) + switch (val) { + case 'mysql': { + this.form.dbDriver = 'com.mysql.cj.jdbc.Driver' + break + } + default: { + this.form.dbDriver = '' + } + } + } + }, + computed: { + diff () { + return { + dbPassword: this.diffForm(this.form.dbPassword, this.rawForm.dbPassword) } } }, @@ -123,6 +146,7 @@ export default { this.confirmLoading = true get(id).then(res => { this.form = res.data + this.rawForm = { ...res.data } this.confirmLoading = false }) } else { @@ -139,7 +163,11 @@ export default { if (this.type === 'add') { await add(this.form) } else if (this.type === 'edit') { - await update(this.form) + const form = { + ...this.form, + ...this.diff + } + await update(form) } this.confirmLoading = false this.$emit('ok') diff --git a/src/views/modules/develop/dynamicsource/DynamicDataSourceList.vue b/src/views/modules/develop/dynamicsource/DynamicDataSourceList.vue index fe40f7211e1ee6ef4d8b51d45f1d6cb5b3c485d0..ff39a1d21ce115cc97f7cc0ea75cfa45df7ab942 100644 --- a/src/views/modules/develop/dynamicsource/DynamicDataSourceList.vue +++ b/src/views/modules/develop/dynamicsource/DynamicDataSourceList.vue @@ -22,14 +22,11 @@ :data="tableData" > - - - + + + - - - diff --git a/src/views/modules/office/applyshow/TaskOperate.vue b/src/views/modules/office/applyshow/TaskOperate.vue index 5f2f33cf397fa9657145671581fa9a5e8bca33e3..d1cafd9164ea7227e66219e1d28740fc592fd6e8 100644 --- a/src/views/modules/office/applyshow/TaskOperate.vue +++ b/src/views/modules/office/applyshow/TaskOperate.vue @@ -2,7 +2,7 @@ - + {{ currentNode.nodeName }} @@ -24,24 +24,24 @@ - + - {{ nextNode.nodeName }} + {{ nextOrBackNode.nodeName }} - {{ dictConvert('BpmTaskAssignType', nextNode.assignType) }} + {{ dictConvert('BpmTaskAssignType', nextOrBackNode.assignType) }} - - {{ nextNode.assignShow }} + + {{ nextOrBackNode.assignShow }} - {{ nextNode.multi?nextNode.sequential?'串行':'并行':'否' }} + {{ nextOrBackNode.multi ? nextOrBackNode.sequential ? '串行' : '并行' : '否' }} - - {{ nextNode.orSign?'是':'否' }} + + {{ nextOrBackNode.orSign ? '是' : '否' }} - - {{ nextNode.passRatio }} % + + {{ nextOrBackNode.passRatio }} % @@ -58,25 +58,36 @@ :rules="rules" > - + 通过 驳回 + 退回 不通过 弃权 - + - - + + + + + @@ -110,6 +121,7 @@ import { approve } from '@/api/bpm/task' import { getNextNodes, listByModelId } from '@/api/bpm/modelNode' import { SELECT } from '@/views/modules/bpm/model/BpmModelNodeCode' import BUserSelectModal from '@/components/Bootx/UserSelectModal/BUserSelectModal' +import { getBackNodes } from '@/api/bpm/instance' export default { name: 'TaskOperate', @@ -126,13 +138,15 @@ export default { data () { return { nextModes: [], + backModes: [], currentNode: {}, - nextNode: { }, + nextOrBackNode: {}, userTaskNodes: {}, form: { type: 'pass', reason: '', nextNodeId: undefined, + backNodeId: undefined, assignShow: '', nextAssign: undefined } @@ -149,16 +163,17 @@ export default { type: [{ required: true, message: '请选择类型!' }], reason: [{ required: true, message: '请输入审批意见!' }], nextNodeId: [{ required: this.nextModes.length > 1 && this.form.type !== 'reject', message: '请选择下一环节的任务节点!' }], + backNodeId: [{ required: this.form.type === 'back', message: '请选择要退回的任务节点!' }], assignShow: [ { - required: [SELECT].includes(this.nextNode?.assignType) && this.form.type !== 'reject', + required: [SELECT].includes(this.nextOrBackNode?.assignType) && !['reject', 'back'].includes(this.form.type), message: '请选择下一环节的处理人!' } ] } }, nextMulti () { - return this.nextNode?.multi + return this.nextOrBackNode?.multi } }, methods: { @@ -179,14 +194,41 @@ export default { getNextNodes(this.instance.defId, task.nodeId).then(res => { this.nextModes = res.data if (this.nextModes.length === 1) { - this.nextNode = this.userTaskNodes.find(o => o.nodeId === this.nextModes[0].value) + this.nextOrBackNode = this.userTaskNodes.find(o => o.nodeId === this.nextModes[0].value) } else { - this.nextNode = null + this.nextOrBackNode = null } }) + // 可回退的任务节点 + getBackNodes(this.instance.instanceId).then(res => { + this.backModes = res.data + }) }, - changeNextNode () { - this.nextNode = this.userTaskNodes.find(o => o.nodeId === this.form.nextNodeId) + /** + * 类型切换 + */ + changeType () { + this.form.backNodeId = undefined + this.form.nextNodeId = undefined + if (this.form.type === 'back') { + this.nextOrBackNode = null + return + } + if (this.form.type === 'reject') { + this.nextOrBackNode = null + return + } + if (this.nextModes.length === 1) { + this.nextOrBackNode = this.userTaskNodes.find(o => o.nodeId === this.nextModes[0].value) + } else { + this.nextOrBackNode = null + } + }, + /** + * 回退节点变动 + */ + changeNextOrBackNode () { + this.nextOrBackNode = this.userTaskNodes.find(o => o.nodeId === this.form.backNodeId) }, /** * 提交处理 @@ -240,6 +282,7 @@ export default { this.$refs.form.validateField('assignShow') }, resetForm () { + this.nextOrBackNode = null this.$nextTick(() => { this.$refs.form.resetFields() }) diff --git a/src/views/modules/system/client/ClientEdit.vue b/src/views/modules/system/client/ClientEdit.vue index 8d51e32bff0f338b7348c6b131c49afa5ef3d454..6c2525731fb0e8025dc865cc5929cf2addee49cc 100644 --- a/src/views/modules/system/client/ClientEdit.vue +++ b/src/views/modules/system/client/ClientEdit.vue @@ -54,7 +54,7 @@ :filter-option="search" :disabled="showable" style="width: 100%" - placeholder="选择关联的终端" + placeholder="选择关联的登录方式" > {{ o.name }} @@ -158,6 +158,7 @@ export default { this.$refs.form.resetFields() }) }, + // 校验编码重复 async validateCode (rule, value, callback) { const { code, id } = this.form let res diff --git a/src/views/modules/system/client/ClientList.vue b/src/views/modules/system/client/ClientList.vue index 413fca98bff8db1c6d573bbb10e440f0d6c714a1..39dd86c0e9cf8bb2742163ecacb9a0da24011874 100644 --- a/src/views/modules/system/client/ClientList.vue +++ b/src/views/modules/system/client/ClientList.vue @@ -1,27 +1,12 @@