徐景良 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"
@ok="handleSubmit"
>
<div style="display: flex">
<div class="w-1/2 xl:w-1/2" style="overflow: auto; height: calc(100%)">
<a-textarea v-model:value="formContent" :rows="29" />
<div class="alertModal">
<div class="alertModal_content">
<a-textarea
v-model:value="formContent"
autosize
:auto-size="{ minRows: 22, maxRows: 22 }"
/>
</div>
<div class="w-1/2 xl:w-1/2" style="overflow: auto; height: calc(100%)">
<a-alert message="脚本参数说明,只支持ES5语法兼容小程序" type="warning">
<template #description>
<div v-html="description"></div>
</template>
</a-alert>
<div class="alertModal_content">
<a-textarea
class="alertModal_content-textarea"
v-model:value="formItemPropsScript"
autosize
readOnly
:auto-size="{ minRows: 22, maxRows: 22 }"
/>
</div>
</div>
</BasicModal>
@ -180,7 +186,7 @@
import { IBaseFormAttrs } from '../config/formItemPropsConfig';
import { getOutKeyList } from '@/api/formdesign/index';
import { BasicModal, useModal } from '@/components/Modal';
import { formItemPropsScript, addBreakLines } from '../../VFormDesign/config/formItemPropsScript';
import { formItemPropsScript } from '../../VFormDesign/config/formItemPropsScript';
export default defineComponent({
name: 'ComponentProps',
@ -434,7 +440,6 @@
});
//
const formContent: any = ref('');
const description = addBreakLines(formItemPropsScript);
//
const [buttonScriptModal, { openModal, closeModal }] = useModal();
//
@ -495,7 +500,7 @@
fetch,
BasicModal,
formContent,
description,
formItemPropsScript,
buttonScriptModal,
openModal,
closeModal,
@ -505,3 +510,23 @@
},
});
</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"
@ok="handleSubmit"
>
<div style="display: flex">
<div class="w-1/2 xl:w-1/2" style="overflow: auto; height: calc(100%)">
<a-textarea v-model:value="formContent" :rows="29" />
<div class="alertModal">
<div class="alertModal_content">
<a-textarea
v-model:value="formContent"
autosize
:auto-size="{ minRows: 22, maxRows: 22 }"
/>
</div>
<div class="w-1/2 xl:w-1/2" style="overflow: auto; height: calc(100%)">
<a-alert message="脚本参数说明" type="warning">
<template #description>
<div v-html="description"></div>
</template>
</a-alert>
<div class="alertModal_content">
<a-textarea
class="alertModal_content-textarea"
v-model:value="formItemPropsScript"
autosize
readOnly
:auto-size="{ minRows: 22, maxRows: 22 }"
/>
</div>
</div>
</BasicModal>
@ -130,7 +136,7 @@
<script lang="ts" setup name="FormProps">
import { ref, computed } from 'vue';
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 {
InputNumber,
@ -169,7 +175,6 @@
let formTitle: any = ref('');
let btnClickEvent_now = '';
let formContent: any = ref('');
let description = addBreakLines(formItemPropsScript);
//
const [propsScriptModal, { openModal, closeModal }] = useModal();
//
@ -250,3 +255,23 @@
return flag;
}
</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');
// 组件设置
// 设置组件为隐藏
formColumns.value = utils.setHide('组件的字段标识', false);
@ -38,7 +37,7 @@ formColumns.value = utils.setRequired('组件的字段标识', false);
// 功能设置
// 提示消息
utils.message('提示信息', '提示类型');
successerrorwarninfo\
successerrorwarninfo
// 获取登录者信息
var loginUser = utils.loginUser();
loginUser{ account: , name: }
@ -59,10 +58,3 @@ url:api地址, params:参数
let resPut = await utils.httpPut(url, 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"
/> -->
<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
@ -109,8 +109,8 @@
import { v4 as uuidv4 } from 'uuid';
import { changeCardStructure, cardNestStructure } from '@/views/demo/onlineform/util.ts';
const MapboxMap = defineAsyncComponent(() => import('@/components/MapboxMaps/MapComponent.vue'));
const mapFormShow = ref<boolean>(false)
const mapFormData = ref<Object>({})
const mapFormShow = ref<boolean>(false);
const mapFormData = ref<Object>({});
const { createConfirm, createMessage } = useMessage();
const route = useRoute();
const btnArr: any = [
@ -256,7 +256,7 @@
}
const [registerModal, { openModal }] = useModal();
const [registerMapFormModal,{ openModal:openMapFormModal }] = useModal();
const [registerMapFormModal, { openModal: openMapFormModal }] = useModal();
const [registerTable, { reload, setColumns, getSelectRows, clearSelectedRowKeys }] = useTable({
title: '表单列表',
@ -276,13 +276,10 @@
showTableSetting: true,
bordered: true,
beforeFetch: (data) => {
console.log('item.key', data);
//
const querys = JSON.parse(JSON.stringify(data));
console.log('1111', querys);
delete querys.page;
delete querys.limit;
console.log('querys', querys);
var temp = {
id: paramsId.value,
mid: codeId.value,
@ -415,7 +412,7 @@
// key: 'f_id',
keyValue: null,
});
const str: any = ref(addParamsArr.value[0].field);
const str: any = ref();
// const str: any = ref('_input_guid_43');
addParamsArr.value.forEach((item) => {
if (item.type == 'main') {
@ -451,7 +448,7 @@
if (haveMap.value) {
// showFormModalData.value = toProps;
// openShowFormModal.value = true;
openModal(true,toProps);
openModal(true, toProps);
mapgemoList.value = [];
mapSetData.value.isAllowAddPolygon && MapboxComponent.value.handlerDraw(status);
} else {
@ -556,11 +553,11 @@
// showFormModalData.value = toProps;
// openShowFormModal.value = true;
// ids
try{
console.log("formConfig",formConfig);
handlerShowGeomtrys(formConfig,rows[0])
}catch(e){
createMessage.error("当前数据没有图斑!");
try {
console.log('formConfig', formConfig);
handlerShowGeomtrys(formConfig, rows[0]);
} catch (e) {
createMessage.error('当前数据没有图斑!');
}
} else {
openModal(true, toProps);
@ -574,82 +571,82 @@
break;
}
};
const chooseLayer = ref<string>("")
const geomfield = ref<string>("");
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') {
//
chooseLayer.value = obj['mapSetData'].chooseLayer;
geomfield.value = obj['field']
return obj[key];
}
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') {
//
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)
})
let layer:string=chooseLayer.value;
async function handlerShowGeomtrys(currentNode, rows) {
findValue(currentNode.value.schemas, 'component');
let info = currentNode.value.schemas?.find((item, index) => {
return item.component.match(/mapgeom/i);
});
let layer: string = chooseLayer.value;
// // let layer:string="drone_shp_data";
// if(info){
// layer = info?.mapSetData?.chooseLayer
// }
if(!layer){
createMessage.error("图斑未绑定图层服务!");
if (!layer) {
createMessage.error('图斑未绑定图层服务!');
return;
}
let geomfiledValue = geomfield.value;
let gids = "";
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,
}
await 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("当前数据没有图斑!");
gids = rows[geomfiledValue];
if (gids) {
try {
let getGeomPrams = {
TableName: layer,
FieldName: 'gid',
FieldValue: gids,
page: 1,
limit: 999,
key: null,
};
await 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);
});
}
})
}catch(e){
createMessage.error("当前数据没有图斑!");
}
}else{
createMessage.error("当前数据没有图斑!");
MapboxComponent.value.handlerDraw('Details', geoms, false);
} else {
createMessage.error('当前数据没有图斑!');
}
});
} catch (e) {
createMessage.error('当前数据没有图斑!');
}
}catch{
createMessage.error("获取图斑数据失败!");
} else {
createMessage.error('当前数据没有图斑!');
}
} catch {
createMessage.error('获取图斑数据失败!');
}
}
@ -904,9 +901,9 @@
}
};
const clsoeMapForm = ()=>{
const clsoeMapForm = () => {
mapFormShow.value = false;
}
};
</script>
<style lang="less">
.full-modal {
@ -939,13 +936,13 @@
z-index: 1;
}
.map-form-container{
width:100%;
height:100%;
position:absolute;
top:0px;
left:0px;
background:#fff;
z-index:999;
.map-form-container {
width: 100%;
height: 100%;
position: absolute;
top: 0px;
left: 0px;
background: #fff;
z-index: 999;
}
</style>

View File

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