-
+
-
- {{ scope.row.name }}
+
+
+ {{ subString(row.name, 0, 2) }}
+
+ {{ row.name }}
-
-
- 全部可见
-
-
- {{ scope.row.startUsers[0].nickname }}
+
+ 全部可见
+
+ {{ row.startUsers[0].nickname }}
- {{ scope.row.startUsers[0].nickname }}等 {{ scope.row.startUsers.length }} 人可见
+ {{ row.startUsers[0].nickname }}等 {{ row.startUsers.length }} 人可见
+
+
+
+
+
修改
+
+ 复制
+
发布
@@ -176,28 +192,43 @@
handleModelCommand(command, scope.row)"
- v-hasPermi="['bpm:process-definition:query', 'bpm:model:update', 'bpm:model:delete']"
+ v-if="hasPermiMore"
>
更多
-
+
历史
+
+ 报表
+
{{ scope.row.processDefinition.suspensionState === 1 ? '停用' : '启用' }}
+
+ 清理
+
删除
@@ -227,15 +258,16 @@
-
-
+
+
diff --git a/src/views/bpm/model/ModelForm.vue b/src/views/bpm/model/ModelForm.vue
deleted file mode 100644
index 2b4bcc6d..00000000
--- a/src/views/bpm/model/ModelForm.vue
+++ /dev/null
@@ -1,440 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/views/bpm/definition/index.vue b/src/views/bpm/model/definition/index.vue
similarity index 51%
rename from src/views/bpm/definition/index.vue
rename to src/views/bpm/model/definition/index.vue
index 55da993d..2b061f43 100644
--- a/src/views/bpm/definition/index.vue
+++ b/src/views/bpm/model/definition/index.vue
@@ -3,40 +3,60 @@
-
-
-
-
- {{ scope.row.name }}
-
+
+
+
+
+
-
-
+
+
+ 全部可见
+
+ {{ row.startUsers[0].nickname }}
+
+
+
+ {{ row.startUsers[0].nickname }}等 {{ row.startUsers.length }} 人可见
+
+
+
+
+
+
+
+
+
+
{{ scope.row.formName }}
-
+
{{ scope.row.formCustomCreatePath }}
+
-
+
- v{{ scope.row.version }}
- 未部署
-
-
-
-
- 激活
- 挂起
+ v{{ scope.row.version }}
-
+
+
+
+ 恢复
+
+
+
-
-
-
+
+
diff --git a/src/views/bpm/model/editor/index.vue b/src/views/bpm/model/editor/index.vue
deleted file mode 100644
index 37eff739..00000000
--- a/src/views/bpm/model/editor/index.vue
+++ /dev/null
@@ -1,279 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/bpm/model/form/BasicInfo.vue b/src/views/bpm/model/form/BasicInfo.vue
index 0359ea89..86700fa4 100644
--- a/src/views/bpm/model/form/BasicInfo.vue
+++ b/src/views/bpm/model/form/BasicInfo.vue
@@ -6,7 +6,7 @@
class="!w-440px"
v-model="modelData.key"
:disabled="!!modelData.id"
- placeholder="请输入流标标识"
+ placeholder="请输入流程标识,以字母或下划线开头"
/>
-
+
@@ -62,7 +62,7 @@
{{ dict.label }}
@@ -77,7 +77,6 @@
>
-
- 选择人员
+ 选择人员
-
-
-
-
-
-
-
+
+
import { DICT_TYPE, getBoolDictOptions, getIntDictOptions } from '@/utils/dict'
import { UserVO } from '@/api/system/user'
+import { CategoryVO } from '@/api/bpm/category'
const props = defineProps({
- modelValue: {
- type: Object,
- required: true
- },
categoryList: {
- type: Array,
+ type: Array as PropType
,
required: true
},
userList: {
@@ -158,8 +145,6 @@ const props = defineProps({
}
})
-const emit = defineEmits(['update:modelValue'])
-
const formRef = ref()
const selectedStartUsers = ref([])
const selectedManagerUsers = ref([])
@@ -170,34 +155,36 @@ const rules = {
name: [{ required: true, message: '流程名称不能为空', trigger: 'blur' }],
key: [{ required: true, message: '流程标识不能为空', trigger: 'blur' }],
category: [{ required: true, message: '流程分类不能为空', trigger: 'blur' }],
- icon: [{ required: true, message: '流程图标不能为空', trigger: 'blur' }],
type: [{ required: true, message: '是否可见不能为空', trigger: 'blur' }],
visible: [{ required: true, message: '是否可见不能为空', trigger: 'blur' }],
managerUserIds: [{ required: true, message: '流程管理员不能为空', trigger: 'blur' }]
}
// 创建本地数据副本
-const modelData = computed({
- get: () => props.modelValue,
- set: (val) => emit('update:modelValue', val)
-})
+const modelData = defineModel()
// 初始化选中的用户
watch(
- () => props.modelValue,
+ () => modelData.value,
(newVal) => {
if (newVal.startUserIds?.length) {
selectedStartUsers.value = props.userList.filter((user: UserVO) =>
newVal.startUserIds.includes(user.id)
) as UserVO[]
+ } else {
+ selectedStartUsers.value = []
}
if (newVal.managerUserIds?.length) {
selectedManagerUsers.value = props.userList.filter((user: UserVO) =>
newVal.managerUserIds.includes(user.id)
) as UserVO[]
+ } else {
+ selectedManagerUsers.value = []
}
},
- { immediate: true }
+ {
+ immediate: true
+ }
)
/** 打开发起人选择 */
@@ -215,58 +202,42 @@ const openManagerUserSelect = () => {
/** 处理用户选择确认 */
const handleUserSelectConfirm = (_, users: UserVO[]) => {
if (currentSelectType.value === 'start') {
- selectedStartUsers.value = users
- emit('update:modelValue', {
+ modelData.value = {
...modelData.value,
startUserIds: users.map((u) => u.id)
- })
+ }
} else {
- selectedManagerUsers.value = users
- emit('update:modelValue', {
+ modelData.value = {
...modelData.value,
managerUserIds: users.map((u) => u.id)
- })
+ }
}
}
/** 处理发起人类型变化 */
const handleStartUserTypeChange = (value: number) => {
if (value !== 1) {
- selectedStartUsers.value = []
- emit('update:modelValue', {
+ modelData.value = {
...modelData.value,
startUserIds: []
- })
- }
-}
-
-/** 处理管理员类型变化 */
-const handleManagerUserTypeChange = (value: number) => {
- if (value !== 1) {
- selectedManagerUsers.value = []
- emit('update:modelValue', {
- ...modelData.value,
- managerUserIds: []
- })
+ }
}
}
/** 移除发起人 */
const handleRemoveStartUser = (user: UserVO) => {
- selectedStartUsers.value = selectedStartUsers.value.filter((u) => u.id !== user.id)
- emit('update:modelValue', {
+ modelData.value = {
...modelData.value,
startUserIds: modelData.value.startUserIds.filter((id: number) => id !== user.id)
- })
+ }
}
/** 移除管理员 */
const handleRemoveManagerUser = (user: UserVO) => {
- selectedManagerUsers.value = selectedManagerUsers.value.filter((u) => u.id !== user.id)
- emit('update:modelValue', {
+ modelData.value = {
...modelData.value,
managerUserIds: modelData.value.managerUserIds.filter((id: number) => id !== user.id)
- })
+ }
}
/** 表单校验 */
diff --git a/src/views/bpm/model/form/ExtraSettings.vue b/src/views/bpm/model/form/ExtraSettings.vue
new file mode 100644
index 00000000..3c8e689b
--- /dev/null
+++ b/src/views/bpm/model/form/ExtraSettings.vue
@@ -0,0 +1,366 @@
+
+
+
+
+ 提交人权限
+
+
+
+
+ 第一个审批节点通过后,提交人仍可撤销申请
+
+
+
+
+
+ 流程编码
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编码示例:{{ numberExample }}
+
+
+
+
+
+ 自动去重
+
+
+
+ 同一审批人在流程中重复出现时:
+
+
+
+ 不自动通过
+ 仅审批一次,后续重复的审批节点均自动通过
+ 仅针对连续审批的节点自动通过
+
+
+
+
+
+
+ 标题设置
+
+
+
+
+ 系统默认 展示流程名称
+
+ 自定义标题
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 摘要设置
+
+
+
+
+
+ 系统默认 展示表单前 3 个字段
+
+ 自定义摘要
+
+
+
+
+
+
+
+
+
+ 流程前置通知
+
+
+
+
+
+ 流程后置通知
+
+
+
+
+
+
+
diff --git a/src/views/bpm/model/form/FormDesign.vue b/src/views/bpm/model/form/FormDesign.vue
index 98aee6d2..e1ca27f2 100644
--- a/src/views/bpm/model/form/FormDesign.vue
+++ b/src/views/bpm/model/form/FormDesign.vue
@@ -11,12 +11,12 @@
-
+
-
+
-
+
@@ -68,27 +68,19 @@
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import * as FormApi from '@/api/bpm/form'
import { setConfAndFields2 } from '@/utils/formCreate'
+import { BpmModelFormType } from '@/utils/constants'
const props = defineProps({
- modelValue: {
- type: Object,
- required: true
- },
formList: {
type: Array,
required: true
}
})
-const emit = defineEmits(['update:modelValue'])
-
const formRef = ref()
// 创建本地数据副本
-const modelData = computed({
- get: () => props.modelValue,
- set: (val) => emit('update:modelValue', val)
-})
+const modelData = defineModel
()
// 表单预览数据
const formPreview = ref({
@@ -105,7 +97,7 @@ const formPreview = ref({
watch(
() => modelData.value.formId,
async (newFormId) => {
- if (newFormId && modelData.value.formType === 10) {
+ if (newFormId && modelData.value.formType === BpmModelFormType.NORMAL) {
const data = await FormApi.getForm(newFormId)
setConfAndFields2(formPreview.value, data.conf, data.fields)
// 设置只读
diff --git a/src/views/bpm/model/form/ProcessDesign.vue b/src/views/bpm/model/form/ProcessDesign.vue
index 40d35ab7..bb3a04b0 100644
--- a/src/views/bpm/model/form/ProcessDesign.vue
+++ b/src/views/bpm/model/form/ProcessDesign.vue
@@ -6,10 +6,7 @@
:model-id="modelData.id"
:model-key="modelData.key"
:model-name="modelData.name"
- :value="currentBpmnXml"
- ref="bpmnEditorRef"
@success="handleDesignSuccess"
- @init-finished="handleEditorInit"
/>
@@ -21,150 +18,26 @@
:model-key="modelData.key"
:model-name="modelData.name"
:start-user-ids="modelData.startUserIds"
- :value="currentSimpleModel"
- ref="simpleEditorRef"
@success="handleDesignSuccess"
- @init-finished="handleEditorInit"
/>
diff --git a/src/views/bpm/model/form/editor/index.vue b/src/views/bpm/model/form/editor/index.vue
new file mode 100644
index 00000000..93c72612
--- /dev/null
+++ b/src/views/bpm/model/form/editor/index.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/bpm/model/form/index.vue b/src/views/bpm/model/form/index.vue
index 4585fc60..17fa3fe3 100644
--- a/src/views/bpm/model/form/index.vue
+++ b/src/views/bpm/model/form/index.vue
@@ -44,8 +44,13 @@
- 发 布
- 保 存
+
+ 发 布
+
+
+ 恢 复
+ 保 存
+
@@ -67,12 +72,12 @@
-
+
+
+
+
+
+
@@ -81,19 +86,23 @@
diff --git a/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue b/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue
index 64d072ce..49ce3b05 100644
--- a/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue
+++ b/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue
@@ -74,7 +74,7 @@
+
diff --git a/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue b/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue
index e24316cb..110b8bd6 100644
--- a/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue
+++ b/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue
@@ -43,7 +43,8 @@
v-if="
isEmpty(activity.tasks) &&
isEmpty(activity.candidateUsers) &&
- CandidateStrategy.START_USER_SELECT === activity.candidateStrategy
+ (CandidateStrategy.START_USER_SELECT === activity.candidateStrategy ||
+ CandidateStrategy.APPROVE_USER_SELECT === activity.candidateStrategy)
"
>
@@ -121,8 +122,20 @@
"
class="text-#a5a5a5 text-13px mt-1 w-full bg-#f8f8fa p2 rounded-md"
>
+
审批意见:{{ task.reason }}
+
+ 签名:
+
+
@@ -168,6 +181,8 @@ import copySvg from '@/assets/svgs/bpm/copy.svg'
import conditionSvg from '@/assets/svgs/bpm/condition.svg'
import parallelSvg from '@/assets/svgs/bpm/parallel.svg'
import finishSvg from '@/assets/svgs/bpm/finish.svg'
+import transactorSvg from '@/assets/svgs/bpm/transactor.svg'
+import childProcessSvg from '@/assets/svgs/bpm/child-process.svg'
defineOptions({ name: 'BpmProcessInstanceTimeline' })
withDefaults(
@@ -229,12 +244,16 @@ const nodeTypeSvgMap = {
[NodeType.START_USER_NODE]: { color: '#909398', svg: starterSvg },
// 审批人节点
[NodeType.USER_TASK_NODE]: { color: '#ff943e', svg: auditorSvg },
+ // 办理人节点
+ [NodeType.TRANSACTOR_NODE]: { color: '#ff943e', svg: transactorSvg },
// 抄送人节点
[NodeType.COPY_TASK_NODE]: { color: '#3296fb', svg: copySvg },
// 条件分支节点
[NodeType.CONDITION_NODE]: { color: '#14bb83', svg: conditionSvg },
// 并行分支节点
- [NodeType.PARALLEL_BRANCH_NODE]: { color: '#14bb83', svg: parallelSvg }
+ [NodeType.PARALLEL_BRANCH_NODE]: { color: '#14bb83', svg: parallelSvg },
+ // 子流程节点
+ [NodeType.CHILD_PROCESS_NODE]: { color: '#14bb83', svg: childProcessSvg }
}
// 只有只有状态是 -1、0、1 才展示头像右小角状态小icon
@@ -253,6 +272,8 @@ const getApprovalNodeIcon = (taskStatus: number, nodeType: NodeType) => {
if (
nodeType === NodeType.START_USER_NODE ||
nodeType === NodeType.USER_TASK_NODE ||
+ nodeType === NodeType.TRANSACTOR_NODE ||
+ nodeType === NodeType.CHILD_PROCESS_NODE ||
nodeType === NodeType.END_EVENT_NODE
) {
return statusIconMap[taskStatus]?.icon
diff --git a/src/views/bpm/processInstance/detail/SignDialog.vue b/src/views/bpm/processInstance/detail/SignDialog.vue
new file mode 100644
index 00000000..744a3556
--- /dev/null
+++ b/src/views/bpm/processInstance/detail/SignDialog.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ 清除
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/bpm/processInstance/detail/index.vue b/src/views/bpm/processInstance/detail/index.vue
index 9809f7a8..c3f83cf0 100644
--- a/src/views/bpm/processInstance/detail/index.vue
+++ b/src/views/bpm/processInstance/detail/index.vue
@@ -178,8 +178,9 @@ const writableFields: Array
= [] // 表单可以编辑的字段
/** 获得详情 */
const getDetail = () => {
+ // 获得审批详情
getApprovalDetail()
-
+ // 获得流程模型视图
getProcessModelView()
}
diff --git a/src/views/bpm/processInstance/index.vue b/src/views/bpm/processInstance/index.vue
index a47b8bf7..d6fc83d3 100644
--- a/src/views/bpm/processInstance/index.vue
+++ b/src/views/bpm/processInstance/index.vue
@@ -24,9 +24,7 @@
搜索
-
-
-
+
-
-
+
-
-
+
高级筛选
-
-
-
-
-
-
+ @change="handleQuery"
+ >
+
+
-
+
-
-
- 确认
- 取消
- 清空
+
+
+ 清空
+ 取消
+ 确认
+
@@ -130,6 +119,15 @@
+
+
+
+
+ {{ item.key }} : {{ item.value }}
+
+
+
+
-
-
-
+
-
+
+
+
+
+
+
+ {{ scope.row.tasks[0].assigneeUser?.nickname }}
+
+ ({{ scope.row.tasks[0].name }}) 审批中
+
+
+
+
+
+
+ {{ scope.row.tasks[0].assigneeUser?.nickname }}
+
+ 等 {{ scope.row.tasks.length }} 人 ({{ scope.row.tasks[0].name }})审批中
+
+
+
+
+
+
+
-
-
diff --git a/src/views/bpm/processInstance/report/index.vue b/src/views/bpm/processInstance/report/index.vue
new file mode 100644
index 00000000..939c0bde
--- /dev/null
+++ b/src/views/bpm/processInstance/report/index.vue
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.formVariables[item.field] ?? '' }}
+
+
+
+
+
+ 详情
+
+
+ 取消
+
+
+
+
+
+
+
+
+
diff --git a/src/views/bpm/simple/SimpleModelDesign.vue b/src/views/bpm/simple/SimpleModelDesign.vue
index eed00997..09e5a688 100644
--- a/src/views/bpm/simple/SimpleModelDesign.vue
+++ b/src/views/bpm/simple/SimpleModelDesign.vue
@@ -4,9 +4,7 @@
:model-id="modelId"
:model-key="modelKey"
:model-name="modelName"
- :value="currentValue"
@success="handleSuccess"
- @init-finished="handleInit"
:start-user-ids="startUserIds"
ref="designerRef"
/>
@@ -19,137 +17,22 @@ defineOptions({
name: 'SimpleModelDesign'
})
-const props = defineProps<{
+defineProps<{
modelId?: string
modelKey?: string
modelName?: string
- value?: string
startUserIds?: number[]
}>()
-const emit = defineEmits(['success', 'init-finished'])
+const emit = defineEmits(['success'])
const designerRef = ref()
-const isInitialized = ref(false)
-const currentValue = ref('')
-
-// 初始化或更新当前值
-const initOrUpdateValue = async () => {
- console.log('initOrUpdateValue', props.value)
- if (props.value) {
- currentValue.value = props.value
- // 如果设计器已经初始化,立即加载数据
- if (isInitialized.value && designerRef.value) {
- try {
- await designerRef.value.loadProcessData(props.value)
- await nextTick()
- if (designerRef.value.refresh) {
- await designerRef.value.refresh()
- }
- } catch (error) {
- console.error('加载流程数据失败:', error)
- }
- }
- }
-}
-
-// 监听属性变化
-watch(
- [() => props.modelKey, () => props.modelName, () => props.value],
- async ([newKey, newName, newValue], [oldKey, oldName, oldValue]) => {
- if (designerRef.value && isInitialized.value) {
- try {
- if (newKey && newName && (newKey !== oldKey || newName !== oldName)) {
- await designerRef.value.updateModel(newKey, newName)
- }
- if (newValue && newValue !== oldValue) {
- currentValue.value = newValue
- await designerRef.value.loadProcessData(newValue)
- await nextTick()
- if (designerRef.value.refresh) {
- await designerRef.value.refresh()
- }
- }
- } catch (error) {
- console.error('更新流程数据失败:', error)
- }
- }
- },
- { deep: true, immediate: true }
-)
-
-// 初始化完成回调
-const handleInit = async () => {
- try {
- isInitialized.value = true
- emit('init-finished')
-
- // 等待下一个tick,确保设计器已经准备好
- await nextTick()
-
- // 初始化完成后,设置初始值
- if (props.modelKey && props.modelName) {
- await designerRef.value.updateModel(props.modelKey, props.modelName)
- }
- if (props.value) {
- currentValue.value = props.value
- await designerRef.value.loadProcessData(props.value)
- // 再次刷新确保数据正确加载
- await nextTick()
- if (designerRef.value.refresh) {
- await designerRef.value.refresh()
- }
- }
- } catch (error) {
- console.error('初始化流程数据失败:', error)
- }
-}
// 修改成功回调
const handleSuccess = (data?: any) => {
- console.warn('handleSuccess', data)
- if (data && data !== currentValue.value) {
- currentValue.value = data
+ console.info('handleSuccess', data)
+ if (data) {
emit('success', data)
}
}
-
-/** 获取当前流程数据 */
-const getCurrentFlowData = async () => {
- try {
- if (designerRef.value) {
- const data = await designerRef.value.getCurrentFlowData()
- if (data) {
- currentValue.value = data
- }
- return data
- }
- return currentValue.value || undefined
- } catch (error) {
- console.error('获取流程数据失败:', error)
- return currentValue.value || undefined
- }
-}
-
-// 组件创建时初始化数据
-onMounted(() => {
- initOrUpdateValue()
-})
-
-// 组件卸载前保存数据
-onBeforeUnmount(async () => {
- try {
- const data = await getCurrentFlowData()
- if (data) {
- emit('success', data)
- }
- } catch (error) {
- console.error('保存数据失败:', error)
- }
-})
-
-defineExpose({
- getCurrentFlowData,
- refresh: () => designerRef.value?.refresh?.()
-})
diff --git a/src/views/bpm/task/copy/index.vue b/src/views/bpm/task/copy/index.vue
index f32a52a5..91cfaafe 100644
--- a/src/views/bpm/task/copy/index.vue
+++ b/src/views/bpm/task/copy/index.vue
@@ -44,7 +44,17 @@
+
+
+
+
+
+ {{ item.key }} : {{ item.value }}
+
+
+
+
-
+
@@ -76,26 +76,31 @@
placement="bottom-end"
>
-
- 高级筛选
+
+ 高级筛选
-
-
+
-
+
确认
取消
清空
-
+
-
@@ -122,6 +126,18 @@
+
+
+
+
+ {{ item.key }} : {{ item.value }}
+
+
+
+
-
+
@@ -183,25 +204,28 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { dateFormatter, formatPast2 } from '@/utils/formatTime'
import * as TaskApi from '@/api/bpm/task'
import { CategoryApi, CategoryVO } from '@/api/bpm/category'
+import * as DefinitionApi from '@/api/bpm/definition'
-defineOptions({ name: 'BpmTodoTask' })
+defineOptions({ name: 'BpmDoneTask' })
const { push } = useRouter() // 路由
const loading = ref(true) // 列表的加载中
const total = ref(0) // 列表的总页数
const list = ref([]) // 列表的数据
+const processDefinitionList = ref([]) // 流程定义列表
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
name: '',
- category: undefined,
+ category: undefined,
status: undefined,
+ processDefinitionKey: '',
createTime: []
})
const queryFormRef = ref() // 搜索的表单
const categoryList = ref([]) // 流程分类列表
-const showPopover = ref(false)
+const showPopover = ref(false) // 高级筛选是否展示
/** 查询任务列表 */
const getList = async () => {
@@ -242,5 +266,7 @@ const handleAudit = (row: any) => {
onMounted(async () => {
await getList()
categoryList.value = await CategoryApi.getCategorySimpleList()
+ // 获取流程定义列表
+ processDefinitionList.value = await DefinitionApi.getSimpleProcessDefinitionList()
})
diff --git a/src/views/bpm/task/manager/index.vue b/src/views/bpm/task/manager/index.vue
index 688e5150..ad217484 100644
--- a/src/views/bpm/task/manager/index.vue
+++ b/src/views/bpm/task/manager/index.vue
@@ -87,7 +87,7 @@
{{ formatPast2(scope.row.durationInMillis) }}
-
+
diff --git a/src/views/bpm/task/todo/index.vue b/src/views/bpm/task/todo/index.vue
index 32129376..45a2eb44 100644
--- a/src/views/bpm/task/todo/index.vue
+++ b/src/views/bpm/task/todo/index.vue
@@ -31,8 +31,7 @@
搜索
-
-
+
-
-
+
-
- 高级筛选
+
+ 高级筛选
-
-
+
-
-
+
+
-
- 确认
- 取消
- 清空
-
+
+
+ 清空
+ 取消
+ 确认
+
+
-
@@ -105,6 +109,18 @@
+
+
+
+
+ {{ item.key }} : {{ item.value }}
+
+
+
+
-
+
@@ -148,6 +169,7 @@
import { dateFormatter } from '@/utils/formatTime'
import * as TaskApi from '@/api/bpm/task'
import { CategoryApi, CategoryVO } from '@/api/bpm/category'
+import * as DefinitionApi from '@/api/bpm/definition'
defineOptions({ name: 'BpmTodoTask' })
@@ -156,15 +178,18 @@ const { push } = useRouter() // 路由
const loading = ref(true) // 列表的加载中
const total = ref(0) // 列表的总页数
const list = ref([]) // 列表的数据
+const processDefinitionList = ref([]) // 流程定义列表
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
name: '',
category: undefined,
+ processDefinitionKey: '',
createTime: []
})
const queryFormRef = ref() // 搜索的表单
const categoryList = ref([]) // 流程分类列表
+const showPopover = ref(false) // 高级筛选是否展示
/** 查询任务列表 */
const getList = async () => {
@@ -178,8 +203,6 @@ const getList = async () => {
}
}
-const showPopover = ref(false)
-
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
@@ -207,5 +230,7 @@ const handleAudit = (row: any) => {
onMounted(async () => {
await getList()
categoryList.value = await CategoryApi.getCategorySimpleList()
+ // 获取流程定义列表
+ processDefinitionList.value = await DefinitionApi.getSimpleProcessDefinitionList()
})
diff --git a/src/views/erp/purchase/order/components/PurchaseOrderItemForm.vue b/src/views/erp/purchase/order/components/PurchaseOrderItemForm.vue
index 265193e9..70a24331 100644
--- a/src/views/erp/purchase/order/components/PurchaseOrderItemForm.vue
+++ b/src/views/erp/purchase/order/components/PurchaseOrderItemForm.vue
@@ -66,7 +66,11 @@
-
+
{
/** 复制 **/
const copy = async (text: string) => {
- const { copy, copied, isSupported } = useClipboard({ source: text })
+ const textToCopy = JSON.stringify(text, null, 2)
+ const { copy, copied, isSupported } = useClipboard({ source: textToCopy })
if (!isSupported) {
message.error(t('common.copyError'))
} else {
@@ -149,17 +150,18 @@ const copy = async (text: string) => {
/**
* 代码高亮
*/
-const highlightedCode = (code) => {
+const highlightedCode = (code: string) => {
// 处理语言和代码
let language = 'json'
if (formType.value === 2) {
language = 'xml'
}
+ // debugger
if (!isString(code)) {
- code = JSON.stringify(code)
+ code = JSON.stringify(code, null, 2)
}
// 高亮
- const result = hljs.highlight(language, code, true)
+ const result = hljs.highlight(code, { language: language, ignoreIllegals: true })
return result.value || ' '
}
diff --git a/src/views/infra/job/JobDetail.vue b/src/views/infra/job/JobDetail.vue
index d2e8c460..584c89bb 100644
--- a/src/views/infra/job/JobDetail.vue
+++ b/src/views/infra/job/JobDetail.vue
@@ -7,7 +7,7 @@
{{ detailData.name }}
-
+
diff --git a/src/views/knowledge/dataset-form/form-step1.vue b/src/views/knowledge/dataset-form/form-step1.vue
deleted file mode 100644
index ef3579eb..00000000
--- a/src/views/knowledge/dataset-form/form-step1.vue
+++ /dev/null
@@ -1,151 +0,0 @@
-
-
-
-
-
-
-
导入已有文本
-
-
-
-
-
上传文本文件
-
-
- 拖拽文件至此,或者 选择文件
-
- 已支持 TXT、MARKDOWN、PDF、HTML、XLSX、XLS、DOCX、CSV、EML、MSG、PPTX、PPT、XML、EPUB,每个文件不超过 15MB。
-
-
-
-
-
-
- 下一步
-
-
-
-
-
- 创建一个空知识库
-
-
-
-
-
-
-
diff --git a/src/views/knowledge/dataset-form/form-step2.vue b/src/views/knowledge/dataset-form/form-step2.vue
deleted file mode 100644
index f8ca5718..00000000
--- a/src/views/knowledge/dataset-form/form-step2.vue
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-
-
-
-
-
-
- 自动分段与清洗
- 自定义
-
-
-
-
-
-
- 高质量
- 经济
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 分段预览
-
-
-
-
-
-
{{ segment.number }}
-
-
-
-
-
-
{{ segment.text }}
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/knowledge/dataset.vue b/src/views/knowledge/dataset.vue
deleted file mode 100644
index 4636a912..00000000
--- a/src/views/knowledge/dataset.vue
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1 文档
- 5 千字符
- 0 关联应用
-
-
- useful for when you want to answer queries about the 接口鉴权示例代码.md
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/mall/product/spu/index.vue b/src/views/mall/product/spu/index.vue
index 0451ef3a..e12403ce 100644
--- a/src/views/mall/product/spu/index.vue
+++ b/src/views/mall/product/spu/index.vue
@@ -411,7 +411,7 @@ const handleExport = async () => {
await message.exportConfirm()
// 发起导出
exportLoading.value = true
- const data = await ProductSpuApi.exportSpu(queryParams)
+ const data = await ProductSpuApi.exportSpu(queryParams.value)
download.excel(data, '商品列表.xls')
} catch {
} finally {
@@ -434,7 +434,7 @@ onActivated(() => {
onMounted(async () => {
// 解析路由的 categoryId
if (route.query.categoryId) {
- queryParams.value.categoryId = Number(route.query.categoryId)
+ queryParams.value.categoryId = route.query.categoryId
}
// 获得商品信息
await getTabsCount()
diff --git a/src/views/mall/promotion/diy/template/decorate.vue b/src/views/mall/promotion/diy/template/decorate.vue
index c7231c8a..85799e31 100644
--- a/src/views/mall/promotion/diy/template/decorate.vue
+++ b/src/views/mall/promotion/diy/template/decorate.vue
@@ -52,7 +52,9 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
const formData = ref()
const formRef = ref() // 表单 Ref
// 当前编辑的属性
-const currentFormData = ref()
+const currentFormData = ref({
+ property: ''
+} as DiyPageApi.DiyPageVO)
// templateItem 对应的缓存
const currentFormDataMap = ref<
Map
@@ -92,17 +94,21 @@ const handleTemplateItemChange = (val: number) => {
// 编辑模板
if (val === 0) {
libs.value = templateLibs
- currentFormData.value = isEmpty(data) ? formData.value : data
+ currentFormData.value = (isEmpty(data) ? formData.value : data) as
+ | DiyTemplateApi.DiyTemplatePropertyVO
+ | DiyPageApi.DiyPageVO
return
}
// 编辑页面
libs.value = PAGE_LIBS
- currentFormData.value = isEmpty(data)
- ? formData.value!.pages.find(
- (page: DiyPageApi.DiyPageVO) => page.name === templateItems[val].name
- )
- : data
+ currentFormData.value = (
+ isEmpty(data)
+ ? formData.value!.pages.find(
+ (page: DiyPageApi.DiyPageVO) => page.name === templateItems[val].name
+ )
+ : data
+ ) as DiyTemplateApi.DiyTemplatePropertyVO | DiyPageApi.DiyPageVO
}
// 提交表单
@@ -170,7 +176,9 @@ const recoverPageIndex = () => {
sessionStorage.removeItem(DIY_PAGE_INDEX_KEY)
// 重新初始化数据
- currentFormData.value = formData.value
+ currentFormData.value = formData.value as
+ | DiyTemplateApi.DiyTemplatePropertyVO
+ | DiyPageApi.DiyPageVO
currentFormDataMap.value = new Map<
string,
DiyTemplateApi.DiyTemplatePropertyVO | DiyPageApi.DiyPageVO
diff --git a/src/views/mall/promotion/kefu/components/KeFuConversationList.vue b/src/views/mall/promotion/kefu/components/KeFuConversationList.vue
index 075edc33..318e27d1 100644
--- a/src/views/mall/promotion/kefu/components/KeFuConversationList.vue
+++ b/src/views/mall/promotion/kefu/components/KeFuConversationList.vue
@@ -200,7 +200,7 @@ onBeforeUnmount(() => {