mirror of
https://gitee.com/orangeform/orange-admin.git
synced 2026-01-17 10:36:31 +08:00
1、样式调整
This commit is contained in:
@@ -15,17 +15,18 @@
|
|||||||
"ace-builds": "^1.32.2",
|
"ace-builds": "^1.32.2",
|
||||||
"axios": "^1.5.1",
|
"axios": "^1.5.1",
|
||||||
"bpmn-js-token-simulation": "^0.10.0",
|
"bpmn-js-token-simulation": "^0.10.0",
|
||||||
"diagram-js": "^6.8.2",
|
|
||||||
"clipboard": "^2.0.11",
|
"clipboard": "^2.0.11",
|
||||||
"core-js": "^3.8.3",
|
"core-js": "^3.8.3",
|
||||||
"crypto-js": "^4.2.0",
|
"crypto-js": "^4.2.0",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
|
"diagram-js": "^6.8.2",
|
||||||
"echarts": "^5.5.0",
|
"echarts": "^5.5.0",
|
||||||
"ejs": "^3.1.9",
|
"ejs": "^3.1.9",
|
||||||
"element-plus": "^2.7.3",
|
"element-plus": "^2.7.3",
|
||||||
"highlight.js": "^11.9.0",
|
"highlight.js": "^11.9.0",
|
||||||
"jsencrypt": "^3.3.2",
|
"jsencrypt": "^3.3.2",
|
||||||
"json-bigint": "^1.0.0",
|
"json-bigint": "^1.0.0",
|
||||||
|
"lodash": "^4.17.21",
|
||||||
"pinia": "^2.1.6",
|
"pinia": "^2.1.6",
|
||||||
"pinia-plugin-persist": "^1.0.0",
|
"pinia-plugin-persist": "^1.0.0",
|
||||||
"print-js": "^1.6.0",
|
"print-js": "^1.6.0",
|
||||||
@@ -36,10 +37,11 @@
|
|||||||
"vue-router": "^4.2.5",
|
"vue-router": "^4.2.5",
|
||||||
"vxe-table": "^4.5.13",
|
"vxe-table": "^4.5.13",
|
||||||
"xe-utils": "^3.5.14",
|
"xe-utils": "^3.5.14",
|
||||||
"xml-js": "^1.6.11",
|
"xml-js": "^1.6.11"
|
||||||
"lodash": "^4.17.21"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"bpmn-js": "7.5.0",
|
||||||
|
"bpmn-js-properties-panel": "0.37.6",
|
||||||
"@types/ejs": "^3.1.5",
|
"@types/ejs": "^3.1.5",
|
||||||
"@types/json-bigint": "^1.0.4",
|
"@types/json-bigint": "^1.0.4",
|
||||||
"@types/node": "^18.11.17",
|
"@types/node": "^18.11.17",
|
||||||
@@ -53,8 +55,6 @@
|
|||||||
"@vue/cli-plugin-vuex": "~5.0.0",
|
"@vue/cli-plugin-vuex": "~5.0.0",
|
||||||
"@vue/cli-service": "~5.0.0",
|
"@vue/cli-service": "~5.0.0",
|
||||||
"autoprefixer": "^10.4.16",
|
"autoprefixer": "^10.4.16",
|
||||||
"bpmn-js": "7.5.0",
|
|
||||||
"bpmn-js-properties-panel": "0.37.6",
|
|
||||||
"eslint": "^8.30.0",
|
"eslint": "^8.30.0",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"eslint-config-prettier": "^8.5.0",
|
||||||
"eslint-import-resolver-typescript": "^3.6.1",
|
"eslint-import-resolver-typescript": "^3.6.1",
|
||||||
|
|||||||
@@ -9,68 +9,8 @@ $color-text-secondary: #909399 !default;
|
|||||||
'primary': (
|
'primary': (
|
||||||
'base': $color-primary,
|
'base': $color-primary,
|
||||||
),
|
),
|
||||||
),
|
|
||||||
$common-component-size: (
|
|
||||||
'large': 36px,
|
|
||||||
'default': 32px,
|
|
||||||
'small': 32px,
|
|
||||||
),
|
|
||||||
$tag: (
|
|
||||||
'font-size': 14px,
|
|
||||||
),
|
|
||||||
$tag-height: (
|
|
||||||
'large': 28px,
|
|
||||||
'default': 28px,
|
|
||||||
),
|
|
||||||
$radio-bordered-input-height: (
|
|
||||||
'large': 14px,
|
|
||||||
'default': 14px,
|
|
||||||
'small': 14px,
|
|
||||||
),
|
|
||||||
$radio-bordered-input-width: (
|
|
||||||
'large': 14px,
|
|
||||||
'default': 14px,
|
|
||||||
'small': 14px,
|
|
||||||
),
|
|
||||||
$button-padding-vertical: (
|
|
||||||
'large': 11px,
|
|
||||||
'default': 9px,
|
|
||||||
'small': 6px,
|
|
||||||
),
|
|
||||||
$button-padding-horizontal: (
|
|
||||||
'large': 18px,
|
|
||||||
'default': 16px,
|
|
||||||
'small': 12px,
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
$form-item-margin-bottom: () !default;
|
|
||||||
$form-item-margin-bottom: map.merge(
|
|
||||||
(
|
|
||||||
'large': 18px,
|
|
||||||
'default': 18px,
|
|
||||||
'small': 18px,
|
|
||||||
),
|
|
||||||
$form-item-margin-bottom
|
|
||||||
);
|
|
||||||
|
|
||||||
$form-item-line-height: () !default;
|
|
||||||
$form-item-line-height: map.merge(
|
|
||||||
(
|
|
||||||
'large': 36px,
|
|
||||||
'default': 32px,
|
|
||||||
'small': 24px,
|
|
||||||
),
|
|
||||||
$form-item-line-height
|
|
||||||
);
|
|
||||||
$radio-font-size: () !default;
|
|
||||||
$radio-font-size: map.merge(
|
|
||||||
(
|
|
||||||
'large': 14px,
|
|
||||||
'small': 14px,
|
|
||||||
),
|
|
||||||
$radio-font-size
|
|
||||||
);
|
|
||||||
@use '@/assets/style/base.scss';
|
@use '@/assets/style/base.scss';
|
||||||
|
|
||||||
:deep(.vxe-table--empty-placeholder) {
|
:deep(.vxe-table--empty-placeholder) {
|
||||||
|
|||||||
@@ -576,12 +576,12 @@ body .fullscreen-dialog .layui-layer-content {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.user-dropdown {
|
.user-dropdown {
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: $--color-text-secondary;
|
color: $--color-text-secondary;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.user-dropdown-item {
|
.user-dropdown-item {
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: $--color-text-primary;
|
color: $--color-text-primary;
|
||||||
|
|
||||||
.el-badge {
|
.el-badge {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ $chart-form-item-textarea-width: 200px;
|
|||||||
.el-form-item__label {
|
.el-form-item__label {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding-bottom: 0 !important;
|
padding-bottom: 0 !important;
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: #303133;
|
color: #303133;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
@@ -51,7 +51,7 @@ $chart-form-item-textarea-width: 200px;
|
|||||||
}
|
}
|
||||||
|
|
||||||
.view-attribute-item .el-form-item__label {
|
.view-attribute-item .el-form-item__label {
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: #303133;
|
color: #303133;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ export const useTable = <T>(options: TableOptions<T>) => {
|
|||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
currentPage.value = oldPage;
|
currentPage.value = oldPage;
|
||||||
pageSize.value = oldVal;
|
pageSize.value = oldPageSize;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ export const useWindowResize = () => {
|
|||||||
layoutStore.defaultFormItemSize = 'default';
|
layoutStore.defaultFormItemSize = 'default';
|
||||||
document.body.className = 'orange-project container-default';
|
document.body.className = 'orange-project container-default';
|
||||||
} else {
|
} else {
|
||||||
layoutStore.defaultFormItemSize = 'large';
|
layoutStore.defaultFormItemSize = 'default';
|
||||||
document.body.className = 'orange-project container-large';
|
document.body.className = 'orange-project container-default';
|
||||||
}
|
}
|
||||||
|
|
||||||
layoutStore.documentClientHeight = document.documentElement.clientHeight;
|
layoutStore.documentClientHeight = document.documentElement.clientHeight;
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ onMounted(() => {
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
height: 35px;
|
height: 35px;
|
||||||
line-height: 35px;
|
line-height: 35px;
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
.advance-query .module-node-menu {
|
.advance-query .module-node-menu {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
@@ -236,5 +236,6 @@ onMounted(() => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
padding: 0px 16px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ const getItemLabel = (item: ANY_OBJECT) => {
|
|||||||
position: relative;
|
position: relative;
|
||||||
z-index: 9;
|
z-index: 9;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: $color-primary;
|
color: $color-primary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -155,7 +155,8 @@ const handleCreated = (editor: ANY_OBJECT) => {
|
|||||||
watch(
|
watch(
|
||||||
() => props.value,
|
() => props.value,
|
||||||
newValue => {
|
newValue => {
|
||||||
if (editorRef.value) editorRef.value.txt.html(newValue);
|
if (editorRef.value && newValue !== editorRef.value.txt.html())
|
||||||
|
editorRef.value.txt.html(newValue);
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
deep: true,
|
deep: true,
|
||||||
|
|||||||
@@ -22,9 +22,13 @@
|
|||||||
menu.menuName
|
menu.menuName
|
||||||
}}</span>
|
}}</span>
|
||||||
</template>
|
</template>
|
||||||
<template v-for="child in menu.children" :key="child.menuId">
|
<sub-menu
|
||||||
<sub-menu class="nest-menu" :menu="child" :isChild="true" />
|
class="nest-menu"
|
||||||
</template>
|
v-for="child in menu.children"
|
||||||
|
:key="child.menuId"
|
||||||
|
:menu="child"
|
||||||
|
:isChild="true"
|
||||||
|
/>
|
||||||
</el-sub-menu>
|
</el-sub-menu>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -63,9 +67,9 @@ const getTextStyle = (isShow: boolean) => {
|
|||||||
.nest-menu :deep(.el-menu-item span:first-child),
|
.nest-menu :deep(.el-menu-item span:first-child),
|
||||||
.nest-menu :deep(.el-menu-item .menu-icon:first-child),
|
.nest-menu :deep(.el-menu-item .menu-icon:first-child),
|
||||||
.nest-menu :deep(.el-submenu__title span:first-child) {
|
.nest-menu :deep(.el-submenu__title span:first-child) {
|
||||||
padding-left: 8px !important;
|
padding-left: 14px !important;
|
||||||
}
|
}
|
||||||
.nest-menu :deep(.el-submenu__title .menu-icon:first-child) {
|
.nest-menu :deep(.el-submenu__title .menu-icon:first-child) {
|
||||||
margin-left: 8px !important;
|
margin-left: 14px !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -80,7 +80,11 @@ const showText = computed(() => {
|
|||||||
? 'XXXXX 至 XXXXX'
|
? 'XXXXX 至 XXXXX'
|
||||||
: undefined;
|
: undefined;
|
||||||
case SysCustomWidgetType.Switch:
|
case SysCustomWidgetType.Switch:
|
||||||
return props.value ? '是' : '否';
|
if (typeof props.value === 'boolean') {
|
||||||
|
return props.value ? '是' : '否';
|
||||||
|
} else {
|
||||||
|
return props.value;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
:hasImageColumn="hasImageColumn"
|
:hasImageColumn="hasImageColumn"
|
||||||
:size="layoutStore.defaultFormItemSize"
|
:size="layoutStore.defaultFormItemSize"
|
||||||
:keep-source="rowEdit"
|
:keep-source="rowEdit"
|
||||||
|
:tree-config="treeConfig"
|
||||||
:edit-config="{
|
:edit-config="{
|
||||||
trigger: 'manual',
|
trigger: 'manual',
|
||||||
mode: 'row',
|
mode: 'row',
|
||||||
@@ -80,9 +81,15 @@
|
|||||||
>{{ getOperation(SysCustomWidgetOperationType.ADD).name || '新建' }}</el-button
|
>{{ getOperation(SysCustomWidgetOperationType.ADD).name || '新建' }}</el-button
|
||||||
>
|
>
|
||||||
</template>
|
</template>
|
||||||
<vxe-column v-if="hasBatchOperation && !form().readOnly" type="checkbox" :width="50" />
|
<vxe-column v-if="hasBatchOperation && !form().readOnly" type="checkbox" :width="40" />
|
||||||
<vxe-column v-if="singleSelect" type="radio" align="center" :width="50" />
|
<vxe-column v-if="singleSelect" type="radio" align="center" :width="50" />
|
||||||
<vxe-column v-if="tableColumnList.length > 0" type="seq" title="序号" :width="50" />
|
<vxe-column
|
||||||
|
v-if="tableColumnList.length > 0"
|
||||||
|
type="seq"
|
||||||
|
title="序号"
|
||||||
|
:width="treeConfig != null ? 90 : 50"
|
||||||
|
:tree-node="treeConfig != null"
|
||||||
|
/>
|
||||||
<template v-for="tableColumn in tableColumnList" :key="tableColumn.column?.columnId">
|
<template v-for="tableColumn in tableColumnList" :key="tableColumn.column?.columnId">
|
||||||
<!-- Boolean类型字段 -->
|
<!-- Boolean类型字段 -->
|
||||||
<vxe-column
|
<vxe-column
|
||||||
@@ -232,6 +239,7 @@ const props = withDefaults(
|
|||||||
onSelectChange?: (values: Array<ANY_OBJECT>) => void;
|
onSelectChange?: (values: Array<ANY_OBJECT>) => void;
|
||||||
// 单选中改变
|
// 单选中改变
|
||||||
onRadioChange?: (value: ANY_OBJECT) => void;
|
onRadioChange?: (value: ANY_OBJECT) => void;
|
||||||
|
treeConfig?: ANY_OBJECT;
|
||||||
}>(),
|
}>(),
|
||||||
{
|
{
|
||||||
dataList: () => [],
|
dataList: () => [],
|
||||||
@@ -241,6 +249,7 @@ const props = withDefaults(
|
|||||||
multiSelect: false,
|
multiSelect: false,
|
||||||
singleSelect: false,
|
singleSelect: false,
|
||||||
operationList: () => [],
|
operationList: () => [],
|
||||||
|
treeConfig: undefined,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -242,6 +242,26 @@ const isDictWidget = computed(() => {
|
|||||||
].indexOf(pps.widget.widgetType) !== -1
|
].indexOf(pps.widget.widgetType) !== -1
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const getColumnDataType = computed(() => {
|
||||||
|
if (pps.widget == null || pps.widget.column == null) return undefined;
|
||||||
|
switch (pps.widget.column.objectFieldType) {
|
||||||
|
case 'String':
|
||||||
|
return 'String';
|
||||||
|
case 'Date':
|
||||||
|
return 'Date';
|
||||||
|
case 'Boolean':
|
||||||
|
return 'Boolean';
|
||||||
|
case 'Integer':
|
||||||
|
case 'Long':
|
||||||
|
case 'Float':
|
||||||
|
case 'Double':
|
||||||
|
case 'BigDecimal':
|
||||||
|
return 'Number';
|
||||||
|
default:
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
});
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
const bindValue = computed<string | number | boolean | any[] | ANY_OBJECT | Date | undefined>({
|
const bindValue = computed<string | number | boolean | any[] | ANY_OBJECT | Date | undefined>({
|
||||||
get() {
|
get() {
|
||||||
@@ -255,6 +275,18 @@ const bindValue = computed<string | number | boolean | any[] | ANY_OBJECT | Date
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 开关组件根据绑定字段类型转换值
|
||||||
|
let bindColumnType = getColumnDataType.value;
|
||||||
|
if (pps.widget.widgetType === SysCustomWidgetType.Switch) {
|
||||||
|
if (bindColumnType === 'Number') {
|
||||||
|
tempValue = tempValue !== 0 && tempValue != null;
|
||||||
|
} else if (bindColumnType === 'String') {
|
||||||
|
tempValue = tempValue === 'true';
|
||||||
|
} else if (bindColumnType !== 'Boolean') {
|
||||||
|
tempValue = false;
|
||||||
|
}
|
||||||
|
return tempValue;
|
||||||
|
}
|
||||||
if (pps.widget.widgetType === SysCustomWidgetType.CheckBox) {
|
if (pps.widget.widgetType === SysCustomWidgetType.CheckBox) {
|
||||||
return tempValue || [];
|
return tempValue || [];
|
||||||
} else if (pps.widget.widgetType === SysCustomWidgetType.Cascader) {
|
} else if (pps.widget.widgetType === SysCustomWidgetType.Cascader) {
|
||||||
@@ -553,7 +585,6 @@ watch(
|
|||||||
);
|
);
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
//propsWidget.value.widgetImpl = getCurrentInstance();
|
propsWidget.value.hasParent = parentWidget != null;
|
||||||
//propsWidget.value.parent = parentWidget;
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -86,7 +86,7 @@
|
|||||||
<vxe-column title="流程创建时间" field="createTime" :min-width="180" />
|
<vxe-column title="流程创建时间" field="createTime" :min-width="180" />
|
||||||
<vxe-column title="流程状态" field="latestApprovalStatusDictMap.name" :min-width="100" />
|
<vxe-column title="流程状态" field="latestApprovalStatusDictMap.name" :min-width="100" />
|
||||||
<vxe-column title="工单状态" field="flowStatusShowName" :min-width="100" />
|
<vxe-column title="工单状态" field="flowStatusShowName" :min-width="100" />
|
||||||
<vxe-column title="操作" :width="160" fixed="right" :show-overflow="false">
|
<vxe-column title="操作" :width="180" fixed="right" :show-overflow="false">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button
|
<el-button
|
||||||
link
|
link
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<el-input
|
<el-input
|
||||||
v-if="inputWidgetType === SysCustomWidgetType.Input"
|
v-if="inputWidgetType === SysCustomWidgetType.Input"
|
||||||
size="small"
|
size="default"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
clearable
|
clearable
|
||||||
v-model="valStr"
|
v-model="valStr"
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
/>
|
/>
|
||||||
<el-row v-if="inputWidgetType === SysCustomWidgetType.NumberInput" type="flex">
|
<el-row v-if="inputWidgetType === SysCustomWidgetType.NumberInput" type="flex">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
size="small"
|
size="default"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
controls-position="right"
|
controls-position="right"
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
/>
|
/>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row v-if="inputWidgetType === SysCustomWidgetType.Radio" type="flex" align="middle">
|
<el-row v-if="inputWidgetType === SysCustomWidgetType.Radio" type="flex" align="middle">
|
||||||
<el-radio-group size="small" v-model="valNum" v-bind="attributeProps" @change="onValueChange">
|
<el-radio-group size="default" v-model="valNum" v-bind="attributeProps" @change="onValueChange">
|
||||||
<el-radio-button
|
<el-radio-button
|
||||||
v-for="item in dropdownData"
|
v-for="item in dropdownData"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
<el-slider
|
<el-slider
|
||||||
v-if="inputWidgetType === SysCustomWidgetType.Slider"
|
v-if="inputWidgetType === SysCustomWidgetType.Slider"
|
||||||
style="width: 95%; margin-left: 5px"
|
style="width: 95%; margin-left: 5px"
|
||||||
size="small"
|
size="default"
|
||||||
:min="attributeItem.min"
|
:min="attributeItem.min"
|
||||||
:max="attributeItem.max"
|
:max="attributeItem.max"
|
||||||
v-model="valNum"
|
v-model="valNum"
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
/>
|
/>
|
||||||
<el-row v-if="inputWidgetType === SysCustomWidgetType.Switch" type="flex" align="middle">
|
<el-row v-if="inputWidgetType === SysCustomWidgetType.Switch" type="flex" align="middle">
|
||||||
<el-select
|
<el-select
|
||||||
size="small"
|
size="default"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
v-model="valBool"
|
v-model="valBool"
|
||||||
@input="onValueChange"
|
@input="onValueChange"
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
v-if="inputWidgetType === SysCustomWidgetType.Select"
|
v-if="inputWidgetType === SysCustomWidgetType.Select"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
clearable
|
clearable
|
||||||
size="small"
|
size="default"
|
||||||
v-model="valNum"
|
v-model="valNum"
|
||||||
v-bind="attributeProps"
|
v-bind="attributeProps"
|
||||||
@change="onValueChange"
|
@change="onValueChange"
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
<el-color-picker
|
<el-color-picker
|
||||||
v-if="inputWidgetType === SysCustomWidgetType.ColorPicker"
|
v-if="inputWidgetType === SysCustomWidgetType.ColorPicker"
|
||||||
size="small"
|
size="default"
|
||||||
v-model="valStr"
|
v-model="valStr"
|
||||||
@input="onValueChange"
|
@input="onValueChange"
|
||||||
v-bind="attributeProps"
|
v-bind="attributeProps"
|
||||||
|
|||||||
@@ -32,11 +32,47 @@ const table = {
|
|||||||
value: 0,
|
value: 0,
|
||||||
min: 0,
|
min: 0,
|
||||||
},
|
},
|
||||||
|
treeFlag: {
|
||||||
|
name: '树形表格',
|
||||||
|
widgetType: SysCustomWidgetType.Switch,
|
||||||
|
visible: function (formConfig) {
|
||||||
|
return formConfig && formConfig.form.formType === SysOnlineFormType.QUERY;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
parentIdColumn: {
|
||||||
|
name: '树形表主键父字段',
|
||||||
|
widgetType: SysCustomWidgetType.Select,
|
||||||
|
value: '',
|
||||||
|
visible: function (formConfig) {
|
||||||
|
return (
|
||||||
|
formConfig && formConfig.currentWidget && formConfig.currentWidget.props.treeFlag === true
|
||||||
|
);
|
||||||
|
},
|
||||||
|
dropdownList: function (formConfig) {
|
||||||
|
if (
|
||||||
|
formConfig &&
|
||||||
|
formConfig.currentWidget &&
|
||||||
|
formConfig.currentWidget.bindData &&
|
||||||
|
formConfig.currentWidget.bindData.table
|
||||||
|
) {
|
||||||
|
return formConfig.currentWidget.bindData.table.columnList.map(item => {
|
||||||
|
return {
|
||||||
|
id: item.columnName,
|
||||||
|
name: item.columnComment,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
paged: {
|
paged: {
|
||||||
name: '支持分页',
|
name: '支持分页',
|
||||||
widgetType: SysCustomWidgetType.Switch,
|
widgetType: SysCustomWidgetType.Switch,
|
||||||
value: true,
|
value: true,
|
||||||
visible: function (formConfig: ANY_OBJECT) {
|
visible: function (formConfig: ANY_OBJECT) {
|
||||||
|
if (formConfig && formConfig.currentWidget && formConfig.currentWidget.props.treeFlag)
|
||||||
|
return false;
|
||||||
return formConfig && formConfig.form.formType === SysOnlineFormType.QUERY;
|
return formConfig && formConfig.form.formType === SysOnlineFormType.QUERY;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -45,6 +81,8 @@ const table = {
|
|||||||
widgetType: SysCustomWidgetType.Select,
|
widgetType: SysCustomWidgetType.Select,
|
||||||
value: 10,
|
value: 10,
|
||||||
visible: function (formConfig: ANY_OBJECT) {
|
visible: function (formConfig: ANY_OBJECT) {
|
||||||
|
if (formConfig && formConfig.currentWidget && formConfig.currentWidget.props.treeFlag)
|
||||||
|
return false;
|
||||||
return formConfig && formConfig.form.formType === SysOnlineFormType.QUERY;
|
return formConfig && formConfig.form.formType === SysOnlineFormType.QUERY;
|
||||||
},
|
},
|
||||||
dropdownList: [
|
dropdownList: [
|
||||||
|
|||||||
@@ -157,13 +157,14 @@
|
|||||||
:getTableIndex="queryTableWidget.getTableIndex"
|
:getTableIndex="queryTableWidget.getTableIndex"
|
||||||
:sortChange="queryTableWidget.onSortChange"
|
:sortChange="queryTableWidget.onSortChange"
|
||||||
:onSelectChange="onSelectRowChange"
|
:onSelectChange="onSelectRowChange"
|
||||||
|
:treeConfig="getTableTreeConfig"
|
||||||
@operationClick="onOperationClick"
|
@operationClick="onOperationClick"
|
||||||
>
|
>
|
||||||
<template #pagination>
|
<template #pagination>
|
||||||
<el-row
|
<el-row
|
||||||
justify="end"
|
justify="end"
|
||||||
style="margin-top: 10px"
|
style="margin-top: 10px"
|
||||||
v-if="queryTable && queryTable.props.paged"
|
v-if="queryTable && queryTable.props.paged && getTableTreeConfig == null"
|
||||||
>
|
>
|
||||||
<el-pagination
|
<el-pagination
|
||||||
:total="queryTableWidget.totalCount"
|
:total="queryTableWidget.totalCount"
|
||||||
@@ -261,6 +262,7 @@
|
|||||||
:getTableIndex="queryTableWidget.getTableIndex"
|
:getTableIndex="queryTableWidget.getTableIndex"
|
||||||
:sortChange="queryTableWidget.onSortChange"
|
:sortChange="queryTableWidget.onSortChange"
|
||||||
:onSelectChange="onSelectRowChange"
|
:onSelectChange="onSelectRowChange"
|
||||||
|
:treeConfig="getTableTreeConfig"
|
||||||
@operationClick="onOperationClick"
|
@operationClick="onOperationClick"
|
||||||
@refresh="refreshTable(false)"
|
@refresh="refreshTable(false)"
|
||||||
>
|
>
|
||||||
@@ -268,7 +270,7 @@
|
|||||||
<el-row
|
<el-row
|
||||||
justify="end"
|
justify="end"
|
||||||
style="margin-top: 10px"
|
style="margin-top: 10px"
|
||||||
v-if="queryTable && queryTable.props.paged"
|
v-if="queryTable && queryTable.props.paged && getTableTreeConfig == null"
|
||||||
>
|
>
|
||||||
<el-pagination
|
<el-pagination
|
||||||
:total="queryTableWidget.totalCount"
|
:total="queryTableWidget.totalCount"
|
||||||
@@ -293,7 +295,7 @@
|
|||||||
import { nextTick } from 'vue';
|
import { nextTick } from 'vue';
|
||||||
import { Close, Search, Plus, Delete, Download, Upload } from '@element-plus/icons-vue';
|
import { Close, Search, Plus, Delete, Download, Upload } from '@element-plus/icons-vue';
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||||
import { findItemFromList } from '@/common/utils';
|
import { findItemFromList, treeDataTranslate } from '@/common/utils';
|
||||||
import OnlineCustomWidget from '@/online/components/OnlineCustomWidget.vue';
|
import OnlineCustomWidget from '@/online/components/OnlineCustomWidget.vue';
|
||||||
import OnlineCustomTable from '@/online/components/OnlineCustomTable.vue';
|
import OnlineCustomTable from '@/online/components/OnlineCustomTable.vue';
|
||||||
import { DialogProp } from '@/components/Dialog/types';
|
import { DialogProp } from '@/components/Dialog/types';
|
||||||
@@ -504,6 +506,17 @@ const loadTableData = (params: ANY_OBJECT) => {
|
|||||||
|
|
||||||
httpCall
|
httpCall
|
||||||
.then(res => {
|
.then(res => {
|
||||||
|
if (
|
||||||
|
queryTable.value &&
|
||||||
|
queryTable.value.props.treeFlag &&
|
||||||
|
queryTable.value.props.parentIdColumn
|
||||||
|
) {
|
||||||
|
res.data.dataList = treeDataTranslate(
|
||||||
|
res.data.dataList,
|
||||||
|
primaryColumnName.value,
|
||||||
|
queryTable.value.props.parentIdColumn,
|
||||||
|
);
|
||||||
|
}
|
||||||
resolve({
|
resolve({
|
||||||
dataList: res.data.dataList,
|
dataList: res.data.dataList,
|
||||||
totalCount: res.data.totalCount,
|
totalCount: res.data.totalCount,
|
||||||
@@ -537,6 +550,7 @@ const activeOperationList = computed(() => {
|
|||||||
return form.value.operationList;
|
return form.value.operationList;
|
||||||
});
|
});
|
||||||
const primaryColumnName = computed(() => {
|
const primaryColumnName = computed(() => {
|
||||||
|
if (dialogParams.value.isEdit) return;
|
||||||
let table = form.value.tableMap.get(queryTable.value.bindData.tableId);
|
let table = form.value.tableMap.get(queryTable.value.bindData.tableId);
|
||||||
if (table && Array.isArray(table.columnList)) {
|
if (table && Array.isArray(table.columnList)) {
|
||||||
for (let i = 0; i < table.columnList.length; i++) {
|
for (let i = 0; i < table.columnList.length; i++) {
|
||||||
@@ -549,14 +563,26 @@ const primaryColumnName = computed(() => {
|
|||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const getTableTreeConfig = computed(() => {
|
||||||
|
if (
|
||||||
|
queryTable.value &&
|
||||||
|
queryTable.value.props.treeFlag &&
|
||||||
|
queryTable.value.props.parentIdColumn
|
||||||
|
) {
|
||||||
|
return {
|
||||||
|
rowField: primaryColumnName.value,
|
||||||
|
parentField: queryTable.value.props.parentIdColumn,
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// TODO 弹窗关闭
|
// TODO 弹窗关闭
|
||||||
const onCancel = () => {
|
const onCancel = () => {
|
||||||
if (props.dialog) {
|
if (props.dialog) {
|
||||||
props.dialog.cancel();
|
props.dialog.cancel();
|
||||||
}
|
}
|
||||||
// else {
|
|
||||||
// this.onCloseThirdDialog();
|
|
||||||
// }
|
|
||||||
};
|
};
|
||||||
const onCopyWidget = (widget: ANY_OBJECT) => {
|
const onCopyWidget = (widget: ANY_OBJECT) => {
|
||||||
activeWidgetList.value.push(widget);
|
activeWidgetList.value.push(widget);
|
||||||
|
|||||||
@@ -118,7 +118,6 @@
|
|||||||
v-show="isReady"
|
v-show="isReady"
|
||||||
ref="root"
|
ref="root"
|
||||||
v-model:value="form.widgetList"
|
v-model:value="form.widgetList"
|
||||||
@input="onInput"
|
|
||||||
:height="height"
|
:height="height"
|
||||||
:isEdit="dialogParams.isEdit"
|
:isEdit="dialogParams.isEdit"
|
||||||
:showBorder="false"
|
:showBorder="false"
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
style="position: relative; width: 100%"
|
style="position: relative; width: 100%"
|
||||||
:style="{
|
:style="{
|
||||||
border: isEdit && !isAdvance ? '1px solid #e8eaec' : 'none',
|
border: isEdit && !isAdvance ? '1px solid #e8eaec' : 'none',
|
||||||
'min-height': isEdit && widgetList.length <= 0 ? '70px' : '0px',
|
'min-height': isEdit && widgetList.length <= 0 ? '86px' : '0px',
|
||||||
}"
|
}"
|
||||||
:disabled="!isEdit"
|
:disabled="!isEdit"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -299,6 +299,7 @@ const activeOperationList = computed(() => {
|
|||||||
// };
|
// };
|
||||||
// });
|
// });
|
||||||
const primaryColumnName = computed(() => {
|
const primaryColumnName = computed(() => {
|
||||||
|
if (dialogParams.value.isEdit) return;
|
||||||
let table = form.value.tableMap.get(queryTable.value.bindData.tableId);
|
let table = form.value.tableMap.get(queryTable.value.bindData.tableId);
|
||||||
if (table && Array.isArray(table.columnList)) {
|
if (table && Array.isArray(table.columnList)) {
|
||||||
for (let i = 0; i < table.columnList.length; i++) {
|
for (let i = 0; i < table.columnList.length; i++) {
|
||||||
@@ -496,7 +497,7 @@ const onOperationClick = (operation: ANY_OBJECT, row: ANY_OBJECT | null) => {
|
|||||||
} else if (operation.type === SysCustomWidgetOperationType.EXPORT) {
|
} else if (operation.type === SysCustomWidgetOperationType.EXPORT) {
|
||||||
onExport(operation);
|
onExport(operation);
|
||||||
} else if (operation.type === SysCustomWidgetOperationType.PRINT) {
|
} else if (operation.type === SysCustomWidgetOperationType.PRINT) {
|
||||||
if (row) onPrint(operation, row, null, queryTable.value.showName + '.pdf');
|
if (row) onPrint(operation, row, null, queryTable.value.showName);
|
||||||
} else {
|
} else {
|
||||||
handlerOperation(operation, {
|
handlerOperation(operation, {
|
||||||
isEdit: dialogParams.value.isEdit,
|
isEdit: dialogParams.value.isEdit,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
style="position: relative; width: 100%"
|
style="position: relative; width: 100%"
|
||||||
:style="{
|
:style="{
|
||||||
border: isEdit && !isAdvance ? '1px solid #e8eaec' : 'none',
|
border: isEdit && !isAdvance ? '1px solid #e8eaec' : 'none',
|
||||||
'min-height': isEdit && widgetList.length <= 0 ? '70px' : '0px',
|
'min-height': isEdit && widgetList.length <= 0 ? '86px' : '0px',
|
||||||
}"
|
}"
|
||||||
:disabled="!isEdit"
|
:disabled="!isEdit"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -69,6 +69,7 @@
|
|||||||
:getTableIndex="queryTableWidget.getTableIndex"
|
:getTableIndex="queryTableWidget.getTableIndex"
|
||||||
:sortChange="queryTableWidget.onSortChange"
|
:sortChange="queryTableWidget.onSortChange"
|
||||||
:onSelectChange="onSelectRowChange"
|
:onSelectChange="onSelectRowChange"
|
||||||
|
:treeConfig="getTableTreeConfig"
|
||||||
@refresh="refreshTable(false)"
|
@refresh="refreshTable(false)"
|
||||||
@operationClick="onOperationClick"
|
@operationClick="onOperationClick"
|
||||||
/>
|
/>
|
||||||
@@ -77,7 +78,7 @@
|
|||||||
type="flex"
|
type="flex"
|
||||||
justify="end"
|
justify="end"
|
||||||
style="margin-top: 16px"
|
style="margin-top: 16px"
|
||||||
v-if="queryTable && queryTable.props.paged"
|
v-if="queryTable && queryTable.props.paged && getTableTreeConfig == null"
|
||||||
>
|
>
|
||||||
<el-pagination
|
<el-pagination
|
||||||
:total="queryTableWidget.totalCount"
|
:total="queryTableWidget.totalCount"
|
||||||
@@ -126,6 +127,7 @@
|
|||||||
:getTableIndex="queryTableWidget.getTableIndex"
|
:getTableIndex="queryTableWidget.getTableIndex"
|
||||||
:sortChange="queryTableWidget.onSortChange"
|
:sortChange="queryTableWidget.onSortChange"
|
||||||
:onSelectChange="onSelectRowChange"
|
:onSelectChange="onSelectRowChange"
|
||||||
|
:treeConfig="getTableTreeConfig"
|
||||||
@operationClick="onOperationClick"
|
@operationClick="onOperationClick"
|
||||||
@refresh="refreshTable(false)"
|
@refresh="refreshTable(false)"
|
||||||
>
|
>
|
||||||
@@ -134,7 +136,7 @@
|
|||||||
type="flex"
|
type="flex"
|
||||||
justify="end"
|
justify="end"
|
||||||
style="margin-top: 16px"
|
style="margin-top: 16px"
|
||||||
v-if="queryTable && queryTable.props.paged"
|
v-if="queryTable && queryTable.props.paged && getTableTreeConfig == null"
|
||||||
>
|
>
|
||||||
<el-pagination
|
<el-pagination
|
||||||
:total="queryTableWidget.totalCount"
|
:total="queryTableWidget.totalCount"
|
||||||
@@ -156,6 +158,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||||
import { Close } from '@element-plus/icons-vue';
|
import { Close } from '@element-plus/icons-vue';
|
||||||
|
import { treeDataTranslate } from '@/common/utils';
|
||||||
import { ANY_OBJECT } from '@/types/generic';
|
import { ANY_OBJECT } from '@/types/generic';
|
||||||
import OnlineCustomTable from '@/online/components/OnlineCustomTable.vue';
|
import OnlineCustomTable from '@/online/components/OnlineCustomTable.vue';
|
||||||
import { TableOptions } from '@/common/types/pagination';
|
import { TableOptions } from '@/common/types/pagination';
|
||||||
@@ -354,6 +357,17 @@ const loadTableData = (params: ANY_OBJECT) => {
|
|||||||
|
|
||||||
httpCall
|
httpCall
|
||||||
.then((res: ANY_OBJECT) => {
|
.then((res: ANY_OBJECT) => {
|
||||||
|
if (
|
||||||
|
queryTable.value &&
|
||||||
|
queryTable.value.props.treeFlag &&
|
||||||
|
queryTable.value.props.parentIdColumn
|
||||||
|
) {
|
||||||
|
res.data.dataList = treeDataTranslate(
|
||||||
|
res.data.dataList,
|
||||||
|
primaryColumnName.value,
|
||||||
|
queryTable.value.props.parentIdColumn,
|
||||||
|
);
|
||||||
|
}
|
||||||
resolve({
|
resolve({
|
||||||
dataList: res.data.dataList,
|
dataList: res.data.dataList,
|
||||||
totalCount: res.data.totalCount,
|
totalCount: res.data.totalCount,
|
||||||
@@ -395,6 +409,7 @@ const activeOperationList = computed(() => {
|
|||||||
return form.value.operationList;
|
return form.value.operationList;
|
||||||
});
|
});
|
||||||
const primaryColumnName = computed(() => {
|
const primaryColumnName = computed(() => {
|
||||||
|
if (dialogParams.value.isEdit) return;
|
||||||
let table = form.value.tableMap.get(queryTable.value.bindData.tableId);
|
let table = form.value.tableMap.get(queryTable.value.bindData.tableId);
|
||||||
if (table && Array.isArray(table.columnList)) {
|
if (table && Array.isArray(table.columnList)) {
|
||||||
for (let i = 0; i < table.columnList.length; i++) {
|
for (let i = 0; i < table.columnList.length; i++) {
|
||||||
@@ -406,6 +421,20 @@ const primaryColumnName = computed(() => {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
const getTableTreeConfig = computed(() => {
|
||||||
|
if (
|
||||||
|
queryTable.value &&
|
||||||
|
queryTable.value.props.treeFlag &&
|
||||||
|
queryTable.value.props.parentIdColumn
|
||||||
|
) {
|
||||||
|
return {
|
||||||
|
rowField: primaryColumnName.value,
|
||||||
|
parentField: queryTable.value.props.parentIdColumn,
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const onCopyWidget = (widget: ANY_OBJECT) => {
|
const onCopyWidget = (widget: ANY_OBJECT) => {
|
||||||
activeWidgetList.value.push(widget);
|
activeWidgetList.value.push(widget);
|
||||||
@@ -582,7 +611,7 @@ const onOperationClick = (operation: ANY_OBJECT, row: ANY_OBJECT | null) => {
|
|||||||
} else if (operation.type === SysCustomWidgetOperationType.EXPORT) {
|
} else if (operation.type === SysCustomWidgetOperationType.EXPORT) {
|
||||||
onExport(operation);
|
onExport(operation);
|
||||||
} else if (operation.type === SysCustomWidgetOperationType.PRINT) {
|
} else if (operation.type === SysCustomWidgetOperationType.PRINT) {
|
||||||
onPrint(operation, row, selectRows.value, queryTable.value.showName + '.pdf');
|
onPrint(operation, row, selectRows.value, queryTable.value.showName);
|
||||||
} else if (operation.type === SysCustomWidgetOperationType.START_FLOW) {
|
} else if (operation.type === SysCustomWidgetOperationType.START_FLOW) {
|
||||||
console.log('启动流程');
|
console.log('启动流程');
|
||||||
onStartFlow(operation, row);
|
onStartFlow(operation, row);
|
||||||
|
|||||||
@@ -112,7 +112,7 @@
|
|||||||
>
|
>
|
||||||
<div v-if="currentColumn != null" style="padding: 20px" class="attibute-box">
|
<div v-if="currentColumn != null" style="padding: 20px" class="attibute-box">
|
||||||
<el-col class="attribute-item">
|
<el-col class="attribute-item">
|
||||||
<el-form-item label="字段名:">
|
<el-form-item label="字段名">
|
||||||
<span :title="currentColumn.columnComment">{{ currentColumn.columnName }}</span>
|
<span :title="currentColumn.columnComment">{{ currentColumn.columnName }}</span>
|
||||||
<el-tag
|
<el-tag
|
||||||
:size="formItemSize"
|
:size="formItemSize"
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col class="attribute-item">
|
<el-col class="attribute-item">
|
||||||
<el-form-item label="字段类型:">
|
<el-form-item label="字段类型">
|
||||||
<span>{{ currentColumn.fullColumnType }}</span>
|
<span>{{ currentColumn.fullColumnType }}</span>
|
||||||
<el-tag :size="formItemSize" type="success" effect="dark" style="margin-left: 10px">{{
|
<el-tag :size="formItemSize" type="success" effect="dark" style="margin-left: 10px">{{
|
||||||
currentColumn.tag.objectFieldType
|
currentColumn.tag.objectFieldType
|
||||||
@@ -132,12 +132,12 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col class="attribute-item">
|
<el-col class="attribute-item">
|
||||||
<el-form-item label="是否必填:">
|
<el-form-item label="是否必填">
|
||||||
<el-switch v-model="currentColumn.required" />
|
<el-switch v-model="currentColumn.required" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col class="attribute-item">
|
<el-col class="attribute-item">
|
||||||
<el-form-item label="显示名称:">
|
<el-form-item label="显示名称">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="currentColumn.columnComment"
|
v-model="currentColumn.columnComment"
|
||||||
style="width: 278px"
|
style="width: 278px"
|
||||||
@@ -147,7 +147,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col class="attribute-item">
|
<el-col class="attribute-item">
|
||||||
<el-form-item label="字典数据:">
|
<el-form-item label="字典数据">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="currentColumn.dictId"
|
v-model="currentColumn.dictId"
|
||||||
placeholder="选择字段绑定的字典"
|
placeholder="选择字段绑定的字典"
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col class="attribute-item">
|
<el-col class="attribute-item">
|
||||||
<el-form-item label="过滤支持:">
|
<el-form-item label="过滤支持">
|
||||||
<el-radio-group v-model="currentColumn.filterType" @change="dirty = true">
|
<el-radio-group v-model="currentColumn.filterType" @change="dirty = true">
|
||||||
<el-radio-button
|
<el-radio-button
|
||||||
v-for="item in SysOnlineColumnFilterType.getList()"
|
v-for="item in SysOnlineColumnFilterType.getList()"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col class="attribute-item">
|
<el-col class="attribute-item">
|
||||||
<el-form-item label="数据权限过滤:">
|
<el-form-item label="数据权限过滤">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="dataPermFilterType"
|
v-model="dataPermFilterType"
|
||||||
placeholder="字段用于数据权限过滤规则"
|
placeholder="字段用于数据权限过滤规则"
|
||||||
@@ -202,7 +202,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col class="attribute-item">
|
<el-col class="attribute-item">
|
||||||
<el-form-item label="字段类别:">
|
<el-form-item label="字段类别">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="currentColumn.fieldKind"
|
v-model="currentColumn.fieldKind"
|
||||||
clearable
|
clearable
|
||||||
@@ -227,7 +227,7 @@
|
|||||||
currentColumn.fieldKind === SysOnlineFieldKind.UPLOAD_IMAGE
|
currentColumn.fieldKind === SysOnlineFieldKind.UPLOAD_IMAGE
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<el-form-item label="存储类型:">
|
<el-form-item label="存储类型">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="currentColumn.uploadFileSystemType"
|
v-model="currentColumn.uploadFileSystemType"
|
||||||
clearable
|
clearable
|
||||||
@@ -247,7 +247,7 @@
|
|||||||
currentColumn.fieldKind === SysOnlineFieldKind.UPLOAD_IMAGE
|
currentColumn.fieldKind === SysOnlineFieldKind.UPLOAD_IMAGE
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<el-form-item label="上传文件数量:">
|
<el-form-item label="上传文件数量">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="currentColumn.maxFileCount"
|
v-model="currentColumn.maxFileCount"
|
||||||
style="width: 278px"
|
style="width: 278px"
|
||||||
@@ -778,7 +778,7 @@ onMounted(() => {
|
|||||||
height: 35px;
|
height: 35px;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: #043254;
|
color: #043254;
|
||||||
background: #f4f7fa;
|
background: #f4f7fa;
|
||||||
border: 1px dashed #f3f9ff;
|
border: 1px dashed #f3f9ff;
|
||||||
|
|||||||
@@ -131,25 +131,13 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col class="attribute-item">
|
|
||||||
<el-form-item label="结果字段类型" prop="objectFieldType">
|
|
||||||
<el-select
|
|
||||||
v-model="currentColumn.objectFieldType"
|
|
||||||
placeholder="结果字段类型"
|
|
||||||
@change="currentColumn.aggregationType = undefined"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in getVirtualColumnFieldType"
|
|
||||||
:key="item"
|
|
||||||
:value="item"
|
|
||||||
:label="item"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col class="attribute-item">
|
<el-col class="attribute-item">
|
||||||
<el-form-item label="聚合计算规则" prop="relationId">
|
<el-form-item label="聚合计算规则" prop="relationId">
|
||||||
<el-select v-model="currentColumn.aggregationType" placeholder="聚合字段计算规则">
|
<el-select
|
||||||
|
v-model="currentColumn.aggregationType"
|
||||||
|
placeholder="聚合字段计算规则"
|
||||||
|
@change="currentColumn.objectFieldType = undefined"
|
||||||
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in getAggregationTypeList"
|
v-for="item in getAggregationTypeList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -159,6 +147,18 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col class="attribute-item">
|
||||||
|
<el-form-item label="结果字段类型" prop="objectFieldType">
|
||||||
|
<el-select v-model="currentColumn.objectFieldType" placeholder="结果字段类型">
|
||||||
|
<el-option
|
||||||
|
v-for="item in getVirtualColumnFieldType"
|
||||||
|
:key="item"
|
||||||
|
:value="item"
|
||||||
|
:label="item"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
@@ -306,6 +306,11 @@ const aggregationColumn = computed(() => {
|
|||||||
});
|
});
|
||||||
const getVirtualColumnFieldType = computed(() => {
|
const getVirtualColumnFieldType = computed(() => {
|
||||||
if (!aggregationColumn.value) return [];
|
if (!aggregationColumn.value) return [];
|
||||||
|
if (
|
||||||
|
currentColumn.value &&
|
||||||
|
currentColumn.value.aggregationType === SysOnlineAggregationType.GROUP_CONCAT
|
||||||
|
)
|
||||||
|
return ['String'];
|
||||||
|
|
||||||
switch (aggregationColumn.value.objectFieldType) {
|
switch (aggregationColumn.value.objectFieldType) {
|
||||||
case 'String':
|
case 'String':
|
||||||
@@ -346,6 +351,8 @@ const getAggregationTypeList = computed(() => {
|
|||||||
) !== -1
|
) !== -1
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
case SysOnlineAggregationType.GROUP_CONCAT:
|
||||||
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,6 +84,8 @@ const buildAttributeList = () => {
|
|||||||
attributeKey: attributeKey,
|
attributeKey: attributeKey,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
temp.disabled =
|
||||||
|
typeof temp.disabled === 'function' ? temp.disabled(formConfig()) : temp.disabled;
|
||||||
if (temp.visible == null || temp.visible) attributeList.value.push(temp);
|
if (temp.visible == null || temp.visible) attributeList.value.push(temp);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -94,18 +96,17 @@ const buildAttributeList = () => {
|
|||||||
watch(
|
watch(
|
||||||
() => currentWidget.value,
|
() => currentWidget.value,
|
||||||
() => {
|
() => {
|
||||||
console.log('CustomWidgetAttributeSetting.currentWidget change');
|
|
||||||
buildAttributeList();
|
buildAttributeList();
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
immediate: true,
|
immediate: true,
|
||||||
|
deep: true,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => props.widget,
|
() => props.widget,
|
||||||
() => {
|
() => {
|
||||||
console.log('CustomWidgetAttributeSetting.widget change');
|
|
||||||
buildAttributeList();
|
buildAttributeList();
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ const formType = computed(() => {
|
|||||||
return formConfig().form.formType;
|
return formConfig().form.formType;
|
||||||
});
|
});
|
||||||
const getValidTableList = computed(() => {
|
const getValidTableList = computed(() => {
|
||||||
if (data.value.parent != null) {
|
if (data.value.hasParent) {
|
||||||
return formConfig().getTableWidgetTableList;
|
return formConfig().getTableWidgetTableList;
|
||||||
} else if (
|
} else if (
|
||||||
data.value.widgetType === SysCustomWidgetType.Table ||
|
data.value.widgetType === SysCustomWidgetType.Table ||
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
label-position="right"
|
label-position="right"
|
||||||
@submit.prevent
|
@submit.prevent
|
||||||
>
|
>
|
||||||
<el-form-item label="字段名:">
|
<el-form-item label="字段名">
|
||||||
<span :title="formData.columnComment">{{ formData.columnName }}</span>
|
<span :title="formData.columnComment">{{ formData.columnName }}</span>
|
||||||
<el-tag
|
<el-tag
|
||||||
:size="formItemSize"
|
:size="formItemSize"
|
||||||
@@ -22,16 +22,16 @@
|
|||||||
>主键</el-tag
|
>主键</el-tag
|
||||||
>
|
>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="字段类型:">
|
<el-form-item label="字段类型">
|
||||||
<span>{{ formData.fullColumnType }}</span>
|
<span>{{ formData.fullColumnType }}</span>
|
||||||
<el-tag :size="formItemSize" type="success" effect="dark" style="margin-left: 10px">{{
|
<el-tag :size="formItemSize" type="success" effect="dark" style="margin-left: 10px">{{
|
||||||
formData.objectFieldType
|
formData.objectFieldType
|
||||||
}}</el-tag>
|
}}</el-tag>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否必填:">
|
<el-form-item label="是否必填">
|
||||||
<el-switch v-model="formData.required" />
|
<el-switch v-model="formData.required" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="显示名称:">
|
<el-form-item label="显示名称">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="formData.columnComment"
|
v-model="formData.columnComment"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
placeholder="字段在表单上的显示名称"
|
placeholder="字段在表单上的显示名称"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="字典数据:">
|
<el-form-item label="字典数据">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formData.dictId"
|
v-model="formData.dictId"
|
||||||
placeholder="选择字段绑定的字典"
|
placeholder="选择字段绑定的字典"
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="过滤支持:">
|
<el-form-item label="过滤支持">
|
||||||
<el-radio-group v-model="formData.filterType" @change="dirty = true">
|
<el-radio-group v-model="formData.filterType" @change="dirty = true">
|
||||||
<el-radio-button
|
<el-radio-button
|
||||||
v-for="item in SysOnlineColumnFilterType.getList()"
|
v-for="item in SysOnlineColumnFilterType.getList()"
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
</el-radio-button>
|
</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="字段类别:">
|
<el-form-item label="字段类别">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formData.fieldKind"
|
v-model="formData.fieldKind"
|
||||||
clearable
|
clearable
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
formData.fieldKind === SysOnlineFieldKind.UPLOAD ||
|
formData.fieldKind === SysOnlineFieldKind.UPLOAD ||
|
||||||
formData.fieldKind === SysOnlineFieldKind.UPLOAD_IMAGE
|
formData.fieldKind === SysOnlineFieldKind.UPLOAD_IMAGE
|
||||||
"
|
"
|
||||||
label="存储类型:"
|
label="存储类型"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formData.uploadFileSystemType"
|
v-model="formData.uploadFileSystemType"
|
||||||
|
|||||||
@@ -275,7 +275,7 @@
|
|||||||
link
|
link
|
||||||
size="default"
|
size="default"
|
||||||
:icon="Refresh"
|
:icon="Refresh"
|
||||||
style="font-size: 12px; color: #999; font-weight: normal"
|
style="font-size: 14px; color: #999; font-weight: normal"
|
||||||
@click="onClearWidget"
|
@click="onClearWidget"
|
||||||
>重置表单</el-button
|
>重置表单</el-button
|
||||||
>
|
>
|
||||||
@@ -362,7 +362,7 @@
|
|||||||
<span>属性</span>
|
<span>属性</span>
|
||||||
</template>
|
</template>
|
||||||
<el-scrollbar :style="{ height: getClientHeight - 138 + 'px' }">
|
<el-scrollbar :style="{ height: getClientHeight - 138 + 'px' }">
|
||||||
<el-row style="padding: 10px 16px">
|
<el-row style="padding: 16px">
|
||||||
<template v-if="currentWidget != null">
|
<template v-if="currentWidget != null">
|
||||||
<CustomWidgetBindData v-model:value="currentWidget" />
|
<CustomWidgetBindData v-model:value="currentWidget" />
|
||||||
<CustomWidgetAttributeSetting
|
<CustomWidgetAttributeSetting
|
||||||
@@ -381,7 +381,7 @@
|
|||||||
<span>操作</span>
|
<span>操作</span>
|
||||||
</template>
|
</template>
|
||||||
<el-scrollbar :style="{ height: getClientHeight - 138 + 'px' }">
|
<el-scrollbar :style="{ height: getClientHeight - 138 + 'px' }">
|
||||||
<el-row style="width: 100%; padding: 10px 16px">
|
<el-row style="width: 100%; padding: 16px">
|
||||||
<!-- 组件操作 -->
|
<!-- 组件操作 -->
|
||||||
<CustomFormOperateSetting
|
<CustomFormOperateSetting
|
||||||
v-if="
|
v-if="
|
||||||
@@ -1105,7 +1105,7 @@ defineExpose({
|
|||||||
span {
|
span {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
max-width: 100px;
|
max-width: 100px;
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
color: #333;
|
color: #333;
|
||||||
@@ -1115,7 +1115,7 @@ defineExpose({
|
|||||||
.tag {
|
.tag {
|
||||||
padding: 3px 8px;
|
padding: 3px 8px;
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: #999;
|
color: #999;
|
||||||
background: #f6f7f9;
|
background: #f6f7f9;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
@@ -1299,7 +1299,7 @@ defineExpose({
|
|||||||
}
|
}
|
||||||
.attribute-panel :deep(.el-form-item__label) {
|
.attribute-panel :deep(.el-form-item__label) {
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: #666;
|
color: #666;
|
||||||
}
|
}
|
||||||
.attribute-panel :deep(.el-tabs__nav-wrap::after) {
|
.attribute-panel :deep(.el-tabs__nav-wrap::after) {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
>
|
>
|
||||||
<template v-slot:table>
|
<template v-slot:table>
|
||||||
<table-box
|
<table-box
|
||||||
class="page-table"
|
style="padding-bottom: 16px"
|
||||||
:data="onlineDblinkWidget.dataList"
|
:data="onlineDblinkWidget.dataList"
|
||||||
:size="layoutStore.defaultFormItemSize"
|
:size="layoutStore.defaultFormItemSize"
|
||||||
header-cell-class-name="table-header-gray"
|
header-cell-class-name="table-header-gray"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
:model="formData"
|
:model="formData"
|
||||||
class="full-width-input form-box"
|
class="full-width-input form-box"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
label-width="150px"
|
label-width="90px"
|
||||||
:size="layoutStore.defaultFormItemSize"
|
:size="layoutStore.defaultFormItemSize"
|
||||||
label-position="right"
|
label-position="right"
|
||||||
@submit.prevent
|
@submit.prevent
|
||||||
|
|||||||
@@ -36,9 +36,9 @@ import { ANY_OBJECT } from '@/types/generic';
|
|||||||
import ProcessDesigner from '../package/process-designer/ProcessDesigner.vue';
|
import ProcessDesigner from '../package/process-designer/ProcessDesigner.vue';
|
||||||
import PropertiesPanel from '../package/refactor/PropertiesPanel.vue';
|
import PropertiesPanel from '../package/refactor/PropertiesPanel.vue';
|
||||||
// 自定义元素选中时的弹出菜单(修改 默认任务 为 用户任务)
|
// 自定义元素选中时的弹出菜单(修改 默认任务 为 用户任务)
|
||||||
import CustomContentPadProvider from '../package/process-designer/plugins/content-pad';
|
import CustomContentPadProvider from '../package/process-designer/plugins/content-pad/index.js';
|
||||||
// 自定义左侧菜单(修改 默认任务 为 用户任务)
|
// 自定义左侧菜单(修改 默认任务 为 用户任务)
|
||||||
import CustomPaletteProvider from '../package/process-designer/plugins/palette';
|
import CustomPaletteProvider from '../package/process-designer/plugins/palette/index.js';
|
||||||
|
|
||||||
// Then register the languages you need
|
// Then register the languages you need
|
||||||
//hljs.registerLanguage('javascript', javascript);
|
//hljs.registerLanguage('javascript', javascript);
|
||||||
|
|||||||
@@ -20,10 +20,10 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ANY_OBJECT } from '@/types/generic';
|
import { ANY_OBJECT } from '@/types/generic';
|
||||||
|
import { useLayoutStore } from '@/store';
|
||||||
|
|
||||||
const emit = defineEmits<{ 'update:value': ANY_OBJECT[] | string[] }>();
|
const emit = defineEmits<{ 'update:value': ANY_OBJECT[] | string[] }>();
|
||||||
const props = defineProps<{ value: string | Array<ANY_OBJECT> }>();
|
const props = defineProps<{ value: string | Array<ANY_OBJECT> }>();
|
||||||
import { useLayoutStore } from '@/store';
|
|
||||||
const layoutStore = useLayoutStore();
|
const layoutStore = useLayoutStore();
|
||||||
|
|
||||||
const selectValues = ref<ANY_OBJECT[]>([]);
|
const selectValues = ref<ANY_OBJECT[]>([]);
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<slot />
|
<slot />
|
||||||
<div class="tag-box" v-if="selectValues.length">
|
<div class="tag-box" v-if="selectValues.length">
|
||||||
<el-tag
|
<el-tag
|
||||||
:size="layoutStore.defaultFormItemSize"
|
size="large"
|
||||||
effect="dark"
|
effect="dark"
|
||||||
v-for="item in selectValues"
|
v-for="item in selectValues"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -80,7 +80,6 @@ watch(
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.task-multiple-select {
|
.task-multiple-select {
|
||||||
:deep(.el-tag) {
|
:deep(.el-tag) {
|
||||||
padding-right: 4px;
|
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
color: #666;
|
color: #666;
|
||||||
background-color: #f6f6f6;
|
background-color: #f6f6f6;
|
||||||
|
|||||||
@@ -96,187 +96,189 @@
|
|||||||
label-width="80px"
|
label-width="80px"
|
||||||
@submit.prevent
|
@submit.prevent
|
||||||
>
|
>
|
||||||
<el-col :span="24">
|
<el-row :gutter="16">
|
||||||
<el-form-item label="表单类型" prop="bindFormType">
|
<el-col :span="24">
|
||||||
<el-select
|
<el-form-item label="表单类型" prop="bindFormType">
|
||||||
v-model="formFlowEntryData.bindFormType"
|
|
||||||
placeholder=""
|
|
||||||
@change="onBindFormTypeChange"
|
|
||||||
:disabled="isEdit"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
:label="
|
|
||||||
SysFlowEntryBindFormType.getValue(SysFlowEntryBindFormType.ROUTER_FORM)
|
|
||||||
"
|
|
||||||
:value="SysFlowEntryBindFormType.ROUTER_FORM"
|
|
||||||
/>
|
|
||||||
<el-option
|
|
||||||
:label="
|
|
||||||
SysFlowEntryBindFormType.getValue(SysFlowEntryBindFormType.ONLINE_FORM)
|
|
||||||
"
|
|
||||||
:value="SysFlowEntryBindFormType.ONLINE_FORM"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="流程名称" prop="processDefinitionName">
|
|
||||||
<el-input v-model="formFlowEntryData.processDefinitionName" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="流程标识" prop="processDefinitionKey">
|
|
||||||
<el-input v-model="formFlowEntryData.processDefinitionKey" :disabled="isEdit" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="流程分类" prop="categoryId">
|
|
||||||
<el-select
|
|
||||||
v-model="formFlowEntryData.categoryId"
|
|
||||||
placeholder=""
|
|
||||||
:loading="categoryIdWidget.loading"
|
|
||||||
@visible-change="categoryIdWidget.onVisibleChange"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in categoryIdWidget.dropdownList"
|
|
||||||
:key="item.id"
|
|
||||||
:value="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="工单编码">
|
|
||||||
<el-row type="flex" align="middle" style="flex-wrap: nowrap">
|
|
||||||
<el-input
|
|
||||||
v-model="formFlowEntryData.encodedRule.prefix"
|
|
||||||
style="width: 150px"
|
|
||||||
placeholder="前缀"
|
|
||||||
:disabled="!formFlowEntryData.encodedRule.calculateWhenView"
|
|
||||||
>
|
|
||||||
<template v-slot:prepend>
|
|
||||||
<el-checkbox v-model="formFlowEntryData.encodedRule.calculateWhenView" />
|
|
||||||
</template>
|
|
||||||
</el-input>
|
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formFlowEntryData.encodedRule.precisionTo"
|
v-model="formFlowEntryData.bindFormType"
|
||||||
style="width: 160px; margin-left: 5px"
|
placeholder=""
|
||||||
placeholder="日期精度"
|
@change="onBindFormTypeChange"
|
||||||
:disabled="!formFlowEntryData.encodedRule.calculateWhenView"
|
:disabled="isEdit"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in SysAutoCodeType.getList()"
|
:label="
|
||||||
:key="item.id"
|
SysFlowEntryBindFormType.getValue(SysFlowEntryBindFormType.ROUTER_FORM)
|
||||||
:label="item.name"
|
"
|
||||||
:value="item.id"
|
:value="SysFlowEntryBindFormType.ROUTER_FORM"
|
||||||
|
/>
|
||||||
|
<el-option
|
||||||
|
:label="
|
||||||
|
SysFlowEntryBindFormType.getValue(SysFlowEntryBindFormType.ONLINE_FORM)
|
||||||
|
"
|
||||||
|
:value="SysFlowEntryBindFormType.ONLINE_FORM"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-input
|
</el-form-item>
|
||||||
v-model="formFlowEntryData.encodedRule.middle"
|
</el-col>
|
||||||
style="width: 80px; margin-left: 5px"
|
<el-col :span="24">
|
||||||
placeholder="后缀"
|
<el-form-item label="流程名称" prop="processDefinitionName">
|
||||||
:disabled="!formFlowEntryData.encodedRule.calculateWhenView"
|
<el-input v-model="formFlowEntryData.processDefinitionName" />
|
||||||
/>
|
</el-form-item>
|
||||||
<el-input-number
|
</el-col>
|
||||||
v-model="formFlowEntryData.encodedRule.idWidth"
|
<el-col :span="24">
|
||||||
style="width: 100px; margin-left: 5px"
|
<el-form-item label="流程标识" prop="processDefinitionKey">
|
||||||
:controls="false"
|
<el-input v-model="formFlowEntryData.processDefinitionKey" :disabled="isEdit" />
|
||||||
placeholder="序号宽度"
|
</el-form-item>
|
||||||
:disabled="!formFlowEntryData.encodedRule.calculateWhenView"
|
</el-col>
|
||||||
/>
|
<el-col :span="24">
|
||||||
</el-row>
|
<el-form-item label="流程分类" prop="categoryId">
|
||||||
</el-form-item>
|
<el-select
|
||||||
</el-col>
|
v-model="formFlowEntryData.categoryId"
|
||||||
<el-col
|
placeholder=""
|
||||||
:span="24"
|
:loading="categoryIdWidget.loading"
|
||||||
v-if="formFlowEntryData.bindFormType === SysFlowEntryBindFormType.ONLINE_FORM"
|
@visible-change="categoryIdWidget.onVisibleChange"
|
||||||
>
|
|
||||||
<el-form-item label="流程页面" prop="pageId">
|
|
||||||
<el-select
|
|
||||||
v-model="formFlowEntryData.pageId"
|
|
||||||
:disabled="isEdit"
|
|
||||||
placeholder=""
|
|
||||||
:loading="pageIdWidget.loading"
|
|
||||||
@visible-change="pageIdWidget.onVisibleChange"
|
|
||||||
@change="onEntryPageChange"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in pageIdWidget.dropdownList"
|
|
||||||
:key="item.pageId"
|
|
||||||
:value="item.pageId"
|
|
||||||
:label="item.pageName"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col
|
|
||||||
:span="24"
|
|
||||||
v-if="formFlowEntryData.bindFormType === SysFlowEntryBindFormType.ONLINE_FORM"
|
|
||||||
>
|
|
||||||
<el-form-item label="默认表单" prop="defaultFormId">
|
|
||||||
<el-select
|
|
||||||
v-model="formFlowEntryData.defaultFormId"
|
|
||||||
placeholder=""
|
|
||||||
:loading="defaultFormIdWidget.loading"
|
|
||||||
@visible-change="defaultFormIdWidget.onVisibleChange"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in defaultFormIdWidget.dropdownList"
|
|
||||||
:key="item.formId"
|
|
||||||
:value="item.formId"
|
|
||||||
:label="item.formName"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col
|
|
||||||
:span="24"
|
|
||||||
v-if="formFlowEntryData.bindFormType === SysFlowEntryBindFormType.ROUTER_FORM"
|
|
||||||
>
|
|
||||||
<el-form-item label="默认表单" prop="defaultRouterName">
|
|
||||||
<el-input
|
|
||||||
v-model="formFlowEntryData.defaultRouterName"
|
|
||||||
clearable
|
|
||||||
placeholder="请填写路由名称"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="通知类型">
|
|
||||||
<el-select
|
|
||||||
v-model="formFlowEntryData.notifyTypes"
|
|
||||||
placeholder=""
|
|
||||||
clearable
|
|
||||||
multiple
|
|
||||||
>
|
|
||||||
<el-option label="邮件" value="email" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="级联删除业务数据" label-width="128px">
|
|
||||||
<el-switch v-model="formFlowEntryData.cascadeDeleteBusinessData" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24" v-if="isEdit && shareFormList.length > 0">
|
|
||||||
<el-form-item label="工单分享">
|
|
||||||
<el-row type="flex">
|
|
||||||
<el-button
|
|
||||||
v-for="form in (defaultFormIdWidget.dropdownList || []).filter(
|
|
||||||
item => item.formType === SysOnlineFormType.WORK_ORDER,
|
|
||||||
)"
|
|
||||||
:key="form.formId"
|
|
||||||
:class="form.formCode"
|
|
||||||
:data-clipboard-text="getFormShareInfo(form)"
|
|
||||||
title="生成分享链接"
|
|
||||||
@click="handleShare(form.formCode)"
|
|
||||||
>
|
>
|
||||||
{{ form.formName }}
|
<el-option
|
||||||
</el-button>
|
v-for="item in categoryIdWidget.dropdownList"
|
||||||
</el-row>
|
:key="item.id"
|
||||||
</el-form-item>
|
:value="item.id"
|
||||||
</el-col>
|
:label="item.name"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="工单编码">
|
||||||
|
<el-row type="flex" align="middle" style="flex-wrap: nowrap">
|
||||||
|
<el-input
|
||||||
|
v-model="formFlowEntryData.encodedRule.prefix"
|
||||||
|
style="width: 150px"
|
||||||
|
placeholder="前缀"
|
||||||
|
:disabled="!formFlowEntryData.encodedRule.calculateWhenView"
|
||||||
|
>
|
||||||
|
<template v-slot:prepend>
|
||||||
|
<el-checkbox v-model="formFlowEntryData.encodedRule.calculateWhenView" />
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
<el-select
|
||||||
|
v-model="formFlowEntryData.encodedRule.precisionTo"
|
||||||
|
style="width: 160px; margin-left: 5px"
|
||||||
|
placeholder="日期精度"
|
||||||
|
:disabled="!formFlowEntryData.encodedRule.calculateWhenView"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in SysAutoCodeType.getList()"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
<el-input
|
||||||
|
v-model="formFlowEntryData.encodedRule.middle"
|
||||||
|
style="width: 80px; margin-left: 5px"
|
||||||
|
placeholder="后缀"
|
||||||
|
:disabled="!formFlowEntryData.encodedRule.calculateWhenView"
|
||||||
|
/>
|
||||||
|
<el-input-number
|
||||||
|
v-model="formFlowEntryData.encodedRule.idWidth"
|
||||||
|
style="width: 100px; margin-left: 5px"
|
||||||
|
:controls="false"
|
||||||
|
placeholder="序号宽度"
|
||||||
|
:disabled="!formFlowEntryData.encodedRule.calculateWhenView"
|
||||||
|
/>
|
||||||
|
</el-row>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col
|
||||||
|
:span="24"
|
||||||
|
v-if="formFlowEntryData.bindFormType === SysFlowEntryBindFormType.ONLINE_FORM"
|
||||||
|
>
|
||||||
|
<el-form-item label="流程页面" prop="pageId">
|
||||||
|
<el-select
|
||||||
|
v-model="formFlowEntryData.pageId"
|
||||||
|
:disabled="isEdit"
|
||||||
|
placeholder=""
|
||||||
|
:loading="pageIdWidget.loading"
|
||||||
|
@visible-change="pageIdWidget.onVisibleChange"
|
||||||
|
@change="onEntryPageChange"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in pageIdWidget.dropdownList"
|
||||||
|
:key="item.pageId"
|
||||||
|
:value="item.pageId"
|
||||||
|
:label="item.pageName"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col
|
||||||
|
:span="24"
|
||||||
|
v-if="formFlowEntryData.bindFormType === SysFlowEntryBindFormType.ONLINE_FORM"
|
||||||
|
>
|
||||||
|
<el-form-item label="默认表单" prop="defaultFormId">
|
||||||
|
<el-select
|
||||||
|
v-model="formFlowEntryData.defaultFormId"
|
||||||
|
placeholder=""
|
||||||
|
:loading="defaultFormIdWidget.loading"
|
||||||
|
@visible-change="defaultFormIdWidget.onVisibleChange"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in defaultFormIdWidget.dropdownList"
|
||||||
|
:key="item.formId"
|
||||||
|
:value="item.formId"
|
||||||
|
:label="item.formName"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col
|
||||||
|
:span="24"
|
||||||
|
v-if="formFlowEntryData.bindFormType === SysFlowEntryBindFormType.ROUTER_FORM"
|
||||||
|
>
|
||||||
|
<el-form-item label="默认表单" prop="defaultRouterName">
|
||||||
|
<el-input
|
||||||
|
v-model="formFlowEntryData.defaultRouterName"
|
||||||
|
clearable
|
||||||
|
placeholder="请填写路由名称"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="通知类型">
|
||||||
|
<el-select
|
||||||
|
v-model="formFlowEntryData.notifyTypes"
|
||||||
|
placeholder=""
|
||||||
|
clearable
|
||||||
|
multiple
|
||||||
|
>
|
||||||
|
<el-option label="邮件" value="email" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="级联删除业务数据" label-width="128px">
|
||||||
|
<el-switch v-model="formFlowEntryData.cascadeDeleteBusinessData" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24" v-if="isEdit && shareFormList.length > 0">
|
||||||
|
<el-form-item label="工单分享">
|
||||||
|
<el-row type="flex">
|
||||||
|
<el-button
|
||||||
|
v-for="form in (defaultFormIdWidget.dropdownList || []).filter(
|
||||||
|
item => item.formType === SysOnlineFormType.WORK_ORDER,
|
||||||
|
)"
|
||||||
|
:key="form.formId"
|
||||||
|
:class="form.formCode"
|
||||||
|
:data-clipboard-text="getFormShareInfo(form)"
|
||||||
|
title="生成分享链接"
|
||||||
|
@click="handleShare(form.formCode)"
|
||||||
|
>
|
||||||
|
{{ form.formName }}
|
||||||
|
</el-button>
|
||||||
|
</el-row>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- 流程变量设置 -->
|
<!-- 流程变量设置 -->
|
||||||
@@ -313,9 +315,9 @@
|
|||||||
<el-tag
|
<el-tag
|
||||||
:size="formItemSize"
|
:size="formItemSize"
|
||||||
effect="dark"
|
effect="dark"
|
||||||
:type="scope.row.builtIn ? 'success' : 'danger'"
|
:type="scope.row.builtin ? 'success' : 'danger'"
|
||||||
>
|
>
|
||||||
{{ scope.row.builtIn ? '是' : '否' }}
|
{{ scope.row.builtin ? '是' : '否' }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
|
|||||||
@@ -109,7 +109,7 @@
|
|||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="流程主版本" field="mainFlowEntryPublish">
|
<vxe-column title="流程主版本" field="mainFlowEntryPublish" width="200px">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<el-tag
|
<el-tag
|
||||||
v-if="scope.row.mainFlowEntryPublish"
|
v-if="scope.row.mainFlowEntryPublish"
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="发布时间" field="publishTime" min-width="150px" />
|
<vxe-column title="发布时间" field="publishTime" min-width="150px" />
|
||||||
<vxe-column title="操作" fixed="right" width="200px">
|
<vxe-column title="操作" fixed="right" width="220px">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<el-button
|
<el-button
|
||||||
@click.stop="onSetActiveStatus(scope.row)"
|
@click.stop="onSetActiveStatus(scope.row)"
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
link
|
link
|
||||||
:size="formItemSize"
|
:size="formItemSize"
|
||||||
>
|
>
|
||||||
设置为主版本
|
设置主版本
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
|
|||||||
@@ -18,6 +18,11 @@ export const useFlowAction = (props: IProp) => {
|
|||||||
|
|
||||||
const dialogParams = computed(() => {
|
const dialogParams = computed(() => {
|
||||||
console.log('dialogParams props', props);
|
console.log('dialogParams props', props);
|
||||||
|
let operationList =
|
||||||
|
props.operationList == null || props.operationList === ''
|
||||||
|
? thirdParams.value.operationList
|
||||||
|
: props.operationList;
|
||||||
|
operationList = typeof operationList == 'string' ? JSON.parse(operationList) : operationList;
|
||||||
return {
|
return {
|
||||||
isRuntime: props.isRuntime === 'true' || thirdParams.value.isRuntime || false,
|
isRuntime: props.isRuntime === 'true' || thirdParams.value.isRuntime || false,
|
||||||
isDraft: props.isDraft === 'true' || thirdParams.value.isDraft || false,
|
isDraft: props.isDraft === 'true' || thirdParams.value.isDraft || false,
|
||||||
@@ -34,16 +39,14 @@ export const useFlowAction = (props: IProp) => {
|
|||||||
processInstanceInitiator:
|
processInstanceInitiator:
|
||||||
props.processInstanceInitiator || thirdParams.value.processInstanceInitiator,
|
props.processInstanceInitiator || thirdParams.value.processInstanceInitiator,
|
||||||
taskName: props.taskName || thirdParams.value.taskName,
|
taskName: props.taskName || thirdParams.value.taskName,
|
||||||
operationList:
|
operationList: operationList,
|
||||||
typeof props.operationList == 'string'
|
|
||||||
? JSON.parse(props.operationList)
|
|
||||||
: props.operationList, // || thirdParams.value.operationList,
|
|
||||||
variableList:
|
variableList:
|
||||||
typeof props.variableList == 'string'
|
typeof props.variableList == 'string'
|
||||||
? JSON.parse(props.variableList)
|
? JSON.parse(props.variableList)
|
||||||
: props.variableList || thirdParams.value.variableList,
|
: props.variableList || thirdParams.value.variableList,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
// 加签
|
||||||
const submitConsign = (
|
const submitConsign = (
|
||||||
assignee: Array<string> | string,
|
assignee: Array<string> | string,
|
||||||
isAdd = true,
|
isAdd = true,
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export interface IProp extends ThirdProps {
|
|||||||
// 路由名称
|
// 路由名称
|
||||||
routerName?: string;
|
routerName?: string;
|
||||||
// 只读页面
|
// 只读页面
|
||||||
readOnly: boolean | string;
|
readOnly?: boolean | string;
|
||||||
// 消息id,用于抄送消息回显
|
// 消息id,用于抄送消息回显
|
||||||
messageId?: string;
|
messageId?: string;
|
||||||
// 流程实例id
|
// 流程实例id
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="conditionFormVisible" key="status">
|
<div v-if="conditionFormVisible" key="status">
|
||||||
<div class="panel-title">更新工单状态</div>
|
<div class="panel-title">工单状态</div>
|
||||||
<SetApproveStatus :id="elementId" :type="elementType" />
|
<SetApproveStatus :id="elementId" :type="elementType" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -295,7 +295,7 @@ onBeforeUnmount(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.el-tabs__header {
|
.el-tabs__header {
|
||||||
margin-bottom: 10px !important;
|
margin-bottom: 15px !important;
|
||||||
}
|
}
|
||||||
.el-tabs__content {
|
.el-tabs__content {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
@@ -326,7 +326,7 @@ onBeforeUnmount(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.el-form-item__label {
|
.el-form-item__label {
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,7 +338,7 @@ onBeforeUnmount(() => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: #333;
|
color: #333;
|
||||||
line-height: 32px;
|
line-height: 32px;
|
||||||
}
|
}
|
||||||
@@ -350,7 +350,7 @@ onBeforeUnmount(() => {
|
|||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
.el-table th {
|
.el-table th {
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: #666 !important;
|
color: #666 !important;
|
||||||
background-color: #f6f7f9 !important;
|
background-color: #f6f7f9 !important;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-form :size="layoutStore.defaultFormItemSize" @submit.prevent label-position="top">
|
<el-form :size="layoutStore.defaultFormItemSize" @submit.prevent label-position="top">
|
||||||
|
<el-form-item label="流程名称">
|
||||||
|
<el-input :value="flowEntry().value.processDefinitionName" :disabled="true" />
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="任务ID">
|
<el-form-item label="任务ID">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="elementBaseInfo.id"
|
v-model="elementBaseInfo.id"
|
||||||
@@ -34,14 +37,17 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onBeforeUnmount, watch, nextTick, inject } from 'vue';
|
import { ref, onBeforeUnmount, watch, nextTick, inject } from 'vue';
|
||||||
import { ANY_OBJECT } from '@/types/generic';
|
import { ANY_OBJECT } from '@/types/generic';
|
||||||
|
import { useLayoutStore } from '@/store';
|
||||||
|
|
||||||
|
const layoutStore = useLayoutStore();
|
||||||
const props = withDefaults(
|
const props = withDefaults(
|
||||||
defineProps<{ businessObject: ANY_OBJECT; type?: string; idEditDisabled?: boolean }>(),
|
defineProps<{ businessObject: ANY_OBJECT; type?: string; idEditDisabled?: boolean }>(),
|
||||||
{ idEditDisabled: true },
|
{ idEditDisabled: true },
|
||||||
);
|
);
|
||||||
|
|
||||||
import { useLayoutStore } from '@/store';
|
const flowEntry = inject('flowEntry', () => {
|
||||||
const layoutStore = useLayoutStore();
|
return {} as ANY_OBJECT;
|
||||||
|
});
|
||||||
|
|
||||||
const elementBaseInfo = ref<ANY_OBJECT>({});
|
const elementBaseInfo = ref<ANY_OBJECT>({});
|
||||||
let bpmnElement: ANY_OBJECT | null = null;
|
let bpmnElement: ANY_OBJECT | null = null;
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
<span>表单权限设置</span>
|
<span>表单权限设置</span>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="default"
|
||||||
style="margin-left: 18px"
|
style="margin-left: 18px"
|
||||||
@click="onSetOnlineFormAuth"
|
@click="onSetOnlineFormAuth"
|
||||||
>设置</el-button
|
>设置</el-button
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<vxe-column title="序号" width="70px" type="seq" />
|
<vxe-column title="序号" width="70px" type="seq" />
|
||||||
<vxe-column title="按钮名称" min-width="100px">
|
<vxe-column title="按钮名称" min-width="100px">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<span style="font-size: 12px">{{ scope.row.label }}</span>
|
<span>{{ scope.row.label }}</span>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="按钮类型" min-width="100px">
|
<vxe-column title="按钮类型" min-width="100px">
|
||||||
@@ -138,15 +138,11 @@ const layoutStore = useLayoutStore();
|
|||||||
|
|
||||||
const props = defineProps<{ id: string; type: string; tabType: string }>();
|
const props = defineProps<{ id: string; type: string; tabType: string }>();
|
||||||
const flowEntry = inject('flowEntry', () => {
|
const flowEntry = inject('flowEntry', () => {
|
||||||
console.warn('flowFormConfig not inject flowEntry yet.');
|
|
||||||
return {} as ANY_OBJECT;
|
return {} as ANY_OBJECT;
|
||||||
});
|
});
|
||||||
console.log('flowEntry()', flowEntry());
|
|
||||||
const formList = inject('formList', () => {
|
const formList = inject('formList', () => {
|
||||||
console.warn('flowFormConfig not inject formList yet.');
|
|
||||||
return {} as ANY_OBJECT;
|
return {} as ANY_OBJECT;
|
||||||
});
|
});
|
||||||
console.log('formList()', formList());
|
|
||||||
const prefix = inject('prefix');
|
const prefix = inject('prefix');
|
||||||
|
|
||||||
const win: ANY_OBJECT = window;
|
const win: ANY_OBJECT = window;
|
||||||
@@ -249,6 +245,12 @@ const onSetOnlineFormAuth = () => {
|
|||||||
{
|
{
|
||||||
formAuth: formData.value.formAuth || {},
|
formAuth: formData.value.formAuth || {},
|
||||||
formWidgetConfig: tempConfig,
|
formWidgetConfig: tempConfig,
|
||||||
|
path: 'thirdSetOnlineFormAuth',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
width: '1000px',
|
||||||
|
height: '700px',
|
||||||
|
pathName: '/thirdParty/formSetOnlineFormAuth',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="更新工单状态">
|
<el-form-item label="工单状态">
|
||||||
<el-select
|
<el-select
|
||||||
class="input-item"
|
class="input-item"
|
||||||
v-model="formData.latestApprovalStatus"
|
v-model="formData.latestApprovalStatus"
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="scope.row.disabled"
|
v-model="scope.row.disabled"
|
||||||
size="mini"
|
size="default"
|
||||||
@change="val => onWidgetDisableChange(scope.row, val)"
|
@change="val => onWidgetDisableChange(scope.row, val)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="scope.row.hidden"
|
v-model="scope.row.hidden"
|
||||||
size="mini"
|
size="default"
|
||||||
@change="val => onWidgetHideChange(scope.row, val)"
|
@change="val => onWidgetHideChange(scope.row, val)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
{{ listenerTypeObject[scope.row.listenerType] }}
|
{{ listenerTypeObject[scope.row.listenerType] }}
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="操作" width="90px">
|
<vxe-column title="操作" width="110px">
|
||||||
<template v-slot="{ row, $rowIndex }">
|
<template v-slot="{ row, $rowIndex }">
|
||||||
<el-button
|
<el-button
|
||||||
:size="layoutStore.defaultFormItemSize"
|
:size="layoutStore.defaultFormItemSize"
|
||||||
@@ -298,10 +298,10 @@ import { ElMessageBox } from 'element-plus';
|
|||||||
import { Menu } from '@element-plus/icons-vue';
|
import { Menu } from '@element-plus/icons-vue';
|
||||||
import { VxeTable, VxeColumn, SizeType } from 'vxe-table';
|
import { VxeTable, VxeColumn, SizeType } from 'vxe-table';
|
||||||
import { ANY_OBJECT } from '@/types/generic';
|
import { ANY_OBJECT } from '@/types/generic';
|
||||||
|
import { useLayoutStore } from '@/store';
|
||||||
import { createListenerObject, updateElementExtensions } from '../../utils';
|
import { createListenerObject, updateElementExtensions } from '../../utils';
|
||||||
import { initListenerType, initListenerForm, listenerType, fieldType } from './utilSelf';
|
import { initListenerType, initListenerForm, listenerType, fieldType } from './utilSelf';
|
||||||
|
|
||||||
import { useLayoutStore } from '@/store';
|
|
||||||
const layoutStore = useLayoutStore();
|
const layoutStore = useLayoutStore();
|
||||||
|
|
||||||
const props = defineProps<{ id: string; type: string }>();
|
const props = defineProps<{ id: string; type: string }>();
|
||||||
|
|||||||
@@ -12,13 +12,12 @@
|
|||||||
{{ listenerEventTypeObject[scope.row.event] }}
|
{{ listenerEventTypeObject[scope.row.event] }}
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="监听器ID" min-width="80px" field="id" show-overflow-tooltip />
|
|
||||||
<vxe-column title="监听器类型" min-width="80px" show-overflow-tooltip>
|
<vxe-column title="监听器类型" min-width="80px" show-overflow-tooltip>
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
{{ listenerTypeObject[scope.row.listenerType] }}
|
{{ listenerTypeObject[scope.row.listenerType] }}
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="操作" width="90px">
|
<vxe-column title="操作" width="110px">
|
||||||
<template v-slot="{ row, $rowIndex }">
|
<template v-slot="{ row, $rowIndex }">
|
||||||
<el-button
|
<el-button
|
||||||
:size="layoutStore.defaultFormItemSize"
|
:size="layoutStore.defaultFormItemSize"
|
||||||
@@ -332,10 +331,10 @@ import { ElMessageBox } from 'element-plus';
|
|||||||
import { Menu } from '@element-plus/icons-vue';
|
import { Menu } from '@element-plus/icons-vue';
|
||||||
import { VxeTable, VxeColumn } from 'vxe-table';
|
import { VxeTable, VxeColumn } from 'vxe-table';
|
||||||
import { ANY_OBJECT } from '@/types/generic';
|
import { ANY_OBJECT } from '@/types/generic';
|
||||||
|
import { useLayoutStore } from '@/store';
|
||||||
import { createListenerObject, updateElementExtensions } from '../../utils';
|
import { createListenerObject, updateElementExtensions } from '../../utils';
|
||||||
import { initListenerType, initListenerForm, eventType, listenerType, fieldType } from './utilSelf';
|
import { initListenerType, initListenerForm, eventType, listenerType, fieldType } from './utilSelf';
|
||||||
|
|
||||||
import { useLayoutStore } from '@/store';
|
|
||||||
const layoutStore = useLayoutStore();
|
const layoutStore = useLayoutStore();
|
||||||
|
|
||||||
const props = defineProps<{ id: string; type: string }>();
|
const props = defineProps<{ id: string; type: string }>();
|
||||||
|
|||||||
@@ -62,8 +62,8 @@
|
|||||||
<el-form-item label="完成条件" key="completionCondition">
|
<el-form-item label="完成条件" key="completionCondition">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="loopInstanceForm.completionCondition"
|
v-model="loopInstanceForm.completionCondition"
|
||||||
clearable
|
|
||||||
:disabled="loopCharacteristics === 'SequentialMultiInstance'"
|
:disabled="loopCharacteristics === 'SequentialMultiInstance'"
|
||||||
|
clearable
|
||||||
@change="updateLoopCondition"
|
@change="updateLoopCondition"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -170,7 +170,7 @@ const defaultLoopInstanceForm = {
|
|||||||
const loopInstanceForm = ref<ANY_OBJECT>({
|
const loopInstanceForm = ref<ANY_OBJECT>({
|
||||||
collection: 'assigneeList',
|
collection: 'assigneeList',
|
||||||
elementVariable: 'assignee',
|
elementVariable: 'assignee',
|
||||||
completionCondition: '',
|
completionCondition: '${nrOfInstances == nrOfCompletedInstances}',
|
||||||
});
|
});
|
||||||
const variableList = [
|
const variableList = [
|
||||||
{
|
{
|
||||||
@@ -290,7 +290,9 @@ const getElementLoop = (businessObject: ANY_OBJECT) => {
|
|||||||
loopInstanceForm.value = {
|
loopInstanceForm.value = {
|
||||||
...defaultLoopInstanceForm,
|
...defaultLoopInstanceForm,
|
||||||
...businessObject.loopCharacteristics,
|
...businessObject.loopCharacteristics,
|
||||||
completionCondition: businessObject.loopCharacteristics?.completionCondition?.body ?? '',
|
completionCondition:
|
||||||
|
businessObject.loopCharacteristics?.completionCondition?.body ??
|
||||||
|
'${nrOfInstances == nrOfCompletedInstances}',
|
||||||
loopCardinality: businessObject.loopCharacteristics?.loopCardinality?.body ?? '',
|
loopCardinality: businessObject.loopCharacteristics?.loopCardinality?.body ?? '',
|
||||||
};
|
};
|
||||||
// 保留当前元素 businessObject 上的 loopCharacteristics 实例
|
// 保留当前元素 businessObject 上的 loopCharacteristics 实例
|
||||||
@@ -307,7 +309,7 @@ const getElementLoop = (businessObject: ANY_OBJECT) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
const changeLoopCharacteristicsType = (type: string) => {
|
const changeLoopCharacteristicsType = (type: string) => {
|
||||||
if (type === 'SequentialMultiInstance') {
|
if (type === 'SequentialMultiInstance' || loopInstanceForm.value.completionCondition === '') {
|
||||||
// eslint-disable-next-line no-template-curly-in-string
|
// eslint-disable-next-line no-template-curly-in-string
|
||||||
loopInstanceForm.value.completionCondition = '${nrOfInstances == nrOfCompletedInstances}';
|
loopInstanceForm.value.completionCondition = '${nrOfInstances == nrOfCompletedInstances}';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<vxe-column title="序号" width="70px" type="seq" />
|
<vxe-column title="序号" width="70px" type="seq" />
|
||||||
<vxe-column title="属性名" field="name" min-width="100px" show-overflow-tooltip />
|
<vxe-column title="属性名" field="name" min-width="100px" show-overflow-tooltip />
|
||||||
<vxe-column title="属性值" field="value" min-width="90px" show-overflow-tooltip />
|
<vxe-column title="属性值" field="value" min-width="90px" show-overflow-tooltip />
|
||||||
<vxe-column title="操作" width="100px">
|
<vxe-column title="操作" width="110px">
|
||||||
<template v-slot="{ row, $rowIndex }">
|
<template v-slot="{ row, $rowIndex }">
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
|
|||||||
@@ -908,7 +908,7 @@ watch(candidateGroupIds, () => {
|
|||||||
}
|
}
|
||||||
.el-radio__label {
|
.el-radio__label {
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
color: #333;
|
color: #333;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
@@ -929,7 +929,7 @@ watch(candidateGroupIds, () => {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
float: right;
|
float: right;
|
||||||
i {
|
i {
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
transform: scale(0.8);
|
transform: scale(0.8);
|
||||||
}
|
}
|
||||||
& > .icon {
|
& > .icon {
|
||||||
|
|||||||
@@ -263,6 +263,13 @@ export const routers: Array<RouteRecordRaw> = [
|
|||||||
props: getProps,
|
props: getProps,
|
||||||
component: () => import('@/pages/workflow/components/TaskUserSelect.vue'),
|
component: () => import('@/pages/workflow/components/TaskUserSelect.vue'),
|
||||||
},
|
},
|
||||||
|
// 选择用户-跳转节点
|
||||||
|
{
|
||||||
|
path: 'thirdSelectUserTask',
|
||||||
|
name: 'thirdSelectUserTask',
|
||||||
|
props: getProps,
|
||||||
|
component: () => import('@/pages/workflow/components/UserTaskSelect/userTaskSelectDlg.vue'),
|
||||||
|
},
|
||||||
// 流程设计
|
// 流程设计
|
||||||
{
|
{
|
||||||
path: 'thirdFormFlowEntry',
|
path: 'thirdFormFlowEntry',
|
||||||
|
|||||||
34
OrangeFormsOpen-VUE3/src/types/table/course.d.ts
vendored
34
OrangeFormsOpen-VUE3/src/types/table/course.d.ts
vendored
@@ -1,34 +0,0 @@
|
|||||||
export default interface Course {
|
|
||||||
// 主键Id
|
|
||||||
courseId?: string | number;
|
|
||||||
// 课程名称
|
|
||||||
courseName?: string;
|
|
||||||
// 课程价格
|
|
||||||
price?: number;
|
|
||||||
// 课程描述
|
|
||||||
description?: string;
|
|
||||||
// 主讲老师
|
|
||||||
teacherId?: string | number;
|
|
||||||
// 课程难度
|
|
||||||
difficulty?: number | string;
|
|
||||||
// 是否上架
|
|
||||||
online?: boolean;
|
|
||||||
// 所属年级
|
|
||||||
gradeId?: number | string;
|
|
||||||
// 所属科目
|
|
||||||
subjectId?: number | string;
|
|
||||||
// 课程分类
|
|
||||||
categoryId?: number | string;
|
|
||||||
// 课时数量
|
|
||||||
classHour?: number;
|
|
||||||
// 封面图
|
|
||||||
pictureUrl?: string;
|
|
||||||
// 所属校区
|
|
||||||
schoolId?: string | number;
|
|
||||||
// 创建用户Id
|
|
||||||
createUserId?: string | number;
|
|
||||||
// 创建时间
|
|
||||||
createTime?: string | Date | number;
|
|
||||||
// 最后修改时间
|
|
||||||
updateTime?: string | Date | number;
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
export default interface CourseSection {
|
|
||||||
// 主键Id
|
|
||||||
sectionId: undefined;
|
|
||||||
// 章节名称
|
|
||||||
sectionName: undefined;
|
|
||||||
// 显示顺序
|
|
||||||
showOrder: undefined;
|
|
||||||
// 课程Id
|
|
||||||
courseId: undefined;
|
|
||||||
// 课时数量
|
|
||||||
classHour: undefined;
|
|
||||||
// 课程附件地址
|
|
||||||
attachmentUrl: undefined;
|
|
||||||
// 用户Id
|
|
||||||
createUserId: undefined;
|
|
||||||
// 创建时间
|
|
||||||
createTime: undefined;
|
|
||||||
// 更新时间
|
|
||||||
updateTime: undefined;
|
|
||||||
// 级联更新临时id
|
|
||||||
__cascade_add_temp_id__: number | string | undefined;
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
export default interface Teacher {
|
|
||||||
// 主键Id
|
|
||||||
teacherId: undefined;
|
|
||||||
// 教师名称
|
|
||||||
teacherName: undefined;
|
|
||||||
// 教师生日
|
|
||||||
birthday: undefined;
|
|
||||||
// 教师性别
|
|
||||||
gender: undefined;
|
|
||||||
// 所教科目
|
|
||||||
subjectId: undefined;
|
|
||||||
// 教师职级
|
|
||||||
level: undefined;
|
|
||||||
// 鲜花数量
|
|
||||||
flowerCount: undefined;
|
|
||||||
// 所属校区
|
|
||||||
schoolId: undefined;
|
|
||||||
// 绑定用户
|
|
||||||
userId: undefined;
|
|
||||||
// 入职时间
|
|
||||||
registerDate: undefined;
|
|
||||||
// 是否在职
|
|
||||||
available: undefined;
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user