mirror of
https://gitee.com/hhyykk/ipms-sjy-ui.git
synced 2025-06-18 22:32:00 +08:00
Merge branch 'gitee-master' into feature-project
# Conflicts: # src/views/bpm/processInstance/detail/index.vue
This commit is contained in:
commit
52a4cc210c
@ -26,8 +26,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@element-plus/icons-vue": "^2.1.0",
|
"@element-plus/icons-vue": "^2.1.0",
|
||||||
"@form-create/designer": "^3.1.3",
|
"@form-create/designer": "^3.2.6",
|
||||||
"@form-create/element-ui": "^3.1.24",
|
"@form-create/element-ui": "^3.2.11",
|
||||||
"@iconify/iconify": "^3.1.1",
|
"@iconify/iconify": "^3.1.1",
|
||||||
"@microsoft/fetch-event-source": "^2.0.1",
|
"@microsoft/fetch-event-source": "^2.0.1",
|
||||||
"@videojs-player/vue": "^1.0.0",
|
"@videojs-player/vue": "^1.0.0",
|
||||||
@ -67,7 +67,7 @@
|
|||||||
"steady-xml": "^0.1.0",
|
"steady-xml": "^0.1.0",
|
||||||
"url": "^0.11.3",
|
"url": "^0.11.3",
|
||||||
"video.js": "^7.21.5",
|
"video.js": "^7.21.5",
|
||||||
"vue": "3.4.21",
|
"vue": "3.5.12",
|
||||||
"vue-dompurify-html": "^4.1.4",
|
"vue-dompurify-html": "^4.1.4",
|
||||||
"vue-i18n": "9.10.2",
|
"vue-i18n": "9.10.2",
|
||||||
"vue-router": "^4.3.0",
|
"vue-router": "^4.3.0",
|
||||||
|
492
pnpm-lock.yaml
generated
492
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -20,6 +20,7 @@
|
|||||||
<div v-else class="custom-hover" @click.stop="showTopSearch = !showTopSearch">
|
<div v-else class="custom-hover" @click.stop="showTopSearch = !showTopSearch">
|
||||||
<Icon icon="ep:search" />
|
<Icon icon="ep:search" />
|
||||||
<el-select
|
<el-select
|
||||||
|
@click.stop
|
||||||
filterable
|
filterable
|
||||||
:reserve-keyword="false"
|
:reserve-keyword="false"
|
||||||
remote
|
remote
|
||||||
|
@ -1,7 +1,37 @@
|
|||||||
import type { App } from 'vue'
|
import type { App } from 'vue'
|
||||||
// 👇使用 form-create 需额外全局引入 element plus 组件
|
// 👇使用 form-create 需额外全局引入 element plus 组件
|
||||||
import {
|
import {
|
||||||
|
// ElAutocomplete,
|
||||||
|
// ElButton,
|
||||||
|
// ElCascader,
|
||||||
|
// ElCheckbox,
|
||||||
|
// ElCheckboxButton,
|
||||||
|
// ElCheckboxGroup,
|
||||||
|
// ElCol,
|
||||||
|
// ElColorPicker,
|
||||||
|
// ElDatePicker,
|
||||||
|
// ElDialog,
|
||||||
|
// ElForm,
|
||||||
|
// ElInput,
|
||||||
|
// ElInputNumber,
|
||||||
|
// ElPopover,
|
||||||
|
// ElRadio,
|
||||||
|
// ElRadioButton,
|
||||||
|
// ElRadioGroup,
|
||||||
|
// ElRate,
|
||||||
|
// ElRow,
|
||||||
|
// ElSelect,
|
||||||
|
// ElSlider,
|
||||||
|
// ElSwitch,
|
||||||
|
// ElTimePicker,
|
||||||
|
// ElTooltip,
|
||||||
|
// ElTree,
|
||||||
|
// ElUpload,
|
||||||
|
// ElIcon,
|
||||||
|
// ElProgress,
|
||||||
|
// 以上会由 @form-create/element-ui/auto-import 自动引入
|
||||||
ElAlert,
|
ElAlert,
|
||||||
|
ElTransfer,
|
||||||
ElAside,
|
ElAside,
|
||||||
ElContainer,
|
ElContainer,
|
||||||
ElDivider,
|
ElDivider,
|
||||||
@ -12,7 +42,18 @@ import {
|
|||||||
ElTableColumn,
|
ElTableColumn,
|
||||||
ElTabPane,
|
ElTabPane,
|
||||||
ElTabs,
|
ElTabs,
|
||||||
ElTransfer
|
ElDropdown,
|
||||||
|
ElDropdownMenu,
|
||||||
|
ElDropdownItem,
|
||||||
|
ElBadge,
|
||||||
|
ElTag,
|
||||||
|
ElText,
|
||||||
|
ElMenu,
|
||||||
|
ElMenuItem,
|
||||||
|
ElFooter,
|
||||||
|
ElMessage
|
||||||
|
// ElFormItem,
|
||||||
|
// ElOption
|
||||||
} from 'element-plus'
|
} from 'element-plus'
|
||||||
import FcDesigner from '@form-create/designer'
|
import FcDesigner from '@form-create/designer'
|
||||||
import formCreate from '@form-create/element-ui'
|
import formCreate from '@form-create/element-ui'
|
||||||
@ -41,18 +82,30 @@ const ApiSelect = useApiSelect({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const components = [
|
const components = [
|
||||||
|
ElAlert,
|
||||||
|
ElTransfer,
|
||||||
ElAside,
|
ElAside,
|
||||||
ElPopconfirm,
|
|
||||||
ElHeader,
|
|
||||||
ElMain,
|
|
||||||
ElContainer,
|
ElContainer,
|
||||||
ElDivider,
|
ElDivider,
|
||||||
ElTransfer,
|
ElHeader,
|
||||||
ElAlert,
|
ElMain,
|
||||||
ElTabs,
|
ElPopconfirm,
|
||||||
ElTable,
|
ElTable,
|
||||||
ElTableColumn,
|
ElTableColumn,
|
||||||
ElTabPane,
|
ElTabPane,
|
||||||
|
ElTabs,
|
||||||
|
ElDropdown,
|
||||||
|
ElDropdownMenu,
|
||||||
|
ElDropdownItem,
|
||||||
|
ElBadge,
|
||||||
|
ElTag,
|
||||||
|
ElText,
|
||||||
|
ElMenu,
|
||||||
|
ElMenuItem,
|
||||||
|
ElFooter,
|
||||||
|
ElMessage,
|
||||||
|
// ElFormItem,
|
||||||
|
// ElOption,
|
||||||
UploadImg,
|
UploadImg,
|
||||||
UploadImgs,
|
UploadImgs,
|
||||||
UploadFile,
|
UploadFile,
|
||||||
|
@ -1,14 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<ContentWrap>
|
<ContentWrap :body-style="{ padding: '0px' }" class="!mb-0">
|
||||||
<!-- 表单设计器 -->
|
<!-- 表单设计器 -->
|
||||||
<FcDesigner ref="designer" height="780px">
|
<div
|
||||||
<template #handle>
|
class="h-[calc(100vh-var(--top-tool-height)-var(--tags-view-height)-var(--app-content-padding)-var(--app-content-padding)-2px)]"
|
||||||
<el-button round size="small" type="primary" @click="handleSave">
|
>
|
||||||
<Icon class="mr-5px" icon="ep:plus" />
|
<fc-designer class="my-designer" ref="designer" :config="designerConfig">
|
||||||
保存
|
<template #handle>
|
||||||
</el-button>
|
<el-button size="small" type="success" plain @click="handleSave">
|
||||||
</template>
|
<Icon class="mr-5px" icon="ep:plus" />
|
||||||
</FcDesigner>
|
保存
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</fc-designer>
|
||||||
|
</div>
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
||||||
<!-- 表单保存的弹窗 -->
|
<!-- 表单保存的弹窗 -->
|
||||||
@ -55,6 +59,31 @@ const { push, currentRoute } = useRouter() // 路由
|
|||||||
const { query } = useRoute() // 路由信息
|
const { query } = useRoute() // 路由信息
|
||||||
const { delView } = useTagsViewStore() // 视图操作
|
const { delView } = useTagsViewStore() // 视图操作
|
||||||
|
|
||||||
|
// 表单设计器配置
|
||||||
|
const designerConfig = ref({
|
||||||
|
switchType: [], // 是否可以切换组件类型,或者可以相互切换的字段
|
||||||
|
autoActive: true, // 是否自动选中拖入的组件
|
||||||
|
useTemplate: false, // 是否生成vue2语法的模板组件
|
||||||
|
formOptions: {}, // 定义表单配置默认值
|
||||||
|
fieldReadonly: false, // 配置field是否可以编辑
|
||||||
|
hiddenDragMenu: false, // 隐藏拖拽操作按钮
|
||||||
|
hiddenDragBtn: false, // 隐藏拖拽按钮
|
||||||
|
hiddenMenu: [], // 隐藏部分菜单
|
||||||
|
hiddenItem: [], // 隐藏部分组件
|
||||||
|
hiddenItemConfig: {}, // 隐藏组件的部分配置项
|
||||||
|
disabledItemConfig: {}, // 禁用组件的部分配置项
|
||||||
|
showSaveBtn: false, // 是否显示保存按钮
|
||||||
|
showConfig: true, // 是否显示右侧的配置界面
|
||||||
|
showBaseForm: true, // 是否显示组件的基础配置表单
|
||||||
|
showControl: true, // 是否显示组件联动
|
||||||
|
showPropsForm: true, // 是否显示组件的属性配置表单
|
||||||
|
showEventForm: true, // 是否显示组件的事件配置表单
|
||||||
|
showValidateForm: true, // 是否显示组件的验证配置表单
|
||||||
|
showFormConfig: true, // 是否显示表单配置
|
||||||
|
showInputData: true, // 是否显示录入按钮
|
||||||
|
showDevice: true, // 是否显示多端适配选项
|
||||||
|
appendConfigData: [] // 定义渲染规则所需的formData
|
||||||
|
})
|
||||||
const designer = ref() // 表单设计器
|
const designer = ref() // 表单设计器
|
||||||
useFormCreateDesigner(designer) // 表单设计器增强
|
useFormCreateDesigner(designer) // 表单设计器增强
|
||||||
const dialogVisible = ref(false) // 弹窗是否展示
|
const dialogVisible = ref(false) // 弹窗是否展示
|
||||||
@ -119,3 +148,13 @@ onMounted(async () => {
|
|||||||
setConfAndFields(designer, data.conf, data.fields)
|
setConfAndFields(designer, data.conf, data.fields)
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.my-designer {
|
||||||
|
._fc-l,
|
||||||
|
._fc-m,
|
||||||
|
._fc-r {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
@ -250,10 +250,12 @@ const handleAudit = async (task, pass) => {
|
|||||||
if (!elForm) return
|
if (!elForm) return
|
||||||
let valid = await elForm.validate()
|
let valid = await elForm.validate()
|
||||||
if (!valid) return
|
if (!valid) return
|
||||||
// 校验申请表单
|
// 校验申请表单(可编辑字段)
|
||||||
if (!fApi.value) return //fixme 有bug 永远为true
|
// TODO @jason:之前这里是 if (!fApi.value) return;针对业务表单的情况下,会导致没办法审核,可能要看下。我这里改了点,看看是不是还有别的地方兼容性
|
||||||
valid = await fApi.value.validate()
|
if (fApi.value) {
|
||||||
if (!valid) return
|
valid = await fApi.value.validate()
|
||||||
|
if (!valid) return
|
||||||
|
}
|
||||||
|
|
||||||
// 2.1 提交审批
|
// 2.1 提交审批
|
||||||
const data = {
|
const data = {
|
||||||
@ -269,7 +271,9 @@ const handleAudit = async (task, pass) => {
|
|||||||
data.variables = approveForms.value[index].value
|
data.variables = approveForms.value[index].value
|
||||||
}
|
}
|
||||||
// 获取表单可编辑字段的值
|
// 获取表单可编辑字段的值
|
||||||
data.variables = getWritableValueOfForm(task.fieldsPermission)
|
if (fApi.value) {
|
||||||
|
data.variables = getWritableValueOfForm(task.fieldsPermission)
|
||||||
|
}
|
||||||
|
|
||||||
await TaskApi.approveTask(data)
|
await TaskApi.approveTask(data)
|
||||||
message.success('审批通过成功')
|
message.success('审批通过成功')
|
||||||
|
@ -79,6 +79,10 @@
|
|||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||||
|
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<ContentWrap>
|
<ContentWrap :body-style="{ padding: '0px' }" class="!mb-0">
|
||||||
<el-row>
|
|
||||||
<el-col>
|
|
||||||
<div class="float-right mb-2">
|
|
||||||
<el-button size="small" type="primary" @click="showJson">生成 JSON</el-button>
|
|
||||||
<el-button size="small" type="success" @click="showOption">生成 Options</el-button>
|
|
||||||
<el-button size="small" type="danger" @click="showTemplate">生成组件</el-button>
|
|
||||||
</div>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<!-- 表单设计器 -->
|
<!-- 表单设计器 -->
|
||||||
<FcDesigner ref="designer" height="780px" />
|
<div
|
||||||
|
class="h-[calc(100vh-var(--top-tool-height)-var(--tags-view-height)-var(--app-content-padding)-var(--app-content-padding)-2px)]"
|
||||||
|
>
|
||||||
|
<fc-designer class="my-designer" ref="designer" :config="designerConfig">
|
||||||
|
<template #handle>
|
||||||
|
<el-button size="small" type="primary" plain @click="showJson">生成JSON</el-button>
|
||||||
|
<el-button size="small" type="success" plain @click="showOption">生成Options</el-button>
|
||||||
|
<el-button size="small" type="danger" plain @click="showTemplate">生成组件</el-button>
|
||||||
|
</template>
|
||||||
|
</fc-designer>
|
||||||
|
</div>
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
||||||
<!-- 弹窗:表单预览 -->
|
<!-- 弹窗:表单预览 -->
|
||||||
@ -43,6 +44,31 @@ defineOptions({ name: 'InfraBuild' })
|
|||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息
|
const message = useMessage() // 消息
|
||||||
|
|
||||||
|
// 表单设计器配置
|
||||||
|
const designerConfig = ref({
|
||||||
|
switchType: [], // 是否可以切换组件类型,或者可以相互切换的字段
|
||||||
|
autoActive: true, // 是否自动选中拖入的组件
|
||||||
|
useTemplate: false, // 是否生成vue2语法的模板组件
|
||||||
|
formOptions: {}, // 定义表单配置默认值
|
||||||
|
fieldReadonly: false, // 配置field是否可以编辑
|
||||||
|
hiddenDragMenu: false, // 隐藏拖拽操作按钮
|
||||||
|
hiddenDragBtn: false, // 隐藏拖拽按钮
|
||||||
|
hiddenMenu: [], // 隐藏部分菜单
|
||||||
|
hiddenItem: [], // 隐藏部分组件
|
||||||
|
hiddenItemConfig: {}, // 隐藏组件的部分配置项
|
||||||
|
disabledItemConfig: {}, // 禁用组件的部分配置项
|
||||||
|
showSaveBtn: false, // 是否显示保存按钮
|
||||||
|
showConfig: true, // 是否显示右侧的配置界面
|
||||||
|
showBaseForm: true, // 是否显示组件的基础配置表单
|
||||||
|
showControl: true, // 是否显示组件联动
|
||||||
|
showPropsForm: true, // 是否显示组件的属性配置表单
|
||||||
|
showEventForm: true, // 是否显示组件的事件配置表单
|
||||||
|
showValidateForm: true, // 是否显示组件的验证配置表单
|
||||||
|
showFormConfig: true, // 是否显示表单配置
|
||||||
|
showInputData: true, // 是否显示录入按钮
|
||||||
|
showDevice: true, // 是否显示多端适配选项
|
||||||
|
appendConfigData: [] // 定义渲染规则所需的formData
|
||||||
|
})
|
||||||
const designer = ref() // 表单设计器
|
const designer = ref() // 表单设计器
|
||||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
const dialogTitle = ref('') // 弹窗的标题
|
const dialogTitle = ref('') // 弹窗的标题
|
||||||
@ -140,3 +166,13 @@ onMounted(async () => {
|
|||||||
hljs.registerLanguage('json', json)
|
hljs.registerLanguage('json', json)
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.my-designer {
|
||||||
|
._fc-l,
|
||||||
|
._fc-m,
|
||||||
|
._fc-r {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user