Compare commits

...

9 Commits

Author SHA1 Message Date
zzq c28a51f772 表单发布预览数据解析完善 2024-06-14 10:07:51 +08:00
刘妍 a125171cc2 Merge branch 'main' of http://123.132.248.154:10000/HC_YFZX/CaiYuanYiTiHua 2024-06-14 09:41:09 +08:00
刘妍 0023319668 优化 2024-06-14 09:41:05 +08:00
Zhufu e64c419fa6 【表单设计列表】只预览到第一个选项卡问题修改 2024-06-14 09:36:34 +08:00
徐景良 1a5ff25c59 merge 2024-06-14 08:41:20 +08:00
徐景良 21dd9e11c7 merge 2024-06-14 08:37:42 +08:00
徐景良 56fdaf5c20 merge 2024-06-13 18:04:53 +08:00
徐景良 6e0bd3b2b8 merge 2024-06-13 18:02:33 +08:00
滕嵩 666e8282d2 表单设计-下边框挡住了 2024-06-13 17:43:25 +08:00
16 changed files with 1108 additions and 886 deletions

View File

@ -78,7 +78,6 @@
showActionButtonGroup: false,
baseColProps: { lg: 24, md: 24 },
});
console.log(props);
watch(
() => props.formData,
(newVal) => {
@ -146,13 +145,11 @@
if (['createuser', 'modifyuser'].includes(childElement.type)) {
var obj = {};
obj[childElement.field] = userName;
console.log(obj);
subTableDataStore.setGroupData(obj);
}
if (['createtime', 'modifytime'].includes(childElement.type)) {
var obj = {};
obj[childElement.field] = nowTime.value;
console.log(obj);
subTableDataStore.setGroupData(obj);
}
});

View File

@ -90,7 +90,6 @@
issueId: String,
isDetail: Boolean,
});
console.log(props);
const subTableId = ref(null);
const subTableColumns: any = ref([]);
const subTableDB = ref([]);
@ -131,15 +130,11 @@
},
});
async function getFormHistory() {
console.log('getFormHistory');
const data = await LoadFormScheme({
schemeId: props.formVerison,
});
if (data) {
const scheme = JSON.parse(data.scheme);
console.log(scheme.formInfo.tabList);
console.log(props.formConfig);
scheme.formInfo.tabList.forEach((tabElement, index) => {
tabElement.schemas.forEach((element) => {
//
@ -186,7 +181,6 @@
subTableColumns.value = [];
// card
scheme.formInfo.tabList = cardNestStructure(scheme.formInfo.tabList);
console.log(scheme.formInfo.tabList);
subTableDB.value = scheme.db;
let disDetail = false;
let tableColumns = [];
@ -289,12 +283,10 @@
}
});
formModalVisible.value = true;
console.log(formColumns);
setTimeout(() => {
subTableDataStore.setTableData(tableColumns);
resetFields();
if (!disDetail) {
console.log('赋值赋值');
if (props.flowFormData) {
setFieldsValue(props.flowFormData);
}
@ -303,7 +295,6 @@
}
}
async function tabsChange(e) {
console.log('tabsChange');
tabsKey.value = e;
formColumns.forEach((element) => {
element.show = false;
@ -332,7 +323,6 @@
}
async function getFormDetail() {
console.log('getFormDetail');
var instance = JSON.parse(props.instanceInfo);
const querys = {
id: props.formVerison,
@ -356,7 +346,6 @@
}
});
}
console.log(obj);
cardGourpFormData.value = obj;
subTableDataStore.setGroupData(obj);
FieldsValue.value = obj;
@ -395,7 +384,6 @@
}
const groupRef = ref();
async function getForm() {
// console.log(groupRef.value.verify());
try {
let values = await validate();
for (const key in values) {
@ -407,14 +395,11 @@
}
}
}
console.log(values);
console.log(FieldsValue.value);
let cardValueList = Object.values(cardValues.value);
cardValueList.forEach((item) => {
values = { ...values, ...item };
});
let query = values;
console.log(query);
//
if (subTableDataStore.getTableData.length > 0) {
subTableDataStore.getTableData.forEach((item) => {
@ -427,7 +412,6 @@
query[key] = subTableDataStore.getGroupData[key];
}
}
console.log(query);
//
if (createOrModifyList.value.length > 0) {
createOrModifyList.value.forEach((item) => {
@ -440,16 +424,12 @@
}
});
}
console.log(query);
return query;
} catch (error) {
console.log(error);
return false;
}
}
async function getIssueInfo() {
console.log('111', props.issueId);
}
defineExpose({
getForm,
});
@ -460,9 +440,6 @@
if (props.formVerison) {
getFormHistory();
}
if (props.issueId) {
getIssueInfo();
}
});
</script>

View File

@ -95,23 +95,8 @@
<!-- <a-tooltip title="从现有数据表中选择">
<a-button type="primary" :icon="h(PlusOutlined)" @click="handlerGetExistsTableList"/>
</a-tooltip> -->
<a-popover placement="topLeft">
<template #content>
<a-table :dataSource="dataSource" :columns="columns" :size="'small'" >
<template #bodyCell="{ column,record }">
<template v-if="column.key === 'operation'">
<a-button type="" :icon="h(PlusOutlined)" @click="handlerGetExistsTableList(record)" />
</template>
</template>
</a-table>
</template>
<template #title>
<span>从现有数据表中选择</span>
</template>
<a-button type="primary" :icon="h(PlusOutlined)" />
</a-popover>
<a-button type="" :icon="h(PlusOutlined)" @click="handlerGetExistsTableList()" />
</a-col>
</a-row>
</a-form-item>
@ -226,23 +211,7 @@
<!-- <a-tooltip title="从现有数据表中选择">
<a-button type="primary" :icon="h(PlusOutlined)" @click="handlerGetExistsTableList"/>
</a-tooltip> -->
<a-popover placement="topLeft">
<template #content>
<a-table :dataSource="dataSource" :columns="columns" :size="'small'" >
<template #bodyCell="{ column,record }">
<template v-if="column.key === 'operation'">
<a-button type="" :icon="h(PlusOutlined)" @click="handlerGetExistsTableList(record)" />
</template>
</template>
</a-table>
</template>
<template #title>
<span>从现有数据表中选择</span>
</template>
<a-button type="primary" :icon="h(PlusOutlined)" />
</a-popover>
<a-button type="" :icon="h(PlusOutlined)" @click="handlerGetExistsTableList()" />
</a-col>
</a-row>
</a-form-item>
@ -258,12 +227,16 @@
</div>
<a-modal :open="openSelectTable" title="请选择数据表" @cancel="handlerCancleSelectTable" @ok="handlerSelectTable">
<BasicTable @register="registerImportTable" />
</a-modal>
</a-modal>
</template>
<script setup lang="ts">
import { defineEmits, defineProps, ref, h, reactive, onUnmounted, toRaw } from 'vue';
import DataObject from '@/views/demo/onlineform/formdesign/form/DataObject.vue'
import {
CloseCircleOutlined,
PlusOutlined,
@ -276,12 +249,19 @@
import type { UploadChangeParam } from 'ant-design-vue';
import type { UploadProps } from 'ant-design-vue';
import { useModal } from '@/components/Modal';
// import { uploadShp } from '@/api/sys/analysis.ts'
import { BasicTable, useTable } from '@/components/Table';
import { BasicColumn, FormSchema } from '@/components/Table';
import axios from 'axios';
import { v4 as uuidv4 } from 'uuid';
import { FILETYPE } from '../util'
import {ObjectToUrl} from '../src/tool'
import { addLayer } from '@/api/sys/layerManagement'
import {
getDataBaseTableList,
getImportBaseTableList,
importDataBaseTable,
} from '@/api/formdesign/index';
const dataSource = reactive([
{
"tablename":"monitor"
@ -291,6 +271,7 @@
},
])
const openSelectTable = ref<boolean>(false)
const columns = reactive([
{
@ -304,6 +285,67 @@
}
])
function handleBackRows(ModuleId) {
alert(ModuleId);
}
function dataBaseClick() {
let rows = getImportSelectRows();
let param = {
dbCode: receiceDbCode.value,
tableList: rows,
};
importDataBaseTable(param).then((res: Recordable) => {
console.log(res);
message.success('导入成功', 2);
closeImportModal();
reload();
});
}
const importColumns: BasicColumn[] = [
{
title: '表名',
dataIndex: 'name',
},
{
title: '说明',
dataIndex: 'description',
},
];
const [
registerImportTable,{ clearSelectedRowKeys: clearImportSelectedRowKeys, getSelectRows: getImportSelectRows },
] = useTable({
title: '',
rowKey: 'name',
api: getImportBaseTableList,
formConfig: {
labelWidth: 80,
},
columns: importColumns,
size: 'small',
rowSelection: {
//
// type: 'checkbox',
type: 'radio',
},
useSearchForm: false,
showTableSetting: false,
canResize: false,
bordered: true,
pagination: {
pageSize: 10,
},
beforeFetch: () => {
var temp = {
code: "hcsystemdb",
};
return temp;
},
});
const activeKey = ref(1)
@ -350,9 +392,6 @@ const beforeUpload:UploadProps['beforeUpload'] = (file) => {
return false;
};
function handleBackRows(ModuleId) {
}
const handlerUploadFile = ()=>{
let url = "http://192.168.10.102:9500/api/Files/Upload"
@ -552,8 +591,20 @@ const submitDataList = () => {
//
const handlerGetExistsTableList = (record )=>{
openSelectTable.value = true;
uploadFrom.tableName = record.tablename
}
const handlerSelectTable = ()=> {
let table = getImportSelectRows();
uploadFrom.relationTable = table[0].name
openSelectTable.value = false;
}
const handlerCancleSelectTable = ()=>{
openSelectTable.value = false;
}
</script>
<style lang="scss" scoped>

File diff suppressed because it is too large Load Diff

View File

@ -93,7 +93,6 @@
(newVal) => {
if (newVal.type == 'bpmn:ExclusiveGateway') {
const currentNode = flowWfDataStore.getWfDataNode(newVal.id);
console.log(currentNode);
if (currentNode) {
node.value = currentNode;
} else {
@ -188,7 +187,6 @@
}
data.formulaVisible = false;
}
console.log(node.value.conditions);
}
function handleSqlOk() {
conditionSqlRef.value.validateForm();
@ -210,7 +208,6 @@
}
}
function onEdit(record) {
console.log(record);
data.isEdit = true;
propsData.value = record;
if (record.type == 1) {

View File

@ -291,7 +291,6 @@
onMounted(() => {
if (props.element.type == 'bpmn:StartEvent') {
const currentNode = flowWfDataStore.getWfDataNode(props.element.id);
console.log(currentNode);
if (currentNode) {
node.value = currentNode;
} else {

View File

@ -929,7 +929,6 @@
value?: string;
}[] = [];
scheme.formInfo.tabList = cardNestStructure(scheme.formInfo.tabList);
console.log(scheme.formInfo.tabList);
scheme.formInfo.tabList.forEach((tabElement) => {
const {rFieldList, fieldList} = getRFields(tabElement.schemas,rfields,fields)
rfields = rFieldList

View File

@ -34,6 +34,7 @@
box-sizing: border-box;
min-height: 60px;
padding: 8px;
margin: 5px;
overflow: hidden;
transition: all 0.3s;
border-radius: 3px;
@ -136,6 +137,7 @@
box-sizing: border-box;
width: 100%;
padding: 5px;
margin: 5px;
overflow: hidden;
transition: all 0.3s;
background-color: @layout-background-color;

View File

@ -64,7 +64,7 @@
width="100%"
wrap-class-name="full-modal"
v-model:open="previewOpen"
title="11"
title="流程发起"
:destroyOnClose="true"
>
<template #footer> </template>
@ -101,8 +101,7 @@
// import MapboxMap from '@/components/MapboxMaps/MapComponent.vue'
import ShowFormModal from './ShowFormModal/index.vue';
import { v4 as uuidv4 } from 'uuid';
import { cardNestStructure } from '@/views/demo/onlineform/util.ts';
import { changeCardStructure, cardNestStructure } from '@/views/demo/onlineform/util.ts';
const MapboxMap = defineAsyncComponent(() => import('@/components/MapboxMaps/MapComponent.vue'));
const { createConfirm, createMessage } = useMessage();
@ -459,7 +458,8 @@
if (rows.length == 0) {
return createMessage.warn('请选择一条数据进行编辑');
}
console.log('rowsrows', rows);
// console.log('rowsrows',formConfig,rows);
btnList.value.forEach((element) => {
if (element.prop === 'Edit' && element.isWFlow) {
flowCode.value = element.wFlowCode;
@ -525,7 +525,7 @@
if (rows.length == 0) {
return createMessage.warn('请选择一条数据查看详情');
}
console.log('DetailsRow', rows);
console.log("DetailsRow",formConfig,rows);
let toProps = {
isDetail: true,
isUpdate: false,
@ -542,33 +542,12 @@
openShowFormModal.value = true;
// ids
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('当前数据没有图斑!');
try{
console.log("formConfig",formConfig);
handlerShowGeomtrys(formConfig,rows[0])
}catch(e){
createMessage.error("当前数据没有图斑!");
}
} else {
openModal(true, toProps);
@ -582,6 +561,85 @@
break;
}
};
const chooseLayer = ref<string>("")
const geomfield = ref<string>("");
function findValue(obj, targetKey) {
for (var key in obj) {
if (typeof obj[key] === 'object') {
// findValue
var result = findValue(obj[key], targetKey);
if (result !== undefined && result == 'MapGeom') {
return result;
}
} else if (key === targetKey && obj[key] == 'MapGeom') {
//
console.log("遍历::",obj['mapSetData'],obj['field'])
chooseLayer.value = obj['mapSetData'].chooseLayer;
geomfield.value = obj['field']
return obj[key];
}
}
}
async function handlerShowGeomtrys(currentNode,rows){
findValue(currentNode.value.schemas,"component")
let info = currentNode.value.schemas?.find((item,index)=>{
return item.component.match(/mapgeom/i)
})
// console.log("info",info);
let layer:string=chooseLayer.value;
// // let layer:string="drone_shp_data";
// if(info){
// layer = info?.mapSetData?.chooseLayer
// }
if(!layer){
createMessage.error("图斑未绑定图层服务!");
return;
}
let geomfiledValue = geomfield.value;
let gids = "";
try {
// geomfiledValue = geomfiledValue.charAt(0).toLowerCase();
geomfiledValue = geomfiledValue.charAt(0).toLowerCase() + geomfiledValue.slice(1);
gids = rows[geomfiledValue]
if(gids){
try{
let getGeomPrams = {
TableName:layer,
FieldName:"gid",
FieldValue:gids,
page:1,
limit:999,
key:null,
}
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.geometry
}
geoms.push(geom);
})
}
MapboxComponent.value.handlerDraw("Details",geoms, false)
}else{
createMessage.error("当前数据没有图斑!");
}
})
}catch(e){
createMessage.error("当前数据没有图斑!");
}
}else{
createMessage.error("当前数据没有图斑!");
}
}catch{
createMessage.error("获取图斑数据失败!");
}
}
function handleSelect(selectedKeys: any, selected: any) {
const rel = selected.node.dataRef;
@ -644,8 +702,6 @@
width: 50,
layerFields: {},
};
// geom
}
codeId.value = res.entity.id;
paramsId.value = res.formScheme.id;

View File

@ -64,6 +64,7 @@
functionGetPreviewForm,
} from '@/api/demo/formScheme';
import { modalColumns, searchFormSchema } from './formModule.data';
import { cardNestStructure } from '@/views/demo/onlineform/util.ts';
const emit = defineEmits(['get-scheme-row']);
@ -155,50 +156,71 @@
const preview: any = await functionGetPreviewForm(query);
let scheme = JSON.parse(preview.scheme);
console.log('scheme1111', scheme);
if (scheme.formInfo.tabList && scheme.formInfo.tabList.length > 1) {
const arr: any = [];
scheme.formInfo.tabList.forEach((item, index) => {
const rowArr: any = [];
item.schemas.forEach((col) => {
if (col.ptype !== 'gridlayout') {
rowArr.push(col);
}
});
arr.push({
label: item.text,
value: index + 1,
children: rowArr,
});
});
scheme.formInfo.schemas = [
// if (scheme.formInfo.tabList && scheme.formInfo.tabList.length > 1) {
// const arr: any = [];
// scheme.formInfo.tabList.forEach((item, index) => {
// const rowArr: any = [];
// item.schemas.forEach((col) => {
// if (col.ptype !== 'gridlayout') {
// rowArr.push(col);
// }
// });
// arr.push({
// label: item.text,
// value: index + 1,
// children: rowArr,
// });
// });
// scheme.formInfo.schemas = [
// {
// component: 'Tabs',
// label: '',
// colProps: {
// span: 24,
// },
// field: 'Tabs',
// componentProps: {
// options: arr,
// },
// itemProps: {
// labelCol: {},
// wrapperCol: {},
// },
// },
// ];
// }
// if (scheme.formInfo.tabList && scheme.formInfo.tabList.length == 1) {
// const arr: any = [];
// scheme.formInfo.tabList[0].schemas.forEach((item) => {
// if (item.ptype !== 'gridlayout') {
// arr.push(item);
// }
// });
// scheme.formInfo.schemas = arr;
// }
// delete scheme.formInfo.tabList;
// formConfig.value.schemas = scheme.formInfo.schemas;
scheme.formInfo.tabList = cardNestStructure(scheme.formInfo.tabList);
if (scheme.formInfo.tabList.length > 1) {
let data = [
{
component: 'Tabs',
label: '选项卡',
colProps: {
span: 24,
},
field: 'Tabs',
componentProps: {
options: arr,
},
itemProps: {
labelCol: {},
wrapperCol: {},
options: [],
},
},
];
}
if (scheme.formInfo.tabList && scheme.formInfo.tabList.length == 1) {
const arr: any = [];
scheme.formInfo.tabList[0].schemas.forEach((item) => {
if (item.ptype !== 'gridlayout') {
arr.push(item);
}
data[0].componentProps.options = scheme.formInfo.tabList.map((item, index) => {
return {
label: item.text,
value: index,
children: item.schemas,
};
});
scheme.formInfo.schemas = arr;
formConfig.value.schemas = data;
} else {
formConfig.value.schemas = scheme.formInfo.tabList[0].schemas;
}
delete scheme.formInfo.tabList;
formConfig.value.schemas = scheme.formInfo.schemas;
Modal?.showModal(cloneDeep(formConfig.value));
}

View File

@ -10,30 +10,31 @@
@ok="dataBaseClick"
>
<BasicTable @register="registerImportTable" />
</BasicModal>
<BasicModal
v-bind="$attrs"
@register="registerModal"
:canFullscreen="false"
:defaultFullscreen="false"
:maskClosable="false"
:width="800"
title="数据对象选择"
@ok="modalSuReClick"
>
<BasicTable @register="registerDataTable">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'stateSlot'">
<div>
<span class="tbBtnBox" @click="tbBtnClick(record)"></span>
</div>
<BasicModal
v-bind="$attrs"
@register="registerModal"
:canFullscreen="false"
:defaultFullscreen="false"
:maskClosable="false"
:width="800"
title="数据对象选择"
@ok="modalSuReClick"
>
<BasicTable @register="registerDataTable">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'stateSlot'">
<div>
<span class="tbBtnBox" @click="tbBtnClick(record)"></span>
</div>
</template>
</template>
</BasicTable>
<template #centerFooter>
<a-button type="success" @click="handleAddForm"> </a-button>
</template>
</BasicTable>
<template #centerFooter>
<a-button type="success" @click="handleAddForm"> </a-button>
</template>
</BasicModal>
</BasicModal>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
@ -54,7 +55,6 @@
clearBaseSelectedRowKeys();
reload();
});
const [registerImportModal, { openModal: openImportTableModal, closeModal: closeImportModal }] =
useModal();
@ -91,6 +91,7 @@
keyWord: data.key,
dbCode: receiceDbCode.value,
};
alert(receiceDbCode.value)
return temp;
},
});

View File

@ -382,6 +382,7 @@
}
const [registerModal, { openModal: openBaseDataTableModal }] = useModal();
const [registerSqlModal, { openModal: openSqleModal }] = useModal();
let tabMainList: any = [];

View File

@ -218,7 +218,26 @@
return;
}
scheme.formInfo.tabList = cardNestStructure(scheme.formInfo.tabList);
formConfig.value.schemas = scheme.formInfo.tabList[0].schemas;
if (scheme.formInfo.tabList.length > 1) {
let data = [
{
component: 'Tabs',
componentProps: {
options: [],
},
},
];
data[0].componentProps.options = scheme.formInfo.tabList.map((item, index) => {
return {
label: item.text,
value: index,
children: item.schemas,
};
});
formConfig.value.schemas = data;
} else {
formConfig.value.schemas = scheme.formInfo.tabList[0].schemas;
}
eFormPreview.value.showModal(cloneDeep(formConfig.value));
}
// -

View File

@ -417,6 +417,7 @@
}
}
}
item.csType = 'string';
schemas[index] = item;
});
if (gridType == 'main') {
@ -690,6 +691,7 @@
db_temp.dbColumnInfoList.push(temp);
}
}
item.csType = 'csType';
schemas[index] = item;
});
if (gridType == 'chlid') {

View File

@ -337,7 +337,6 @@
designerData.task = data.task;
let content = JSON.parse(data.scheme.content);
let wfData = content.wfData;
console.log('wfData', wfData);
const map = new Map();
const newArr = data.logs.filter((v) => !map.has(v.unitId) && map.set(v.unitId, v));
rejectRelations.value = newArr;
@ -372,7 +371,6 @@
// PC
formUrlVisble.value = true;
let url = '../../../' + currentNode.formUrl + '.vue';
console.log(url);
// AsyncComponent.value = defineAsyncComponent(() => import(url));
AsyncComponent.value = defineAsyncComponent({
//
@ -553,7 +551,6 @@
const currentNode: currentNodeObject =
wfData.find((t) => t.id == designerData.task.unitId) || {};
designerData.currentNode = currentNode;
console.log('currentNode', currentNode);
//
const btns: taskBtnsType[] = [];
if (currentNode.type == 'bpmn:StartEvent') {
@ -608,7 +605,6 @@
formBoxRef.value
.getForm()
.then(async (res) => {
console.log(res);
res[designerData.formCurrentNode.formRelationId] = instanceInfo.pkeyValue;
for (var item in res) {
if (res[item] == undefined) {
@ -633,14 +629,12 @@
//
const funName = btn.code;
const res = await pcForm.value[funName]();
console.log(res);
handleSubmit(btn);
} else {
handleSubmit(btn);
}
}
async function handleSubmit(btn) {
console.log('handleSubmit');
const currentBtn = btn;
designerData.currentBtn = currentBtn;
let res: any;
@ -668,8 +662,6 @@
des: formData.value.des,
});
} else {
console.log(designerData.currentNode.rejectType);
console.log(btn.code);
if (designerData.currentNode.rejectType == '2' && btn.code == 'disagree') {
designerData.selectRejectNodeVisible = true;
rejectOpen.value = true;

View File

@ -147,7 +147,6 @@
},
});
async function handleDetail(record) {
console.log(record);
if (record.type == 3) {
previewOpen.value = true;
childRecord.value = record;