8/13, dev

This commit is contained in:
Zy
2026-08-13 08:50:43 +08:00
parent 0717bb489b
commit 3048aa3f88
14 changed files with 290 additions and 95 deletions

View File

@@ -9,9 +9,9 @@ VITE_APP_ENV='development'
# 开发环境
VITE_APP_BASE_API='/dev-api'
# # 开发环境 接口代理地址
VITE_APP_PROXY_API='http://192.168.1.222:8080'
#VITE_APP_PROXY_API='http://192.168.1.222:8080'
# 开发环境 接口代理地址
#VITE_APP_PROXY_API='http://192.168.1.6:8080'
VITE_APP_PROXY_API='http://192.168.1.6:8080'
# 图片基础地址
VITE_IMG_URL='http://192.168.1.222:8080'

View File

@@ -102,3 +102,25 @@ export const GetVillageListParking = (villageid: string, houseId: string = undef
}
});
};
/**
* 查询 车位持有人信息
* @returns {*}
* @param residentId
*/
export const getParkingResidentInfo = (
residentId: string
): AxiosPromise<{
id: '';
name: '';
type: '';
status: '';
idCard: '';
phone: '';
houseName: '';
}> => {
return request({
url: `/car/holder/${residentId}`,
method: 'GET'
});
};

View File

@@ -54,7 +54,7 @@
</template>
</el-table-column>
<el-table-column label="备注" show-overflow-tooltip align="center" prop="remark"></el-table-column>
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['monthCard:monthCard:edit']">修改</el-button>
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['monthCard:monthCard:remove']">删除</el-button>

View File

@@ -152,9 +152,9 @@
<el-table-column label="优惠金额" width="100" align="center" prop="singleDiscountAmount" />
<el-table-column label="实缴金额" width="100" align="center" prop="actualAccount" />
<el-table-column label="缴费人" width="120" align="center" prop="residentName" />
<el-table-column label="缴费时间" width="200" align="center" prop="payTime" />
<el-table-column label="缴费时间" align="center" prop="payTime" />
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
<el-table-column label="操作" width="150" align="center" fixed="right" class-name="small-padding fixed-width">
<el-table-column label="操作" width="150" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" v-if="scope.row.payStatus !== '1'" @click="handleIncome(scope.row)">收款</el-button>
<el-button link type="success" v-if="scope.row.payStatus === '1'" @click="printPIaoJuByOnly(scope.row)">打印票据</el-button>

View File

@@ -40,15 +40,15 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="区域名称" align="center" prop="areaName" />
<el-table-column label="区域编号" align="center" prop="areaCode" />
<el-table-column label="面积" align="center" prop="area" width="90">
<el-table-column label="面积" align="center" prop="area" >
<template #default="scope">
<span v-if="scope.row.area">{{ scope.row.area + ' m²' }}</span>
<span v-else> --- </span>
</template>
</el-table-column>
<el-table-column label="车位数量" align="center" prop="parkingCount" width="90" />
<el-table-column label="车位数量" align="center" prop="parkingCount" />
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['area:area:edit']">修改</el-button>
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['area:area:remove']">删除</el-button>

View File

@@ -41,15 +41,15 @@
<el-table v-loading="loading" border :data="carList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="车牌号" width="155" align="center" prop="carNum" />
<el-table-column label="车辆品牌" width="155" align="center" prop="carBrand" />
<el-table-column label="车辆型号" width="155" align="center" prop="carModel" />
<el-table-column label="车身颜色" width="125" align="center" prop="carColor" />
<el-table-column label="持有人" width="155" align="center" prop="userName">
<el-table-column label="车牌号" align="center" prop="carNum" />
<el-table-column label="车辆品牌" align="center" prop="carBrand" />
<el-table-column label="车辆型号" align="center" prop="carModel" />
<el-table-column label="车身颜色" align="center" prop="carColor" />
<el-table-column label="持有人" align="center" prop="userName">
<template #default="scope"> {{ scope.row.userName }} </template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['car:car:edit']">修改</el-button>
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['car:car:remove']">删除</el-button>

View File

@@ -68,19 +68,10 @@
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" v-if="scope.row.status === '0'" @click="sign(scope.row)" v-has-permi="['houseRental:houseRental:edit']"
>签约</el-button
>
<el-button
link
type="primary"
v-if="scope.row.status === '0'"
@click="putOnSale(scope.row)"
v-has-permi="['houseRental:houseRental:edit']"
>上架</el-button
>
<el-button link type="primary" v-else @click="putOnSale(scope.row)" v-has-permi="['houseRental:houseRental:edit']">下架</el-button>
<el-button link type="primary" @click="handleMain(scope.row)" v-has-permi="['houseRental:houseRental:edit']">详情</el-button>
<el-button link type="primary" v-if="scope.row.status === '0'" @click="sign(scope.row)">签约</el-button>
<el-button link type="primary" v-if="scope.row.status === '0'" @click="putOnSale(scope.row)">上架</el-button>
<el-button link type="primary" v-else @click="putOnSale(scope.row)">下架</el-button>
<el-button link type="primary" @click="handleMain(scope.row)">详情</el-button>
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['houseRental:houseRental:query']">编辑</el-button>
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['houseRental:houseRental:remove']">删除</el-button>
</template>
@@ -177,7 +168,7 @@
<script setup name="HouseRental" lang="ts">
import pageHeader from '@/components/Pageheader/index.vue';
import { changeHouseRedientStatus, delHouseRental, HouseRedientSign, HouseRedientSignUpload, listHouseRental } from '@/api/system/houseRental';
import { HouseRentalForm, HouseRentalQuery, HouseRentalSigningVO, HouseRentalVO } from '@/api/system/houseRental/type';
import { HouseRentalQuery, HouseRentalSigningVO, HouseRentalVO } from '@/api/system/houseRental/type';
import { checkPermi } from '@/utils/permission';
import { listHouseUseType_add_house } from '@/api/system/houseUse';
import { validator } from '@/utils/Reg';
@@ -185,8 +176,7 @@ import { UploadFilled } from '@element-plus/icons-vue';
import { ElMessage, UploadUserFile } from 'element-plus';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { com_rental_status } = toRefs<any>(proxy?.useDict('com_rental_status'));
const { com_rental_method } = toRefs<any>(proxy?.useDict('com_rental_method'));
const { com_rental_status, com_rental_method } = toRefs<any>(proxy?.useDict('com_rental_status', 'com_rental_method'));
const uploadApi = '/houseRental/uploadImages';
const router = useRouter();
@@ -304,7 +294,7 @@ const getList = async () => {
});
};
/** 取消按钮 */
/** 取消按钮 */
const cancel = () => {
reset();
dialog.visible = false;

View File

@@ -46,7 +46,7 @@
<div class="echartsbox flex h-full flex-col">
<div class="echartsactions">
<div
@click="handleEcartsData(item)"
@click="handleEchartsData(item)"
:class="{ active: activeEchartsindex === item.key }"
class="echartsactions_item"
v-for="(item, index) in ecartslist"
@@ -65,11 +65,7 @@
<el-table v-loading="loading" border :data="itemList">
<el-table-column fixed="left" label="日期" width="100" align="center" prop="statDate" />
<el-table-column label="计划巡检任务" width="110" align="center" prop="totalPlans" />
<el-table-column label="按时完成" align="center" prop="completedTasks">
<template #default="scope">
{{ scope.row.completedTasks - scope.row.outCompletedTasks }}
</template>
</el-table-column>
<el-table-column label="按时完成" align="center" prop="completedTasks" />
<el-table-column label="超时完成" align="center" prop="outCompletedTasks" />
<el-table-column label="超时未完成" width="110" align="center" prop="outUncompletedTasks" />
<el-table-column label="进行中" align="center" prop="activeTask" />
@@ -91,9 +87,10 @@
<script setup name="Item" lang="ts">
import EchartsCompontent from '@/components/Echarts/index.vue';
import { listItem, type Request } from '@/api/system/Inspection/index';
import { getNaturalDayDiff, getLastNDays, diffDays, formatDate } from '@/utils/time';
import { listItem, type Request } from '@/api/system/Inspection';
import { diffDays, formatDate, getLastNDays, getNaturalDayDiff } from '@/utils/time';
import { EChartsOption } from 'echarts';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const itemList = ref<any[]>([]);
@@ -101,8 +98,6 @@ const loading = ref(true);
const showSearch = ref(true);
const total = ref(100);
const queryFormRef = ref<ElFormInstance>();
const layout = document.body.clientWidth <= 1500 ? 'total, sizes, prev, pager, next' : 'total, sizes, prev, pager, next,';
const disabledDate = (time: Date) => {
return time.getTime() > Date.now();
@@ -207,14 +202,14 @@ const options = computed<EChartsOption>(() => ({
series: activeSeries.value // 动态系列
}));
//
const diffday = ref(0);
const diffDay = ref(0);
const activeSeries = ref();
const xAxislist = ref([]);
// join Echarts Options object
function handleEcartsOptions(data, name, colorlist = ['#1a75ff', '#f2f9ff']) {
function handleEchartsOptions(data: number[], name: string, colorList: string[] = ['#1a75ff', '#f2f9ff']) {
activeSeries.value = null;
const obj = {
activeSeries.value = {
data: data,
type: 'line' as const,
smooth: true,
@@ -226,31 +221,30 @@ function handleEcartsOptions(data, name, colorlist = ['#1a75ff', '#f2f9ff']) {
y: 0,
x2: 0,
y2: 1, // 从上到下渐变
colorStops: colorlist.map((item, index) => {
colorStops: colorList.map((item, index) => {
return {
offset: index / colorlist.length,
offset: index / colorList.length,
color: item
};
})
}
},
lineStyle: {
color: colorlist[0]
color: colorList[0]
},
itemStyle: {
color: colorlist[0]
color: colorList[0]
},
label: {
show: true,
color: colorlist[0],
color: colorList[0],
position: 'top'
}
};
activeSeries.value = obj;
}
// echarts tabs switch
function handleEcartsData(row: (typeof ecartslist.value)[number]) {
function handleEchartsData(row: (typeof ecartslist.value)[number]) {
activeEchartsindex.value = row.key;
if (row) {
xAxislist.value = [];
@@ -264,16 +258,16 @@ function handleEcartsData(row: (typeof ecartslist.value)[number]) {
});
// 根据 x 轴日期生成数据数组
const xAxisDates = getLastNDays(diffday.value, undefined, 'YYYY/MM/DD'); // 确保格式为 ['2024-04-16', ...]
const xAxisDates = getLastNDays(diffDay.value, undefined, 'YYYY/MM/DD'); // 确保格式为 ['2024-04-16', ...]
const arr = xAxisDates.map((date) => dataMap.get(date) || 0);
xAxislist.value = xAxisDates;
handleEcartsOptions(arr, row.name, [row.color]);
handleEchartsOptions(arr, row.name, [row.color]);
}
}
// 选择日期
function handleStateDate(val) {
diffday.value = diffDays(val);
function handleStateDate(val: string) {
diffDay.value = diffDays(val);
queryParams.value.statDate = `${formatDate(new Date(val), 'YYYY/MM/DD')}-${formatDate(new Date(), 'YYYY/MM/DD')}`;
getList();
}
@@ -282,10 +276,10 @@ function handleStateDate(val) {
const day = 1000 * 60 * 60 * 24;
// search options
function handleQueryDay(val: number) {
const newday = new Date(); // 当前日期
const time = new Date(newday.getTime() - val * day); // 指定日期
diffday.value = val; // 差值
diffday.value = getNaturalDayDiff(time, newday);
const newDay = new Date(); // 当前日期
const time = new Date(newDay.getTime() - val * day); // 指定日期
diffDay.value = val; // 差值
diffDay.value = getNaturalDayDiff(time, newDay);
queryParams.value.statDate = formatDate(time, 'YYYY/MM/DD');
getList();
}
@@ -305,15 +299,16 @@ const getList = async () => {
itemList.value.forEach((item) => {
list.value[0].value += item.totalPlans ?? 0;
list.value[1].value += item.totalTasks ?? 0;
list.value[2].value += item.completedTasks ?? 0;
list.value[4].value += item.outUncompletedTasks ?? 0;
const num = item.outCompletedTasks + item.completedTasks || 0;
list.value[2].value += num;
});
if (!Number.isNaN(+list.value[2].value) && !Number.isNaN(+list.value[1].value)) {
const num = Number(list.value[2].value) / Number(list.value[1].value);
list.value[3].value = Math.min((Number.isNaN(num) ? 0 : num) * 100, 100).toFixed(2) + '%';
}
handleEcartsData(ecartslist.value.find((item) => item.key === activeEchartsindex.value));
handleEchartsData(ecartslist.value.find((item) => item.key === activeEchartsindex.value));
total.value = res.total;
loading.value = false;
};

View File

@@ -11,7 +11,7 @@
<el-input maxlength="20" v-model.trim="form.planName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="任务时间">
<el-form-item label="任务时间" prop="executeDay">
<div class="flex flex-wrap">
<div
class="week-items"
@@ -29,26 +29,26 @@
</div>
</div>
</el-form-item>
<el-form-item label="任务时间段">
<el-form-item label="任务时间段" prop="taskTime">
<div v-for="(_, index) in taskTime" :key="index" style="display: flex; align-items: center; margin-top: 10px">
<el-time-picker
v-model="taskTime[index]"
@update:model-value="
(val: string[]) => {
const time = val.filter((t) => t[0] && t[1]);
form.taskTime = `${time[0]}-${time[1]}`;
}
"
is-range
range-separator=""
start-placeholder="开始时间"
format="HH:mm"
value-format="HH:mm:00"
value-format="HH:mm"
end-placeholder="结束时间"
style="width: 100%"
/>
</div>
</el-form-item>
<el-form-item label="提醒时间">
<el-select v-model="form.remindTime" placeholder="请选择" style="width: 100%">
<el-option v-for="item in com_inspection_remind_tiime" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="计划路线" prop="routeIds">
<el-select @change="handleChangeMap" v-model="form.routeIds" placeholder="请选择" style="width: 100%">
<el-option v-for="item in playlist" :key="item.value" :label="item.routeName" :value="item.id" />
@@ -75,9 +75,6 @@ import { Check } from '@element-plus/icons-vue';
import MapWrapper from '@/components/Map/index.vue';
import { LngLat } from '@/components/Map/type';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { com_inspection_remind_tiime } = toRefs<any>(proxy?.useDict('com_inspection_remind_tiime'));
const route = useRoute();
const router = useRouter();
@@ -94,6 +91,8 @@ const form = ref({
const rules = ref({
planName: [{ required: true, message: '请输入巡检计划名称', trigger: 'blur' }],
inspectorIds: [{ required: true, message: '请选择巡检人员', trigger: 'blur' }],
executeDay: [{ required: true, message: '请选择时间', trigger: 'blur' }],
taskTime: [{ required: true, message: '请选择巡检时间段', trigger: 'blur' }],
routeIds: [{ required: true, message: '请选择路线', trigger: 'blur' }]
});
// 初始化 taskTime确保至少有一个时间段
@@ -195,10 +194,6 @@ onMounted(() => {
const formRef = ref();
function submit() {
// 将二维数组转换为字符串,例如 "09:00-11:00; 13:00-15:00"
form.value.taskTime = taskTime.value
.filter((t) => t[0] && t[1]) // 过滤掉未填写的
.map((t) => `${t[0]}-${t[1]}`)
.join('; ');
formRef.value?.validate(async (valid: boolean) => {
if (valid) {

View File

@@ -41,14 +41,14 @@
<el-table-column label="计划巡检任务" align="center" prop="totalTasks" />
<el-table-column label="按时完成" align="center" prop="completedTasks">
<template #default="scope">
{{ scope.row.completedTasks - scope.row.outCompletedTasks }}
{{ scope.row.completedTasks }}
</template>
</el-table-column>
<el-table-column label="超时完成" align="center" prop="outCompletedTasks" />
<el-table-column label="超时未完成" align="center" prop="outUncompletedTasks"></el-table-column>
<el-table-column label="进行中" align="center" prop="activeTask" />
<el-table-column label="未开始" align="center" prop="pendingTask" />
<el-table-column label="完成率" align="center" prop="onTimeRateDisplay" />
<el-table-column label="完成率" align="center" prop="completionRateDisplay" />
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
@@ -77,7 +77,7 @@ const data = reactive({
const checkdata = ref([]);
const { queryParams } = toRefs(data);
/** 查询巡检路线列表 */
/** 查询巡检路线列表 ╬╬╬*/
const getList = async () => {
loading.value = true;
list_statapi(queryParams.value)

View File

@@ -20,7 +20,6 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="车位面积" prop="parkingArea">

View File

@@ -45,12 +45,13 @@
<div class="label">添加时间</div>
<div class="main">{{ parkingReviewInfo.parking.createTime }}</div>
</div>
<div class="carInfo_item" v-if="parkingReviewInfo.parking.residentName">
<div class="carInfo_item">
<div class="label">业主持有人</div>
<div class="main">
<span>
{{ parkingReviewInfo.parking.residentName }}
</span>
<el-button @click="getUserInfo" type="primary" link style="font-size: smaller; margin-left: 15px">详情</el-button>
</div>
</div>
</div>
@@ -141,20 +142,97 @@
</el-col>
</el-row>
</div>
<el-dialog width="500" @close="handleClose" v-model="MainForm.visible" title="车位持有人详情">
<div class="item">
<div class="label">姓名</div>
<div class="value">{{ MainFormInfo.name }}</div>
</div>
<div class="item">
<div class="label">类型</div>
<div class="value">
<DictTag :value="MainFormInfo.type" :options="com_resident_relationship"></DictTag>
</div>
</div>
<div class="item">
<div class="label">状态</div>
<div class="value">
<DictTag :value="MainFormInfo.status" :options="com_review"></DictTag>
</div>
</div>
<div class="item">
<div class="label">证件号码</div>
<div class="value">{{ MainFormInfo.idCard }}</div>
</div>
<div class="item">
<div class="label">手机号码</div>
<div class="value">{{ MainFormInfo.phone }}</div>
</div>
<div class="item">
<div class="label">房间</div>
<div class="value">{{ MainFormInfo.houseName }}</div>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="handleClose">关闭</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import PageHeader from '@/components/Pageheader/index.vue';
import { getParkingReviewInfo } from '@/api/system/parking';
import { getParkingReviewInfo, getParkingResidentInfo } from '@/api/system/parking';
import DictTag from '@/components/DictTag/index.vue';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { com_parking_status } = toRefs<any>(proxy?.useDict('com_parking_status'));
const { com_parking_type } = toRefs<any>(proxy?.useDict('com_parking_type'));
const { com_parking_status, com_parking_type, com_review, com_resident_relationship } = toRefs<any>(
proxy?.useDict('com_parking_status', 'com_parking_type', 'com_review', 'com_resident_relationship')
);
const route = useRoute();
const id = ref('');
const MainForm = ref({
visible: false
});
// 持有人信息
const MainFormInfo = ref({
id: '',
name: '',
type: '',
status: '',
idCard: '',
phone: '',
houseName: ''
});
// 重置模态框
function resetMainFormInfo() {
MainFormInfo.value = {
id: '',
name: '',
type: '',
status: '',
idCard: '',
phone: '',
houseName: ''
};
}
// 查询 持有人信息
function getUserInfo() {
resetMainFormInfo();
getParkingResidentInfo(parkingReviewInfo.value.parking.residentId).then((res) => {
MainFormInfo.value = res.data;
});
MainForm.value.visible = true;
}
// 关闭模态框
function handleClose() {
resetMainFormInfo();
MainForm.value.visible = false;
}
type parkingReviewType = {
parking: {
id: string;
@@ -273,6 +351,19 @@ getInfo();
.ResidentMainBox {
display: flex;
flex-direction: column;
.item {
display: flex;
align-items: center;
margin-bottom: 20px;
.label {
width: 120px;
text-align: right;
font-weight: bold;
margin-right: 10px;
}
}
.ResidentMainBody {
flex: 1;
margin-top: 20px;
@@ -300,6 +391,7 @@ getInfo();
}
}
}
&:deep(div.el-step__head.is-process) {
& > div.el-step__line {
width: 0;

View File

@@ -47,7 +47,6 @@
<span>
{{ parkingReviewInfo.parking.residentName }}
</span>
<el-button type="primary" link style="font-size: smaller">详情</el-button>
</div>
</div>
<div class="carInfo_item">
@@ -66,6 +65,73 @@
</el-card>
</div>
<!-- 车辆信息 -->
<div class="mb-10" v-if="!showCar">
<el-card>
<template #header>
<div class="card-header">
<span>车辆信息</span>
</div>
</template>
<div class="w-full h-full CarInfoBox" v-if="parkingReviewInfo.car">
<el-row>
<el-col :span="8">
<div class="carInfo_item">
<div class="label">车牌号</div>
<div class="main">{{ parkingReviewInfo.car.carNum }}</div>
</div>
</el-col>
<el-col :span="8">
<div class="carInfo_item">
<div class="label">车辆品牌</div>
<div class="main">{{ parkingReviewInfo.car.carBrand }}</div>
</div>
</el-col>
<el-col :span="8">
<div class="carInfo_item">
<div class="label">车辆型号</div>
<div class="main">{{ parkingReviewInfo.car.carModel }}</div>
</div>
</el-col>
</el-row>
<el-row class="mt-30px mb-30px">
<el-col :span="8">
<div class="carInfo_item">
<div class="label">车身颜色</div>
<div class="main">{{ parkingReviewInfo.car.carColor }}</div>
</div>
</el-col>
<el-col :span="8">
<div class="carInfo_item">
<div class="label">备注</div>
<div class="main">{{ parkingReviewInfo.car.remark }}</div>
</div>
</el-col>
<el-col :span="8"> </el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="carInfo_item flex-items-start">
<div class="label">车辆照片</div>
<div class="main">
<el-image
v-for="(item, index) in parkingReviewInfo.car.carImageUrlList"
:key="index"
class="carInfoImage"
:src="item"
:initial-index="index"
:preview-src-list="parkingReviewInfo.car.carImageUrlList"
preview-teleported
></el-image>
</div>
</div>
</el-col>
</el-row>
</div>
<div class="w-full h-full CarInfoBox flex flex-center min-h-17rem" v-else>
<span style="color: #999; font-weight: 500; font-size: larger; letter-spacing: 10px">暂无信息</span>
</div>
</el-card>
</div>
<div class="">
<el-card>
<template #header>
@@ -143,6 +209,8 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { com_parking_status } = toRefs<any>(proxy?.useDict('com_parking_status'));
const { com_parking_type } = toRefs<any>(proxy?.useDict('com_parking_type'));
const showCar = true;
/** 住户 提交状态 */
enum submitStatus {
/** 未提交 */
@@ -177,7 +245,23 @@ const id = ref('');
type parkingReviewType = {
parking: parkingType;
car: any;
car: {
'id': string;
'areaId': null;
'villageId': string;
'parkingId': string;
'residentId': null;
'residentName': null;
'carNum': string;
'carBrand': string;
'carModel': string;
'carColor': string;
'remark': null;
'carImageUrl': string;
'userName': null;
'userId': string;
carImageUrlList?: string[];
};
parkingReviewProcess: parkingReviewProcess;
};
@@ -228,7 +312,22 @@ const parkingReviewInfo = ref<parkingReviewType>({
'remark': '',
'createTime': ''
},
car: null,
car: {
'id': '',
'areaId': null,
'villageId': '',
'parkingId': '',
'residentId': null,
'residentName': null,
'carNum': '',
'carBrand': '',
'carModel': '',
'carColor': '',
'remark': null,
'carImageUrl': '',
'userName': null,
'userId': ''
},
parkingReviewProcess: {
id: null,
submitStatus: null,
@@ -249,6 +348,9 @@ function getInfo() {
if (route.query.id) {
id.value = route.query.id as string;
getParkingReviewInfo(id.value).then((res) => {
if (res.data.car) {
res.data.car.carImageUrlList = res.data.car.carImageUrl.split(',').filter(Boolean) ?? [];
}
parkingReviewInfo.value = res.data;
handleActiveStaus(res.data.parkingReviewProcess);
});

View File

@@ -35,14 +35,14 @@
<el-table class="tablebody" v-loading="loading" border :data="storeroomList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="楼栋名" width="150" align="center" prop="buildingName" />
<el-table-column label="单元号" show-overflow-tooltip width="150" align="center" prop="unitName" />
<el-table-column label="储藏室号" width="150" align="center" prop="storeroomNo" />
<el-table-column label="建筑面积(㎡)" width="100" align="center" prop="houseArea" />
<el-table-column label="公摊面积(㎡)" width="100" align="center" prop="shareArea" />
<el-table-column label="实用面积(㎡)" width="100" align="center" prop="internalArea" />
<el-table-column label="楼栋名" align="center" prop="buildingName" />
<el-table-column label="单元号" show-overflow-tooltip align="center" prop="unitName" />
<el-table-column label="储藏室号" align="center" prop="storeroomNo" />
<el-table-column label="建筑面积(㎡)" align="center" prop="houseArea" />
<el-table-column label="公摊面积(㎡)" align="center" prop="shareArea" />
<el-table-column label="实用面积(㎡)" align="center" prop="internalArea" />
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
<el-table-column label="操作" width="150" align="center" fixed="right" class-name="small-padding fixed-width">
<el-table-column label="操作" width="150" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['storeroom:storeroom:edit']">修改</el-button>
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['storeroom:storeroom:remove']">删除</el-button>