徐景良 2024-06-14 17:33:45 +08:00
commit 83aeba4735
5 changed files with 159 additions and 118 deletions

View File

@ -135,16 +135,22 @@
:useWrapper="false" :useWrapper="false"
@ok="handleSubmit" @ok="handleSubmit"
> >
<div style="display: flex"> <div class="alertModal">
<div class="w-1/2 xl:w-1/2" style="overflow: auto; height: calc(100%)"> <div class="alertModal_content">
<a-textarea v-model:value="formContent" :rows="29" /> <a-textarea
v-model:value="formContent"
autosize
:auto-size="{ minRows: 22, maxRows: 22 }"
/>
</div> </div>
<div class="w-1/2 xl:w-1/2" style="overflow: auto; height: calc(100%)"> <div class="alertModal_content">
<a-alert message="脚本参数说明,只支持ES5语法兼容小程序" type="warning"> <a-textarea
<template #description> class="alertModal_content-textarea"
<div v-html="description"></div> v-model:value="formItemPropsScript"
</template> autosize
</a-alert> readOnly
:auto-size="{ minRows: 22, maxRows: 22 }"
/>
</div> </div>
</div> </div>
</BasicModal> </BasicModal>
@ -180,7 +186,7 @@
import { IBaseFormAttrs } from '../config/formItemPropsConfig'; import { IBaseFormAttrs } from '../config/formItemPropsConfig';
import { getOutKeyList } from '@/api/formdesign/index'; import { getOutKeyList } from '@/api/formdesign/index';
import { BasicModal, useModal } from '@/components/Modal'; import { BasicModal, useModal } from '@/components/Modal';
import { formItemPropsScript, addBreakLines } from '../../VFormDesign/config/formItemPropsScript'; import { formItemPropsScript } from '../../VFormDesign/config/formItemPropsScript';
export default defineComponent({ export default defineComponent({
name: 'ComponentProps', name: 'ComponentProps',
@ -434,7 +440,6 @@
}); });
// //
const formContent: any = ref(''); const formContent: any = ref('');
const description = addBreakLines(formItemPropsScript);
// //
const [buttonScriptModal, { openModal, closeModal }] = useModal(); const [buttonScriptModal, { openModal, closeModal }] = useModal();
// //
@ -495,7 +500,7 @@
fetch, fetch,
BasicModal, BasicModal,
formContent, formContent,
description, formItemPropsScript,
buttonScriptModal, buttonScriptModal,
openModal, openModal,
closeModal, closeModal,
@ -505,3 +510,23 @@
}, },
}); });
</script> </script>
<style lang="less" scoped>
.alertModal {
display: flex;
background-color: @border-color-base;
&_content {
width: 50%;
padding: 1px;
&-textarea {
// @if @border-color-base == #141414 {
background-color: @border-color-base;
// } @else {
// background-color: #fffbe6;
// }
}
}
}
</style>

View File

@ -113,16 +113,22 @@
:width="1000" :width="1000"
@ok="handleSubmit" @ok="handleSubmit"
> >
<div style="display: flex"> <div class="alertModal">
<div class="w-1/2 xl:w-1/2" style="overflow: auto; height: calc(100%)"> <div class="alertModal_content">
<a-textarea v-model:value="formContent" :rows="29" /> <a-textarea
v-model:value="formContent"
autosize
:auto-size="{ minRows: 22, maxRows: 22 }"
/>
</div> </div>
<div class="w-1/2 xl:w-1/2" style="overflow: auto; height: calc(100%)"> <div class="alertModal_content">
<a-alert message="脚本参数说明" type="warning"> <a-textarea
<template #description> class="alertModal_content-textarea"
<div v-html="description"></div> v-model:value="formItemPropsScript"
</template> autosize
</a-alert> readOnly
:auto-size="{ minRows: 22, maxRows: 22 }"
/>
</div> </div>
</div> </div>
</BasicModal> </BasicModal>
@ -130,7 +136,7 @@
<script lang="ts" setup name="FormProps"> <script lang="ts" setup name="FormProps">
import { ref, computed } from 'vue'; import { ref, computed } from 'vue';
import { BasicModal, useModal } from '@/components/Modal'; import { BasicModal, useModal } from '@/components/Modal';
import { formItemPropsScript, addBreakLines } from '../../VFormDesign/config/formItemPropsScript'; import { formItemPropsScript } from '../../VFormDesign/config/formItemPropsScript';
import { useFormDesignState } from '../../../hooks/useFormDesignState'; import { useFormDesignState } from '../../../hooks/useFormDesignState';
import { import {
InputNumber, InputNumber,
@ -169,7 +175,6 @@
let formTitle: any = ref(''); let formTitle: any = ref('');
let btnClickEvent_now = ''; let btnClickEvent_now = '';
let formContent: any = ref(''); let formContent: any = ref('');
let description = addBreakLines(formItemPropsScript);
// //
const [propsScriptModal, { openModal, closeModal }] = useModal(); const [propsScriptModal, { openModal, closeModal }] = useModal();
// //
@ -250,3 +255,23 @@
return flag; return flag;
} }
</script> </script>
<style lang="less" scoped>
.alertModal {
display: flex;
background-color: @border-color-base;
&_content {
width: 50%;
padding: 1px;
&-textarea {
// @if @border-color-base == #141414 {
background-color: @border-color-base;
// } @else {
// background-color: #fffbe6;
// }
}
}
}
</style>

View File

@ -1,8 +1,8 @@
export const formItemPropsScript = ` export const formItemPropsScript = `脚本参数说明
// 获取表单是新增还是编辑 // 获取表单是新增还是编辑
var isUpdate = utils.isUpdate(); let update = utils.isUpdate();
// 组件变更数据 // 组件变更数据
var data = utils.data(); let data = utils.data();
// 数据设置 // 数据设置
// 获取主表数据 // 获取主表数据
@ -20,7 +20,6 @@ subTableList.value = addChildValue('组件的字段标识', '旧value', '新valu
// 删除子表数据 // 删除子表数据
subTableList.value = deleteChildValue('组件的字段标识', 'value'); subTableList.value = deleteChildValue('组件的字段标识', 'value');
// 组件设置 // 组件设置
// 设置组件为隐藏 // 设置组件为隐藏
formColumns.value = utils.setHide('组件的字段标识', false); formColumns.value = utils.setHide('组件的字段标识', false);
@ -38,7 +37,7 @@ formColumns.value = utils.setRequired('组件的字段标识', false);
// 功能设置 // 功能设置
// 提示消息 // 提示消息
utils.message('提示信息', '提示类型'); utils.message('提示信息', '提示类型');
successerrorwarninfo\ successerrorwarninfo
// 获取登录者信息 // 获取登录者信息
var loginUser = utils.loginUser(); var loginUser = utils.loginUser();
loginUser{ account: , name: } loginUser{ account: , name: }
@ -59,10 +58,3 @@ url:api地址, params:参数
let resPut = await utils.httpPut(url, params); let resPut = await utils.httpPut(url, params);
url:api, params: url:api, params:
`; `;
export function addBreakLines(text: string): string {
// 根据换行符分割文本为行
const lines = text.split(/\r?\n/);
// 在每行后面添加
return lines.map((line) => line + '<br />').join('');
}

View File

@ -44,7 +44,7 @@
@success="submitsuccess" @success="submitsuccess"
/> --> /> -->
<div class="map-form-container" v-if="mapFormShow"> <div class="map-form-container" v-if="mapFormShow">
<MapFormModal v-if="mapFormShow" @clsoeMapForm="clsoeMapForm" :data="mapFormData"/> <MapFormModal v-if="mapFormShow" @clsoeMapForm="clsoeMapForm" :data="mapFormData" />
</div> </div>
</div> </div>
<div <div
@ -109,8 +109,8 @@
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { changeCardStructure, 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 MapboxMap = defineAsyncComponent(() => import('@/components/MapboxMaps/MapComponent.vue'));
const mapFormShow = ref<boolean>(false) const mapFormShow = ref<boolean>(false);
const mapFormData = ref<Object>({}) const mapFormData = ref<Object>({});
const { createConfirm, createMessage } = useMessage(); const { createConfirm, createMessage } = useMessage();
const route = useRoute(); const route = useRoute();
const btnArr: any = [ const btnArr: any = [
@ -256,7 +256,7 @@
} }
const [registerModal, { openModal }] = useModal(); const [registerModal, { openModal }] = useModal();
const [registerMapFormModal,{ openModal:openMapFormModal }] = useModal(); const [registerMapFormModal, { openModal: openMapFormModal }] = useModal();
const [registerTable, { reload, setColumns, getSelectRows, clearSelectedRowKeys }] = useTable({ const [registerTable, { reload, setColumns, getSelectRows, clearSelectedRowKeys }] = useTable({
title: '表单列表', title: '表单列表',
@ -276,13 +276,10 @@
showTableSetting: true, showTableSetting: true,
bordered: true, bordered: true,
beforeFetch: (data) => { beforeFetch: (data) => {
console.log('item.key', data);
// //
const querys = JSON.parse(JSON.stringify(data)); const querys = JSON.parse(JSON.stringify(data));
console.log('1111', querys);
delete querys.page; delete querys.page;
delete querys.limit; delete querys.limit;
console.log('querys', querys);
var temp = { var temp = {
id: paramsId.value, id: paramsId.value,
mid: codeId.value, mid: codeId.value,
@ -415,7 +412,7 @@
// key: 'f_id', // key: 'f_id',
keyValue: null, keyValue: null,
}); });
const str: any = ref(addParamsArr.value[0].field); const str: any = ref();
// const str: any = ref('_input_guid_43'); // const str: any = ref('_input_guid_43');
addParamsArr.value.forEach((item) => { addParamsArr.value.forEach((item) => {
if (item.type == 'main') { if (item.type == 'main') {
@ -451,7 +448,7 @@
if (haveMap.value) { if (haveMap.value) {
// showFormModalData.value = toProps; // showFormModalData.value = toProps;
// openShowFormModal.value = true; // openShowFormModal.value = true;
openModal(true,toProps); openModal(true, toProps);
mapgemoList.value = []; mapgemoList.value = [];
mapSetData.value.isAllowAddPolygon && MapboxComponent.value.handlerDraw(status); mapSetData.value.isAllowAddPolygon && MapboxComponent.value.handlerDraw(status);
} else { } else {
@ -556,11 +553,11 @@
// showFormModalData.value = toProps; // showFormModalData.value = toProps;
// openShowFormModal.value = true; // openShowFormModal.value = true;
// ids // ids
try{ try {
console.log("formConfig",formConfig); console.log('formConfig', formConfig);
handlerShowGeomtrys(formConfig,rows[0]) handlerShowGeomtrys(formConfig, rows[0]);
}catch(e){ } catch (e) {
createMessage.error("当前数据没有图斑!"); createMessage.error('当前数据没有图斑!');
} }
} else { } else {
openModal(true, toProps); openModal(true, toProps);
@ -574,82 +571,82 @@
break; break;
} }
}; };
const chooseLayer = ref<string>("") const chooseLayer = ref<string>('');
const geomfield = ref<string>(""); const geomfield = ref<string>('');
function findValue(obj, targetKey) { function findValue(obj, targetKey) {
for (var key in obj) { for (var key in obj) {
if (typeof obj[key] === 'object') { if (typeof obj[key] === 'object') {
// findValue // findValue
var result = findValue(obj[key], targetKey); var result = findValue(obj[key], targetKey);
if (result !== undefined && result == 'MapGeom') { if (result !== undefined && result == 'MapGeom') {
return result; return result;
} }
} else if (key === targetKey && obj[key] == 'MapGeom') { } else if (key === targetKey && obj[key] == 'MapGeom') {
// //
chooseLayer.value = obj['mapSetData'].chooseLayer; chooseLayer.value = obj['mapSetData'].chooseLayer;
geomfield.value = obj['field'] geomfield.value = obj['field'];
return obj[key]; return obj[key];
}
} }
}
} }
async function handlerShowGeomtrys(currentNode,rows){ async function handlerShowGeomtrys(currentNode, rows) {
findValue(currentNode.value.schemas,"component") findValue(currentNode.value.schemas, 'component');
let info = currentNode.value.schemas?.find((item,index)=>{ let info = currentNode.value.schemas?.find((item, index) => {
return item.component.match(/mapgeom/i) return item.component.match(/mapgeom/i);
}) });
let layer:string=chooseLayer.value; let layer: string = chooseLayer.value;
// // let layer:string="drone_shp_data"; // // let layer:string="drone_shp_data";
// if(info){ // if(info){
// layer = info?.mapSetData?.chooseLayer // layer = info?.mapSetData?.chooseLayer
// } // }
if(!layer){ if (!layer) {
createMessage.error("图斑未绑定图层服务!"); createMessage.error('图斑未绑定图层服务!');
return; return;
} }
let geomfiledValue = geomfield.value; let geomfiledValue = geomfield.value;
let gids = ""; let gids = '';
try { try {
// geomfiledValue = geomfiledValue.charAt(0).toLowerCase(); // geomfiledValue = geomfiledValue.charAt(0).toLowerCase();
geomfiledValue = geomfiledValue.charAt(0).toLowerCase() + geomfiledValue.slice(1); geomfiledValue = geomfiledValue.charAt(0).toLowerCase() + geomfiledValue.slice(1);
gids = rows[geomfiledValue] gids = rows[geomfiledValue];
if(gids){ if (gids) {
try{ try {
let getGeomPrams = { let getGeomPrams = {
TableName:layer, TableName: layer,
FieldName:"gid", FieldName: 'gid',
FieldValue:gids, FieldValue: gids,
page:1, page: 1,
limit:999, limit: 999,
key:null, key: null,
} };
await getGeom(getGeomPrams).then(res=>{ await getGeom(getGeomPrams).then((res) => {
let geoms = []; let geoms = [];
if(res){ if (res) {
if(res.items?.length>0){ if (res.items?.length > 0) {
res.items.forEach((item,index)=>{ res.items.forEach((item, index) => {
let geom = { let geom = {
key:item.gid, key: item.gid,
mapgeom:item.geometry mapgeom: item.geometry,
} };
geoms.push(geom); geoms.push(geom);
}) });
}
MapboxComponent.value.handlerDraw("Details",geoms, false)
}else{
createMessage.error("当前数据没有图斑!");
} }
}) MapboxComponent.value.handlerDraw('Details', geoms, false);
}catch(e){ } else {
createMessage.error("当前数据没有图斑!"); createMessage.error('当前数据没有图斑!');
} }
}else{ });
createMessage.error("当前数据没有图斑!"); } catch (e) {
createMessage.error('当前数据没有图斑!');
} }
}catch{ } else {
createMessage.error("获取图斑数据失败!"); createMessage.error('当前数据没有图斑!');
}
} catch {
createMessage.error('获取图斑数据失败!');
} }
} }
@ -904,9 +901,9 @@
} }
}; };
const clsoeMapForm = ()=>{ const clsoeMapForm = () => {
mapFormShow.value = false; mapFormShow.value = false;
} };
</script> </script>
<style lang="less"> <style lang="less">
.full-modal { .full-modal {
@ -939,13 +936,13 @@
z-index: 1; z-index: 1;
} }
.map-form-container{ .map-form-container {
width:100%; width: 100%;
height:100%; height: 100%;
position:absolute; position: absolute;
top:0px; top: 0px;
left:0px; left: 0px;
background:#fff; background: #fff;
z-index:999; z-index: 999;
} }
</style> </style>

View File

@ -194,6 +194,7 @@
db_list.value = []; db_list.value = [];
// dbCode // dbCode
forminfoDbCode = data.saveFormDatas.info.DbCode; forminfoDbCode = data.saveFormDatas.info.DbCode;
//
scheme = getSchemeByscheme( scheme = getSchemeByscheme(
scheme, scheme,
forminfoDbCode, forminfoDbCode,
@ -793,6 +794,7 @@
let oldDbColumnArray = old.dbColumnInfoList.map((o) => o.dbColumnName); let oldDbColumnArray = old.dbColumnInfoList.map((o) => o.dbColumnName);
db.dbColumnInfoList.forEach(async (dbColumn) => { db.dbColumnInfoList.forEach(async (dbColumn) => {
if (!oldDbColumnArray.includes(dbColumn.dbColumnName)) { if (!oldDbColumnArray.includes(dbColumn.dbColumnName)) {
dbColumn.isNullable = 1;
let query: any = { let query: any = {
dbCode: forminfoDbCode, dbCode: forminfoDbCode,
dbColumn: dbColumn, dbColumn: dbColumn,