8/13, dev
This commit is contained in:
@@ -9,9 +9,9 @@ VITE_APP_ENV='development'
|
|||||||
# 开发环境
|
# 开发环境
|
||||||
VITE_APP_BASE_API='/dev-api'
|
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'
|
VITE_IMG_URL='http://192.168.1.222:8080'
|
||||||
|
|
||||||
|
|||||||
@@ -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'
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="备注" show-overflow-tooltip align="center" prop="remark"></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">
|
<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="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>
|
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['monthCard:monthCard:remove']">删除</el-button>
|
||||||
|
|||||||
@@ -152,9 +152,9 @@
|
|||||||
<el-table-column label="优惠金额" width="100" align="center" prop="singleDiscountAmount" />
|
<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="100" align="center" prop="actualAccount" />
|
||||||
<el-table-column label="缴费人" width="120" align="center" prop="residentName" />
|
<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="备注" 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">
|
<template #default="scope">
|
||||||
<el-button link type="primary" v-if="scope.row.payStatus !== '1'" @click="handleIncome(scope.row)">收款</el-button>
|
<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>
|
<el-button link type="success" v-if="scope.row.payStatus === '1'" @click="printPIaoJuByOnly(scope.row)">打印票据</el-button>
|
||||||
|
|||||||
@@ -40,15 +40,15 @@
|
|||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column label="区域名称" align="center" prop="areaName" />
|
<el-table-column label="区域名称" align="center" prop="areaName" />
|
||||||
<el-table-column label="区域编号" align="center" prop="areaCode" />
|
<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">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.area">{{ scope.row.area + ' m²' }}</span>
|
<span v-if="scope.row.area">{{ scope.row.area + ' m²' }}</span>
|
||||||
<span v-else> --- </span>
|
<span v-else> --- </span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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" 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">
|
<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="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>
|
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['area:area:remove']">删除</el-button>
|
||||||
|
|||||||
@@ -41,15 +41,15 @@
|
|||||||
|
|
||||||
<el-table v-loading="loading" border :data="carList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" border :data="carList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column label="车牌号" width="155" align="center" prop="carNum" />
|
<el-table-column label="车牌号" align="center" prop="carNum" />
|
||||||
<el-table-column label="车辆品牌" width="155" align="center" prop="carBrand" />
|
<el-table-column label="车辆品牌" align="center" prop="carBrand" />
|
||||||
<el-table-column label="车辆型号" width="155" align="center" prop="carModel" />
|
<el-table-column label="车辆型号" align="center" prop="carModel" />
|
||||||
<el-table-column label="车身颜色" width="125" align="center" prop="carColor" />
|
<el-table-column label="车身颜色" align="center" prop="carColor" />
|
||||||
<el-table-column label="持有人" width="155" align="center" prop="userName">
|
<el-table-column label="持有人" align="center" prop="userName">
|
||||||
<template #default="scope"> {{ scope.row.userName }} </template>
|
<template #default="scope"> {{ scope.row.userName }} </template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
|
<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">
|
<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="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>
|
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['car:car:remove']">删除</el-button>
|
||||||
|
|||||||
@@ -68,19 +68,10 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||||
<template #default="scope">
|
<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 link type="primary" v-if="scope.row.status === '0'" @click="sign(scope.row)">签约</el-button>
|
||||||
>签约</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
|
<el-button link type="primary" @click="handleMain(scope.row)">详情</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" @click="handleUpdate(scope.row)" v-has-permi="['houseRental:houseRental:query']">编辑</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>
|
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['houseRental:houseRental:remove']">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
@@ -177,7 +168,7 @@
|
|||||||
<script setup name="HouseRental" lang="ts">
|
<script setup name="HouseRental" lang="ts">
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { changeHouseRedientStatus, delHouseRental, HouseRedientSign, HouseRedientSignUpload, listHouseRental } from '@/api/system/houseRental';
|
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 { checkPermi } from '@/utils/permission';
|
||||||
import { listHouseUseType_add_house } from '@/api/system/houseUse';
|
import { listHouseUseType_add_house } from '@/api/system/houseUse';
|
||||||
import { validator } from '@/utils/Reg';
|
import { validator } from '@/utils/Reg';
|
||||||
@@ -185,8 +176,7 @@ import { UploadFilled } from '@element-plus/icons-vue';
|
|||||||
import { ElMessage, UploadUserFile } from 'element-plus';
|
import { ElMessage, UploadUserFile } from 'element-plus';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
const { com_rental_status } = toRefs<any>(proxy?.useDict('com_rental_status'));
|
const { com_rental_status, com_rental_method } = toRefs<any>(proxy?.useDict('com_rental_status', 'com_rental_method'));
|
||||||
const { com_rental_method } = toRefs<any>(proxy?.useDict('com_rental_method'));
|
|
||||||
|
|
||||||
const uploadApi = '/houseRental/uploadImages';
|
const uploadApi = '/houseRental/uploadImages';
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -304,7 +294,7 @@ const getList = async () => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 取消按钮 */
|
/** 取消按钮╬ */
|
||||||
const cancel = () => {
|
const cancel = () => {
|
||||||
reset();
|
reset();
|
||||||
dialog.visible = false;
|
dialog.visible = false;
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
<div class="echartsbox flex h-full flex-col">
|
<div class="echartsbox flex h-full flex-col">
|
||||||
<div class="echartsactions">
|
<div class="echartsactions">
|
||||||
<div
|
<div
|
||||||
@click="handleEcartsData(item)"
|
@click="handleEchartsData(item)"
|
||||||
:class="{ active: activeEchartsindex === item.key }"
|
:class="{ active: activeEchartsindex === item.key }"
|
||||||
class="echartsactions_item"
|
class="echartsactions_item"
|
||||||
v-for="(item, index) in ecartslist"
|
v-for="(item, index) in ecartslist"
|
||||||
@@ -65,11 +65,7 @@
|
|||||||
<el-table v-loading="loading" border :data="itemList">
|
<el-table v-loading="loading" border :data="itemList">
|
||||||
<el-table-column fixed="left" label="日期" width="100" align="center" prop="statDate" />
|
<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="计划巡检任务" width="110" align="center" prop="totalPlans" />
|
||||||
<el-table-column label="按时完成" align="center" prop="completedTasks">
|
<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="outCompletedTasks" />
|
<el-table-column label="超时完成" align="center" prop="outCompletedTasks" />
|
||||||
<el-table-column label="超时未完成" width="110" align="center" prop="outUncompletedTasks" />
|
<el-table-column label="超时未完成" width="110" align="center" prop="outUncompletedTasks" />
|
||||||
<el-table-column label="进行中" align="center" prop="activeTask" />
|
<el-table-column label="进行中" align="center" prop="activeTask" />
|
||||||
@@ -91,9 +87,10 @@
|
|||||||
|
|
||||||
<script setup name="Item" lang="ts">
|
<script setup name="Item" lang="ts">
|
||||||
import EchartsCompontent from '@/components/Echarts/index.vue';
|
import EchartsCompontent from '@/components/Echarts/index.vue';
|
||||||
import { listItem, type Request } from '@/api/system/Inspection/index';
|
import { listItem, type Request } from '@/api/system/Inspection';
|
||||||
import { getNaturalDayDiff, getLastNDays, diffDays, formatDate } from '@/utils/time';
|
import { diffDays, formatDate, getLastNDays, getNaturalDayDiff } from '@/utils/time';
|
||||||
import { EChartsOption } from 'echarts';
|
import { EChartsOption } from 'echarts';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
|
|
||||||
const itemList = ref<any[]>([]);
|
const itemList = ref<any[]>([]);
|
||||||
@@ -101,8 +98,6 @@ const loading = ref(true);
|
|||||||
const showSearch = ref(true);
|
const showSearch = ref(true);
|
||||||
const total = ref(100);
|
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 layout = document.body.clientWidth <= 1500 ? 'total, sizes, prev, pager, next' : 'total, sizes, prev, pager, next,';
|
||||||
const disabledDate = (time: Date) => {
|
const disabledDate = (time: Date) => {
|
||||||
return time.getTime() > Date.now();
|
return time.getTime() > Date.now();
|
||||||
@@ -207,14 +202,14 @@ const options = computed<EChartsOption>(() => ({
|
|||||||
series: activeSeries.value // 动态系列
|
series: activeSeries.value // 动态系列
|
||||||
}));
|
}));
|
||||||
//
|
//
|
||||||
const diffday = ref(0);
|
const diffDay = ref(0);
|
||||||
const activeSeries = ref();
|
const activeSeries = ref();
|
||||||
const xAxislist = ref([]);
|
const xAxislist = ref([]);
|
||||||
|
|
||||||
// join Echarts Options object
|
// join Echarts Options object
|
||||||
function handleEcartsOptions(data, name, colorlist = ['#1a75ff', '#f2f9ff']) {
|
function handleEchartsOptions(data: number[], name: string, colorList: string[] = ['#1a75ff', '#f2f9ff']) {
|
||||||
activeSeries.value = null;
|
activeSeries.value = null;
|
||||||
const obj = {
|
activeSeries.value = {
|
||||||
data: data,
|
data: data,
|
||||||
type: 'line' as const,
|
type: 'line' as const,
|
||||||
smooth: true,
|
smooth: true,
|
||||||
@@ -226,31 +221,30 @@ function handleEcartsOptions(data, name, colorlist = ['#1a75ff', '#f2f9ff']) {
|
|||||||
y: 0,
|
y: 0,
|
||||||
x2: 0,
|
x2: 0,
|
||||||
y2: 1, // 从上到下渐变
|
y2: 1, // 从上到下渐变
|
||||||
colorStops: colorlist.map((item, index) => {
|
colorStops: colorList.map((item, index) => {
|
||||||
return {
|
return {
|
||||||
offset: index / colorlist.length,
|
offset: index / colorList.length,
|
||||||
color: item
|
color: item
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: colorlist[0]
|
color: colorList[0]
|
||||||
},
|
},
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: colorlist[0]
|
color: colorList[0]
|
||||||
},
|
},
|
||||||
label: {
|
label: {
|
||||||
show: true,
|
show: true,
|
||||||
color: colorlist[0],
|
color: colorList[0],
|
||||||
position: 'top'
|
position: 'top'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
activeSeries.value = obj;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// echarts tabs switch
|
// echarts tabs switch
|
||||||
function handleEcartsData(row: (typeof ecartslist.value)[number]) {
|
function handleEchartsData(row: (typeof ecartslist.value)[number]) {
|
||||||
activeEchartsindex.value = row.key;
|
activeEchartsindex.value = row.key;
|
||||||
if (row) {
|
if (row) {
|
||||||
xAxislist.value = [];
|
xAxislist.value = [];
|
||||||
@@ -264,16 +258,16 @@ function handleEcartsData(row: (typeof ecartslist.value)[number]) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 根据 x 轴日期生成数据数组
|
// 根据 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);
|
const arr = xAxisDates.map((date) => dataMap.get(date) || 0);
|
||||||
xAxislist.value = xAxisDates;
|
xAxislist.value = xAxisDates;
|
||||||
handleEcartsOptions(arr, row.name, [row.color]);
|
handleEchartsOptions(arr, row.name, [row.color]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 选择日期
|
// 选择日期
|
||||||
function handleStateDate(val) {
|
function handleStateDate(val: string) {
|
||||||
diffday.value = diffDays(val);
|
diffDay.value = diffDays(val);
|
||||||
queryParams.value.statDate = `${formatDate(new Date(val), 'YYYY/MM/DD')}-${formatDate(new Date(), 'YYYY/MM/DD')}`;
|
queryParams.value.statDate = `${formatDate(new Date(val), 'YYYY/MM/DD')}-${formatDate(new Date(), 'YYYY/MM/DD')}`;
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
@@ -282,10 +276,10 @@ function handleStateDate(val) {
|
|||||||
const day = 1000 * 60 * 60 * 24;
|
const day = 1000 * 60 * 60 * 24;
|
||||||
// search options
|
// search options
|
||||||
function handleQueryDay(val: number) {
|
function handleQueryDay(val: number) {
|
||||||
const newday = new Date(); // 当前日期
|
const newDay = new Date(); // 当前日期
|
||||||
const time = new Date(newday.getTime() - val * day); // 指定日期
|
const time = new Date(newDay.getTime() - val * day); // 指定日期
|
||||||
diffday.value = val; // 差值
|
diffDay.value = val; // 差值
|
||||||
diffday.value = getNaturalDayDiff(time, newday);
|
diffDay.value = getNaturalDayDiff(time, newDay);
|
||||||
queryParams.value.statDate = formatDate(time, 'YYYY/MM/DD');
|
queryParams.value.statDate = formatDate(time, 'YYYY/MM/DD');
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
@@ -305,15 +299,16 @@ const getList = async () => {
|
|||||||
itemList.value.forEach((item) => {
|
itemList.value.forEach((item) => {
|
||||||
list.value[0].value += item.totalPlans ?? 0;
|
list.value[0].value += item.totalPlans ?? 0;
|
||||||
list.value[1].value += item.totalTasks ?? 0;
|
list.value[1].value += item.totalTasks ?? 0;
|
||||||
list.value[2].value += item.completedTasks ?? 0;
|
|
||||||
list.value[4].value += item.outUncompletedTasks ?? 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)) {
|
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);
|
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) + '%';
|
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;
|
total.value = res.total;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<el-input maxlength="20" v-model.trim="form.planName" placeholder="请输入"></el-input>
|
<el-input maxlength="20" v-model.trim="form.planName" placeholder="请输入"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="任务时间">
|
<el-form-item label="任务时间" prop="executeDay">
|
||||||
<div class="flex flex-wrap">
|
<div class="flex flex-wrap">
|
||||||
<div
|
<div
|
||||||
class="week-items"
|
class="week-items"
|
||||||
@@ -29,26 +29,26 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</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">
|
<div v-for="(_, index) in taskTime" :key="index" style="display: flex; align-items: center; margin-top: 10px">
|
||||||
<el-time-picker
|
<el-time-picker
|
||||||
v-model="taskTime[index]"
|
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
|
is-range
|
||||||
range-separator="到"
|
range-separator="到"
|
||||||
start-placeholder="开始时间"
|
start-placeholder="开始时间"
|
||||||
format="HH:mm"
|
format="HH:mm"
|
||||||
value-format="HH:mm:00"
|
value-format="HH:mm"
|
||||||
end-placeholder="结束时间"
|
end-placeholder="结束时间"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</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-form-item label="计划路线" prop="routeIds">
|
||||||
<el-select @change="handleChangeMap" v-model="form.routeIds" placeholder="请选择" style="width: 100%">
|
<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" />
|
<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 MapWrapper from '@/components/Map/index.vue';
|
||||||
import { LngLat } from '@/components/Map/type';
|
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 route = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
@@ -94,6 +91,8 @@ const form = ref({
|
|||||||
const rules = ref({
|
const rules = ref({
|
||||||
planName: [{ required: true, message: '请输入巡检计划名称', trigger: 'blur' }],
|
planName: [{ required: true, message: '请输入巡检计划名称', trigger: 'blur' }],
|
||||||
inspectorIds: [{ 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' }]
|
routeIds: [{ required: true, message: '请选择路线', trigger: 'blur' }]
|
||||||
});
|
});
|
||||||
// 初始化 taskTime,确保至少有一个时间段
|
// 初始化 taskTime,确保至少有一个时间段
|
||||||
@@ -195,10 +194,6 @@ onMounted(() => {
|
|||||||
const formRef = ref();
|
const formRef = ref();
|
||||||
function submit() {
|
function submit() {
|
||||||
// 将二维数组转换为字符串,例如 "09:00-11:00; 13:00-15:00"
|
// 将二维数组转换为字符串,例如 "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) => {
|
formRef.value?.validate(async (valid: boolean) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
|||||||
@@ -41,14 +41,14 @@
|
|||||||
<el-table-column label="计划巡检任务" align="center" prop="totalTasks" />
|
<el-table-column label="计划巡检任务" align="center" prop="totalTasks" />
|
||||||
<el-table-column label="按时完成" align="center" prop="completedTasks">
|
<el-table-column label="按时完成" align="center" prop="completedTasks">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.completedTasks - scope.row.outCompletedTasks }}
|
{{ scope.row.completedTasks }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="超时完成" align="center" prop="outCompletedTasks" />
|
<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="outUncompletedTasks"></el-table-column>
|
||||||
<el-table-column label="进行中" align="center" prop="activeTask" />
|
<el-table-column label="进行中" align="center" prop="activeTask" />
|
||||||
<el-table-column label="未开始" align="center" prop="pendingTask" />
|
<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>
|
</el-table>
|
||||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -77,7 +77,7 @@ const data = reactive({
|
|||||||
|
|
||||||
const checkdata = ref([]);
|
const checkdata = ref([]);
|
||||||
const { queryParams } = toRefs(data);
|
const { queryParams } = toRefs(data);
|
||||||
/** 查询巡检路线列表 */
|
/** 查询巡检路线列表 ╬╬╬*/
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
list_statapi(queryParams.value)
|
list_statapi(queryParams.value)
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="车位面积" prop="parkingArea">
|
<el-form-item label="车位面积" prop="parkingArea">
|
||||||
|
|||||||
@@ -45,12 +45,13 @@
|
|||||||
<div class="label">添加时间:</div>
|
<div class="label">添加时间:</div>
|
||||||
<div class="main">{{ parkingReviewInfo.parking.createTime }}</div>
|
<div class="main">{{ parkingReviewInfo.parking.createTime }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="carInfo_item" v-if="parkingReviewInfo.parking.residentName">
|
<div class="carInfo_item">
|
||||||
<div class="label">业主持有人:</div>
|
<div class="label">业主持有人:</div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<span>
|
<span>
|
||||||
{{ parkingReviewInfo.parking.residentName }}
|
{{ parkingReviewInfo.parking.residentName }}
|
||||||
</span>
|
</span>
|
||||||
|
<el-button @click="getUserInfo" type="primary" link style="font-size: smaller; margin-left: 15px">详情</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -141,20 +142,97 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.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 { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
const { com_parking_status } = toRefs<any>(proxy?.useDict('com_parking_status'));
|
const { com_parking_status, com_parking_type, com_review, com_resident_relationship } = toRefs<any>(
|
||||||
const { com_parking_type } = toRefs<any>(proxy?.useDict('com_parking_type'));
|
proxy?.useDict('com_parking_status', 'com_parking_type', 'com_review', 'com_resident_relationship')
|
||||||
|
);
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const id = ref('');
|
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 = {
|
type parkingReviewType = {
|
||||||
parking: {
|
parking: {
|
||||||
id: string;
|
id: string;
|
||||||
@@ -273,6 +351,19 @@ getInfo();
|
|||||||
.ResidentMainBox {
|
.ResidentMainBox {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
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 {
|
.ResidentMainBody {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
@@ -300,6 +391,7 @@ getInfo();
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:deep(div.el-step__head.is-process) {
|
&:deep(div.el-step__head.is-process) {
|
||||||
& > div.el-step__line {
|
& > div.el-step__line {
|
||||||
width: 0;
|
width: 0;
|
||||||
|
|||||||
@@ -47,7 +47,6 @@
|
|||||||
<span>
|
<span>
|
||||||
{{ parkingReviewInfo.parking.residentName }}
|
{{ parkingReviewInfo.parking.residentName }}
|
||||||
</span>
|
</span>
|
||||||
<el-button type="primary" link style="font-size: smaller">详情</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="carInfo_item">
|
<div class="carInfo_item">
|
||||||
@@ -66,6 +65,73 @@
|
|||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</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="">
|
<div class="">
|
||||||
<el-card>
|
<el-card>
|
||||||
<template #header>
|
<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_status } = toRefs<any>(proxy?.useDict('com_parking_status'));
|
||||||
const { com_parking_type } = toRefs<any>(proxy?.useDict('com_parking_type'));
|
const { com_parking_type } = toRefs<any>(proxy?.useDict('com_parking_type'));
|
||||||
|
|
||||||
|
const showCar = true;
|
||||||
|
|
||||||
/** 住户 提交状态 */
|
/** 住户 提交状态 */
|
||||||
enum submitStatus {
|
enum submitStatus {
|
||||||
/** 未提交 */
|
/** 未提交 */
|
||||||
@@ -177,7 +245,23 @@ const id = ref('');
|
|||||||
|
|
||||||
type parkingReviewType = {
|
type parkingReviewType = {
|
||||||
parking: parkingType;
|
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;
|
parkingReviewProcess: parkingReviewProcess;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -228,7 +312,22 @@ const parkingReviewInfo = ref<parkingReviewType>({
|
|||||||
'remark': '',
|
'remark': '',
|
||||||
'createTime': ''
|
'createTime': ''
|
||||||
},
|
},
|
||||||
car: null,
|
car: {
|
||||||
|
'id': '',
|
||||||
|
'areaId': null,
|
||||||
|
'villageId': '',
|
||||||
|
'parkingId': '',
|
||||||
|
'residentId': null,
|
||||||
|
'residentName': null,
|
||||||
|
'carNum': '',
|
||||||
|
'carBrand': '',
|
||||||
|
'carModel': '',
|
||||||
|
'carColor': '',
|
||||||
|
'remark': null,
|
||||||
|
'carImageUrl': '',
|
||||||
|
'userName': null,
|
||||||
|
'userId': ''
|
||||||
|
},
|
||||||
parkingReviewProcess: {
|
parkingReviewProcess: {
|
||||||
id: null,
|
id: null,
|
||||||
submitStatus: null,
|
submitStatus: null,
|
||||||
@@ -249,6 +348,9 @@ function getInfo() {
|
|||||||
if (route.query.id) {
|
if (route.query.id) {
|
||||||
id.value = route.query.id as string;
|
id.value = route.query.id as string;
|
||||||
getParkingReviewInfo(id.value).then((res) => {
|
getParkingReviewInfo(id.value).then((res) => {
|
||||||
|
if (res.data.car) {
|
||||||
|
res.data.car.carImageUrlList = res.data.car.carImageUrl.split(',').filter(Boolean) ?? [];
|
||||||
|
}
|
||||||
parkingReviewInfo.value = res.data;
|
parkingReviewInfo.value = res.data;
|
||||||
handleActiveStaus(res.data.parkingReviewProcess);
|
handleActiveStaus(res.data.parkingReviewProcess);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -35,14 +35,14 @@
|
|||||||
|
|
||||||
<el-table class="tablebody" v-loading="loading" border :data="storeroomList" @selection-change="handleSelectionChange">
|
<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 type="selection" width="55" align="center" />
|
||||||
<el-table-column label="楼栋名" width="150" align="center" prop="buildingName" />
|
<el-table-column label="楼栋名" align="center" prop="buildingName" />
|
||||||
<el-table-column label="单元号" show-overflow-tooltip width="150" align="center" prop="unitName" />
|
<el-table-column label="单元号" show-overflow-tooltip align="center" prop="unitName" />
|
||||||
<el-table-column label="储藏室号" width="150" align="center" prop="storeroomNo" />
|
<el-table-column label="储藏室号" align="center" prop="storeroomNo" />
|
||||||
<el-table-column label="建筑面积(㎡)" width="100" align="center" prop="houseArea" />
|
<el-table-column label="建筑面积(㎡)" align="center" prop="houseArea" />
|
||||||
<el-table-column label="公摊面积(㎡)" width="100" align="center" prop="shareArea" />
|
<el-table-column label="公摊面积(㎡)" align="center" prop="shareArea" />
|
||||||
<el-table-column label="实用面积(㎡)" width="100" align="center" prop="internalArea" />
|
<el-table-column label="实用面积(㎡)" align="center" prop="internalArea" />
|
||||||
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
|
<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">
|
<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="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>
|
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['storeroom:storeroom:remove']">删除</el-button>
|
||||||
|
|||||||
Reference in New Issue
Block a user