From a16751f25852aadae205becb5edc0ddb9f5b3e9a Mon Sep 17 00:00:00 2001 From: bimei <18812666091@163.com> Date: Thu, 2 Mar 2023 09:47:36 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=BA=95=E5=BA=A7bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/system/role/index.vue | 79 +++++++++++-------- src/views/system/tenantPackage/index.vue | 19 ++++- .../tenantPackage/tenantPackage.data.ts | 7 +- src/views/system/user/index.vue | 25 +++++- 4 files changed, 96 insertions(+), 34 deletions(-) diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue index 72c602c1..645546a9 100644 --- a/src/views/system/role/index.vue +++ b/src/views/system/role/index.vue @@ -99,37 +99,47 @@ </el-select> </el-form-item> <!-- 分配角色的菜单权限对话框 --> - <el-form-item - label="权限范围" - v-if=" - actionScopeType === 'menu' || dataScopeForm.dataScope === SystemDataScopeEnum.DEPT_CUSTOM - " - > - <el-card shadow="never"> - <template #header> - 父子联动(选中父节点,自动选择子节点): - <el-switch v-model="checkStrictly" inline-prompt active-text="是" inactive-text="否" /> - 全选/全不选: - <el-switch - v-model="treeNodeAll" - inline-prompt - active-text="是" - inactive-text="否" - @change="handleCheckedTreeNodeAll()" - /> - </template> - <el-tree - ref="treeRef" - node-key="id" - show-checkbox - :default-checked-keys="defaultCheckedKeys" - :check-strictly="!checkStrictly" - :props="defaultProps" - :data="treeOptions" - empty-text="加载中,请稍后" - /> - </el-card> - </el-form-item> + <el-row> + <el-col :span="24"> + <el-form-item + label="权限范围" + v-if=" + actionScopeType === 'menu' || + dataScopeForm.dataScope === SystemDataScopeEnum.DEPT_CUSTOM + " + style="display: flex" + > + <el-card class="card" shadow="never"> + <template #header> + 父子联动(选中父节点,自动选择子节点): + <el-switch + v-model="checkStrictly" + inline-prompt + active-text="是" + inactive-text="否" + /> + 全选/全不选: + <el-switch + v-model="treeNodeAll" + inline-prompt + active-text="是" + inactive-text="否" + @change="handleCheckedTreeNodeAll()" + /> + </template> + <el-tree + ref="treeRef" + node-key="id" + show-checkbox + :default-checked-keys="defaultCheckedKeys" + :check-strictly="!checkStrictly" + :props="defaultProps" + :data="treeOptions" + empty-text="加载中,请稍后" + /> + </el-card> + </el-form-item> </el-col + ></el-row> </el-form> <!-- 操作按钮 --> <template #footer> @@ -312,3 +322,10 @@ onMounted(() => { init() }) </script> +<style scoped> +.card { + width: 100%; + max-height: 400px; + overflow-y: scroll; +} +</style> diff --git a/src/views/system/tenantPackage/index.vue b/src/views/system/tenantPackage/index.vue index a665b8af..61831489 100644 --- a/src/views/system/tenantPackage/index.vue +++ b/src/views/system/tenantPackage/index.vue @@ -25,7 +25,7 @@ ref="formRef" > <template #menuIds> - <el-card class="w-120"> + <el-card> <template #header> <div class="card-header"> 全选/全不选: @@ -91,6 +91,16 @@ const dialogTitle = ref('edit') // 弹出层标题 const handleCheckedTreeNodeAll = () => { treeRef.value!.setCheckedNodes(treeNodeAll.value ? menuOptions.value : []) } + +const validateCategory = (rule: any, value: any, callback: any) => { + if (!treeRef.value!.getCheckedKeys().length) { + callback(new Error('该项为必填项')) + } else { + callback() + } +} +rules.menuIds = [{ required: true, validator: validateCategory, trigger: 'blur' }] + const getTree = async () => { const res = await listSimpleMenusApi() menuOptions.value = handleTree(res) @@ -166,3 +176,10 @@ onMounted(async () => { }) // getList() </script> +<style scoped> +.el-card { + width: 100%; + max-height: 400px; + overflow-y: scroll; +} +</style> diff --git a/src/views/system/tenantPackage/tenantPackage.data.ts b/src/views/system/tenantPackage/tenantPackage.data.ts index e28ea842..de06c2cb 100644 --- a/src/views/system/tenantPackage/tenantPackage.data.ts +++ b/src/views/system/tenantPackage/tenantPackage.data.ts @@ -33,7 +33,12 @@ const crudSchemas = reactive<VxeCrudSchema>({ { title: '菜单权限', field: 'menuIds', - isTable: false + isTable: false, + form: { + colProps: { + span: 24 + } + } }, { title: t('form.remark'), diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index d125112d..3305b275 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -159,7 +159,7 @@ :data="detailData" > <template #deptId="{ row }"> - <span>{{ row.dept?.name }}</span> + <el-tag>{{ dataFormater(row.deptId) }}</el-tag> </template> <template #postIds="{ row }"> <template v-if="row.postIds !== ''"> @@ -332,6 +332,29 @@ const getPostOptions = async () => { const res = await listSimplePostsApi() postOptions.value.push(...res) } + +const dataFormater = (val) => { + return deptFormater(deptOptions.value, val) +} +//部门回显 +const deptFormater = (ary, val: any) => { + var o = '' + if (ary && val) { + for (const v of ary) { + if (v.id == val) { + o = v.name + if (o) return o + } else if (v.children?.length) { + o = deptFormater(v.children, val) + if (o) return o + } + } + return o + } else { + return val + } +} + // 设置标题 const setDialogTile = async (type: string) => { dialogTitle.value = t('action.' + type) From 7c325ee96d49b68188762d4405aaf551e5e819b8 Mon Sep 17 00:00:00 2001 From: bimei <18812666091@163.com> Date: Fri, 3 Mar 2023 13:13:42 +0800 Subject: [PATCH 2/9] =?UTF-8?q?fix:=20=E4=B8=BB=E9=A2=98=E5=88=87=E6=8D=A2?= =?UTF-8?q?XTable=E9=A2=9C=E8=89=B2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/XTable/src/XTable.vue | 30 ++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/components/XTable/src/XTable.vue b/src/components/XTable/src/XTable.vue index 34f91ce0..3b88266f 100644 --- a/src/components/XTable/src/XTable.vue +++ b/src/components/XTable/src/XTable.vue @@ -12,6 +12,7 @@ import { useAppStore } from '@/store/modules/app' import { useDesign } from '@/hooks/web/useDesign' import { XTableProps } from './type' import { isBoolean, isFunction } from '@/utils/is' +import styleCss from './style/dark.scss' import download from '@/utils/download' @@ -26,14 +27,39 @@ const prefixCls = getPrefixCls('x-vxe-table') const attrs = useAttrs() const emit = defineEmits(['register']) +const removeStyles = () => { + var filename = 'cssTheme' + //移除引入的文件名 + var targetelement = 'style' + var targetattr = 'id' + var allsuspects = document.getElementsByTagName(targetelement) + for (var i = allsuspects.length; i >= 0; i--) { + if ( + allsuspects[i] && + allsuspects[i].getAttribute(targetattr) != null && + allsuspects[i].getAttribute(targetattr)?.indexOf(filename) != -1 + ) { + console.log(allsuspects[i], 'node') + allsuspects[i].parentNode?.removeChild(allsuspects[i]) + } + } +} +const reImport = () => { + var head = document.getElementsByTagName('head')[0] + var style = document.createElement('style') + style.innerText = styleCss + style.id = 'cssTheme' + head.appendChild(style) +} + watch( () => appStore.getIsDark, () => { if (appStore.getIsDark == true) { - import('./style/dark.scss') + reImport() } if (appStore.getIsDark == false) { - import('./style/light.scss') + removeStyles() } }, { immediate: true } From 6b25601936839cbb64a0e77dfb802d87965bafdf Mon Sep 17 00:00:00 2001 From: gexinzhineng/gxzn27 <1348660141@qq.com> Date: Mon, 6 Mar 2023 13:29:27 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E6=89=8B=E6=9C=BA=E5=8F=B7=E5=BF=85?= =?UTF-8?q?=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/system/user/user.data.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/views/system/user/user.data.ts b/src/views/system/user/user.data.ts index eb20b999..bd93873b 100644 --- a/src/views/system/user/user.data.ts +++ b/src/views/system/user/user.data.ts @@ -18,6 +18,7 @@ export const rules = reactive({ status: [required], mobile: [ { + required: true, len: 11, trigger: 'blur', message: '请输入正确的手机号码' From 269aabd6df3004f7dd9a3e431de02835e1aaef78 Mon Sep 17 00:00:00 2001 From: gexinzhineng/gxzn27 <1348660141@qq.com> Date: Mon, 6 Mar 2023 15:28:10 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E6=8C=89=E9=92=AE=E4=B8=8D=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=EF=BC=8C=E6=88=91=E7=9A=84=E6=B5=81=E7=A8=8B=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/bpm/processInstance/detail.vue | 6 +++--- src/views/bpm/processInstance/index.vue | 5 +++++ src/views/bpm/processInstance/process.data.ts | 7 ++++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/views/bpm/processInstance/detail.vue b/src/views/bpm/processInstance/detail.vue index 59d993e4..b6d52a4c 100644 --- a/src/views/bpm/processInstance/detail.vue +++ b/src/views/bpm/processInstance/detail.vue @@ -404,9 +404,9 @@ const getDetail = () => { data.formVariables ) nextTick().then(() => { - fApi.value?.btn.show(false) - fApi.value?.resetBtn.show(false) - fApi.value?.btn.disabled(true) + fApi.value?.fapi?.btn.show(false) + fApi.value?.fapi?.resetBtn.show(false) + fApi.value?.fapi?.disabled(true) }) } diff --git a/src/views/bpm/processInstance/index.vue b/src/views/bpm/processInstance/index.vue index 6cba9eaf..f43e53ef 100644 --- a/src/views/bpm/processInstance/index.vue +++ b/src/views/bpm/processInstance/index.vue @@ -12,6 +12,10 @@ @click="handleCreate" /> </template> + <!-- 流程分类 --> + <template #category_default="{ row }"> + <DictTag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="Number(row?.category)" /> + </template> <!-- 当前审批任务 --> <template #tasks_default="{ row }"> <el-button v-for="task in row.tasks" :key="task.id" link> @@ -40,6 +44,7 @@ <script setup lang="ts"> // 全局相关的 import import { ElMessageBox } from 'element-plus' +import { DICT_TYPE } from '@/utils/dict' // 业务相关的 import import * as ProcessInstanceApi from '@/api/bpm/processInstance' diff --git a/src/views/bpm/processInstance/process.data.ts b/src/views/bpm/processInstance/process.data.ts index 883f4687..317e143d 100644 --- a/src/views/bpm/processInstance/process.data.ts +++ b/src/views/bpm/processInstance/process.data.ts @@ -33,7 +33,12 @@ const crudSchemas = reactive<VxeCrudSchema>({ field: 'category', dictType: DICT_TYPE.BPM_MODEL_CATEGORY, dictClass: 'number', - isSearch: true + isSearch: true, + table: { + slots: { + default: 'category_default' + } + } }, { title: '当前审批任务', From cc7fb7e43f78a0488a477f4f60b18ba47e5a1bf5 Mon Sep 17 00:00:00 2001 From: gexinzhineng/gxzn27 <1348660141@qq.com> Date: Mon, 6 Mar 2023 15:57:06 +0800 Subject: [PATCH 5/9] =?UTF-8?q?loading=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/system/user/index.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 5568ca2a..670eed55 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -416,12 +416,12 @@ const submitForm = async () => { try { const data = unref(formRef)?.formModel as UserApi.UserVO if (actionType.value === 'create') { - await UserApi.createUserApi(data) loading.value = true + await UserApi.createUserApi(data) message.success(t('common.createSuccess')) } else { - await UserApi.updateUserApi(data) loading.value = true + await UserApi.updateUserApi(data) message.success(t('common.updateSuccess')) } dialogVisible.value = false From 68e7b76775b71a1233f4347eb83c6e3b3a931987 Mon Sep 17 00:00:00 2001 From: gexinzhineng/gxzn27 <1348660141@qq.com> Date: Mon, 6 Mar 2023 19:30:06 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/system/user/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 670eed55..13591b34 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -408,12 +408,12 @@ const handleDetail = async (rowId: number) => { // 提交按钮 const submitForm = async () => { - // 提交请求 const elForm = unref(formRef)?.getElFormRef() if (!elForm) return elForm.validate(async (valid) => { if (valid) { try { + // 提交请求 const data = unref(formRef)?.formModel as UserApi.UserVO if (actionType.value === 'create') { loading.value = true From 28f659f5bcfc62b4716c4d8143627cb4dc62d88c Mon Sep 17 00:00:00 2001 From: gexinzhineng/gxzn27 <1348660141@qq.com> Date: Mon, 6 Mar 2023 19:42:47 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/system/user/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 13591b34..2f9ba9b0 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -412,8 +412,8 @@ const submitForm = async () => { if (!elForm) return elForm.validate(async (valid) => { if (valid) { + // 提交请求 try { - // 提交请求 const data = unref(formRef)?.formModel as UserApi.UserVO if (actionType.value === 'create') { loading.value = true From c5d05f1d457e5fff7ee728aee700b6e4bb2ec989 Mon Sep 17 00:00:00 2001 From: gexinzhineng/gxzn27 <1348660141@qq.com> Date: Mon, 6 Mar 2023 20:53:19 +0800 Subject: [PATCH 8/9] =?UTF-8?q?id=E8=AD=A6=E5=91=8A=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../package/penal/task/task-components/ReceiveTask.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue index 63db1c75..2ec10c63 100644 --- a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue +++ b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue @@ -11,10 +11,10 @@ > <el-select v-model="bindMessageId" @change="updateTaskMessage"> <el-option - v-for="id in Object.keys(messageMap)" - :value="id" - :label="messageMap[id]" - :key="id" + v-for="item in Object.keys(messageMap)" + :value="item" + :label="messageMap[item]" + :key="item" /> </el-select> <XButton From 71219a2f93e54ad07f40c0fa614bea94ea922941 Mon Sep 17 00:00:00 2001 From: gexinzhineng/gxzn27 <1348660141@qq.com> Date: Mon, 6 Mar 2023 22:58:05 +0800 Subject: [PATCH 9/9] =?UTF-8?q?xTable=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/XTable/src/XTable.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/XTable/src/XTable.vue b/src/components/XTable/src/XTable.vue index e5c503ec..d1048582 100644 --- a/src/components/XTable/src/XTable.vue +++ b/src/components/XTable/src/XTable.vue @@ -12,7 +12,7 @@ import { useAppStore } from '@/store/modules/app' import { useDesign } from '@/hooks/web/useDesign' import { XTableProps } from './type' import { isBoolean, isFunction } from '@/utils/is' -import styleCss from './style/dark.scss' +import styleCss from './style/dark.scss?inline' import download from '@/utils/download' const { t } = useI18n()