dianlixunjian
徐景良 2024-07-11 17:32:11 +08:00
commit 12cfb51c78
25 changed files with 511 additions and 290 deletions

View File

@ -6,7 +6,7 @@
<div class="anticon" :class="getAppLogoClass" @click="goHome">
<img :src="VITE_GLOB_APP_LOGO" />
<div class="ml-2 truncate md:opacity-100" :class="getTitleClass" v-show="showTitle">
{{ title }}
{{ subjectLogoTitle ? subjectLogoTitle : title }}
</div>
</div>
</template>
@ -19,6 +19,8 @@
import { PageEnum } from '@/enums/pageEnum';
import { useUserStore } from '@/store/modules/user';
import { getAppEnvConfig } from '@/utils/env';
import { SUBJECT_LOGO_TITLE } from '@/enums/cacheEnum';
import { getAuthCache } from '@/utils/auth';
const { VITE_GLOB_APP_LOGO } = getAppEnvConfig();
@ -41,6 +43,8 @@
const { getCollapsedShowTitle } = useMenuSetting();
const userStore = useUserStore();
const { title } = useGlobSetting();
const subjectLogoTitle = getAuthCache(SUBJECT_LOGO_TITLE);
const go = useGo();
const getAppLogoClass = computed(() => [

View File

@ -41,6 +41,8 @@
import { subTableStore } from '@/store/modules/subTable';
import dayjs from 'dayjs';
const emits = defineEmits(['changeRadioVal']);
const subTableDataStore = subTableStore();
const props = defineProps({
data: {
@ -57,7 +59,7 @@
},
callModal: {
type: Boolean,
default: () => (false),
default: () => false,
},
});
const noTitleKey = ref(0);
@ -70,16 +72,18 @@
const nowTime = ref(dayjs().format('YYYY-MM-DD HH:mm:ss'));
const userName = localStorage.getItem('fireUserLoginName');
const cardRef = ref<any>();
if(props.callModal){
tableData.ifShow = true
if (props.callModal) {
tableData.ifShow = true;
}
const [registerForm, { getFieldsValue, setFieldsValue, updateSchema, resetFields, validate }] =
useForm({
labelWidth: 100,
schemas: formColumns.value,
showActionButtonGroup: false,
baseColProps: { lg: 24, md: 24 },
});
const [
registerForm,
{ getFieldsValue, setFieldsValue, updateSchema, resetFields, validate, clearValidate },
] = useForm({
labelWidth: 100,
schemas: formColumns.value,
showActionButtonGroup: false,
baseColProps: { lg: 24, md: 24 },
});
watch(
() => props.formData,
(newVal) => {
@ -100,6 +104,7 @@
{ deep: true },
);
const onTabChange = (event, field) => {
clearValidate();
let value = event.target.value;
subTableDataStore.setOneGroupData(field, value);
noTitleKey.value = value;
@ -111,20 +116,32 @@
childItem.value = childGourp.value[currentIndex];
}
formColumns.value.forEach((element) => {
if(element.component === 'CardGroup'){
element.slot = 'CardGroup'
if (element.component === 'CardGroup') {
element.slot = 'CardGroup';
}
element.show = false;
updateSchema([{ field: element.field, show: false }]);
if (element.index == value) {
element.show = true;
if (element.requiredString) {
element.itemProps.required = true;
updateSchema([{ field: element.field, itemProps: { required: true } }]);
}
updateSchema([{ field: element.field, show: true }]);
} else {
element.itemProps.required = false;
// delete element.itemProps.required;
clearValidate(element.field);
updateSchema([{ field: element.field, itemProps: { required: false } }]);
// updateSchema([{ field: element.field, itemProps: element.itemProps }]);
}
});
setTimeout(() => {
resetFields();
setFieldsValue(subTableDataStore.getGroupData);
}, 10);
emits('changeRadioVal');
};
if (tableData.componentProps) {
tableData.componentProps.options.forEach((element, index) => {
@ -140,6 +157,7 @@
...childElement,
show: index == 0 ? true : false,
index: element.value,
requiredString: childElement.itemProps.required,
});
if (childElement.component == 'CardGroup') {
childGourp.value.push({
@ -159,6 +177,7 @@
}
});
});
nextTick(() => {
if (Object.keys(subTableDataStore.getGroupData).includes(tableData.field)) {
noTitleKey.value = subTableDataStore.getGroupData[tableData.field];
@ -184,13 +203,19 @@
}
async function verify() {
try {
const data = await validate();
console.log(data);
} catch (error) {
console.log(error);
return false;
}
const data = await validate()
.then(async (data) => {
return true;
})
.catch(async (err) => {
console.log(err);
if (err.errorFields.length > 0) {
return false;
} else {
return true;
}
});
return data;
}
defineExpose({
verify,

View File

@ -1,6 +1,6 @@
<template>
<div class="my-form-viewer">
<template v-if="tabsColumns.length > 1">
<div v-show="tabsColumns.length > 1">
<a-tabs style="width: 100%" @change="tabsChange">
<a-tab-pane v-for="(colItem, index) in tabsColumns" :tab="colItem.label" :key="index">
<BasicForm ref="myDataBaseFormRef" @register="registerForm">
@ -11,6 +11,7 @@
:formData="cardGourpFormData"
:parentValue="cardGroupData[index].field"
ref="groupRef"
@changeRadioVal="radioVal"
/>
</template>
</BasicForm>
@ -21,7 +22,7 @@
</template>
</a-tab-pane>
</a-tabs>
</template>
</div>
<BasicForm
ref="myDataBaseFormRef"
@register="registerForm"
@ -34,6 +35,7 @@
:formData="cardGourpFormData"
:parentValue="cardGroupData[0].field"
ref="groupRef"
@changeRadioVal="radioVal"
/>
</template>
</BasicForm>
@ -74,7 +76,7 @@
</template>
<script lang="ts" setup>
import { onMounted, ref, defineProps, defineEmits } from 'vue';
import { onMounted, ref, defineProps, defineEmits, getCurrentInstance, nextTick } from 'vue';
import { BasicForm, useForm } from '@/components/Form';
import { functionGetFormDataFormScheme, LoadFormScheme } from '@/api/demo/formScheme';
import { PlusOutlined, DeleteOutlined } from '@ant-design/icons-vue';
@ -86,6 +88,7 @@
import { subTableStore } from '@/store/modules/subTable';
import dayjs from 'dayjs';
const { proxy } = getCurrentInstance();
const emit = defineEmits(['getFormSuccess']);
const subTableDataStore = subTableStore();
@ -130,15 +133,17 @@
}
});
};
const [registerForm, { getFieldsValue, setFieldsValue, updateSchema, resetFields, validate }] =
useForm({
labelWidth: 100,
schemas: formColumns,
showActionButtonGroup: false,
actionColOptions: {
span: 24,
},
});
const [
registerForm,
{ getFieldsValue, setFieldsValue, updateSchema, resetFields, validate, clearValidate },
] = useForm({
labelWidth: 100,
schemas: formColumns,
showActionButtonGroup: false,
actionColOptions: {
span: 24,
},
});
async function getFormHistory() {
const data = await LoadFormScheme({
schemeId: props.formVerison,
@ -403,6 +408,24 @@
const groupRef = ref();
async function getForm() {
try {
//form
setFieldsValue({
...subTableDataStore.getGroupData,
});
//
if (groupRef.value) {
if (tabsColumns.value.length > 0) {
if (!(await groupRef.value[0].verify())) {
return false;
}
} else {
if (!(await groupRef.value.verify())) {
return false;
}
}
}
//
let values = await validate();
for (const key in values) {
for (const fieKey in FieldsValue.value) {
@ -444,6 +467,7 @@
});
});
}
console.log(query);
return query;
} catch (error) {
console.error(error);
@ -461,6 +485,14 @@
getFormHistory();
}
});
function radioVal() {
console.log('radioVal');
clearValidate();
//form
setFieldsValue({
...subTableDataStore.getGroupData,
});
}
</script>
<style lang="less" scoped>

View File

@ -342,6 +342,7 @@
})
props.mapConfig.baseLayers?.forEach((item,index)=>{
console.log("baselayers",item);
let layer = JSON.parse(item.style);
let image = item.image.replace('\\','/');
let layers = {
@ -350,7 +351,7 @@
fixed:false,
// zoom:0,
easeToOptions:{},
active:false,
active:item.checked,
backgroundImage:VITE_GLOB_API_URL_VAR.value+image,
backgroundImageActive:"",
onVisibleChange:(visible:boolean)=>{

View File

@ -3,7 +3,7 @@
<img id="zoomableImage" draggable="false" :src="imageUrl" />
<div class="operation-container">
<div>
<UndoOutlined />
<UndoOutlined @click="backTransFrom"/>
</div>
<div>
<ZoomInOutlined @click="bigScale" />
@ -40,6 +40,11 @@ let initialMouseX;
let initialMouseY;
let initialImageX;
let initialImageY;
var scale = 1;
var minScale = 0.5;
var maxScale = 3;
var scaleFactor = 0.1;
var rotate = 0;
onMounted(()=>{
@ -185,6 +190,14 @@ function bigScale():void {
scale+=0.4;
zoomableImage.style.transform = `scale(${scale})`;
}
function transform (){
rotate += 90;
zoomableImage.style.transform = `rotate(${rotate}deg)`;
}
function backTransFrom() {
rotate -= 90;
zoomableImage.style.transform = `rotate(${rotate}deg)`;
}
function closePreview():void{
emits("closeImagePreview");

View File

@ -31,6 +31,7 @@ export const TABLE_SETTING_KEY = 'TABLE__SETTING__KEY__';
// 专题设置
export const SUBJECT_KEY = 'SUBJECT__';
export const SUBJECT_LOGO_TITLE = 'SUBJECT_LOGO_TITLE__';
export enum CacheTypeEnum {
SESSION,

View File

@ -1,6 +1,11 @@
<template>
<div :class="prefixCls">
<Popover title="" trigger="click" :overlayClassName="`${prefixCls}__overlay`">
<Popover
v-model:visible="visible"
title=""
trigger="click"
:overlayClassName="`${prefixCls}__overlay`"
>
<Badge :count="count" dot :numberStyle="numberStyle">
<BellOutlined />
</Badge>
@ -45,16 +50,16 @@
import { Look } from '@/views/demo/workflow/task/process/page';
import { useModal } from '@/components/Modal';
import NoticeList from './NoticeList.vue';
import Message from './message.vue';
import { signal } from '@/utils/signalR';
import { getDetail } from '@/api/sys/WFSchemeInfo';
import { flowStore } from '@/store/modules/flow';
import DetailModal from '@/views/demo/message/msg/DetailModal.vue';
const flowWfDataStore = flowStore();
const [registerModal, { openModal }] = useModal();
const [registerModal, { openModal: openLookModal }] = useModal();
const userStore = useUserStore();
const userInfo: any = userStore.getUserInfo;
const visible = ref(false);
const { prefixCls } = useDesign('header-notify');
const { createMessage, notification } = useMessage();
const listData = ref(tabListData);
@ -73,6 +78,8 @@
});
async function onNoticeClick(record) {
console.log(record);
visible.value = false;
const index = listData.value[0].list.findIndex((item: any) => item.id === record.id);
if (index !== -1) {
listData.value[0].list.splice(index, 1);
@ -91,17 +98,25 @@
taskId.value = info.Id;
type.value = info.Type;
} else {
openModal(true, {
record,
openLookModal(true, {
record: {
content: record.title,
createDate: record.datetime,
isRead: 0,
},
});
}
} else {
openModal(true, {
record,
openLookModal(true, {
record: {
content: record.title,
createDate: record.datetime,
isRead: 0,
},
});
}
const data = await readMsg({
id: record.msgId,
id: record.id,
});
}
async function getList() {

View File

@ -4,7 +4,7 @@ import { defineStore } from 'pinia';
import { store } from '@/store';
import { RoleEnum } from '@/enums/roleEnum';
import { PageEnum } from '@/enums/pageEnum';
import { ROLES_KEY, TOKEN_KEY, USER_INFO_KEY, SUBJECT_KEY } from '@/enums/cacheEnum';
import { ROLES_KEY, TOKEN_KEY, USER_INFO_KEY, SUBJECT_KEY, SUBJECT_LOGO_TITLE } from '@/enums/cacheEnum';
import { getAuthCache, setAuthCache } from '@/utils/auth';
import { GetUserInfoModel, LoginParams } from '@/api/sys/model/userModel';
import { doLogout, getUserInfo, loginApi } from '@/api/sys/user';
@ -25,6 +25,7 @@ interface UserState {
sessionTimeout?: boolean;
lastUpdateTime: number;
subject?: string;
subjectLogoTitle?: string;
}
export const useUserStore = defineStore({
@ -41,6 +42,7 @@ export const useUserStore = defineStore({
// Last fetch time
lastUpdateTime: 0,
subject: '',
subjectLogoTitle: '',
}),
getters: {
getUserInfo(state): UserInfo {
@ -61,11 +63,15 @@ export const useUserStore = defineStore({
getSubject(state): string {
return state.subject || getAuthCache<string>(SUBJECT_KEY);
},
getSubjectLogoTitle(state): string {
return state.subjectLogoTitle || getAuthCache<string>(SUBJECT_LOGO_TITLE);
},
},
actions: {
async setSubject(subject: string | undefined, link: string) {
async setSubject(subject: string | undefined, logoTitle: string | undefined, link: string) {
this.subject = subject;
setAuthCache(SUBJECT_KEY, subject);
setAuthCache(SUBJECT_LOGO_TITLE, logoTitle);
if (subject != undefined) {
const permissionStore = usePermissionStore();
await permissionStore.buildRoutesAction();

View File

@ -6,6 +6,7 @@ import { createLocalStorage, createSessionStorage } from '@/utils/cache';
import { Memory } from './memory';
import {
SUBJECT_KEY,
SUBJECT_LOGO_TITLE,
TOKEN_KEY,
USER_INFO_KEY,
ROLES_KEY,
@ -22,6 +23,7 @@ import { pick, omit } from 'lodash-es';
interface BasicStore {
[SUBJECT_KEY]: string | number | null | undefined;
[SUBJECT_LOGO_TITLE]: string | number | null | undefined;
[TOKEN_KEY]: string | number | null | undefined;
[USER_INFO_KEY]: UserInfo;
[ROLES_KEY]: string[];

View File

@ -1,5 +1,5 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" title="消息">
<BasicModal v-bind="$attrs" @register="registerModal" title="消息" @ok="submit">
<Description
:collapseOptions="{ canExpand: true, helpMessage: 'help me' }"
:column="1"
@ -42,4 +42,7 @@
label: '创建时间',
},
];
function submit() {
closeModal();
}
</script>

View File

@ -265,6 +265,16 @@
dataChildItem.dbColumnName === childItem.componentProps.fieldName,
);
childItem.csType = element.data[currentIndex].csType;
if (childItem.csType == 'int') {
if (
childItem.componentProps.options &&
childItem.componentProps.options.length > 0
) {
childItem.componentProps.options.forEach((optionChild) => {
optionChild.value = Number(optionChild.value);
});
}
}
}
});
if (childItem.component === 'CardGroup') {

View File

@ -49,7 +49,7 @@ export const columns: BasicColumn[] = [
},
{
title: '耕地面积',
dataIndex: 'typeTuituCount',
dataIndex: 'gengdiarea',
},
{
title: '判定结果',
@ -79,10 +79,6 @@ export const columns: BasicColumn[] = [
title: '整改措施',
dataIndex: 'measurename',
},
{
title: '实际用途',
dataIndex: 'qitauseto',
},
];
export const searchFormSchema: FormSchema[] = [

View File

@ -17,13 +17,23 @@
<a-input v-model:value="modalData.id" />
</a-form-item>
<a-form-item label="专栏名称" name="title">
<a-textarea v-model:value="modalData.title" />
<a-input v-model:value="modalData.title" />
</a-form-item>
<a-form-item label="LOGO名称" name="logoTitle">
<a-input v-model:value="modalData.logoTitle" />
</a-form-item>
<a-form-item label="状态" name="isShow">
<a-select v-model:value="modalData.isShow">
<a-select-option :value="true">启用</a-select-option>
<a-select-option :value="false">停用</a-select-option>
</a-select>
</a-form-item>
<a-form-item label="是否开放" name="isDevelop">
<a-switch
v-model:checked="modalData.isDevelop"
checked-children="开放"
un-checked-children="不开放"
/>
</a-form-item>
<a-form-item label="流程分类" name="category">
<a-select
@ -39,10 +49,10 @@
un-checked-children="否"
/>
</a-form-item>
<a-form-item label="外部链接" name="linkOrApi" v-if="modalData.isExternal">
<a-form-item label="外部链接" name="linkOrApi" v-if="modalData.isExternal" :required="modalData.isDevelop">
<a-input v-model:value="modalData.linkOrApi" />
</a-form-item>
<a-form-item label="跳转首页" name="linkOrApi" v-if="!modalData.isExternal">
<a-form-item label="跳转首页" name="linkOrApi" v-if="!modalData.isExternal" :required="modalData.isDevelop">
<a-input v-model:value="modalData.linkOrApi" />
</a-form-item>
<a-form-item label="排序号" name="sort">
@ -95,7 +105,9 @@
const modalData = ref({
id: '' as string,
title: '' as string,
logoTitle: '' as string,
isShow: true as boolean,
isDevelop: false as boolean,
isExternal: false as boolean,
linkOrApi: '' as string,
sort: 0 as number,
@ -119,6 +131,7 @@
getCategory();
});
//
async function getCategory() {
categoryOptions.value = await getLoad({ code: 'FlowSort' });
}

View File

@ -17,6 +17,11 @@ export const columns: BasicColumn[] = [
dataIndex: 'title',
width: 200,
},
{
title: 'LOGO名称',
dataIndex: 'logoTitle',
width: 200,
},
{
title: '类型',
dataIndex: 'isExternal',
@ -32,6 +37,11 @@ export const columns: BasicColumn[] = [
dataIndex: 'isShow',
width: 200,
},
{
title: '是否开放',
dataIndex: 'isDevelop',
width: 200,
},
{
title: '排序',
dataIndex: 'sort',

View File

@ -1,5 +1,5 @@
<template>
<div class="page-div categories-page">
<div>
<BasicTable @register="registerTable">
<template #toolbar>
<PermissionBtn @btnEvent="buttonClick"></PermissionBtn>
@ -17,6 +17,10 @@
@change="changeIsShow(record)"
/>
</template>
<template v-if="column.key === 'isDevelop'">
<a-tag color="yellow" v-if="record.isDevelop"></a-tag>
<a-tag color="gray" v-else></a-tag>
</template>
<template v-if="column.key === 'action'">
<a-button v-if="record.sort > 1" type="dashed" @click="sortUp(record)">
<template #icon>
@ -63,7 +67,9 @@
data: {
id: '' as string,
title: '' as string,
logoTitle: '' as string,
isShow: true as boolean,
isDevelop: false as boolean,
isExternal: false as boolean,
linkOrApi: '' as string,
sort: 0 as number,
@ -128,9 +134,13 @@
temp_add.data = {
id: '',
title: '',
logoTitle: '',
isShow: true,
imgUrl: '',
isDevelop: false,
isExternal: false,
linkOrApi: '',
sort: sortNumber + 1,
imgUrl: '',
};
openModal(true, temp_add);
break;
@ -141,7 +151,7 @@
}
let temp_edit = cloneDeep(modalData);
temp_edit.title = '编辑';
temp_edit.data = getSelectRows()[0];
temp_edit.data = cloneDeep(getSelectRows()[0]);
openModal(true, temp_edit);
break;
case 'btnDelete':
@ -194,74 +204,3 @@
reload();
}
</script>
<style lang="scss" scoped>
.page-div {
position: relative;
top: 10px;
left: 10px;
width: calc(100% - 20px);
height: calc(100% - 20px);
display: flex;
.left-div {
background-color: #fff;
display: flex;
flex-direction: column;
.header {
display: flex;
flex-direction: column;
padding: 10px;
border-bottom: 1px solid #eee;
.buttons-div {
display: flex;
justify-content: space-between;
}
.search-div {
margin-top: 10px;
display: flex;
}
}
.content {
border-radius: 5px;
height: 100%;
overflow: auto;
.showTree {
height: 100%;
overflow: auto;
}
}
}
.right-div {
flex: 1;
display: flex;
flex-direction: column;
}
}
</style>
<style lang="scss">
.categories-page {
.left-div {
.h-full {
height: auto;
}
.search-div {
.ant-btn-primary {
background-color: #2a7dc9;
}
.ant-input-search-button {
width: 42px;
}
}
}
}
.categories-modal {
.ant-modal-footer > button {
display: none;
}
.ant-modal-footer {
margin-top: 0px;
border-top: 0px;
}
}
// ant-table-header
</style>

View File

@ -2,10 +2,10 @@
<div class="screen-div">
<div class="screen-row">
<div class="screen-item">
<div class="screen-item-label">年份</div>
<div class="screen-item-label" style="margin-right:9px;">年份</div>
<a-select
allowClear
style="flex: 1"
style="width: 103px"
v-model:value="props.year"
:options="yearOptions"
@change=" (value) => {
@ -13,11 +13,11 @@
}"
/>
</div>
<div class="screen-item">
<div class="screen-item-label" style="width: 85px;">图斑来源</div>
<div class="screen-item" style="margin-left:20px;margin-right:17px;">
<div class="screen-item-label" style="margin-right:11px;">图斑来源</div>
<a-select
allowClear
style="flex: 1"
style="width: 142px"
v-model:value="props.patchSource"
:options="patchSourceOptions"
@change="
@ -28,10 +28,10 @@
/>
</div>
<div class="screen-item">
<div class="screen-item-label">批次</div>
<div class="screen-item-label" style="margin-right:9px;">批次</div>
<a-select
allowClear
style="flex: 1"
style="width: 117px"
v-model:value="props.batch"
:options="batchOptions"
@change="
@ -54,7 +54,8 @@
v-if="dataList.length > 0"
>
<div class="name-div">
<div class="item-mark"></div>
<!-- <div class="item-mark"></div> -->
<img src="/positioning.png" class="item-mark"/>
<div class="item-label">{{ item.areaname }}</div>
<div class="progress-div">
<div class="progress-label progress-color">进度</div>
@ -64,13 +65,13 @@
</div>
<div class="progress-div">
<div class="progress-label extended-color">超期</div>
<div class="progress-data" style="width:50px">
<div class="progress-data" style="width:40px">
<span style="color: #D03542">{{item.overduetask}}</span>
</div>
</div>
<div class="progress-div">
<div class="progress-label reviewed-color" style="width:70px;">待审核</div>
<div class="progress-data" style="width:50px">
<div class="progress-data" style="width:31px">
<span style="color: #EC7908;">{{item.verifytask}}</span>
</div>
</div>
@ -80,18 +81,22 @@
<div class="info-data-label">合法</div>
<div class="info-data-data">{{item.legalcase}}</div>
</div>
<div style="width: 1px;margin-right:21px;margin-left:21px;background-color:#EDEDED;height: 15px;"></div>
<div class="info-data-item">
<div class="info-data-label">其他</div>
<div class="info-data-data">{{item.ilegalcase}}</div>
</div>
<div style="width: 1px;margin-right:21px;margin-left:19px;background-color:#EDEDED;height: 15px;"></div>
<div class="info-data-item">
<div class="info-data-label">非粮化</div>
<div class="info-data-data">{{item.nonfoodcase}}</div>
</div>
<div style="width: 1px;margin-right:17px;margin-left:21px;background-color:#EDEDED;height: 15px;"></div>
<div class="info-data-item">
<div class="info-data-label">复耕</div>
<div class="info-data-data">{{item.rehabilitationcase}}</div>
</div>
<div style="width: 1px;margin-right:21px;margin-left:17px;background-color:#EDEDED;height: 15px;"></div>
<div class="info-data-item">
<div class="info-data-label">补手续</div>
<div class="info-data-data">{{item.makeupcase}}</div>
@ -125,32 +130,46 @@
<style lang="less" scoped>
.screen-div {
background: @component-background;
padding: 10px;
padding: 22px 12px 14px 13px;
.screen-row {
display: flex;
height: 39px;
.screen-item {
font-family: Alibaba PuHuiTi;
font-weight: 500;
font-size: 17px;
color: #000000;
width: 33.3%;
// width: 33.3%;
display: flex;
.screen-item-label {
width: 56px;
padding-left: 10px;
font-family: Alibaba PuHuiTi;
font-weight: 500;
font-size: 17px;
color: #000000;
line-height: 30px;
display: flex;
align-items: center;
}
:deep(.ant-select-selector){
display: flex;
align-items: center;
font-family: HarmonyOS Sans;
font-weight: 500;
font-size: 19px;
color: #000000;
line-height: 30px;
height: 39px;
box-shadow: 2px 3px 3px 1px rgba(13,13,13,0.05);
}
}
}
}
.data-list {
height: calc(100% - 62px);
height: calc(100% - 85px);
// background: darkgoldenrod;
// background: @component-background;
margin-top: 10px;
padding: 0px 10px;
padding: 0px 11px 0px 13px;
.data-title {
height: 40px;
background: #bab9b7;
@ -167,38 +186,36 @@
width: 100%;
background: #fff;
border-radius: 11px;
padding: 10px;
margin-bottom: 10px;
padding: 0px 17px 0px 12px;
margin-bottom: 8px;
.name-div {
display: flex;
display: flex;
height: 50px;
display: flex;
height: 50px;
height: 57px;
align-items: center;
padding: 10px 0px;
border-bottom: 1px solid #E5E5E5;
}
.info-data-div{
height: 61px;
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 10px;
padding-left: 2px;
// justify-content: space-between;
// margin-top: 10px;
.info-data-item{
display: flex;
align-items: center;
flex: 1;
// flex: 1;
justify-content: center;
border-right: 1px solid #EDEDED;
// border-right: 1px solid #EDEDED;
.info-data-label{
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 16px;
color: #959494;
display: flex;
justify-content: end;
flex: 1;
padding-right: 5px;
line-height: 30px;
margin-right: 11px;
}
.info-data-data{
font-family: HarmonyOS Sans;
@ -206,10 +223,7 @@
font-size: 16px;
color: #000000;
line-height: 30px;
flex: 1;
display: flex;
justify-content: start;
padding-left: 5px;
}
}
.info-data-item:nth-last-child(1){
@ -221,23 +235,26 @@
margin-right: 5px;
}
.item-mark {
width: 5px;
height: 5px;
background: #086dec;
margin-left: 7px;
margin-right: 7px;
width: 17px;
height: 17px;
// background: #086dec;
// margin-left: 7px;
// margin-right: 7px;
}
.item-label {
width: 100px;
font-size: 16px;
font-weight: 600;
margin-left: 5px;
width: 122px;
padding-left: 9px;
font-family: Alibaba PuHuiTi;
font-weight: 500;
font-size: 23px;
color: #000000;
line-height: 30px;
}
.progress-div{
display:flex;
font-weight: 500;
font-size: 16px;
line-height: 30px;
// font-weight: 500;
// font-size: 16px;
// line-height: 30px;
margin-right: 17px;
.progress-label{
font-family: Alibaba PuHuiTi;
@ -256,6 +273,11 @@
align-items: center;
justify-content: center;
border-radius: 0px 0px 11px 0px;
font-family: HarmonyOS Sans;
font-weight: 500;
font-size: 19px;
// color: #086DEC;
line-height: 30px;
}
.progress-color{
background: #086DEC;

View File

@ -1,48 +1,48 @@
<template>
<div class="map-list-content">
<div class="screen-div">
<div class="screen-item">
<div class="screen-item" style="margin-right:20px;margin-bottom:15px;">
<div class="screen-item-label">年份</div>
<a-select
allowClear
style="flex: 1"
style="width:103px;"
v-model:value="params.year"
:options="props.yearOptions"
/>
</div>
<div class="screen-item">
<div class="screen-item" style="margin-right:17px;margin-bottom:15px;">
<div class="screen-item-label">图斑来源</div>
<a-select
allowClear
style="flex: 1"
v-model:value="params.patchSource"
style="width:142px;"
v-model:value="params.tubanlaiyuan"
:options="patchSourceOptions"
/>
</div>
<div class="screen-item">
<div class="screen-item" style="margin-bottom:15px;">
<div class="screen-item-label">批次</div>
<a-select
allowClear
style="flex: 1"
v-model:value="params.batch"
style="width:117px;"
v-model:value="params.picihao"
:options="props.batchOptions"
/>
</div>
<div class="screen-item" style="margin-bottom:0px;">
<div class="screen-item" style="margin-right:13px;">
<div class="screen-item-label">类型</div>
<a-select
allowClear
style="flex: 1"
v-model:value="params.is_build_complete"
style="width:136px;"
v-model:value="params.is_build_name"
:options="markTypeOptions"
/>
</div>
<div class="screen-item" style="width: 44.4%;margin-bottom:0px;">
<div class="screen-item-label">图斑号</div>
<a-input v-model:value="params.geomid" style="flex: 1" />
<div class="screen-item" style="margin-right:51px;">
<!-- <div class="screen-item-label">图斑号</div> -->
<a-input v-model:value="params.geomid" class="item-input" placeholder="请输入图斑编号"/>
</div>
<div class="screen-item" style="width: 22.2%;display: flex; justify-content: end;margin-bottom: 0px;">
<a-button type="primary" :icon="h(SearchOutlined)" @click="query"></a-button>
<div class="screen-item" style="display: flex; justify-content: end;margin-bottom: 0px;">
<a-button type="primary" class="item-button" :icon="h(SearchOutlined)" @click="query"></a-button>
</div>
</div>
<div class="sift-div">
@ -139,7 +139,7 @@
<div class="info-layout-div">
<div>
<Icon
:style="`font-size: 30px; color: #314A8C; cursor: pointer;${item.isouttime === 0? 'color: #314A8C;': item.isouttime === 1? 'color: #F7710F;': 'color: #D03542;'}`"
:style="`font-size: 30px; color: #314A8C; cursor: pointer;${item.isouttime === 2? 'color: #D03542;': item.isouttime === 1? 'color: #F7710F;': 'color: #314A8C;'}`"
icon="icon-park-solid:timer"
@click="()=>{}"
/>
@ -420,6 +420,9 @@
}
getTaskList();
}
const closeMolder = () => {
getTaskList();
}
</script>
<style lang="less">
.full-modal {
@ -450,26 +453,60 @@
flex-direction: column;
}
.screen-div {
padding: 10px 10px 19px 10px;
padding: 22px 12px 19px 13px;
display: flex;
width: 590px;
// margin-top: 10px;
flex-wrap: wrap;
// background: @component-background;
.screen-item {
width: 33.3%;
// width: 33.3%;
display: flex;
margin-bottom: 15px;
// margin-bottom: 15px;
font-family: Alibaba PuHuiTi;
font-weight: 500;
font-size: 17px;
color: #000000;
height: 39px;
.screen-item-label {
width: 83px;
padding-left: 10px;
font-family: Alibaba PuHuiTi;
font-weight: 500;
font-size: 17px;
color: #000000;
line-height: 30px;
display: flex;
align-items: center;
// font-size: 15px;
margin-right: 9px;
}
:deep(.ant-select-selector){
display: flex;
align-items: center;
font-family: HarmonyOS Sans;
font-weight: 500;
font-size: 19px;
color: #000000;
line-height: 30px;
height: 39px;
box-shadow: 2px 3px 3px 1px rgba(13,13,13,0.05);
}
.item-input{
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 19px;
color: #000000;
line-height: 30px;
width:223px;
box-shadow: 2px 3px 3px 1px rgba(13,13,13,0.05);
}
.item-button{
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 19px;
color: #FFFFFF;
line-height: 30px;
height:39px;
width: 97px;
background:#086DEC;
}
}
.screen-button-div {
@ -608,7 +645,8 @@
.data-list-info-div{
display: flex;
justify-content: space-between;
padding-top: 10px;
margin-top: 10px;
height: 40px;
.info-layout-div{
display:flex;
align-items: center;
@ -627,7 +665,7 @@
width: 80px;
border-radius: 7px;
margin-right: 8px;
height: 30px;
height: 33px;
justify-content: center;
.info-label{
font-family: Alibaba PuHuiTi;

View File

@ -97,7 +97,7 @@
level.value = item.level
};
function changeShowParent() {
console.log('dedededede');
getCountList()
showParent.value = true;
}
async function getCountList() {

View File

@ -7,10 +7,10 @@
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
<a-form-item ref="name" label="案件编号">
<a-form-item label="案件编号" name="case_no">
<a-input v-model:value="formState.case_no" disabled />
</a-form-item>
<a-form-item ref="name" label="案件描述">
<a-form-item label="案件描述" name="case_description">
<a-input v-model:value="formState.case_description" disabled />
</a-form-item>
<a-form-item label="县区" name="countyid">
@ -40,7 +40,9 @@
</a-form-item>
</a-form>
</a-modal>
<a-modal v-if="false" v-bind="$attrs" @register="registerModal" title="飞地调整" @ok="handleSubmit" >
<a-form
ref="formRef"
:model="formState"
@ -48,10 +50,10 @@
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
<a-form-item ref="name" label="案件编号">
<a-form-item label="案件编号" name="case_no">
<a-input v-model:value="formState.case_no" disabled />
</a-form-item>
<a-form-item ref="name" label="案件描述">
<a-form-item label="案件描述" name="case_description">
<a-input v-model:value="formState.case_description" disabled />
</a-form-item>
<a-form-item label="县区" name="countyid">
@ -80,10 +82,10 @@
/>
</a-form-item>
</a-form>
</a-modal>
</a-modal> -->
</template>
<script lang="ts" setup>
import { ref, reactive, onMounted,defineProps } from 'vue';
import { ref, reactive, onMounted, defineProps, watch } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { useMessage } from '@/hooks/web/useMessage';
import { updateDroneCaseInfo, getCaseInfoById } from '@/api/tiankongdi/index.ts';
@ -91,18 +93,21 @@
const { createMessage } = useMessage();
defineOptions({ name: 'AccountModal' });
const formRef = ref();
const emit = defineEmits(['success', 'register',"closeModel"]);
const emit = defineEmits(['success', 'register', 'closeModel']);
const props = defineProps({
modalShow:{
type:Boolean,
default:false,
readonly:false,
}
modalShow: {
type: Boolean,
default: false,
readonly: false,
},
modalRecord: {
type: Object,
default: {},
},
});
const labelCol = { span: 4 };
const wrapperCol = { span: 14 };
const formState: any = ref({});
const case_no = ref();
const rules = ref({
countyid: [{ required: true, message: '县区不能为空', trigger: 'blur' }],
streetid: [{ required: true, message: '乡镇不能为空', trigger: 'blur' }],
@ -114,17 +119,20 @@
communityOptions: [],
});
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
setModalProps({ confirmLoading: false });
case_no.value = data.record.id;
getDetail();
getParent();
});
async function getDetail() {
watch(
() => props.modalShow,
() => {
if (props.modalShow) {
getDetail(props.modalRecord.id);
}
},
);
async function getDetail(id) {
const data = await getCaseInfoById({
id: case_no.value,
id: id,
});
formState.value = data;
getParent();
}
async function handleCountyChange(value, option) {
formState.value.countyid = value;
@ -173,9 +181,8 @@
});
}
function handlerCloseModal(){
emit("closeModel");
function handlerCloseModal() {
emit('closeModel');
}
async function handleSubmit() {
try {
@ -196,7 +203,7 @@
console.log(data);
if (data) {
// closeModal();
emit("closeModel");
emit('closeModel');
return createMessage.success(data);
} else {
return createMessage.error(data);
@ -206,7 +213,7 @@
console.log('error', error);
});
} finally {
setModalProps({ confirmLoading: false });
}
}
onMounted(() => {

View File

@ -63,7 +63,7 @@
<a-descriptions-item label="项目主体">{{ xiangmuzhuti }}</a-descriptions-item>
<a-descriptions-item label="实际用途">{{ actual_use_to }}</a-descriptions-item>
<a-descriptions-item label="违法类型">{{ getLabel('weifaleixing',weifaleixing) }}</a-descriptions-item>
<a-descriptions-item label="处理方式">{{ result_name }}</a-descriptions-item>
<a-descriptions-item label="处理方式">{{ getLabel('result_name',result_name) }}</a-descriptions-item>
<a-descriptions-item label="立案号">{{ registr_number }}</a-descriptions-item>
<a-descriptions-item label="违法联系人">{{ illegal_contact }}</a-descriptions-item>
<a-descriptions-item label="违法人身份证号">{{ illegal_shenfenzhenghao }}</a-descriptions-item>
@ -105,7 +105,7 @@
'min-width': '250px',
'word-break': 'break-all'
}">
<a-descriptions-item label="整改措施">{{ measure_name }}</a-descriptions-item>
<a-descriptions-item label="整改措施">{{ getLabel('measure_name',measure_name) }}</a-descriptions-item>
<a-descriptions-item label="验收表">
<template v-for="(item, itemIndex) in yanshoubiaoList" :key="itemIndex" >
<div v-if="item">
@ -182,6 +182,7 @@ import {
mapStatusOptions,
markTypeOptions,
illegalTypeList,
resultOptions,
} from '@/views/demo/tiankongdi/curbspotcity/util.ts'
const MapboxComponent = ref();
@ -326,6 +327,12 @@ const getLabel = (type,value) => {
case 'weifaleixing':
result = illegalTypeList
break;
case 'measure_name':
result = measureOptions
break;
case 'result_name':
result = resultOptions
break;
}
result.forEach(item => {
if(item.value == value){

View File

@ -11,80 +11,81 @@
</a-radio-group>
</div>
<div class="screen-div">
<div class="screen-item">
<div class="screen-item" style="margin-right:20px;margin-bottom:12px;">
<div class="screen-item-label">年份</div>
<a-select
allowClear
style="flex: 1;"
style="width:103px;"
v-model:value="props.infoScreenData.year"
:options="yearOptions"
@change="(value) => emits('mapListScreenChange',value,'year')"
/>
</div>
<div class="screen-item">
<div class="screen-item-label" style="width:84px;">图斑来源</div>
<div class="screen-item" style="margin-right:17px;margin-bottom:12px;">
<div class="screen-item-label" style="margin-right: 11px;">图斑来源</div>
<a-select
allowClear
style="flex: 1;"
style="width:142px;"
v-model:value="props.infoScreenData.patchSource"
:options="patchSourceOptions"
@change="(value) => emits('mapListScreenChange',value,'patchSource')"
/>
</div>
<div class="screen-item">
<div class="screen-item" style="margin-bottom:12px;">
<div class="screen-item-label">批次</div>
<a-select
allowClear
style="flex: 1;"
style="width:117px;"
v-model:value="props.infoScreenData.batch"
:options="batchOptions"
@change="(value) => emits('mapListScreenChange',value,'batch')"
/>
</div>
<div class="screen-item">
<div class="screen-item" style="margin-right:15px;margin-bottom:22px;">
<div class="screen-item-label">标注</div>
<a-select
allowClear
style="flex: 1;"
style="width:136px;"
v-model:value="props.infoScreenData.markType"
:options="markTypeOptions"
@change="(value) => emits('mapListScreenChange',value,'markType')"
/>
</div>
<div class="screen-item" style="width:66.6%">
<div class="screen-item-label" style="width:84px;">下发时间</div>
<div class="screen-item" style="margin-bottom:22px;">
<div class="screen-item-label" style="margin-right: 10px;">下发时间</div>
<a-range-picker
:format="'YYYY-MM-DD'"
allowClear
style="flex: 1;"
style="width: 293px;"
class="item-time-select"
@change="(value) => emits('mapListScreenChange',value,'time')"
/>
</div>
<div class="screen-item">
<div class="screen-item" style="margin-right: 13px;">
<div class="screen-item-label">乡镇</div>
<a-select
allowClear
style="flex: 1;"
style="width:136px;"
v-model:value="props.infoScreenData.streetId"
:options="streetsAreaOptions"
@change="(value) => emits('mapListScreenChange',value,'streetId')"
/>
</div>
<div class="screen-item" style="width:40%">
<div class="screen-item" style="margin-right: 14px;">
<a-input
placeholder="请输入图斑编号"
style="flex:1;margin-left: 10px;"
class="item-input"
v-model:value="props.infoScreenData.mapNo"
@change="(value) => emits('mapListScreenChange',value.target.value,'mapNo')"
/>
</div>
<div class="screen-item" style="width: 23.3%">
<div class="screen-item">
<a-button
style="margin-left:10px;"
class="item-button"
type="primary"
:icon="h(SearchOutlined)"
@click="emits('getInfoList')">查询</a-button>
<Icon style="font-size: 20px;margin-left: 10px;" icon="streamline:interface-time-reset-time-clock-reset-stopwatch-circle-measure-loading" @click="emits('resetScreenData')" />
<Icon style="font-size: 25px;margin-left: 10px;" icon="streamline:interface-time-reset-time-clock-reset-stopwatch-circle-measure-loading" @click="emits('resetScreenData')" />
</div>
</div>
<div class="sift-div">
@ -490,6 +491,9 @@ const nextData = async () => {
type.value = record.type;
handoffShow.value = true
}
const closeMolder = () => {
emits('getInfoList')
}
</script>
<style lang="scss" scoped>
@ -534,25 +538,73 @@ const nextData = async () => {
padding: 10px;
}
.screen-div{
padding: 10px;
padding: 10px 12px 20px 13px;
display: flex;
width:590px;
flex-wrap: wrap;
.screen-item{
width: 33.3%;
// width: 33.3%;
display: flex;
margin-bottom: 12px;
font-family: Alibaba PuHuiTi;
font-weight: 500;
font-size: 17px;
color: #000000;
height: 39px;
// margin-bottom: 12px;
// font-family: Alibaba PuHuiTi;
// font-weight: 500;
// font-size: 17px;
// color: #000000;
.screen-item-label{
width: 53px;
padding-left: 10px;
font-family: Alibaba PuHuiTi;
font-weight: 500;
font-size: 17px;
color: #000000;
line-height: 30px;
// width: 53px;
// padding-left: 10px;
display: flex;
align-items: center;
margin-right: 9px;
// font-size: 15px;
}
:deep(.ant-select-selector){
display: flex;
align-items: center;
font-family: HarmonyOS Sans;
font-weight: 500;
font-size: 19px;
color: #000000;
line-height: 30px;
height: 39px;
box-shadow: 2px 3px 3px 1px rgba(13,13,13,0.05);
}
.item-input{
width:223px;
font-family: Alibaba PuHuiTi;
font-weight: 500;
font-size: 17px;
color: #000000;
line-height: 30px;
box-shadow: 2px 3px 3px 1px rgba(13,13,13,0.05);
}
.item-time-select{
box-shadow: 2px 3px 3px 1px rgba(13,13,13,0.05);
:deep(input){
font-family: HarmonyOS Sans;
font-weight: 500;
font-size: 15px;
color: #000000;
line-height: 30px;
}
}
.item-button{
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 19px;
color: #FFFFFF;
line-height: 30px;
height:39px;
width: 97px;
background: #086DEC;
// margin-left:12px;
}
}
.screen-button-div{
display: flex;
@ -565,16 +617,25 @@ const nextData = async () => {
}
.top-radio-button-div{
width:100%;
padding:33px 10px 8px 10px;
padding: 33px 12px 8px 13px;
:deep(.ant-radio-button-wrapper-checked){
font-family: Alibaba PuHuiTi;
font-weight: 500 !important;
font-size: 20px;
color: #FFFFFF !important;
line-height: 40px;
background: #086DEC;
}
.radio-item{
width:50%;
text-align: center;
height: 40px;
user-select: none;
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 20px;
height: 40px;
color: #000000;
line-height: 40px;
user-select: none;
}
}
.sift-div{
@ -690,7 +751,8 @@ const nextData = async () => {
.data-list-info-div{
display: flex;
justify-content: space-between;
padding-top: 10px;
margin-top: 10px;
height: 40px;
.info-layout-div{
display:flex;
align-items: center;
@ -709,7 +771,7 @@ const nextData = async () => {
width: 80px;
border-radius: 7px;
margin-right: 8px;
height: 30px;
height: 33px;
justify-content: center;
.info-label{
font-family: Alibaba PuHuiTi;

View File

@ -56,4 +56,10 @@ export const isOverdueOptions = [
export const illegalTypeList = [
{ label: '非农化违法用地', value: 0 },
{ label: '非粮化违法用地', value: 1 },
]
export const resultOptions = [
{ label: '立案', value: 0 },
{ label: '非立案', value: 1 },
{ label: '移交其他部门处理', value: 2 },
{ label: '未处理', value: 3 },
]

View File

@ -20,7 +20,12 @@
<a-layout>
<a-layout>
<a-layout-content>
<a-tabs v-model:activeKey="activeName" tabPosition="bottom" @change="changeActive" type="card">
<a-tabs
v-model:activeKey="activeName"
tabPosition="bottom"
@change="changeActive"
type="card"
>
<a-tab-pane
key="form"
:tab="
@ -31,7 +36,12 @@
v-if="formVisble"
>
<div>
<ImagePreview style="width:100%;height:" v-if="isShowImagePreview" :globalImagePreviewUrl="globalImagePreviewUrl" @closeImagePreview="closeImagePreview"></ImagePreview>
<ImagePreview
style="width: 100%; height:"
v-if="isShowImagePreview"
:globalImagePreviewUrl="globalImagePreviewUrl"
@closeImagePreview="closeImagePreview"
></ImagePreview>
<FormViewer
ref="formBoxRef"
@ -57,7 +67,7 @@
<AsyncComponent ref="pcForm" />
</a-tab-pane>
<a-tab-pane key="flow" tab="流程模板" force-render>
<div class="process-design" style="display: flex; height: calc( 100vh - 350px)">
<div class="process-design" style="display: flex; height: calc(100vh - 350px)">
<process-viewer
v-if="processVisble"
:key="`designer-${id}`"
@ -68,8 +78,7 @@
/>
</div>
</a-tab-pane>
<a-tab-pane key="record"
tab="操作记录" force-render>
<a-tab-pane key="record" tab="操作记录" force-render>
<div :style="'padding:10px 0 40px 0;overflow:auto; height:' + designerData.height">
<a-timeline>
<a-timeline-item
@ -201,7 +210,7 @@
import { functionsaveForm, LoadFormScheme } from '@/api/demo/formScheme';
import { FormViewer } from '@/components/FormViewer';
import { storeToRefs } from 'pinia';
import ImagePreview from "@/components/Upload/src/components/image_preview.vue";
import ImagePreview from '@/components/Upload/src/components/image_preview.vue';
import { userFormFileStore } from '@/store/modules/formFileUrl';
import {
@ -355,7 +364,9 @@
let wfData = content.wfData;
const map = new Map();
const newArr = data.logs.filter((v) => !map.has(v.unitId) && map.set(v.unitId, v));
rejectRelations.value = newArr.filter((item) => item.taskType == 1);
// taskType == 1 7
rejectRelations.value = newArr.filter((item) => item.taskType == 1 || item.taskType == 7);
const auditNode = wfData.find((t) => t.id == data.task.unitId);
if (auditNode.auditTitle) {
auditTitleVal.value = auditNode.auditTitle;
@ -368,12 +379,11 @@
}
}
let currentNode;
let currentMapNode = wfData.find((t) => t.type == 'bpmn:StartEvent');
mapConfig.value = currentMapNode.mapConfig;
console.log("MapCOnfig",mapConfig.value);
console.log('MapCOnfig', mapConfig.value);
if (auditNode.isInherit) {
currentNode = wfData.find((t) => t.type == 'bpmn:StartEvent');
mapConfig.value = currentNode.mapConfig;
@ -709,12 +719,12 @@
}
break;
}
if (res) {
closePage();
return createMessage.success('成功');
} else {
return createMessage.error('失败');
}
// if (res) {
// closePage();
// return createMessage.success('');
// } else {
// return createMessage.error('');
// }
}
async function auditFun() {
//
@ -802,7 +812,7 @@
}
function getFormSuccess(formData) {
if(mapConfig.value.isShowMap){
if (mapConfig.value.isShowMap) {
handlerShowGeomtrys(designerData.formCurrentNode, formData);
}
}
@ -888,10 +898,10 @@
//
const isShowImagePreview = ref<Boolean>(false);
const closeImagePreview = ()=>{
const closeImagePreview = () => {
isShowImagePreview.value = false;
}
const globalImagePreviewUrl=ref<String>();
};
const globalImagePreviewUrl = ref<String>();
const formFileStore = userFormFileStore();
const formFileState = storeToRefs(formFileStore);
watch(formFileState.url, (newValue, oldValue) => {
@ -1006,6 +1016,4 @@
.l-from-body {
padding: 10px 30px;
}
</style>

View File

@ -273,7 +273,7 @@
});
mapConfig.value = currentNode.mapConfig;
} else {
if (auditNode.isInherit) {
if (auditNode && auditNode.isInherit) {
currentNode = wfData.find((t) => t.type == 'bpmn:StartEvent');
mapConfig.value = currentNode.mapConfig;
footerStyle.value.width = mapConfig.value?.isShowMap ? '60%' : '100%';
@ -284,7 +284,7 @@
footerStyle.value.width = mapConfig.value?.isShowMap ? '60%' : '100%';
}
}
if (currentNode.authFields.length > 0) {
if (currentNode && currentNode.authFields.length > 0) {
formVisble.value = true;
} else {
activeName.value = 'flow';

View File

@ -87,7 +87,7 @@
const VITE_GLOB_API_URL_VAR = ref<String>(VITE_GLOB_API_URL + '/');
const { t } = useI18n();
let loginUser = localStorage.getItem('fireUserLoginName');
const loginUser: any = ref('');
const contentArea = ref<HTMLElement | null>(null);
const list: any = ref([]);
const userStore = useUserStore();
@ -102,6 +102,7 @@
}
});
list.value = res;
loginUser.value = localStorage.getItem('fireUserLoginName');
// cardRotationLoop();
}
//
@ -125,10 +126,6 @@
});
}
onMounted(() => {
getData();
});
//
const scrollToElement = async (type) => {
if (contentArea.value) {
@ -142,14 +139,14 @@
};
//
async function getHome(item) {
if (!item.linkOrApi) {
if (!item.isDevelop) {
message.warn('暂未开放!');
return;
}
if (item.isExternal) {
window.location.href = item.linkOrApi;
} else {
userStore.setSubject(item.id, item.linkOrApi);
userStore.setSubject(item.id, item.logoTitle, item.linkOrApi);
}
}
//
@ -172,6 +169,10 @@
function handleLoginOut() {
userStore.confirmLoginOut();
}
onMounted(() => {
getData();
});
</script>
<style lang="less" scoped>
.subject {