diff --git a/apps/web-antd/src/api/property/businessManagement/workOrders/model.d.ts b/apps/web-antd/src/api/property/businessManagement/workOrders/model.d.ts
index 302bca92..3513eafd 100644
--- a/apps/web-antd/src/api/property/businessManagement/workOrders/model.d.ts
+++ b/apps/web-antd/src/api/property/businessManagement/workOrders/model.d.ts
@@ -64,7 +64,7 @@ export interface WorkOrdersVO {
/**
* 评价
*/
- serviceEvalua: string;
+ serviceEvalua: number;
/**
* 是否超时
@@ -82,6 +82,8 @@ export interface WorkOrdersVO {
* 评价图片
*/
imgUrl: string;
+
+ evaluateImgPath: string | undefined;
/**
* 评价内容
*/
@@ -99,6 +101,12 @@ export interface WorkOrdersVO {
*/
orderImgUrl: string;
+ orderImgPath: string|undefined;
+
+ reportingType: string;
+
+ processingWeight: string;
+
}
export interface HandleRecords {
diff --git a/apps/web-antd/src/api/property/clean_order/model.d.ts b/apps/web-antd/src/api/property/clean_order/model.d.ts
index 74c0f48d..2b0b6751 100644
--- a/apps/web-antd/src/api/property/clean_order/model.d.ts
+++ b/apps/web-antd/src/api/property/clean_order/model.d.ts
@@ -144,6 +144,16 @@ export interface Clean_orderForm extends BaseEntity {
*/
phone?: string;
+ /**
+ * 签到图片
+ */
+ signImgUrl?: string;
+
+ /**
+ * 评价图片
+ */
+ imgUrl?: string;
+
}
export interface Clean_orderQuery extends PageQuery {
diff --git a/apps/web-antd/src/api/property/maintenance/knowledge/model.d.ts b/apps/web-antd/src/api/property/maintenance/knowledge/model.d.ts
index 8f61d24e..2d0262b4 100644
--- a/apps/web-antd/src/api/property/maintenance/knowledge/model.d.ts
+++ b/apps/web-antd/src/api/property/maintenance/knowledge/model.d.ts
@@ -21,6 +21,8 @@ export interface KnowledgeVO {
*/
covers: string;
+ coversPath: string|undefined;
+
/**
* 内容
*/
diff --git a/apps/web-antd/src/api/property/productManagement/model.d.ts b/apps/web-antd/src/api/property/productManagement/model.d.ts
index 5d611320..0019420c 100644
--- a/apps/web-antd/src/api/property/productManagement/model.d.ts
+++ b/apps/web-antd/src/api/property/productManagement/model.d.ts
@@ -26,6 +26,8 @@ export interface PropertyVO {
*/
imgPath: string;
+ plantImg: string;
+
/**
* 规格
*/
@@ -102,7 +104,6 @@ export interface PropertyForm extends BaseEntity {
* 备注
*/
remark?: string;
-
}
export interface PropertyQuery extends PageQuery {
@@ -178,6 +179,8 @@ export interface plantsProduct extends BaseEntity {
*/
imgPath?: string;
+ plantImg: string |undefined;
+
/**
* 规格
*/
diff --git a/apps/web-antd/src/api/property/resident/person/model.d.ts b/apps/web-antd/src/api/property/resident/person/model.d.ts
index 0e3d6e57..1fc4fa44 100644
--- a/apps/web-antd/src/api/property/resident/person/model.d.ts
+++ b/apps/web-antd/src/api/property/resident/person/model.d.ts
@@ -31,6 +31,8 @@ export interface PersonVO {
*/
img: string
+ imgPath?: string
+
/**
* 所属单位id
*/
@@ -79,6 +81,10 @@ export interface PersonVO {
rosterType?: string | number
+ email?: string
+
+ idCard?: string
+
}
export interface PersonForm extends BaseEntity {
diff --git a/apps/web-antd/src/api/property/roomBooking/conferenceSettings/model.d.ts b/apps/web-antd/src/api/property/roomBooking/conferenceSettings/model.d.ts
index 10b65829..11d1e48a 100644
--- a/apps/web-antd/src/api/property/roomBooking/conferenceSettings/model.d.ts
+++ b/apps/web-antd/src/api/property/roomBooking/conferenceSettings/model.d.ts
@@ -67,6 +67,8 @@ export interface MeetVO {
* 图片
*/
picture: string;
+
+ pictureArr: string[];
/**
* 开放时段开始时间
*/
@@ -75,6 +77,19 @@ export interface MeetVO {
* 开放时段结束时间
*/
openEndHours: string;
+
+ /**
+ * 会议室类型
+ */
+ meetingRoomType: string;
+ /**
+ * 位置
+ */
+ locationName: string;
+ /**
+ * 负责人
+ */
+ principalsName: string;
}
export interface MeetForm extends BaseEntity {
@@ -161,6 +176,8 @@ export interface MeetForm extends BaseEntity {
*/
picture: string;
+ pictureArr: string[];
+
/**
* 开放时段开始时间
*/
diff --git a/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue b/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue
index 13517c09..a185a8c4 100644
--- a/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue
+++ b/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue
@@ -8,6 +8,7 @@ import relativeTime from 'dayjs/plugin/relativeTime';
import {renderDict} from "#/utils/render";
import {workOrdersInfo} from "#/api/property/businessManagement/workOrders";
import type {HandleRecords, WorkOrdersVO} from "#/api/property/businessManagement/workOrders/model";
+import {ossInfo} from "#/api/system/oss";
dayjs.extend(duration);
dayjs.extend(relativeTime);
@@ -28,12 +29,24 @@ async function handleOpenChange(open: boolean) {
modalApi.modalLoading(true);
const {id} = modalApi.getData() as { id: number | string };
orderDetail.value = await workOrdersInfo(id);
- if(orderDetail.value){
+ if(orderDetail.value.workOrdersRecordVoList){
handleRecords.value = orderDetail.value.workOrdersRecordVoList.map( (item, index) => ({
status: item.status,
createTime: item.createTime,
handlerName: index === 0 ? item.initiatorPeople : item.handlerName
}))
+ }
+ try {
+ if (orderDetail.value.orderImgUrl) {
+ const res = await ossInfo([orderDetail.value.orderImgUrl]);
+ orderDetail.value.orderImgPath = res?.[0]?.url
+ }
+ if (orderDetail.value.imgUrl) {
+ const res = await ossInfo([orderDetail.value.imgUrl]);
+ orderDetail.value.evaluateImgPath = res?.[0]?.url
+ }
+ } catch (e) {
+
}
modalApi.modalLoading(false);
}
@@ -100,11 +113,11 @@ async function handleOpenChange(open: boolean) {
{{ orderDetail.serviceEvaluaText }}
-
- {{ orderDetail.imgUrl }}
+
+
-
- {{ orderDetail.orderImgUrl }}
+
+
diff --git a/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue b/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue
index cc11216f..e5f5c142 100644
--- a/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue
+++ b/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue
@@ -26,6 +26,7 @@ import cleanDetailModal from './clean-detail-modal.vue';
// import { modalSchema } from './data';
import { communityTree } from '#/api/property/community';
import { getDictOptions } from '#/utils/dict';
+import type {Clean_orderForm} from "#/api/property/clean_order/model";
const emit = defineEmits<{ reload: [] }>();
@@ -190,9 +191,13 @@ const modalSchema = [
{
label: '评价图片',
fieldName: 'imgUrl',
- component: 'Input',
+ component: 'ImageUpload',
+ componentProps: {
+ helpMessage: false,
+ },
dependencies: {
- show: () => (isReadonly.value ? true : false),
+ show: (formValue:Clean_orderForm) =>
+ isReadonly.value && formValue.imgUrl ? true : false,
triggerFields: [''],
},
},
@@ -216,7 +221,7 @@ const modalSchema = [
helpMessage: false,
},
dependencies: {
- show: (formValue) =>
+ show: (formValue:Clean_orderForm) =>
isReadonly.value && formValue.signImgUrl ? true : false,
triggerFields: [''],
},
diff --git a/apps/web-antd/src/views/property/clean/cleanOrders/data.ts b/apps/web-antd/src/views/property/clean/cleanOrders/data.ts
index b23abae7..52ba873d 100644
--- a/apps/web-antd/src/views/property/clean/cleanOrders/data.ts
+++ b/apps/web-antd/src/views/property/clean/cleanOrders/data.ts
@@ -74,8 +74,8 @@ export const columns: VxeGridProps['columns'] = [
},
{
title: '服务地址',
- field: 'location',
- width: '180',
+ field: 'locationName',
+ width: '260',
},
{
title: '合计费用(元)',
diff --git a/apps/web-antd/src/views/property/greenPlantRentalManagement/conservationManagement/data.ts b/apps/web-antd/src/views/property/greenPlantRentalManagement/conservationManagement/data.ts
index 20a6335e..99dde630 100644
--- a/apps/web-antd/src/views/property/greenPlantRentalManagement/conservationManagement/data.ts
+++ b/apps/web-antd/src/views/property/greenPlantRentalManagement/conservationManagement/data.ts
@@ -89,7 +89,7 @@ export const columns: VxeGridProps['columns'] = [
field: 'inspectResult',
slots: {
default: ({ row }) => {
- return renderDict(row.inspectResult, 'pro_inspection_results');
+ return row.inspectResult!=null? renderDict(row.inspectResult, 'pro_inspection_results'):'';
},
},
minWidth: '120',
@@ -152,6 +152,7 @@ export const modalSchema: FormSchemaGetter = () => [
component: 'Input',
rules: 'required',
labelWidth: 100,
+ formItemClass:'col-span-2'
},
{
label: '服务地点',
@@ -160,6 +161,7 @@ export const modalSchema: FormSchemaGetter = () => [
defaultValue: undefined,
rules: 'required',
labelWidth: 100,
+ formItemClass:'col-span-2'
},
{
label: '服务类型',
@@ -226,50 +228,51 @@ export const modalSchema: FormSchemaGetter = () => [
rules: 'required',
labelWidth: 100,
},
- {
- label: '巡检结果',
- fieldName: 'inspectResult',
- component: 'Select',
- componentProps: {
- options: getDictOptions('pro_inspection_results'),
- },
- rules: 'selectRequired',
- labelWidth: 100,
- },
- {
- label: '处理措施',
- fieldName: 'measure',
- component: 'Textarea',
- rules: 'required',
- labelWidth: 100,
- },
- {
- label: '客户评分',
- fieldName: 'customerScore',
- component: 'Rate',
- componentProps: {
- allowHalf: false,
- count: 5,
- tooltips: ['1星', '2星', '3星', '4星', '5星'],
- defaultValue: 0,
- },
- rules: 'required',
- labelWidth: 100,
- },
- {
- label: '客户反馈',
- fieldName: 'customerAdvice',
- component: 'Textarea',
- labelWidth: 100,
- },
- {
- label: '处理状态',
- fieldName: 'state',
- component: 'Select',
- componentProps: {
- options: getDictOptions('pro_processing_status'),
- },
- rules: 'selectRequired',
- labelWidth: 100,
- },
+ //
+ // {
+ // label: '巡检结果',
+ // fieldName: 'inspectResult',
+ // component: 'Select',
+ // componentProps: {
+ // options: getDictOptions('pro_inspection_results'),
+ // },
+ // rules: 'selectRequired',
+ // labelWidth: 100,
+ // },
+ // {
+ // label: '处理措施',
+ // fieldName: 'measure',
+ // component: 'Textarea',
+ // rules: 'required',
+ // labelWidth: 100,
+ // },
+ // {
+ // label: '客户评分',
+ // fieldName: 'customerScore',
+ // component: 'Rate',
+ // componentProps: {
+ // allowHalf: false,
+ // count: 5,
+ // tooltips: ['1星', '2星', '3星', '4星', '5星'],
+ // defaultValue: 0,
+ // },
+ // rules: 'required',
+ // labelWidth: 100,
+ // },
+ // {
+ // label: '客户反馈',
+ // fieldName: 'customerAdvice',
+ // component: 'Textarea',
+ // labelWidth: 100,
+ // },
+ // {
+ // label: '处理状态',
+ // fieldName: 'state',
+ // component: 'Select',
+ // componentProps: {
+ // options: getDictOptions('pro_processing_status'),
+ // },
+ // rules: 'selectRequired',
+ // labelWidth: 100,
+ // },
];
diff --git a/apps/web-antd/src/views/property/greenPlantRentalManagement/productManagement/index.vue b/apps/web-antd/src/views/property/greenPlantRentalManagement/productManagement/index.vue
index f4014c66..c4bdcbb5 100644
--- a/apps/web-antd/src/views/property/greenPlantRentalManagement/productManagement/index.vue
+++ b/apps/web-antd/src/views/property/greenPlantRentalManagement/productManagement/index.vue
@@ -15,7 +15,6 @@ import type { PropertyForm } from '#/api/property/productManagement/model';
import PlantsProductModal from './plantsProduct-modal.vue';
import PlantsProductDetail from './plantsProduct-detail.vue';
import { columns, querySchema } from './data';
-import { ref } from 'vue';
const formOptions: VbenFormProps = {
commonConfig: {
labelWidth: 80,
diff --git a/apps/web-antd/src/views/property/greenPlantRentalManagement/productManagement/plantsProduct-detail.vue b/apps/web-antd/src/views/property/greenPlantRentalManagement/productManagement/plantsProduct-detail.vue
index 4bde370b..8f848170 100644
--- a/apps/web-antd/src/views/property/greenPlantRentalManagement/productManagement/plantsProduct-detail.vue
+++ b/apps/web-antd/src/views/property/greenPlantRentalManagement/productManagement/plantsProduct-detail.vue
@@ -5,6 +5,7 @@ import {useVbenModal} from '@vben/common-ui';
import {Descriptions, DescriptionsItem} from 'ant-design-vue';
import {plantsProductInfo} from '#/api/property/productManagement';
import {renderDict} from "#/utils/render";
+import {ossInfo} from "#/api/system/oss";
const [BasicModal, modalApi] = useVbenModal({
onOpenChange: handleOpenChange,
@@ -21,8 +22,11 @@ async function handleOpenChange(open: boolean) {
}
modalApi.modalLoading(true);
const {id} = modalApi.getData() as { id: number | string };
- const response = await plantsProductInfo(id);
- plantsProductDetail.value = response;
+ plantsProductDetail.value = await plantsProductInfo(id);
+ if(plantsProductDetail.value.imgPath){
+ const res = await ossInfo([plantsProductDetail.value.imgPath]);
+ plantsProductDetail.value.plantImg = res?.[0]?.url
+ }
modalApi.modalLoading(false);
}
@@ -55,15 +59,16 @@ async function handleOpenChange(open: boolean) {
:is="renderDict(plantsProductDetail.state,'product_management_status')"
/>
-
-
-
-
- {{ plantsProductDetail.remark }}
-
{{ plantsProductDetail.createTime }}
+
+
+
+
+ {{ plantsProductDetail.remark }}
+
+
diff --git a/apps/web-antd/src/views/property/maintenance/knowledge/knowledge-detail.vue b/apps/web-antd/src/views/property/maintenance/knowledge/knowledge-detail.vue
index 4feb6e43..6b61b52f 100644
--- a/apps/web-antd/src/views/property/maintenance/knowledge/knowledge-detail.vue
+++ b/apps/web-antd/src/views/property/maintenance/knowledge/knowledge-detail.vue
@@ -8,6 +8,7 @@ import relativeTime from 'dayjs/plugin/relativeTime';
import {renderDict} from "#/utils/render";
import {knowledgeInfo} from "#/api/property/maintenance/knowledge";
import type {KnowledgeVO} from "#/api/property/maintenance/knowledge/model";
+import {ossInfo} from "#/api/system/oss";
dayjs.extend(duration);
dayjs.extend(relativeTime);
@@ -28,6 +29,14 @@ async function handleOpenChange(open: boolean) {
modalApi.modalLoading(true);
const {id} = modalApi.getData() as { id: number | string };
knowledgeDetail.value = await knowledgeInfo(id);
+ if(knowledgeDetail.value.covers){
+ try {
+ const res = await ossInfo([knowledgeDetail.value.covers]);
+ knowledgeDetail.value.coversPath = res?.[0]?.url;
+ } catch (e) {
+ knowledgeDetail.value.coversPath = '';
+ }
+ }
modalApi.modalLoading(false);
}
@@ -50,7 +59,7 @@ async function handleOpenChange(open: boolean) {
/>
-
+
{{ knowledgeDetail.releaseTime}}
diff --git a/apps/web-antd/src/views/property/maintenance/knowledgeBase/index.vue b/apps/web-antd/src/views/property/maintenance/knowledgeBase/index.vue
index 7e454509..026a39b3 100644
--- a/apps/web-antd/src/views/property/maintenance/knowledgeBase/index.vue
+++ b/apps/web-antd/src/views/property/maintenance/knowledgeBase/index.vue
@@ -24,6 +24,7 @@ import {getDictOptions} from "#/utils/dict";
import type {KnowledgeForm, KnowledgeVO} from "#/api/property/maintenance/knowledge/model";
import {renderDict} from "#/utils/render";
import knowledgeDetail from '../knowledge/knowledge-detail.vue';
+import {ossInfo} from "#/api/system/oss";
const simpleImage = Empty.PRESENTED_IMAGE_SIMPLE;
const [KnowledgeModal, modalApi] = useVbenModal({
@@ -66,6 +67,16 @@ const handleClean = () => {
async function queryPageList() {
const res = await knowledgeList(formState)
pageList.value = res.rows
+ for (const item of pageList.value) {
+ if (item.covers) {
+ try {
+ const res = await ossInfo([item.covers]);
+ item.coversPath = res?.[0]?.url;
+ } catch (e) {
+ item.coversPath = '';
+ }
+ }
+ }
total.value = res.total
}
@@ -132,7 +143,7 @@ async function handleInfo(row: Required) {
+ :src="item.coversPath"/>
diff --git a/apps/web-antd/src/views/property/resident/person/person-detail.vue b/apps/web-antd/src/views/property/resident/person/person-detail.vue
index a17c5b9f..c4142a89 100644
--- a/apps/web-antd/src/views/property/resident/person/person-detail.vue
+++ b/apps/web-antd/src/views/property/resident/person/person-detail.vue
@@ -9,14 +9,15 @@ import duration from 'dayjs/plugin/duration';
import relativeTime from 'dayjs/plugin/relativeTime';
import {personInfo} from '#/api/property/resident/person';
-import type {Person} from "#/api/property/resident/person/model";
+import type {PersonVO} from "#/api/property/resident/person/model";
import {accessControlColumns,carColumns} from "#/views/property/resident/person/data";
import {renderDict, renderDictValue} from "#/utils/render";
+import {ossInfo} from "#/api/system/oss";
dayjs.extend(duration);
dayjs.extend(relativeTime);
-const personDetail = shallowRef(null);
+const personDetail = shallowRef(null);
const [BasicModal, modalApi] = useVbenModal({
onOpenChange: handleOpenChange,
@@ -38,7 +39,10 @@ async function handleOpenChange(open: boolean) {
const {id} = modalApi.getData() as { id: number | string };
// 赋值
personDetail.value = await personInfo(id);
-
+ if(personDetail.value.img){
+ const res = await ossInfo([personDetail.value.img]);
+ personDetail.value.imgPath = res?.[0]?.url
+ }
modalApi.modalLoading(false);
}
@@ -64,7 +68,7 @@ async function handleOpenChange(open: boolean) {
- {{ personDetail.img }}
+
{{ personDetail.time}}
diff --git a/apps/web-antd/src/views/property/roomBooking/conferenceSettings/conferenceSettings-detail.vue b/apps/web-antd/src/views/property/roomBooking/conferenceSettings/conferenceSettings-detail.vue
index 37046e88..71a7e10d 100644
--- a/apps/web-antd/src/views/property/roomBooking/conferenceSettings/conferenceSettings-detail.vue
+++ b/apps/web-antd/src/views/property/roomBooking/conferenceSettings/conferenceSettings-detail.vue
@@ -1,6 +1,6 @@
@@ -56,7 +68,7 @@ async function handleOpenChange(open: boolean) {
{{ conferenceSettingsDetail.baseService }}
- {{ conferenceSettingsDetail.principalsName+'-'+conferenceSettingsDetail.phoneNo }}
+ {{ conferenceSettingsDetail.principalsName + '-' + conferenceSettingsDetail.phoneNo }}
- {{ conferenceSettingsDetail.picture }}
+
+
![图片加载失败]()
+
- {{ conferenceSettingsDetail.openStartHours+'-'+ conferenceSettingsDetail.openEndHours}}
+ {{ conferenceSettingsDetail.openStartHours + '-' + conferenceSettingsDetail.openEndHours }}
{{ conferenceSettingsDetail.descs }}
diff --git a/apps/web-antd/src/views/property/roomBooking/conferenceSettings/conferenceSettings-modal.vue b/apps/web-antd/src/views/property/roomBooking/conferenceSettings/conferenceSettings-modal.vue
index 705c0e54..87e534c0 100644
--- a/apps/web-antd/src/views/property/roomBooking/conferenceSettings/conferenceSettings-modal.vue
+++ b/apps/web-antd/src/views/property/roomBooking/conferenceSettings/conferenceSettings-modal.vue
@@ -78,6 +78,9 @@ const [BasicModal, modalApi] = useVbenModal({
if (record.openStartHours&&record.openEndHours) {
record.openHours = [dayjs(record.openStartHours, 'HH:mm'), dayjs(record.openEndHours, 'HH:mm')];
}
+ if(record.picture){
+ record.pictureArr=record.picture.split(';',)
+ }
await formApi.setValues(record);
}
await markInitialized();
@@ -99,6 +102,9 @@ async function handleConfirm() {
data.openStartHours=data.openHours[0]?.format('HH:mm');
data.openEndHours=data.openHours[1]?.format('HH:mm');
}
+ if(data.pictureArr){
+ data.picture=data.pictureArr.join(';',)
+ }
await (isUpdate.value ? meetUpdate(data) : meetAdd(data));
resetInitialized();
emit('reload');
diff --git a/apps/web-antd/src/views/property/roomBooking/conferenceSettings/data.ts b/apps/web-antd/src/views/property/roomBooking/conferenceSettings/data.ts
index a3761cde..1c829d53 100644
--- a/apps/web-antd/src/views/property/roomBooking/conferenceSettings/data.ts
+++ b/apps/web-antd/src/views/property/roomBooking/conferenceSettings/data.ts
@@ -184,7 +184,7 @@ export const modalSchema: FormSchemaGetter = () => [
},
{
label: '会议室图片',
- fieldName: 'picture',
+ fieldName: 'pictureArr',
component: 'ImageUpload',
componentProps: {
maxCount: 10, // 最大上传文件数 默认为1 为1会绑定为string而非string[]类型
diff --git a/apps/web-antd/src/views/property/roomBooking/conferenceSettings/index.vue b/apps/web-antd/src/views/property/roomBooking/conferenceSettings/index.vue
index 04028926..88291ab5 100644
--- a/apps/web-antd/src/views/property/roomBooking/conferenceSettings/index.vue
+++ b/apps/web-antd/src/views/property/roomBooking/conferenceSettings/index.vue
@@ -163,8 +163,8 @@ const { hasAccessByCodes } = useAccess();
-import { computed, ref, onMounted } from 'vue'
+import { computed, ref, onMounted } from "vue";
-import { useVbenModal } from '@vben/common-ui'
-import { $t } from '@vben/locales'
-import { cloneDeep } from '@vben/utils'
+import { useVbenModal } from "@vben/common-ui";
+import { $t } from "@vben/locales";
+import { cloneDeep } from "@vben/utils";
-import { useVbenForm } from '#/adapter/form'
-import { authGroupAdd, authGroupInfo, authGroupUpdate } from '#/api/sis/authGroup'
-import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'
-import { queryTree } from '#/api/sis/authRecord'
-import { message, Tree } from 'ant-design-vue'
+import { useVbenForm } from "#/adapter/form";
+import {
+ authGroupAdd,
+ authGroupInfo,
+ authGroupUpdate,
+} from "#/api/sis/authGroup";
+import { defaultFormValueGetter, useBeforeCloseDiff } from "#/utils/popup";
+import { queryTree } from "#/api/sis/authRecord";
+import { message, Tree } from "ant-design-vue";
-import { modalSchema } from './data'
+import { modalSchema } from "./data";
-const emit = defineEmits<{ reload: [] }>()
+const emit = defineEmits<{ reload: [] }>();
-const isUpdate = ref(false)
+const isUpdate = ref(false);
const title = computed(() => {
- return isUpdate.value ? $t('pages.common.edit') : $t('pages.common.add')
-})
+ return isUpdate.value ? $t("pages.common.edit") : $t("pages.common.add");
+});
const [BasicForm, formApi] = useVbenForm({
commonConfig: {
// 默认占满两列
- formItemClass: 'col-span-2',
+ formItemClass: "col-span-2",
// 默认label宽度 px
labelWidth: 80,
// 通用配置项 会影响到所有表单项
componentProps: {
- class: 'w-full',
- }
+ class: "w-full",
+ },
},
schema: modalSchema(),
showDefaultActions: false,
- wrapperClass: 'grid-cols-2',
-})
+ wrapperClass: "grid-cols-2",
+});
const { onBeforeClose, markInitialized, resetInitialized } = useBeforeCloseDiff(
{
initializedGetter: defaultFormValueGetter(formApi),
currentGetter: defaultFormValueGetter(formApi),
- },
-)
+ }
+);
const [BasicModal, modalApi] = useVbenModal({
// 在这里更改宽度
- class: 'w-[550px]',
+ class: "w-[550px]",
fullscreenButton: false,
onBeforeClose,
onClosed: handleClosed,
onConfirm: handleConfirm,
onOpenChange: async (isOpen) => {
if (!isOpen) {
- return null
+ return null;
}
- modalApi.modalLoading(true)
- loadDeviceTree()
- const { id } = modalApi.getData() as { id?: number | string }
- isUpdate.value = !!id
+ modalApi.modalLoading(true);
+ loadDeviceTree();
+ const { id } = modalApi.getData() as { id?: number | string };
+ isUpdate.value = !!id;
if (isUpdate.value && id) {
- const record = await authGroupInfo(id)
+ const record = await authGroupInfo(id);
- checkedKeys.value = (record.acIds || []).concat(record.floorIds || [])
+ checkedKeys.value = (record.acIds || []).concat(record.floorIds || []);
- await formApi.setValues(record)
+ await formApi.setValues(record);
}
- await markInitialized()
+ await markInitialized();
- modalApi.modalLoading(false)
+ modalApi.modalLoading(false);
},
-})
+});
async function handleConfirm() {
try {
- modalApi.lock(true)
- const { valid } = await formApi.validate()
+ modalApi.lock(true);
+ const { valid } = await formApi.validate();
if (!valid) {
- return
+ return;
}
if (eleIds.value.length === 0 && acIds.value.length === 0) {
- message.error('请选择授权设备')
- return
+ message.error("请选择授权设备");
+ return;
}
- const data = cloneDeep(await formApi.getValues())
- data.acIds = acIds.value
- data.eleIds = eleIds.value
- data.floorIds = floorIds.value
- await (isUpdate.value ? authGroupUpdate(data) : authGroupAdd(data))
- resetInitialized()
- emit('reload')
- modalApi.close()
+ const data = cloneDeep(await formApi.getValues());
+ data.acIds = acIds.value;
+ data.eleIds = eleIds.value;
+ data.floorIds = floorIds.value;
+ await (isUpdate.value ? authGroupUpdate(data) : authGroupAdd(data));
+ resetInitialized();
+ emit("reload");
+ modalApi.close();
} catch (error) {
- console.error(error)
+ console.error(error);
} finally {
- modalApi.lock(false)
+ modalApi.lock(false);
}
}
async function handleClosed() {
- await formApi.resetForm()
- checkedKeys.value = []
- resetInitialized()
+ await formApi.resetForm();
+ checkedKeys.value = [];
+ resetInitialized();
}
-
-
-const treeData = ref([])
+const treeData = ref([]);
function loadDeviceTree() {
queryTree().then((data: any) => {
- treeData.value = data
- })
+ data[0].children.forEach((item: any) => {
+ if (item.code === 2) {
+ item.disabled = true;
+ item.children.forEach((item: any) => {
+ item.disabled = true;
+ item.children.forEach((item: any) => {
+ item.disabled = true;
+ });
+ });
+ }
+ });
+ treeData.value = data;
+ });
}
-
const fieldNames = {
- title: 'title',
- label: 'label',
- key: 'code',
- children: 'children',
-}
+ title: "title",
+ label: "label",
+ key: "code",
+ children: "children",
+};
-const checkedKeys = ref([])
-type Key = string | number
-const eleIds = ref([])
-const acIds = ref([])
-const floorIds = ref([])
-function handleCheck(checked: Key[] | { checked: Key[]; halfChecked: Key[] }, info: any) {
-
- acIds.value = []
- eleIds.value = []
- floorIds.value = []
+const checkedKeys = ref([]);
+type Key = string | number;
+const eleIds = ref([]);
+const acIds = ref([]);
+const floorIds = ref([]);
+function handleCheck(
+ checked: Key[] | { checked: Key[]; halfChecked: Key[] },
+ info: any
+) {
+ acIds.value = [];
+ eleIds.value = [];
+ floorIds.value = [];
info.checkedNodesPositions.forEach((item: any) => {
switch (item.node.label) {
- case 'accessControl':
- acIds.value = acIds.value.concat(item.node.code)
- break
- case 'floor':
- floorIds.value = floorIds.value.concat(item.node.code)
- eleIds.value = eleIds.value.concat(item.node.parentCode)
- break
- case 'elevator':
- eleIds.value = eleIds.value.concat(item.node.code)
- break
+ case "accessControl":
+ acIds.value = acIds.value.concat(item.node.code);
+ break;
+ case "floor":
+ floorIds.value = floorIds.value.concat(item.node.code);
+ eleIds.value = eleIds.value.concat(item.node.parentCode);
+ break;
+ case "elevator":
+ eleIds.value = eleIds.value.concat(item.node.code);
+ break;
}
- })
+ });
// 去重
- acIds.value = [...new Set(acIds.value)]
- eleIds.value = [...new Set(eleIds.value)]
- floorIds.value = [...new Set(floorIds.value)]
+ acIds.value = [...new Set(acIds.value)];
+ eleIds.value = [...new Set(eleIds.value)];
+ floorIds.value = [...new Set(floorIds.value)];
}
@@ -159,8 +173,11 @@ function handleCheck(checked: Key[] | { checked: Key[]; halfChecked: Key[] }, in
-
+