Merge branch 'main' of http://123.132.248.154:10000/HC_YFZX/CaiYuanYiTiHua
commit
0dae092fe1
Binary file not shown.
|
After Width: | Height: | Size: 6.6 KiB |
|
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-text-indent-left" viewBox="0 0 16 16">
|
||||
<path d="M2 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m.646 2.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L4.293 8 2.646 6.354a.5.5 0 0 1 0-.708M7 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0 3a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m-5 3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 512 B |
|
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-text-indent-right" viewBox="0 0 16 16">
|
||||
<path d="M2 3.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m10.646 2.146a.5.5 0 0 1 .708.708L11.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zM2 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0 3a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5m0 3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 495 B |
|
|
@ -427,7 +427,7 @@
|
|||
}
|
||||
}
|
||||
async function getIssueInfo() {
|
||||
console.log(props.issueId);
|
||||
console.log("111",props.issueId);
|
||||
}
|
||||
defineExpose({
|
||||
getForm,
|
||||
|
|
|
|||
|
|
@ -231,6 +231,7 @@
|
|||
isInit: true,
|
||||
formTitle: '',
|
||||
issueCode: '',
|
||||
mapConfig:{},
|
||||
};
|
||||
break;
|
||||
case 'bpmn:EndEvent':
|
||||
|
|
@ -433,7 +434,6 @@
|
|||
// 2.获取流程权限信息
|
||||
let auth = await authRef.value.getForm();
|
||||
let wfData = flowWfDataStore.getWfData;
|
||||
console.log(wfData);
|
||||
var startIndex = (wfData || []).findIndex(
|
||||
(element: { type?: string }) => element.type == 'bpmn:StartEvent',
|
||||
);
|
||||
|
|
@ -496,7 +496,7 @@
|
|||
}
|
||||
},
|
||||
);
|
||||
console.log(wfData);
|
||||
|
||||
let scheme = {
|
||||
wfData: wfData,
|
||||
|
||||
|
|
|
|||
|
|
@ -216,6 +216,7 @@
|
|||
formName: string;
|
||||
issueOpen: boolean;
|
||||
issueName: string;
|
||||
mapConfig:string;
|
||||
}
|
||||
const data: dataType = reactive({
|
||||
columns: [
|
||||
|
|
@ -347,9 +348,13 @@
|
|||
const issueRef = ref<any>();
|
||||
async function issueHandleOk() {
|
||||
let obj = issueRef.value.getRow();
|
||||
let formPublishInfo = JSON.parse(obj[0].scheme)
|
||||
let mapConfig = formPublishInfo.table.maps;
|
||||
node.value.issueId = obj[0].id;
|
||||
node.value.mapConfig = mapConfig
|
||||
data.issueName = obj[0].name;
|
||||
data.issueOpen = false;
|
||||
data.mapConfig = mapConfig;
|
||||
}
|
||||
// 编辑时获取发布表单名称
|
||||
async function getIssueFormList() {
|
||||
|
|
|
|||
|
|
@ -1076,8 +1076,8 @@
|
|||
// 编辑时获取发布表单名称
|
||||
async function getIssueFormList() {
|
||||
const list = await fun_GetPageList({
|
||||
page: 1,
|
||||
limit: 1000,
|
||||
page:1,
|
||||
limit:1000,
|
||||
});
|
||||
list.items.forEach((element) => {
|
||||
if (element.id == node.value.issueId) {
|
||||
|
|
|
|||
|
|
@ -95,6 +95,31 @@
|
|||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</template>
|
||||
<template v-else-if="['CardGroup'].includes(schema.component)">
|
||||
<div style="width: 100%">
|
||||
<div style="display: flex">
|
||||
{{ schema.label }}
|
||||
<div style="margin-left: 10px">
|
||||
<a-radio-group
|
||||
v-model:value="noTitleKey"
|
||||
:options="schema.componentProps.options"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<template v-for="(item, index) in schema.componentProps.options" :key="index">
|
||||
<a-card style="width: 100%" v-show="noTitleKey === item.value">
|
||||
<FormRender
|
||||
v-for="(childItem, k) in item.children"
|
||||
:key="k"
|
||||
:schema="childItem"
|
||||
:formData="formData"
|
||||
:formConfig="formConfig"
|
||||
:setFormModel="setFormModel"
|
||||
/>
|
||||
</a-card>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<VFormItem
|
||||
v-if="(isCreateOrModifyComponent && schema.display) || !isCreateOrModifyComponent"
|
||||
|
|
@ -162,6 +187,10 @@
|
|||
let subTableId = ref(null);
|
||||
let subTableData = ref([]);
|
||||
let subTableList = ref([]);
|
||||
const noTitleKey = ref('0')
|
||||
if(props.schema.component === 'CardGroup'){
|
||||
noTitleKey.value = props.schema.componentProps.options[0].value
|
||||
}
|
||||
|
||||
// if (props.formConfig.schemas) {
|
||||
// props.formConfig.schemas.forEach((item) => {
|
||||
|
|
|
|||
|
|
@ -4,15 +4,21 @@
|
|||
:class="`left ${prefixCls}-sider`"
|
||||
collapsible
|
||||
collapsedWidth="0"
|
||||
width="300"
|
||||
width="345"
|
||||
:zeroWidthTriggerStyle="{
|
||||
'margin-top': '-70px',
|
||||
'background-color': 'gray',
|
||||
'background-color': 'white',
|
||||
width: '35px',
|
||||
height: '35px',
|
||||
'background-image': `url(/iocn/text-indent-right.svg)`,
|
||||
'background-position': 'center',
|
||||
'background-repeat': 'no-repeat',
|
||||
'border-radius:': '15px',
|
||||
}"
|
||||
breakpoint="md"
|
||||
>
|
||||
<div class="collapseItem-box">
|
||||
<CollapseContainer title="基础控件" ghost>
|
||||
<CollapseContainer title="基础控件">
|
||||
<CollapseItem
|
||||
:list="baseComponents"
|
||||
:handleListPush="handleListPushDrag"
|
||||
|
|
@ -57,8 +63,17 @@
|
|||
collapsible
|
||||
:reverseArrow="true"
|
||||
collapsedWidth="0"
|
||||
width="270"
|
||||
:zeroWidthTriggerStyle="{ 'margin-top': '-70px', 'background-color': 'gray' }"
|
||||
width="320"
|
||||
:zeroWidthTriggerStyle="{
|
||||
'margin-top': '-70px',
|
||||
'background-color': 'white',
|
||||
width: '35px',
|
||||
height: '35px',
|
||||
'background-image': `url(/iocn/text-indent-left.svg)`,
|
||||
'background-position': 'center',
|
||||
'background-repeat': 'no-repeat',
|
||||
'border-radius:': '15px',
|
||||
}"
|
||||
breakpoint="lg"
|
||||
>
|
||||
<PropsPanel ref="propsPanel" :activeKey="formConfig.activeKey">
|
||||
|
|
@ -433,7 +448,7 @@
|
|||
}
|
||||
|
||||
.collapseItem-box {
|
||||
height: calc(100vh - 60px);
|
||||
height: calc(100vh - 55px);
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -5,21 +5,21 @@
|
|||
<div class="operating-area">
|
||||
<!-- 头部操作按钮区域 start -->
|
||||
<!-- 操作左侧区域 start -->
|
||||
<div class="left-btn-box">
|
||||
<div class="left-btn-box" style="text-indent: 20px">
|
||||
<Tooltip v-for="item in toolbarsConfigs" :title="item.title" :key="item.icon">
|
||||
<a @click="$emit(item.event)" class="toolbar-text">
|
||||
<Icon :icon="item.icon" />
|
||||
<Icon :icon="item.icon" :style="{ fontSize: '21px' }" />
|
||||
</a>
|
||||
</Tooltip>
|
||||
<Divider type="vertical" />
|
||||
<Tooltip title="撤销">
|
||||
<a :class="{ disabled: !canUndo }" :disabled="!canUndo" @click="undo">
|
||||
<Icon icon="ant-design:undo-outlined" />
|
||||
<Icon icon="ant-design:undo-outlined" :style="{ fontSize: '21px' }" />
|
||||
</a>
|
||||
</Tooltip>
|
||||
<Tooltip title="重做">
|
||||
<a :class="{ disabled: !canRedo }" :disabled="!canRedo" @click="redo">
|
||||
<Icon icon="ant-design:redo-outlined" />
|
||||
<Icon icon="ant-design:redo-outlined" :style="{ fontSize: '21px' }" />
|
||||
</a>
|
||||
</Tooltip>
|
||||
</div>
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
title: '生成代码',
|
||||
type: 'exportCode',
|
||||
event: 'handleOpenCodeModal',
|
||||
icon: 'ant-design:code-filled',
|
||||
icon: 'bi:code-slash',
|
||||
},
|
||||
{
|
||||
title: '清空',
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { IVFormComponent } from '../typings/v-form-component';
|
|||
import { isArray } from 'lodash-es';
|
||||
import { componentMap as VbenCmp, add } from '@/components/Form/src/componentMap';
|
||||
import { ComponentType } from '@/components/Form/src/types';
|
||||
import { uploadApi,fileUploadApi } from '@/api/sys/upload';
|
||||
import { uploadApi, fileUploadApi } from '@/api/sys/upload';
|
||||
import { componentMap as Cmp } from '../components';
|
||||
import { Component } from 'vue';
|
||||
import { getDeptList, getAccountList, getPosGroupList } from '@/api/demo/system';
|
||||
|
|
@ -106,7 +106,7 @@ export const customComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'InputGuid',
|
||||
label: 'GUID主键',
|
||||
icon: 'bi:input-cursor-text',
|
||||
icon: 'bi:braces-asterisk',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {},
|
||||
|
|
@ -114,7 +114,7 @@ export const customComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'TreeSelect',
|
||||
label: '职级选择',
|
||||
icon: 'gg:select',
|
||||
icon: 'bi:list-stars',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
|
|
@ -129,7 +129,7 @@ export const customComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'TreeSelect',
|
||||
label: '部门选择',
|
||||
icon: 'clarity:tree-view-line',
|
||||
icon: 'bi:people',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
|
|
@ -144,7 +144,7 @@ export const customComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'Select',
|
||||
label: '人员选择',
|
||||
icon: 'gg:select',
|
||||
icon: 'bi:person',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
|
|
@ -158,7 +158,7 @@ export const customComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'MapGeom',
|
||||
label: '图斑',
|
||||
icon: 'ant-design:heat-map-outlined',
|
||||
icon: 'bi:box-arrow-in-up-left',
|
||||
field: 'MapGeom',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {},
|
||||
|
|
@ -167,7 +167,7 @@ export const customComponents: IVFormComponent[] = [
|
|||
field: '',
|
||||
component: 'Grid',
|
||||
label: '设计子表',
|
||||
icon: 'ant-design:snippets-outlined',
|
||||
icon: 'bi:list-ul',
|
||||
type: 'subTable',
|
||||
componentProps: {},
|
||||
columns: [
|
||||
|
|
@ -190,7 +190,7 @@ export const baseComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'InputCountDown',
|
||||
label: '倒计时输入',
|
||||
icon: 'line-md:iconify2',
|
||||
icon: 'ant-design:hourglass-outlined',
|
||||
colProps: { span: 24 },
|
||||
field: '',
|
||||
componentProps: {},
|
||||
|
|
@ -198,7 +198,7 @@ export const baseComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'IconPicker',
|
||||
label: '图标选择器',
|
||||
icon: 'line-md:iconify2',
|
||||
icon: 'bi:grid',
|
||||
colProps: { span: 24 },
|
||||
field: '',
|
||||
componentProps: {},
|
||||
|
|
@ -214,7 +214,7 @@ export const baseComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'AutoComplete',
|
||||
label: '自动完成',
|
||||
icon: 'wpf:password1',
|
||||
icon: 'bi:check2-circle',
|
||||
colProps: { span: 24 },
|
||||
field: '',
|
||||
componentProps: {
|
||||
|
|
@ -242,36 +242,10 @@ export const baseComponents: IVFormComponent[] = [
|
|||
dashed: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: 'Checkbox',
|
||||
label: '复选框',
|
||||
icon: 'ant-design:check-circle-outlined',
|
||||
colProps: { span: 24 },
|
||||
field: '',
|
||||
},
|
||||
{
|
||||
component: 'CheckboxGroup',
|
||||
label: '复选框-组',
|
||||
icon: 'ant-design:check-circle-filled',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
options: [
|
||||
{
|
||||
label: '选项1',
|
||||
value: '1',
|
||||
},
|
||||
{
|
||||
label: '选项2',
|
||||
value: '2',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
component: 'Input',
|
||||
label: '输入框',
|
||||
icon: 'bi:input-cursor-text',
|
||||
icon: 'bi:braces',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
|
|
@ -289,15 +263,23 @@ export const baseComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'InputTextArea',
|
||||
label: '文本域',
|
||||
icon: 'ant-design:file-text-filled',
|
||||
icon: 'ant-design:file-text-outlined',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {},
|
||||
},
|
||||
{
|
||||
component: 'Select',
|
||||
label: '下拉选择',
|
||||
icon: 'gg:select',
|
||||
component: 'Radio',
|
||||
label: '单选框',
|
||||
icon: 'carbon:radio-button-checked',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {},
|
||||
},
|
||||
{
|
||||
component: 'RadioGroup',
|
||||
label: '单选框-组',
|
||||
icon: 'bi:ui-radios-grid',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
|
|
@ -313,19 +295,17 @@ export const baseComponents: IVFormComponent[] = [
|
|||
],
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
component: 'Radio',
|
||||
label: '单选框',
|
||||
icon: 'ant-design:check-circle-outlined',
|
||||
field: '',
|
||||
component: 'Checkbox',
|
||||
label: '复选框',
|
||||
icon: 'bi:check-square',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {},
|
||||
field: '',
|
||||
},
|
||||
{
|
||||
component: 'RadioGroup',
|
||||
label: '单选框-组',
|
||||
icon: 'carbon:radio-button-checked',
|
||||
component: 'CheckboxGroup',
|
||||
label: '复选框-组',
|
||||
icon: 'bi:ui-checks-grid',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
|
|
@ -396,11 +376,45 @@ export const baseComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'Switch',
|
||||
label: '开关',
|
||||
icon: 'entypo:switch',
|
||||
icon: 'bi:toggle-off',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {},
|
||||
},
|
||||
{
|
||||
component: 'Button',
|
||||
label: '按钮组件',
|
||||
icon: 'ant-design:build-outlined',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
hiddenLabel: true,
|
||||
componentProps: {
|
||||
type: 'default',
|
||||
shape: 'default',
|
||||
size: 'middle',
|
||||
icon: '',
|
||||
clickCode: '',
|
||||
},
|
||||
},
|
||||
{
|
||||
component: 'Select',
|
||||
label: '下拉选择',
|
||||
icon: 'gg:select',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
options: [
|
||||
{
|
||||
label: '选项1',
|
||||
value: '1',
|
||||
},
|
||||
{
|
||||
label: '选项2',
|
||||
value: '2',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
component: 'TreeSelect',
|
||||
label: '树形选择',
|
||||
|
|
@ -461,21 +475,6 @@ export const baseComponents: IVFormComponent[] = [
|
|||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
component: 'Button',
|
||||
label: '按钮组件',
|
||||
icon: 'ant-design:build-outlined',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
hiddenLabel: true,
|
||||
componentProps: {
|
||||
type: 'default',
|
||||
shape: 'default',
|
||||
size: 'middle',
|
||||
icon: '',
|
||||
clickCode: '',
|
||||
},
|
||||
},
|
||||
// {
|
||||
// component: 'ColorPicker',
|
||||
// label: '颜色选择器',
|
||||
|
|
@ -490,7 +489,7 @@ export const baseComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'slot',
|
||||
label: '插槽',
|
||||
icon: 'vs:timeslot-question',
|
||||
icon: 'bi:inboxes',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
|
|
@ -498,7 +497,7 @@ export const baseComponents: IVFormComponent[] = [
|
|||
},
|
||||
},
|
||||
{
|
||||
component:'CreateUser',
|
||||
component: 'CreateUser',
|
||||
type: 'createuser',
|
||||
label: '创建人员',
|
||||
icon: 'mdi:account-check',
|
||||
|
|
@ -507,7 +506,7 @@ export const baseComponents: IVFormComponent[] = [
|
|||
componentProps: {},
|
||||
},
|
||||
{
|
||||
component:'ModifyUser',
|
||||
component: 'ModifyUser',
|
||||
type: 'modifyuser',
|
||||
label: '修改人员',
|
||||
icon: 'mdi:account-edit',
|
||||
|
|
@ -516,7 +515,7 @@ export const baseComponents: IVFormComponent[] = [
|
|||
componentProps: {},
|
||||
},
|
||||
{
|
||||
component:'CreateTime',
|
||||
component: 'CreateTime',
|
||||
type: 'createtime',
|
||||
label: '创建时间',
|
||||
icon: 'ic:outline-event-available',
|
||||
|
|
@ -525,70 +524,74 @@ export const baseComponents: IVFormComponent[] = [
|
|||
componentProps: {},
|
||||
},
|
||||
{
|
||||
component:'ModifyTime',
|
||||
component: 'ModifyTime',
|
||||
type: 'modifytime',
|
||||
label: '修改时间',
|
||||
icon: 'ic:outline-event',
|
||||
colProps: { span: 24 },
|
||||
field: '',
|
||||
componentProps: {},
|
||||
},{
|
||||
},
|
||||
{
|
||||
component: 'FileUpload',
|
||||
label: '文件上传',
|
||||
icon: 'ant-design:file-add-outlined',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
api:fileUploadApi,
|
||||
maxNumber:10,
|
||||
api: fileUploadApi,
|
||||
maxNumber: 10,
|
||||
maxSize: 2,
|
||||
name:"files",
|
||||
action:"/api/Files/Upload",
|
||||
server:"http://192.168.10.102:9023"
|
||||
name: 'files',
|
||||
action: '/api/Files/Upload',
|
||||
server: 'http://192.168.10.102:9023',
|
||||
},
|
||||
},{
|
||||
},
|
||||
{
|
||||
component: 'ImageUpload',
|
||||
label: '图片上传',
|
||||
icon: 'ant-design:file-image-outlined',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
api:fileUploadApi,
|
||||
maxNumber:10,
|
||||
api: fileUploadApi,
|
||||
maxNumber: 10,
|
||||
accept: ['png', 'jpeg', 'jpg'],
|
||||
maxSize: 2,
|
||||
name:"files",
|
||||
action:"/api/Files/Upload",
|
||||
server:"http://192.168.10.102:9023"
|
||||
name: 'files',
|
||||
action: '/api/Files/Upload',
|
||||
server: 'http://192.168.10.102:9023',
|
||||
},
|
||||
},{
|
||||
},
|
||||
{
|
||||
component: 'VideoUpload',
|
||||
label: '视频上传',
|
||||
icon: 'ant-design:video-camera-outlined',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
api:fileUploadApi,
|
||||
maxNumber:10,
|
||||
api: fileUploadApi,
|
||||
maxNumber: 10,
|
||||
accept: ['mp4', 'mov', 'avi'],
|
||||
maxSize: 100,
|
||||
name:"files",
|
||||
action:"/api/Files/Upload",
|
||||
server:"http://192.168.10.102:9023"
|
||||
name: 'files',
|
||||
action: '/api/Files/Upload',
|
||||
server: 'http://192.168.10.102:9023',
|
||||
},
|
||||
},{
|
||||
},
|
||||
{
|
||||
component: 'Location',
|
||||
label: '获取位置',
|
||||
icon: 'ant-design:environment-outlined',
|
||||
field: '',
|
||||
colProps: { span: 24 },
|
||||
componentProps: {
|
||||
api:()=>1,
|
||||
maxNumber:10,
|
||||
api: () => 1,
|
||||
maxNumber: 10,
|
||||
accept: ['mp4', 'mov', 'avi'],
|
||||
maxSize: 100,
|
||||
},
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
// https://next.antdv.com/components/transfer-cn
|
||||
|
|
@ -632,7 +635,7 @@ export const layoutComponents: IVFormComponent[] = [
|
|||
field: '',
|
||||
component: 'Grid',
|
||||
label: '栅格布局',
|
||||
icon: 'icon-grid',
|
||||
icon: 'bi:border-all',
|
||||
componentProps: {},
|
||||
columns: [
|
||||
{
|
||||
|
|
@ -649,7 +652,7 @@ export const layoutComponents: IVFormComponent[] = [
|
|||
field: '',
|
||||
component: 'Card',
|
||||
label: '卡片布局',
|
||||
icon: 'ant-design:tags-outlined',
|
||||
icon: 'bi:card-text',
|
||||
componentProps: {},
|
||||
columns: [
|
||||
{
|
||||
|
|
@ -665,7 +668,7 @@ export const layoutComponents: IVFormComponent[] = [
|
|||
{
|
||||
component: 'CardGroup',
|
||||
label: '卡片组',
|
||||
icon: 'ic:round-auto-awesome-motion',
|
||||
icon: 'bi:card-list',
|
||||
colProps: { span: 24 },
|
||||
field: '',
|
||||
componentProps: {
|
||||
|
|
@ -673,12 +676,12 @@ export const layoutComponents: IVFormComponent[] = [
|
|||
{
|
||||
label: '卡片1',
|
||||
value: '1',
|
||||
field:`use_card_1`,
|
||||
field: 'use_card_1',
|
||||
children: [],
|
||||
},
|
||||
{
|
||||
label: '卡片2',
|
||||
field:`use_card_2`,
|
||||
field: 'use_card_2',
|
||||
value: '2',
|
||||
children: [],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
width="100%"
|
||||
wrap-class-name="full-modal"
|
||||
v-model:open="previewOpen"
|
||||
title="流程发起"
|
||||
title="11"
|
||||
:destroyOnClose="true"
|
||||
>
|
||||
<template #footer> </template>
|
||||
|
|
@ -388,6 +388,12 @@
|
|||
afterSaveEvent: '',
|
||||
changeDataEvent: '',
|
||||
});
|
||||
|
||||
interface GeomParams {
|
||||
TableName:string;
|
||||
FieldName:string;
|
||||
FiledValue:Array<any>;
|
||||
}
|
||||
|
||||
const handleClickForm = (status) => {
|
||||
const config = cloneDeep(formConfig.value);
|
||||
|
|
@ -513,6 +519,7 @@
|
|||
if (rows.length == 0) {
|
||||
return createMessage.warn('请选择一条数据查看详情');
|
||||
}
|
||||
console.log("DetailsRow",rows);
|
||||
let toProps = {
|
||||
isDetail: true,
|
||||
isUpdate: false,
|
||||
|
|
@ -529,19 +536,37 @@
|
|||
openShowFormModal.value = true;
|
||||
|
||||
// 根据ids获取图斑
|
||||
let getGeomPrams = {
|
||||
TableName:"",
|
||||
FieldName:"",
|
||||
FieldValue:[],
|
||||
try{
|
||||
let getGeomPrams:GeomParams = {
|
||||
TableName:"drone_shp_data",
|
||||
FieldName:"geom",
|
||||
// FieldValue:row[].split(","),
|
||||
FiledValue:[1315,1308],
|
||||
}
|
||||
getGeom(getGeomPrams).then(res=>{
|
||||
let geoms = [];
|
||||
if(res){
|
||||
if(res.items?.length>0){
|
||||
res.items.forEach((item,index)=>{
|
||||
let geom = {
|
||||
key:item.gid,
|
||||
mapgeom:item.geom
|
||||
}
|
||||
geoms.push(geom);
|
||||
})
|
||||
}
|
||||
// MapboxComponent.value.handlerDraw(status,mapgemoList.value, false);
|
||||
MapboxComponent.value.handlerDraw(status,geoms, false)
|
||||
}else{
|
||||
createMessage.error("当前数据没有图斑!");
|
||||
}
|
||||
})
|
||||
}catch(e){
|
||||
createMessage.error("当前数据没有图斑!");
|
||||
}
|
||||
|
||||
|
||||
// getGeom(getGeomPrams).then(res=>{
|
||||
// if(res.code == 200){
|
||||
|
||||
// }
|
||||
// })
|
||||
|
||||
MapboxComponent.value.handlerDraw(status,mapgemoList.value, false);
|
||||
|
||||
|
||||
} else {
|
||||
openModal(true, toProps);
|
||||
|
|
@ -555,6 +580,8 @@
|
|||
break;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
function handleSelect(selectedKeys: any, selected: any) {
|
||||
const rel = selected.node.dataRef;
|
||||
const obj: any = {};
|
||||
|
|
@ -805,9 +832,11 @@
|
|||
// Add
|
||||
if(status == "Add"){
|
||||
let geoms:string[] = [];
|
||||
|
||||
mapgemoList.value?.forEach((item,index)=>{
|
||||
console.log("mapgeoms",item);
|
||||
})
|
||||
|
||||
let addForm = {
|
||||
"tableName": "drone_shp_data",
|
||||
"guidFieldName": "id",
|
||||
|
|
|
|||
|
|
@ -11,7 +11,9 @@
|
|||
>
|
||||
<div :class="`${prefixCls}`">
|
||||
<div :class="`${prefixCls}-header`">
|
||||
<div :class="`${prefixCls}-header-logo`"> 慧创 表单设计 </div>
|
||||
<div :class="`${prefixCls}-header-logo`">
|
||||
<img src="/huichuang_logo.png" alt="慧创科技" /> <span>表单设计</span>
|
||||
</div>
|
||||
<div :class="`${prefixCls}-header-stepsBox`">
|
||||
<a-steps
|
||||
:current="stepsCurrent"
|
||||
|
|
|
|||
|
|
@ -17,22 +17,23 @@
|
|||
</a-button>
|
||||
</div>
|
||||
<a-tabs v-model:activeKey="activeName" @change="changeActive">
|
||||
<a-tab-pane
|
||||
key="form"
|
||||
:tab="
|
||||
designerData.formCurrentNode.formTitle
|
||||
? designerData.formCurrentNode.formTitle
|
||||
: '表单信息'
|
||||
"
|
||||
v-if="formVisble"
|
||||
>
|
||||
<FormViewer
|
||||
ref="formBoxRef"
|
||||
:formConfig="formConfig"
|
||||
:formVerison="designerData.formCurrentNode.formVerison"
|
||||
:issueId="designerData.formCurrentNode.issueId"
|
||||
v-if="formVisble"
|
||||
/>
|
||||
<a-tab-pane key="form" tab="表单信息" v-if="formVisble">
|
||||
<div :class="mapConfig?.isShowMap?'form-container':''">
|
||||
<FormViewer
|
||||
ref="formBoxRef"
|
||||
:formConfig="formConfig"
|
||||
:formVerison="designerData.formCurrentNode.formVerison"
|
||||
v-if="formVisble"
|
||||
/>
|
||||
</div>
|
||||
<div class="maper-container" v-if="mapConfig?.isShowMap">
|
||||
<MapboxMap
|
||||
:mapConfig="mapConfig"
|
||||
@handlerDrawComplete="handlerDrawComplete"
|
||||
@mapOnLoad="mapOnLoad"
|
||||
ref="MapboxComponent"
|
||||
/>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane
|
||||
key="form"
|
||||
|
|
@ -104,6 +105,8 @@
|
|||
import { IFormConfig } from '@/views/demo/form-design/typings/v-form-component';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
|
||||
const MapboxMap = defineAsyncComponent(() => import('@/components/MapboxMaps/MapComponent.vue'));
|
||||
const mapConfig = ref({});
|
||||
const { createMessage } = useMessage();
|
||||
const formBoxRef = ref<any>();
|
||||
const userStore = useUserStore();
|
||||
|
|
@ -173,6 +176,7 @@
|
|||
processVisble.value = true;
|
||||
}
|
||||
}
|
||||
|
||||
async function getDetailInfo() {
|
||||
let data = await getDetail({ code: props.code });
|
||||
flowContent.value = data.scheme.flowContent;
|
||||
|
|
@ -180,7 +184,10 @@
|
|||
let content = JSON.parse(data.scheme.content);
|
||||
let wfData = content.wfData;
|
||||
const currentNode = wfData.find((t) => t.type == 'bpmn:StartEvent');
|
||||
console.log(currentNode);
|
||||
console.log("currentNode",currentNode);
|
||||
mapConfig.value = currentNode.mapConfig
|
||||
|
||||
console.log("mapConfig",mapConfig.value);
|
||||
designerData.isCustmerTitle = currentNode.isCustmerTitle;
|
||||
if (currentNode.authFields.length > 0) {
|
||||
// 有自定义表单时
|
||||
|
|
@ -210,6 +217,8 @@
|
|||
}
|
||||
|
||||
formConfig.value = currentNode.authFields;
|
||||
|
||||
console.log("formConfigConfig",formConfig.value);
|
||||
designerData.formCurrentNode = currentNode;
|
||||
getFormHistory();
|
||||
}
|
||||
|
|
@ -412,4 +421,15 @@
|
|||
.form-box {
|
||||
width: 480px;
|
||||
}
|
||||
|
||||
.form-container{
|
||||
float:left;
|
||||
width:60%
|
||||
}
|
||||
.maper-container{
|
||||
float:left;
|
||||
width:40%;
|
||||
padding:20px;
|
||||
height:100%;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -714,4 +714,9 @@
|
|||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .full-modal .ant-modal-body{
|
||||
height:95%!important;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
async function onSave(type) {
|
||||
let validateData = await modelDesigner.value.validateFlow();
|
||||
let formData = await modelDesigner.value.getFlow();
|
||||
console.log(formData);
|
||||
console.log("formData",formData);
|
||||
if (validateData) {
|
||||
// 1正式 2草稿
|
||||
formData.scheme.type = Number(type);
|
||||
|
|
|
|||
|
|
@ -8,27 +8,29 @@
|
|||
</div>
|
||||
<a-layout>
|
||||
<a-layout>
|
||||
<a-layout-content>
|
||||
<a-tabs v-model:activeKey="activeName" @change="changeActive">
|
||||
<a-tab-pane
|
||||
key="form"
|
||||
:tab="
|
||||
designerData.formCurrentNode.formTitle
|
||||
? designerData.formCurrentNode.formTitle
|
||||
: '表单信息'
|
||||
"
|
||||
v-if="formVisble"
|
||||
>
|
||||
<FormViewer
|
||||
ref="formBoxRef"
|
||||
:formConfig="formConfig"
|
||||
:processId="designerData.process.id"
|
||||
:formVerison="designerData.formCurrentNode.formVerison"
|
||||
:formRelationId="designerData.formCurrentNode.formRelationId"
|
||||
:instanceInfo="designerData.process.instanceInfo"
|
||||
:issueId="designerData.formCurrentNode.issueId"
|
||||
v-if="formVisble"
|
||||
/>
|
||||
<a-layout-content>
|
||||
<a-tabs v-model:activeKey="activeName" @change="changeActive" type="card">
|
||||
<a-tab-pane key="form" tab="表单信息" v-if="formVisble">
|
||||
<div :class="mapConfig?.isShowMap?'form-container':''">
|
||||
<FormViewer
|
||||
ref="formBoxRef"
|
||||
:formConfig="formConfig"
|
||||
:processId="designerData.process.id"
|
||||
:formVerison="designerData.formCurrentNode.formVerison"
|
||||
:formRelationId="designerData.formCurrentNode.formRelationId"
|
||||
:instanceInfo="designerData.process.instanceInfo"
|
||||
v-if="formVisble"
|
||||
/>
|
||||
</div>
|
||||
<div class="maper-container" v-if="mapConfig?.isShowMap">
|
||||
<MapboxMap
|
||||
:mapConfig="mapConfig"
|
||||
@handlerDrawComplete="handlerDrawComplete"
|
||||
ref="MapboxComponent"
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
||||
</a-tab-pane>
|
||||
<a-tab-pane
|
||||
key="form"
|
||||
|
|
@ -77,16 +79,21 @@
|
|||
</a-timeline>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
|
||||
</a-layout-content>
|
||||
<!-- <a-divider type="vertical" /> -->
|
||||
<a-layout-sider v-if="props.isRead == 0">
|
||||
<a-tabs v-model:activeKey="auditName">
|
||||
<!-- <a-layout-sider >
|
||||
|
||||
</a-layout-sider> -->
|
||||
<a-layout-footer :style="footerStyle">
|
||||
<a-tabs v-if="props.isRead == 0" v-model:activeKey="auditName">
|
||||
<a-tab-pane key="audit" :tab="auditTitleVal">
|
||||
<div class="approval-column">
|
||||
<a-form
|
||||
ref="formRef"
|
||||
:rules="rules"
|
||||
:model="formData"
|
||||
size="small"
|
||||
labelAlign="left"
|
||||
:label-col="labelCol"
|
||||
:wrapper-col="wrapperCol"
|
||||
|
|
@ -114,7 +121,7 @@
|
|||
</div>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</a-layout-sider>
|
||||
</a-layout-footer>
|
||||
</a-layout>
|
||||
</a-layout>
|
||||
|
||||
|
|
@ -175,6 +182,7 @@
|
|||
import { PageWrapper } from '@/components/Page';
|
||||
import { createAgain, signAudit, audit, ReadFlow } from '@/api/sys/WFProcess';
|
||||
import { getBPMNTask } from '@/api/sys/WFTask';
|
||||
import { getGeom } from '@/api/sys/layerManagement'
|
||||
import { dateFormat } from '@/utils/base';
|
||||
import { flowStore } from '@/store/modules/flow';
|
||||
import { functionsaveForm, LoadFormScheme } from '@/api/demo/formScheme';
|
||||
|
|
@ -190,7 +198,9 @@
|
|||
import { IFormConfig } from '@/views/demo/form-design/typings/v-form-component';
|
||||
import { useMessage } from '@/hooks/web/useMessage';
|
||||
import { buildGUID } from '@/utils/uuid';
|
||||
|
||||
const MapboxMap = defineAsyncComponent(() => import('@/components/MapboxMaps/MapComponent.vue'));
|
||||
const mapConfig = ref({isShowMap:false});
|
||||
const MapboxComponent = ref();
|
||||
const { createMessage } = useMessage();
|
||||
const formBoxRef = ref<any>();
|
||||
const emit = defineEmits(['closeModel']);
|
||||
|
|
@ -224,6 +234,14 @@
|
|||
const rules: any = ref({
|
||||
des: [{ required: true, message: '请填写审批意见', trigger: 'blur' }],
|
||||
});
|
||||
|
||||
const footerStyle = ref({
|
||||
height:"440px",
|
||||
overFlow:"auto",
|
||||
color: '#fff',
|
||||
backgroundColor: '#ffffff',
|
||||
zIndex:"9999999999",
|
||||
})
|
||||
if (props.type == 4) {
|
||||
rules.value = {};
|
||||
}
|
||||
|
|
@ -329,6 +347,10 @@
|
|||
let currentNode;
|
||||
if (auditNode.isInherit) {
|
||||
currentNode = wfData.find((t) => t.type == 'bpmn:StartEvent');
|
||||
mapConfig.value = currentNode.mapConfig;
|
||||
if(mapConfig.value?.isShowMap){
|
||||
handlerShowGeomtrys();
|
||||
}
|
||||
} else {
|
||||
currentNode = auditNode;
|
||||
}
|
||||
|
|
@ -726,6 +748,39 @@
|
|||
return createMessage.error('失败');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function handlerShowGeomtrys(){
|
||||
// 根据ids获取图斑
|
||||
try{
|
||||
let getGeomPrams = {
|
||||
TableName:"drone_shp_data",
|
||||
FieldName:"geom",
|
||||
// FieldValue:row[].split(","),
|
||||
FiledValue:[1315,1308],
|
||||
}
|
||||
getGeom(getGeomPrams).then(res=>{
|
||||
let geoms = [];
|
||||
if(res){
|
||||
if(res.items?.length>0){
|
||||
res.items.forEach((item,index)=>{
|
||||
let geom = {
|
||||
key:item.gid,
|
||||
mapgeom:item.geom
|
||||
}
|
||||
geoms.push(geom);
|
||||
})
|
||||
}
|
||||
// MapboxComponent.value.handlerDraw(status,mapgemoList.value, false);
|
||||
MapboxComponent.value.handlerDraw("Detail",geoms, false)
|
||||
}else{
|
||||
createMessage.error("当前数据没有图斑!");
|
||||
}
|
||||
})
|
||||
}catch(e){
|
||||
createMessage.error("当前数据没有图斑!");
|
||||
}
|
||||
}
|
||||
// 驳回到指定节点
|
||||
async function rejectHandleOk() {
|
||||
const data = await audit(props.taskId, {
|
||||
|
|
@ -744,6 +799,7 @@
|
|||
onBeforeMount(() => {
|
||||
getTaskInfo();
|
||||
});
|
||||
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .ant-tabs-nav-wrap {
|
||||
|
|
@ -761,7 +817,7 @@
|
|||
}
|
||||
.info-box {
|
||||
display: inline-block;
|
||||
width: 300px;
|
||||
width: 0px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
margin-top: 40px;
|
||||
|
|
@ -793,6 +849,7 @@
|
|||
padding: 10px;
|
||||
justify-content: flex-end;
|
||||
display: flex;
|
||||
display:none;
|
||||
}
|
||||
}
|
||||
::v-deep .vben-page-wrapper-content {
|
||||
|
|
@ -824,7 +881,31 @@
|
|||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .ant-modal-footer{
|
||||
display:none!important;
|
||||
height:0px!important;
|
||||
}
|
||||
::v-deep .ant-layout-footer{
|
||||
padding:0px !important;
|
||||
overflow: auto!important;
|
||||
}
|
||||
|
||||
.form-container{
|
||||
float:left;
|
||||
width:60%
|
||||
}
|
||||
.maper-container{
|
||||
float:left;
|
||||
width:40%;
|
||||
padding:20px;
|
||||
height:100%;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.l-from-body {
|
||||
padding: 10px 30px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
wrap-class-name="full-modal"
|
||||
v-model:open="auditOpen"
|
||||
title="审核"
|
||||
footer=""
|
||||
:destroyOnClose="true"
|
||||
>
|
||||
<template #footer> </template>
|
||||
|
|
@ -191,4 +192,9 @@
|
|||
height: 85%;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .full-modal .ant-modal-body{
|
||||
height:95%!important;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
|
|||
Loading…
Reference in New Issue