石超 2024-06-12 17:34:22 +08:00
commit 882a1b615a
4 changed files with 246 additions and 165 deletions

View File

@ -4,20 +4,22 @@
<!-- 图层控制 -->
<div class="layer-control-center">
<p v-for="(item, index) in props.mapConfig.layers">
<a-checkbox v-model:checked="item.checked" @change="handlerCheckboxChange(item)">{{
item.name
}}</a-checkbox>
</p>
<p v-for="(item, index) in props.mapConfig.baseLayers">
<a-checkbox v-model:checked="item.checked" @change="handlerCheckboxChange(item)">{{
item.name
}}</a-checkbox>
</p>
<a-collapse v-model:activeKey="activeKey" accordion expandIconPosition="end" expandIcon="">
<a-collapse-panel key="1" header="图层">
<p v-for="(item, index) in props.mapConfig.layers">
<a-checkbox v-model:checked="item.checked" @change="handlerCheckboxChange(item)">{{
item.name
}}</a-checkbox>
</p>
<p v-for="(item, index) in props.mapConfig.baseLayers">
<a-checkbox v-model:checked="item.checked" @change="handlerCheckboxChange(item)">{{
item.name
}}</a-checkbox>
</p>
</a-collapse-panel>
</a-collapse>
</div>
<!-- 绘图控制 -->
<div class="draw-control-center" v-show="drawing">
<div class="draw-btn" @click="handlerCancleDraw"> </div>
@ -693,21 +695,18 @@
.layer-control-center {
position: absolute;
padding: 10px;
top: 15px;
left: 15px;
background: rgba(13, 16, 18,0.5);
border-radius: 14px 1px 14px 1px;
background:#fff;
border-radius: 8px;
}
.layer-control-center p {
margin: 0px;
float:left;
color:#fff!important;
}
.layer-control-center .ant-checkbox-wrapper{
color:#fff!important;
}
.draw-control-center {
@ -812,5 +811,6 @@
height:22px;
color: #fff;
}
</style>

View File

@ -459,7 +459,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 +526,12 @@
if (rows.length == 0) {
return createMessage.warn('请选择一条数据查看详情');
}
<<<<<<< HEAD
console.log("DetailsRow",formConfig,rows);
=======
console.log('DetailsRow', rows);
>>>>>>> 2d727b56b33f5b20ec09e72b777cfa6a88e157e9
let toProps = {
isDetail: true,
isUpdate: false,
@ -542,6 +548,13 @@
openShowFormModal.value = true;
// ids
<<<<<<< HEAD
try{
console.log("formConfig",formConfig);
handlerShowGeomtrys(formConfig,rows[0])
}catch(e){
createMessage.error("当前数据没有图斑!");
=======
try {
let getGeomPrams: GeomParams = {
TableName: 'drone_shp_data',
@ -569,6 +582,7 @@
});
} catch (e) {
createMessage.error('当前数据没有图斑!');
>>>>>>> 2d727b56b33f5b20ec09e72b777cfa6a88e157e9
}
} else {
openModal(true, toProps);
@ -583,6 +597,67 @@
}
};
<<<<<<< HEAD
async function handlerShowGeomtrys(currentNode,rows){
let info = currentNode.value.schemas?.find((item,index)=>{
return item.component == "MapGeom"
})
let layer:string="";
// let layer:string="drone_shp_data";
if(info){
layer = info?.mapSetData?.chooseLayer
}
if(!layer){
createMessage.error("图斑未绑定图层服务!");
return;
}
let geomfiledValue = info.field;
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("获取图斑数据失败!");
}
}
=======
>>>>>>> 2d727b56b33f5b20ec09e72b777cfa6a88e157e9
function handleSelect(selectedKeys: any, selected: any) {
const rel = selected.node.dataRef;
const obj: any = {};

View File

@ -412,4 +412,4 @@
defineExpose({
config,
});
</script>
</script>

View File

@ -6,130 +6,124 @@
</a-button>
<a-button type="primary" @click="closePage" class="ml-2" danger>关闭 </a-button>
</div>
<a-layout>
<div :class="mapConfig?.isShowMap?'form-container':''">
<a-layout>
<a-layout-content>
<a-tabs v-model:activeKey="activeName" @change="changeActive" type="card">
<a-tab-pane
key="form"
:tab="
designerData.formCurrentNode.formTitle
? designerData.formCurrentNode.formTitle
: '表单信息'
"
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"
@mapOnLoad="onMapboxLoad"
ref="MapboxComponent"
/>
</div>
</a-tab-pane>
<a-tab-pane
key="form"
:tab="
designerData.formCurrentNode.formTitle
? designerData.formCurrentNode.formTitle
: '系统表单信息'
"
v-if="formUrlVisble"
>
<AsyncComponent ref="pcForm" />
</a-tab-pane>
<a-tab-pane key="flow" tab="流程信息" force-render>
<div class="process-design" :style="'display: flex; height:' + designerData.height">
<process-viewer
v-if="processVisble"
:key="`designer-${id}`"
:events="['element.click']"
@element-click="elementClick"
:xml="flowContent"
:flowViewer="flowViewer"
/>
</div>
</a-tab-pane>
<a-tab-pane key="record" tab="流转记录" force-render>
<a-timeline>
<a-timeline-item
v-for="(item, index) in designerData.logs"
:key="index"
:color="item.type"
>
<div class="title">{{ item.time }}</div>
<a-card hoverable size="small">
<div class="type-title">{{ item.name }}</div>
<div class="content">
<span
class="link"
v-for="(userName, index2) in item.userNames"
:key="index2"
>{{ userName }}</span
<a-layout>
<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>
</a-tab-pane>
<a-tab-pane
key="form"
:tab="
designerData.formCurrentNode.formTitle
? designerData.formCurrentNode.formTitle
: '系统表单信息'
"
v-if="formUrlVisble"
>
<AsyncComponent ref="pcForm" />
</a-tab-pane>
<a-tab-pane key="flow" tab="流程信息" force-render>
<div class="process-design" :style="'display: flex; height:' + designerData.height">
<process-viewer
v-if="processVisble"
:key="`designer-${id}`"
:events="['element.click']"
@element-click="elementClick"
:xml="flowContent"
:flowViewer="flowViewer"
/>
</div>
</a-tab-pane>
<a-tab-pane key="record" tab="流转记录" force-render>
<a-timeline>
<a-timeline-item
v-for="(item, index) in designerData.logs"
:key="index"
:color="item.type"
>
<div class="title">{{ item.time }}</div>
<a-card hoverable size="small">
<div class="type-title">{{ item.name }}</div>
<div class="content">
<span
class="link"
v-for="(userName, index2) in item.userNames"
:key="index2"
>{{ userName }}</span
>
{{ item.des }}
</div>
</a-card>
</a-timeline-item>
</a-timeline>
</a-tab-pane>
</a-tabs>
</a-layout-content>
<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="2"
:wrapper-col="22"
>
<!-- <a-form-item :label="auditNameVal" /> -->
<a-form-item :label="auditNameVal">
<a-textarea
v-model:value="formData.des"
placeholder="请输入"
:auto-size="{ minRows: 2, maxRows: 8 }"
/>
</a-form-item>
<a-form-item label="" class="l-task-btns">
<a-button
v-for="(btn, index) in designerData.taskBtns"
:key="index"
:color="btn.type"
:type="btn.type ? btn.type : 'primary'"
@click="handleBtnClick(btn)"
>{{ btn.name }}</a-button
>
{{ item.des }}
</div>
</a-card>
</a-timeline-item>
</a-timeline>
</a-tab-pane>
</a-tabs>
</a-layout-content>
<!-- <a-divider type="vertical" /> -->
<!-- <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="2"
:wrapper-col="22"
>
<!-- <a-form-item :label="auditNameVal" /> -->
<a-form-item :label="auditNameVal">
<a-textarea
v-model:value="formData.des"
placeholder="请输入"
:auto-size="{ minRows: 2, maxRows: 8 }"
/>
</a-form-item>
<a-form-item label="" class="l-task-btns">
<a-button
v-for="(btn, index) in designerData.taskBtns"
:key="index"
:color="btn.type"
:type="btn.type ? btn.type : 'primary'"
@click="handleBtnClick(btn)"
>{{ btn.name }}</a-button
>
</a-form-item>
</a-form>
<!-- <auditInfo :data="designerData.userLogs" /> -->
</div>
</a-tab-pane>
</a-tabs>
</a-layout-footer>
</a-form-item>
</a-form>
<!-- <auditInfo :data="designerData.userLogs" /> -->
</div>
</a-tab-pane>
</a-tabs>
</a-layout-footer>
</a-layout>
</a-layout>
</a-layout>
</div>
<div class="maper-container" v-if="mapConfig?.isShowMap">
<MapboxMap
:mapConfig="mapConfig"
@handlerDrawComplete="handlerDrawComplete"
@mapOnLoad="onMapboxLoad"
ref="MapboxComponent"
/>
</div>
<!-- 节点记录信息 -->
<div class="info-box" v-if="designerData.nodeLogs.length > 0">
@ -241,18 +235,7 @@
des: [{ required: true, message: '请填写审批意见', trigger: 'blur' }],
});
const footerStyle = ref({
height: '220px',
width: '100%',
overFlow: 'auto',
color: '#fff',
backgroundColor: '#ffffff',
zIndex: '9999999999',
padding: '0px 100px',
position: 'fixed',
bottom: '0px',
left: '0px',
});
if (props.type == 4) {
rules.value = {};
}
@ -307,7 +290,20 @@
const auditName = ref('audit');
const auditTitleVal = ref('审批栏');
const auditNameVal = ref('审批意见');
const rejectOpen = ref(false);
const rejectOpen = ref(false);
const footerStyle = ref({
height:"220px",
width:mapConfig.value.isShowMap ? '100%':'60%',
overFlow:"auto",
color: '#fff',
backgroundColor: '#ffffff',
zIndex:"9999999999",
padding:"0px 100px",
position:"fixed",
bottom:"0px",
left:"0px"
})
function changeActive(activeKey) {
if (activeKey == 'flow') {
processVisble.value = true;
@ -363,10 +359,15 @@
if (auditNode.isInherit) {
currentNode = wfData.find((t) => t.type == 'bpmn:StartEvent');
mapConfig.value = currentNode.mapConfig;
if (mapConfig.value?.isShowMap) {
}
footerStyle.value.width = mapConfig.value?.isShowMap ? "60%":"100%"
if(mapConfig.value?.isShowMap){}
} else {
currentNode = auditNode;
let currentMapNode = wfData.find((t) => t.type == 'bpmn:StartEvent');
mapConfig.value = currentMapNode.mapConfig;
footerStyle.value.width = mapConfig.value?.isShowMap ? "60%":"100%"
}
if (currentNode.authFields.length > 0) {
formVisble.value = true;
@ -763,11 +764,14 @@
}
}
async function handlerShowGeomtrys(currentNode) {
let info = currentNode.authFields?.find((item, index) => {
return item.component == 'MapGeom';
});
let layer: string = '';
async function handlerShowGeomtrys(currentNode){
let info = currentNode.authFields?.find((item,index)=>{
return item.component == "MapGeom"
})
let layer:string="";
// let layer:string="drone_shp_data";
if (info) {
layer = info?.mapSetData?.chooseLayer;
@ -776,10 +780,9 @@
createMessage.error('图斑未绑定图层服务!');
return;
}
let geomfiledValue = info.field.toLowerCase();
let gids = '';
let gids = "";
try {
await formBoxRef.value.getForm().then((res) => {
@ -824,7 +827,10 @@
createMessage.error('获取图斑数据失败!');
}
}
function onMapboxLoad() {
function onMapboxLoad(){
handlerShowGeomtrys(designerData.formCurrentNode);
}
//