Compare commits
2 Commits
e4417f35b1
...
de4bae3bc1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
de4bae3bc1 | ||
|
|
466ec4675e |
@@ -81,7 +81,13 @@ export const uploadHouseImage = (formData: FormData): AxiosPromise<uploadHouseIm
|
|||||||
data: formData
|
data: formData
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
export const getHouseOwnUser = (houseId: string): AxiosPromise<uploadHouseImagetype> => {
|
export const getHouseOwnUser = (
|
||||||
|
houseId: string
|
||||||
|
): AxiosPromise<{
|
||||||
|
floorNo: number;
|
||||||
|
houseArea: number;
|
||||||
|
ownerName: string;
|
||||||
|
}> => {
|
||||||
return request({
|
return request({
|
||||||
url: `/houseRental/ownerName/${houseId}`,
|
url: `/houseRental/ownerName/${houseId}`,
|
||||||
method: 'GET'
|
method: 'GET'
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ export const getParkingReviewInfo = (id: string) => {
|
|||||||
/**
|
/**
|
||||||
* 查询小区内车位列表
|
* 查询小区内车位列表
|
||||||
* @param { string } villageid
|
* @param { string } villageid
|
||||||
* @param houseId
|
* @param { string } houseId
|
||||||
* @returns {*}
|
* @returns {*}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ export interface ResidentVO {
|
|||||||
id: string;
|
id: string;
|
||||||
unitNoId: string;
|
unitNoId: string;
|
||||||
idCardType: string;
|
idCardType: string;
|
||||||
|
ownerRelationship: string;
|
||||||
/**
|
/**
|
||||||
* 住户编号
|
* 住户编号
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ export interface StoreroomVO {
|
|||||||
* 单元号
|
* 单元号
|
||||||
*/
|
*/
|
||||||
unitNoId: string | number;
|
unitNoId: string | number;
|
||||||
|
/**
|
||||||
|
* 单元名
|
||||||
|
*/
|
||||||
unitName: string;
|
unitName: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -174,7 +174,6 @@ function handleSelectionChange(selection: BillUserlist[]) {
|
|||||||
const uniqueMap = new Map();
|
const uniqueMap = new Map();
|
||||||
finalSelection.forEach((item) => uniqueMap.set(item.parkingId, item));
|
finalSelection.forEach((item) => uniqueMap.set(item.parkingId, item));
|
||||||
multipleSelection.value = Array.from(uniqueMap.values());
|
multipleSelection.value = Array.from(uniqueMap.values());
|
||||||
console.log(multipleSelection.value.map((item) => item.parkingId));
|
|
||||||
} else {
|
} else {
|
||||||
// --- 单选逻辑 ---
|
// --- 单选逻辑 ---
|
||||||
if (selection.length > 0) {
|
if (selection.length > 0) {
|
||||||
|
|||||||
@@ -166,7 +166,6 @@ function handleSelectionChange(selection: AppUserList[]) {
|
|||||||
const uniqueMap = new Map();
|
const uniqueMap = new Map();
|
||||||
finalSelection.forEach((item) => uniqueMap.set(item.user_id, item));
|
finalSelection.forEach((item) => uniqueMap.set(item.user_id, item));
|
||||||
multipleSelection.value = Array.from(uniqueMap.values());
|
multipleSelection.value = Array.from(uniqueMap.values());
|
||||||
console.log(multipleSelection.value.map((item) => item.user_id));
|
|
||||||
} else {
|
} else {
|
||||||
// --- 单选逻辑 ---
|
// --- 单选逻辑 ---
|
||||||
if (selection.length > 0) {
|
if (selection.length > 0) {
|
||||||
|
|||||||
@@ -141,7 +141,6 @@ const isMultiple = computed(() => props.isMultiple ?? false);
|
|||||||
// 优化 handleUserSelection,避免重复查找
|
// 优化 handleUserSelection,避免重复查找
|
||||||
const handleUserSelection = () => {
|
const handleUserSelection = () => {
|
||||||
isFetching.value = true;
|
isFetching.value = true;
|
||||||
console.log('获取列表');
|
|
||||||
if (tableData.value.length <= 0 || !multipleTableRef.value) {
|
if (tableData.value.length <= 0 || !multipleTableRef.value) {
|
||||||
isFetching.value = false;
|
isFetching.value = false;
|
||||||
return;
|
return;
|
||||||
@@ -239,8 +238,6 @@ function handleSelectionChange(selection: tableType[]) {
|
|||||||
multipleSelection.value = [];
|
multipleSelection.value = [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('handleSelectionChange', selection);
|
|
||||||
}
|
}
|
||||||
// 重置查询
|
// 重置查询
|
||||||
function resetQuery() {
|
function resetQuery() {
|
||||||
|
|||||||
@@ -262,7 +262,6 @@ function handleSelectionChange(selection: BillHouse[]) {
|
|||||||
const uniqueMap = new Map();
|
const uniqueMap = new Map();
|
||||||
finalSelection.forEach((item) => uniqueMap.set(item.houseId, item));
|
finalSelection.forEach((item) => uniqueMap.set(item.houseId, item));
|
||||||
multipleSelection.value = Array.from(uniqueMap.values());
|
multipleSelection.value = Array.from(uniqueMap.values());
|
||||||
console.log(multipleSelection.value.map((item) => item.houseId));
|
|
||||||
} else {
|
} else {
|
||||||
// ✅ 补充:单选模式下,selection-change 触发时,直接取最新的一项
|
// ✅ 补充:单选模式下,selection-change 触发时,直接取最新的一项
|
||||||
// 这样配合 handleRowClick 的 clearSelection + toggle 就能实现完美单选
|
// 这样配合 handleRowClick 的 clearSelection + toggle 就能实现完美单选
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<slot v-if="$slots.default" />
|
<slot v-if="$slots.default" />
|
||||||
|
|
||||||
<div v-else class="residentBox" @click="choiceResidentFun">
|
<div v-else class="residentBox" @click="choiceResidentFun">
|
||||||
<div class="defaultbox" v-if="multipleSelection.length === 0">
|
<div v-if="multipleSelection.length === 0" class="defaultbox">
|
||||||
<span>请选择</span>
|
<span>请选择</span>
|
||||||
<el-icon><Search /></el-icon>
|
<el-icon><Search /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-dialog @close="conBack" append-to-body v-model="dialog.dialogVisible" :title="dialog.dialogTitle" width="1050">
|
<el-dialog v-model="dialog.dialogVisible" :title="dialog.dialogTitle" append-to-body width="1050" @close="conBack">
|
||||||
<nav class="flex flex-items-center mb-8" style="margin-bottom: 20px">
|
<nav class="flex flex-items-center mb-8" style="margin-bottom: 20px">
|
||||||
<!-- <div class="flex flex-items-center flex-1" style="max-width: 200px">-->
|
<!-- <div class="flex flex-items-center flex-1" style="max-width: 200px">-->
|
||||||
<!-- <div style="width: 120px">住户类型</div>-->
|
<!-- <div style="width: 120px">住户类型</div>-->
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
<div class="flex flex-items-center flex-1" style="max-width: 300px; margin: 0 20px">
|
<div class="flex flex-items-center flex-1" style="max-width: 300px; margin: 0 20px">
|
||||||
<div style="width: 120px">住户姓名</div>
|
<div style="width: 120px">住户姓名</div>
|
||||||
<el-input maxlength="30" clearable v-model="queryParams.name" placeholder="请输入住户姓名" />
|
<el-input v-model="queryParams.name" clearable maxlength="30" placeholder="请输入住户姓名" />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-button type="primary" @click="getList">查询</el-button>
|
<el-button type="primary" @click="getList">查询</el-button>
|
||||||
@@ -32,28 +32,28 @@
|
|||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<el-table ref="multipleTableRef" row-key="id" :data="tableData" border @selection-change="handleSelectionChange">
|
<el-table ref="multipleTableRef" :data="tableData" border row-key="id" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="序号" align="center" width="55" type="index" />
|
<el-table-column align="center" label="序号" type="index" width="55" />
|
||||||
<el-table-column label="姓名" align="center" prop="name" />
|
<el-table-column align="center" label="姓名" prop="name" />
|
||||||
<el-table-column label="类型" align="center" width="85" prop="type">
|
<el-table-column align="center" label="类型" prop="type" width="85">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<dict-tag :options="com_resident_type" :value="row.type" />
|
<dict-tag :options="com_resident_type" :value="row.type" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="与业主关系" align="center" width="95" prop="ownerRelationship">
|
<el-table-column align="center" label="与业主关系" prop="ownerRelationship" width="95">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<dict-tag :options="com_resident_relationship" :value="row.ownerRelationship" />
|
<dict-tag :options="com_resident_relationship" :value="row.ownerRelationship" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="状态" align="center" width="85" prop="status">
|
<el-table-column align="center" label="状态" prop="status" width="85">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<dict-tag :options="com_certification_status" :value="row.status" />
|
<dict-tag :options="com_certification_status" :value="row.status" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="证件号码" width="165" align="center" prop="idCard" />
|
<el-table-column align="center" label="证件号码" prop="idCard" width="165" />
|
||||||
<el-table-column label="手机号码" align="center" prop="phone" />
|
<el-table-column align="center" label="手机号码" prop="phone" />
|
||||||
<el-table-column label="房间" show-overflow-tooltip align="center">
|
<el-table-column align="center" label="房间" show-overflow-tooltip>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
{{ row.houseName }}
|
{{ row.houseName }}
|
||||||
</template>
|
</template>
|
||||||
@@ -63,11 +63,11 @@
|
|||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
||||||
<pagination
|
<pagination
|
||||||
style="margin-top: 0"
|
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNum"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:total="total"
|
||||||
|
style="margin-top: 0"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { listResident } from '@/api/system/residentReviewProcess/resident';
|
import { listResident } from '@/api/system/residentReviewProcess/resident';
|
||||||
import { ResidentQuery, ResidentVO } from '@/api/system/residentReviewProcess/resident/type';
|
import { ResidentQuery, ResidentVO } from '@/api/system/residentReviewProcess/resident/type';
|
||||||
import { ref, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
import { ref, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
||||||
@@ -275,7 +275,6 @@ function confirm() {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 单选
|
// 单选
|
||||||
console.log(multipleSelection.value[0], multipleSelection.value);
|
|
||||||
if (returnvalue.value === '*') {
|
if (returnvalue.value === '*') {
|
||||||
// ✅ 返回整个对象
|
// ✅ 返回整个对象
|
||||||
emit('change', multipleSelection.value[0]);
|
emit('change', multipleSelection.value[0]);
|
||||||
@@ -309,7 +308,7 @@ defineExpose({
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.residentBox {
|
.residentBox {
|
||||||
width: 385px;
|
width: 385px;
|
||||||
height: 35px;
|
height: 35px;
|
||||||
|
|||||||
@@ -140,7 +140,6 @@ const isMultiple = computed(() => props.isMultiple ?? false);
|
|||||||
// 优化 handleUserSelection,避免重复查找
|
// 优化 handleUserSelection,避免重复查找
|
||||||
const handleUserSelection = () => {
|
const handleUserSelection = () => {
|
||||||
isFetching.value = true;
|
isFetching.value = true;
|
||||||
console.log('获取列表');
|
|
||||||
if (tableData.value.length <= 0 || !multipleTableRef.value) {
|
if (tableData.value.length <= 0 || !multipleTableRef.value) {
|
||||||
isFetching.value = false;
|
isFetching.value = false;
|
||||||
return;
|
return;
|
||||||
@@ -222,7 +221,6 @@ function handleSelectionChange(selection: tableType[]) {
|
|||||||
const uniqueMap = new Map();
|
const uniqueMap = new Map();
|
||||||
finalSelection.forEach((item) => uniqueMap.set(item.id, item));
|
finalSelection.forEach((item) => uniqueMap.set(item.id, item));
|
||||||
multipleSelection.value = Array.from(uniqueMap.values());
|
multipleSelection.value = Array.from(uniqueMap.values());
|
||||||
console.log(multipleSelection.value.map((item) => item.id));
|
|
||||||
} else {
|
} else {
|
||||||
// --- 单选逻辑 ---
|
// --- 单选逻辑 ---
|
||||||
if (selection.length > 0) {
|
if (selection.length > 0) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import AMapLoader from '@amap/amap-jsapi-loader';
|
import AMapLoader from '@amap/amap-jsapi-loader';
|
||||||
import { getVillageByIdAPI } from '@/api/system/community';
|
import { getVillageByIdAPI } from '@/api/system/community';
|
||||||
import { onUnmounted, ref, watch, onMounted, nextTick } from 'vue';
|
import { onUnmounted, ref, watch, onMounted, nextTick } from 'vue';
|
||||||
@@ -320,7 +320,6 @@ onMounted(async () => {
|
|||||||
|
|
||||||
// 禁用状态不开启绘制/点击
|
// 禁用状态不开启绘制/点击
|
||||||
if (!props.disabled) {
|
if (!props.disabled) {
|
||||||
console.log(props.clickOrDraw);
|
|
||||||
props.clickOrDraw ? handleMap() : MapDrawLine();
|
props.clickOrDraw ? handleMap() : MapDrawLine();
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@@ -355,10 +354,10 @@ onUnmounted(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div v-loading="mapLoading" class="map" id="GD-Map"></div>
|
<div id="GD-Map" v-loading="mapLoading" class="map"></div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.map {
|
.map {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: 450px;
|
min-height: 450px;
|
||||||
|
|||||||
@@ -5,18 +5,18 @@
|
|||||||
<div class="quarter-panel">
|
<div class="quarter-panel">
|
||||||
<!-- 年份切换 -->
|
<!-- 年份切换 -->
|
||||||
<div class="year-header">
|
<div class="year-header">
|
||||||
<el-button icon="ArrowLeft" size="small" circle @click="prevYear" />
|
<el-button circle icon="ArrowLeft" size="small" @click="prevYear" />
|
||||||
<span class="current-year">{{ currentYear }}年</span>
|
<span class="current-year">{{ currentYear }}年</span>
|
||||||
<el-button icon="ArrowRight" size="small" circle @click="nextYear" />
|
<el-button circle icon="ArrowRight" size="small" @click="nextYear" />
|
||||||
</div>
|
</div>
|
||||||
<!-- 四个季度按钮 -->
|
<!-- 四个季度按钮 -->
|
||||||
<div class="quarter-buttons">
|
<div class="quarter-buttons">
|
||||||
<el-button
|
<el-button
|
||||||
v-for="q in 4"
|
v-for="q in 4"
|
||||||
:key="q"
|
:key="q"
|
||||||
style="margin: 0"
|
|
||||||
:type="isSelected(currentYear, q) ? 'primary' : ''"
|
|
||||||
:disabled="isDisabledQuarter(currentYear, q)"
|
:disabled="isDisabledQuarter(currentYear, q)"
|
||||||
|
:type="isSelected(currentYear, q) ? 'primary' : ''"
|
||||||
|
style="margin: 0"
|
||||||
@click="handleSelect(currentYear, q)"
|
@click="handleSelect(currentYear, q)"
|
||||||
>
|
>
|
||||||
第{{ q }}季度
|
第{{ q }}季度
|
||||||
@@ -27,19 +27,19 @@
|
|||||||
<template #reference>
|
<template #reference>
|
||||||
<el-input
|
<el-input
|
||||||
:model-value="displayText"
|
:model-value="displayText"
|
||||||
|
clearable
|
||||||
placeholder="请选择季度"
|
placeholder="请选择季度"
|
||||||
readonly
|
readonly
|
||||||
suffix-icon="Calendar"
|
suffix-icon="Calendar"
|
||||||
@click="popoverVisible = true"
|
|
||||||
clearable
|
|
||||||
@clear="handleClear"
|
@clear="handleClear"
|
||||||
|
@click="popoverVisible = true"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-popover>
|
</el-popover>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref, computed } from 'vue';
|
import { ref, computed } from 'vue';
|
||||||
|
|
||||||
// 外部v‑model绑定
|
// 外部v‑model绑定
|
||||||
@@ -63,7 +63,6 @@ const parseQuarter = (str) => {
|
|||||||
|
|
||||||
const { year: initYear } = parseQuarter(props.modelValue);
|
const { year: initYear } = parseQuarter(props.modelValue);
|
||||||
const currentYear = ref(initYear);
|
const currentYear = ref(initYear);
|
||||||
console.log(currentYear.value, typeof currentYear.value);
|
|
||||||
|
|
||||||
// 输入框展示文本
|
// 输入框展示文本
|
||||||
const displayText = computed(() => {
|
const displayText = computed(() => {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ export const useBgColor = defineStore('backgroundColor', () => {
|
|||||||
const isShow = ref(false);
|
const isShow = ref(false);
|
||||||
const toggleBgColor = (bol: boolean = false) => {
|
const toggleBgColor = (bol: boolean = false) => {
|
||||||
isShow.value = bol;
|
isShow.value = bol;
|
||||||
console.log(isShow.value);
|
|
||||||
};
|
};
|
||||||
return {
|
return {
|
||||||
toggleBgColor,
|
toggleBgColor,
|
||||||
|
|||||||
@@ -146,9 +146,6 @@ export const useHouseStore = defineStore(
|
|||||||
// 获取当前 楼栋的所有信息
|
// 获取当前 楼栋的所有信息
|
||||||
const res3 = await getHouselistAPI(currentBuildingInfo.value.id, houseName, houseUseTypeId);
|
const res3 = await getHouselistAPI(currentBuildingInfo.value.id, houseName, houseUseTypeId);
|
||||||
currentHouseInfoList.value = res3.data;
|
currentHouseInfoList.value = res3.data;
|
||||||
|
|
||||||
console.log(res3.data);
|
|
||||||
|
|
||||||
floorslist.value = null;
|
floorslist.value = null;
|
||||||
floorslist.value = new Set();
|
floorslist.value = new Set();
|
||||||
// 得到所有的有房屋的 楼层 数组
|
// 得到所有的有房屋的 楼层 数组
|
||||||
|
|||||||
@@ -108,7 +108,6 @@ export function buildHousePathCache(treeData: Tree[]) {
|
|||||||
*/
|
*/
|
||||||
export function getHousePathById(houseId: string | number, fieldKey: ValidTreeKey = 'value'): (string | number)[] {
|
export function getHousePathById(houseId: string | number, fieldKey: ValidTreeKey = 'value'): (string | number)[] {
|
||||||
const id = String(houseId);
|
const id = String(houseId);
|
||||||
console.log(pathCache);
|
|
||||||
const cacheMap = pathCache.get(fieldKey);
|
const cacheMap = pathCache.get(fieldKey);
|
||||||
if (!cacheMap) return [];
|
if (!cacheMap) return [];
|
||||||
return cacheMap.get(id) ?? [];
|
return cacheMap.get(id) ?? [];
|
||||||
|
|||||||
@@ -2,27 +2,27 @@
|
|||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<span>智慧物业后台管理系统</span>
|
<span>智慧物业后台管理系统</span>
|
||||||
<navbar :Showhamburger="false" ref="navbarRef" />
|
<navbar ref="navbarRef" :Showhamburger="false" />
|
||||||
</div>
|
</div>
|
||||||
<div class="container AddBuildingBox">
|
<div class="container AddBuildingBox">
|
||||||
<el-form inline class="formBody" ref="formRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" inline label-width="100px">
|
||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form-item label="小区名称" prop="villageName">
|
<el-form-item label="小区名称" prop="villageName">
|
||||||
<el-input maxlength="25" v-model.trim="form.villageName" placeholder="请输入小区名称" />
|
<el-input v-model.trim="form.villageName" maxlength="25" placeholder="请输入小区名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="小区编号" prop="villageCode">
|
<el-form-item label="小区编号" prop="villageCode">
|
||||||
<el-input maxlength="20" v-model.trim="form.villageCode" placeholder="请输入小区编号" />
|
<el-input v-model.trim="form.villageCode" maxlength="20" placeholder="请输入小区编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="所在城市" prop="city">
|
<el-form-item label="所在城市" prop="city">
|
||||||
<el-cascader :options="pcaTextArrList" v-model="city" @change="cityChange"> </el-cascader>
|
<el-cascader v-model="city" :options="pcaTextArrList" @change="cityChange"> </el-cascader>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="完整详细地址" prop="buildingArea">
|
<el-form-item label="完整详细地址" prop="buildingArea">
|
||||||
<el-input type="textarea" :row="3" maxlength="100" show-word-limit v-model.trim="form.address" placeholder="请输入完整详细地址" />
|
<el-input v-model.trim="form.address" :row="3" maxlength="100" placeholder="请输入完整详细地址" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="建成时间" prop="buildingArea">
|
<el-form-item label="建成时间" prop="buildingArea">
|
||||||
<el-date-picker v-model="builtTime" type="date" placeholder="选择建成时间" value-format="YYYY-MM-DD" @change="changeBuiltTime" />
|
<el-date-picker v-model="builtTime" placeholder="选择建成时间" type="date" value-format="YYYY-MM-DD" @change="changeBuiltTime" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="房屋用途" prop="buildingArea">
|
<el-form-item label="房屋用途" prop="buildingArea">
|
||||||
<el-select v-model="form.houseUse" placeholder="请选择房屋用途" style="width: 240px">
|
<el-select v-model="form.houseUse" placeholder="请选择房屋用途" style="width: 240px">
|
||||||
@@ -30,26 +30,26 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="小区面积" prop="villageArea">
|
<el-form-item label="小区面积" prop="villageArea">
|
||||||
<el-input maxlength="8" v-model.trim="form.villageArea" placeholder="请输入小区面积"><template #append>㎡</template> </el-input>
|
<el-input v-model.trim="form.villageArea" maxlength="8" placeholder="请输入小区面积"><template #append>㎡</template> </el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="width: 100%" label="小区图片">
|
<el-form-item label="小区图片" style="width: 100%">
|
||||||
<el-upload
|
<el-upload
|
||||||
accept=".jpg, .png"
|
|
||||||
ref="uploadRef"
|
ref="uploadRef"
|
||||||
:action="uploadFileUrl"
|
:action="uploadFileUrl"
|
||||||
:headers="headerToken()"
|
|
||||||
list-type="picture-card"
|
|
||||||
:file-list="villageImg"
|
|
||||||
:auto-upload="false"
|
:auto-upload="false"
|
||||||
|
:file-list="villageImg"
|
||||||
|
:headers="headerToken()"
|
||||||
:limit="9"
|
:limit="9"
|
||||||
:on-exceed="handleExceed"
|
:on-exceed="handleExceed"
|
||||||
|
accept=".jpg, .png"
|
||||||
|
list-type="picture-card"
|
||||||
@change="handleUploadChange"
|
@change="handleUploadChange"
|
||||||
@before-upload="handleBeforeUpload"
|
@before-upload="handleBeforeUpload"
|
||||||
>
|
>
|
||||||
<el-icon><Plus /></el-icon>
|
<el-icon><Plus /></el-icon>
|
||||||
<template #file="{ file }">
|
<template #file="{ file }">
|
||||||
<div>
|
<div>
|
||||||
<img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
|
<img :src="file.url" alt="" class="el-upload-list__item-thumbnail" />
|
||||||
<span class="el-upload-list__item-actions">
|
<span class="el-upload-list__item-actions">
|
||||||
<span class="el-upload-list__item-delete" @click="handleRemove(file)">
|
<span class="el-upload-list__item-delete" @click="handleRemove(file)">
|
||||||
<el-icon><Delete /></el-icon>
|
<el-icon><Delete /></el-icon>
|
||||||
@@ -62,8 +62,8 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="width: 100%" label="小区简介">
|
<el-form-item label="小区简介" style="width: 100%">
|
||||||
<el-input maxlength="200" show-word-limit v-model.trim="form.remark" :rows="5" type="textarea" placeholder="小区简介" />
|
<el-input v-model.trim="form.remark" :rows="5" maxlength="200" placeholder="小区简介" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -71,19 +71,19 @@
|
|||||||
<div class="title">负责人信息</div>
|
<div class="title">负责人信息</div>
|
||||||
<div class="addBuildingFormBody addBuildingForm_User_Body">
|
<div class="addBuildingFormBody addBuildingForm_User_Body">
|
||||||
<el-form-item label="姓名">
|
<el-form-item label="姓名">
|
||||||
<el-input maxlength="20" v-model.trim="form.manageName" placeholder="请输入姓名" />
|
<el-input v-model.trim="form.manageName" maxlength="20" placeholder="请输入姓名" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="电话" prop="managePhone">
|
<el-form-item label="电话" prop="managePhone">
|
||||||
<el-input v-model.trim="form.managePhone" placeholder="请输入电话" />
|
<el-input v-model.trim="form.managePhone" placeholder="请输入电话" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="微信" prop="manageVx">
|
<el-form-item label="微信" prop="manageVx">
|
||||||
<el-input maxlength="20" v-model.trim="form.manageVx" placeholder="请输入微信"></el-input>
|
<el-input v-model.trim="form.manageVx" maxlength="20" placeholder="请输入微信"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="QQ" prop="manageQq">
|
<el-form-item label="QQ" prop="manageQq">
|
||||||
<el-input maxlength="20" v-model.trim="form.manageQq" placeholder="请输入QQ"> </el-input>
|
<el-input v-model.trim="form.manageQq" maxlength="20" placeholder="请输入QQ"> </el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="邮箱" prop="manageEmail">
|
<el-form-item label="邮箱" prop="manageEmail">
|
||||||
<el-input maxlength="30" v-model.trim="form.manageEmail" placeholder="请输入邮箱"> </el-input>
|
<el-input v-model.trim="form.manageEmail" maxlength="30" placeholder="请输入邮箱"> </el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div class="pl-100px">
|
<div class="pl-100px">
|
||||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import Navbar from '@/layout/components/Navbar.vue';
|
import Navbar from '@/layout/components/Navbar.vue';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { pcaTextArr } from 'element-china-area-data';
|
import { pcaTextArr } from 'element-china-area-data';
|
||||||
@@ -355,7 +355,6 @@ async function handleUploadChange(file: UploadFile) {
|
|||||||
ElMessage.error(isUpload.type);
|
ElMessage.error(isUpload.type);
|
||||||
return;
|
return;
|
||||||
} else if (typeof isUpload === 'boolean' && isUpload === true) {
|
} else if (typeof isUpload === 'boolean' && isUpload === true) {
|
||||||
console.log(file);
|
|
||||||
villageImg.value.push(file.raw);
|
villageImg.value.push(file.raw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -476,7 +475,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.box {
|
.box {
|
||||||
background: #deedff;
|
background: #deedff;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -153,7 +153,8 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form-item label="招募要求" prop="requirements">
|
<el-form-item label="招募要求" prop="requirements">
|
||||||
<editor v-model="form.requirements" :file-size="5" :height="200" :min-height="200" :read-only="false" :type="'url'" />
|
<!-- <editor v-model="form.requirements" :file-size="5" :height="200" :min-height="200" :read-only="false" :type="'url'" /> -->
|
||||||
|
<el-input v-model="form.requirements" :rows="5" maxlength="400" show-word-limit type="textarea"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -367,7 +368,6 @@ const activityTime = ref([]);
|
|||||||
const upload = ref<UploadInstance>();
|
const upload = ref<UploadInstance>();
|
||||||
// 上传成功
|
// 上传成功
|
||||||
const handleAvatarSuccess: UploadProps['onSuccess'] = (response) => {
|
const handleAvatarSuccess: UploadProps['onSuccess'] = (response) => {
|
||||||
console.log(response);
|
|
||||||
if (response.data && response.data.url) {
|
if (response.data && response.data.url) {
|
||||||
form.value.coverImage = response.data.url;
|
form.value.coverImage = response.data.url;
|
||||||
} else {
|
} else {
|
||||||
@@ -422,7 +422,6 @@ async function initSignMap() {
|
|||||||
try {
|
try {
|
||||||
mapReady.value = true;
|
mapReady.value = true;
|
||||||
window._AMapSecurityConfig = { securityJsCode: VITE_GCJ02_JS_CODE_GD };
|
window._AMapSecurityConfig = { securityJsCode: VITE_GCJ02_JS_CODE_GD };
|
||||||
console.log('开始执行 AMapLoader.load');
|
|
||||||
const AMap = await AMapLoader.load({
|
const AMap = await AMapLoader.load({
|
||||||
key: aloaderkey,
|
key: aloaderkey,
|
||||||
version: '2.0',
|
version: '2.0',
|
||||||
@@ -509,8 +508,6 @@ const stopDrawCircle = () => {
|
|||||||
if (circle) {
|
if (circle) {
|
||||||
const center = circle.getCenter();
|
const center = circle.getCenter();
|
||||||
const radius = circle.getRadius();
|
const radius = circle.getRadius();
|
||||||
console.log('中心点:', [center.lng, center.lat]);
|
|
||||||
console.log('半径:', radius, typeof radius);
|
|
||||||
// form.value.SignInfo.lat = center.lat;
|
// form.value.SignInfo.lat = center.lat;
|
||||||
// form.value.SignInfo.lng = center.lng;
|
// form.value.SignInfo.lng = center.lng;
|
||||||
// form.value.SignInfo.radius = center.radius;
|
// form.value.SignInfo.radius = center.radius;
|
||||||
|
|||||||
@@ -12,12 +12,12 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="房屋" prop="houseId">
|
<el-form-item label="房屋" prop="houseId">
|
||||||
<el-cascader @change="handleChange" v-model="userHousepath" :options="treedata" />
|
<el-cascader v-model="userHousepath" :options="treedata" @change="handleChange" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="申请人" prop="applyName">
|
<el-form-item label="申请人" prop="applyName">
|
||||||
<el-input maxlength="20" v-model.trim="form.applyName" placeholder="请输入申请人" />
|
<el-input v-model.trim="form.applyName" maxlength="20" placeholder="请输入申请人" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -25,19 +25,19 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="装修公司" prop="decorationCompany">
|
<el-form-item label="装修公司" prop="decorationCompany">
|
||||||
<el-input maxlength="20" v-model.trim="form.decorationCompany" placeholder="请输入装修公司" />
|
<el-input v-model.trim="form.decorationCompany" maxlength="20" placeholder="请输入装修公司" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="装修内容" prop="decorationContent">
|
<el-form-item label="装修内容" prop="decorationContent">
|
||||||
<el-input maxlength="200" show-word-limit type="textarea" v-model.trim="form.decorationContent" placeholder="请输入装修内容" />
|
<el-input v-model.trim="form.decorationContent" maxlength="200" placeholder="请输入装修内容" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="装修押金(元)" prop="decorationDeposit">
|
<el-form-item label="装修押金(元)" prop="decorationDeposit">
|
||||||
<el-input maxlength="8" placeholder="请输入装修押金,最多保留2位小数" v-model.number.trim="form.decorationDeposit" />
|
<el-input v-model.number.trim="form.decorationDeposit" maxlength="8" placeholder="请输入装修押金,最多保留2位小数" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { addDecoration, getDecoration, updateDecoration } from '@/api/system/Decoration';
|
import { addDecoration, getDecoration, updateDecoration } from '@/api/system/Decoration';
|
||||||
@@ -109,7 +109,6 @@ const rules = {
|
|||||||
return callback(new Error('请输入装修押金'));
|
return callback(new Error('请输入装修押金'));
|
||||||
}
|
}
|
||||||
const num = Number(val);
|
const num = Number(val);
|
||||||
console.log(val);
|
|
||||||
if (Number.isNaN(num)) {
|
if (Number.isNaN(num)) {
|
||||||
return callback(new Error('请输入装修押金'));
|
return callback(new Error('请输入装修押金'));
|
||||||
}
|
}
|
||||||
@@ -195,7 +194,7 @@ function handleBack() {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.ResidentMainBox {
|
.ResidentMainBox {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|||||||
@@ -13,12 +13,12 @@
|
|||||||
<el-col>
|
<el-col>
|
||||||
<el-form-item label="办事内容" prop="content">
|
<el-form-item label="办事内容" prop="content">
|
||||||
<editor
|
<editor
|
||||||
@update:model-value="handleContent"
|
:file-size="5"
|
||||||
:model-value="form.content"
|
|
||||||
:height="500"
|
:height="500"
|
||||||
:min-height="300"
|
:min-height="300"
|
||||||
|
:model-value="form.content"
|
||||||
:read-only="false"
|
:read-only="false"
|
||||||
:file-size="5"
|
@update:model-value="handleContent"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -26,12 +26,12 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="求助人姓名" prop="seekName">
|
<el-form-item label="求助人姓名" prop="seekName">
|
||||||
<el-input maxlength="20" v-model.trim="form.seekName" placeholder="请输入求助人姓名" />
|
<el-input v-model.trim="form.seekName" maxlength="20" placeholder="请输入求助人姓名" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="联系方式" prop="phone">
|
<el-form-item label="联系方式" prop="phone">
|
||||||
<el-input maxlength="50" show-word-limit v-model.trim="form.phone" placeholder="请输入联系方式" />
|
<el-input v-model.trim="form.phone" maxlength="50" placeholder="请输入联系方式" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -39,23 +39,23 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="办事时间" prop="handleTime">
|
<el-form-item label="办事时间" prop="handleTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
format="YYYY-MM-DD HH:mm"
|
|
||||||
value-format="YYYY-MM-DD HH:mm"
|
|
||||||
v-model="form.handleTime"
|
v-model="form.handleTime"
|
||||||
type="datetime"
|
format="YYYY-MM-DD HH:mm"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
|
type="datetime"
|
||||||
|
value-format="YYYY-MM-DD HH:mm"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="办事地点" prop="handlePosition">
|
<el-form-item label="办事地点" prop="handlePosition">
|
||||||
<el-input
|
<el-input
|
||||||
maxlength="200"
|
|
||||||
type="textarea"
|
|
||||||
:rows="3"
|
|
||||||
show-word-limit
|
|
||||||
v-model.trim="form.handlePosition"
|
v-model.trim="form.handlePosition"
|
||||||
|
:rows="3"
|
||||||
|
maxlength="200"
|
||||||
placeholder="请输入办事地点"
|
placeholder="请输入办事地点"
|
||||||
|
show-word-limit
|
||||||
|
type="textarea"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -64,21 +64,21 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="附属材料">
|
<el-form-item label="附属材料">
|
||||||
<el-upload
|
<el-upload
|
||||||
class="upload-demo"
|
|
||||||
:file-list="fileList"
|
|
||||||
:action="uploadUrl"
|
|
||||||
:multiple="true"
|
|
||||||
:auto-upload="false"
|
|
||||||
:limit="9"
|
|
||||||
ref="uploadRef"
|
ref="uploadRef"
|
||||||
:show-file-list="true"
|
:action="uploadUrl"
|
||||||
name="files"
|
:auto-upload="false"
|
||||||
:on-exceed="handleExceed"
|
|
||||||
:headers="headerToken()"
|
|
||||||
:on-remove="handleAvatarRemove"
|
|
||||||
:on-change="handleProgress"
|
|
||||||
:before-upload="beforeAvatarUpload"
|
:before-upload="beforeAvatarUpload"
|
||||||
|
:file-list="fileList"
|
||||||
|
:headers="headerToken()"
|
||||||
|
:limit="9"
|
||||||
|
:multiple="true"
|
||||||
|
:on-change="handleProgress"
|
||||||
|
:on-exceed="handleExceed"
|
||||||
|
:on-remove="handleAvatarRemove"
|
||||||
|
:show-file-list="true"
|
||||||
accept=".doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.bmp,.webp,.zip"
|
accept=".doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.bmp,.webp,.zip"
|
||||||
|
class="upload-demo"
|
||||||
|
name="files"
|
||||||
>
|
>
|
||||||
<div class="uploadBtn flex flex-items-center">
|
<div class="uploadBtn flex flex-items-center">
|
||||||
<el-icon><Upload /></el-icon>
|
<el-icon><Upload /></el-icon>
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import editor from '@/components/Editor/index.vue';
|
import editor from '@/components/Editor/index.vue';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
@@ -282,7 +282,6 @@ const beforeAvatarUpload = (rawFile: UploadUserFile) => {
|
|||||||
|
|
||||||
// ! 初始 ====================================================================================================
|
// ! 初始 ====================================================================================================
|
||||||
function init() {
|
function init() {
|
||||||
console.log('init');
|
|
||||||
getHandleLog(userid.value).then((res) => {
|
getHandleLog(userid.value).then((res) => {
|
||||||
form.value = {
|
form.value = {
|
||||||
...form.value,
|
...form.value,
|
||||||
@@ -317,7 +316,6 @@ const submitForm = async () => {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
const files = [...oldFiles];
|
const files = [...oldFiles];
|
||||||
console.log('oldFiles', files);
|
|
||||||
if (newFiles.length > 0) {
|
if (newFiles.length > 0) {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
newFiles.forEach((item) => {
|
newFiles.forEach((item) => {
|
||||||
@@ -371,7 +369,7 @@ function handleBack() {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.ResidentMainBox {
|
.ResidentMainBox {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="月卡编号" prop="cardCode">
|
<el-form-item label="月卡编号" prop="cardCode">
|
||||||
<el-input maxlength="12" v-model="queryParams.cardCode" placeholder="请输入月卡编号" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.cardCode" clearable maxlength="12" placeholder="请输入月卡编号" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['monthCard:monthCard:add'])"
|
:show-add="checkPermi(['monthCard:monthCard:add'])"
|
||||||
:show-edit="checkPermi(['monthCard:monthCard:edit'])"
|
|
||||||
:show-delete="checkPermi(['monthCard:monthCard:remove'])"
|
:show-delete="checkPermi(['monthCard:monthCard:remove'])"
|
||||||
|
:show-edit="checkPermi(['monthCard:monthCard:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,42 +33,42 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="monthCardList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="monthCardList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="月卡编号" align="center" prop="cardCode" v-if="true" />
|
<el-table-column v-if="true" align="center" label="月卡编号" prop="cardCode" />
|
||||||
<el-table-column label="办理时间" align="center" prop="handleTime" width="150">
|
<el-table-column align="center" label="办理时间" prop="handleTime" width="150">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.handleTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.handleTime, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="业主" align="center" prop="cardName" width="150" />
|
<el-table-column align="center" label="业主" prop="cardName" width="150" />
|
||||||
<el-table-column label="绑定车牌号" align="center" prop="carNum" width="150" />
|
<el-table-column align="center" label="绑定车牌号" prop="carNum" width="150" />
|
||||||
<el-table-column label="剩余有效天数" align="center" prop="handleName" width="120">
|
<el-table-column align="center" label="剩余有效天数" prop="handleName" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ diffDays(scope.row.startTime, scope.row.endTime) }}
|
{{ formatTimeDiff(scope.row.endTime) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="支付方式" align="center" prop="payMethod" width="150">
|
<el-table-column align="center" label="支付方式" prop="payMethod" width="150">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_pay_method" :value="scope.row.payMethod" />
|
<dict-tag :options="com_pay_method" :value="scope.row.payMethod" />
|
||||||
</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 align="center" label="备注" prop="remark" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" label="操作">
|
||||||
<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 v-has-permi="['monthCard:monthCard:edit']" link type="primary" @click="handleUpdate(scope.row)">修改</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['monthCard:monthCard:remove']">删除</el-button>
|
<el-button v-has-permi="['monthCard:monthCard:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改月卡管理对话框 -->
|
<!-- 添加或修改月卡管理对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="500px">
|
||||||
<el-form ref="monthCardFormRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="monthCardFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="办理时间" prop="handleTime">
|
<el-form-item label="办理时间" prop="handleTime">
|
||||||
<el-date-picker clearable v-model="form.handleTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择办理时间">
|
<el-date-picker v-model="form.handleTime" clearable placeholder="请选择办理时间" type="datetime" value-format="YYYY-MM-DD HH:mm:ss">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="持卡人姓名" prop="cardName">
|
<el-form-item label="持卡人姓名" prop="cardName">
|
||||||
@@ -96,11 +96,11 @@
|
|||||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="开始日期" prop="startTime">
|
<el-form-item label="开始日期" prop="startTime">
|
||||||
<el-date-picker clearable v-model="form.startTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始日期">
|
<el-date-picker v-model="form.startTime" clearable placeholder="请选择开始日期" type="datetime" value-format="YYYY-MM-DD HH:mm:ss">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结束日期" prop="endTime">
|
<el-form-item label="结束日期" prop="endTime">
|
||||||
<el-date-picker clearable v-model="form.endTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择结束日期">
|
<el-date-picker v-model="form.endTime" clearable placeholder="请选择结束日期" type="datetime" value-format="YYYY-MM-DD HH:mm:ss">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -114,11 +114,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="MonthCard" lang="ts">
|
<script lang="ts" name="MonthCard" setup>
|
||||||
import { listMonthCard, delMonthCard, addMonthCard, updateMonthCard } from '@/api/system/MonthCard';
|
import { listMonthCard, delMonthCard, addMonthCard, updateMonthCard } from '@/api/system/MonthCard';
|
||||||
import { MonthCardVO, MonthCardQuery, MonthCardForm } from '@/api/system/MonthCard/type';
|
import { MonthCardVO, MonthCardQuery, MonthCardForm } from '@/api/system/MonthCard/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
import { diffDays } from '@/utils/time';
|
import { diffDays, formatTimeDiff } from '@/utils/time';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
const { com_pay_method } = toRefs<any>(proxy?.useDict('com_pay_method'));
|
const { com_pay_method } = toRefs<any>(proxy?.useDict('com_pay_method'));
|
||||||
|
|||||||
@@ -94,7 +94,6 @@ const rules = {
|
|||||||
const userid = ref();
|
const userid = ref();
|
||||||
// ! 富文本 =============================================================================================================
|
// ! 富文本 =============================================================================================================
|
||||||
function handleContent(val: string) {
|
function handleContent(val: string) {
|
||||||
console.log(val);
|
|
||||||
form.value.noticeContent = val.trim();
|
form.value.noticeContent = val.trim();
|
||||||
}
|
}
|
||||||
// ! 富文本 =============================================================================================================
|
// ! 富文本 =============================================================================================================
|
||||||
|
|||||||
@@ -246,7 +246,6 @@ function handleGetMain(id: string) {
|
|||||||
});
|
});
|
||||||
dialog.visible = true;
|
dialog.visible = true;
|
||||||
dialog.title = '问卷调查回答详情';
|
dialog.title = '问卷调查回答详情';
|
||||||
console.log(form.value);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -4,13 +4,13 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :rules="rules" :model="queryParams" :inline="true" @submit.prevent="handleQuery">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" :rules="rules" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="项目名称" prop="itemName">
|
<el-form-item label="项目名称" prop="itemName">
|
||||||
<el-input
|
<el-input
|
||||||
maxlength="20"
|
|
||||||
v-model.trim="queryParams.itemName"
|
v-model.trim="queryParams.itemName"
|
||||||
placeholder="请输入项目名称"
|
|
||||||
clearable
|
clearable
|
||||||
|
maxlength="20"
|
||||||
|
placeholder="请输入项目名称"
|
||||||
@keyup.enter.prevent="handleQuery"
|
@keyup.enter.prevent="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -29,9 +29,9 @@
|
|||||||
<right-toolbar
|
<right-toolbar
|
||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-edit="checkPermi(['chargeItem:chargeItem:edit'])"
|
|
||||||
:show-add="checkPermi(['chargeItem:chargeItem:add'])"
|
:show-add="checkPermi(['chargeItem:chargeItem:add'])"
|
||||||
:show-delete="checkPermi(['chargeItem:chargeItem:remove'])"
|
:show-delete="checkPermi(['chargeItem:chargeItem:remove'])"
|
||||||
|
:show-edit="checkPermi(['chargeItem:chargeItem:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -39,65 +39,65 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="chargeItemList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="chargeItemList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="项目名称" align="center" prop="itemName" />
|
<el-table-column align="center" label="项目名称" prop="itemName" />
|
||||||
<el-table-column label="计费方式" width="100" align="center" prop="billingType">
|
<el-table-column align="center" label="计费方式" prop="billingType" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_charge_item_method" :value="scope.row.billingType"></dict-tag>
|
<dict-tag :options="com_charge_item_method" :value="scope.row.billingType"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="计算公式" width="100" align="center" prop="formula">
|
<el-table-column align="center" label="计算公式" prop="formula" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_charge_item_formula" :value="scope.row.formula"></dict-tag>
|
<dict-tag :options="com_charge_item_formula" :value="scope.row.formula"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="单价" width="100" align="center" prop="fixedPrice">
|
<el-table-column align="center" label="单价" prop="fixedPrice" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.fixedPrice ?? '---' }}
|
{{ scope.row.fixedPrice ?? '---' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="计量单位" width="100" align="center" prop="unit">
|
<el-table-column align="center" label="计量单位" prop="unit" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag v-if="scope.row.unit" :options="com_charge_item_unit" :value="scope.row.unit"></dict-tag>
|
<dict-tag v-if="scope.row.unit" :options="com_charge_item_unit" :value="scope.row.unit"></dict-tag>
|
||||||
<span v-else>---</span>
|
<span v-else>---</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="计算精度" width="120" align="center" prop="accuracy">
|
<el-table-column align="center" label="计算精度" prop="accuracy" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_charge_item_precision" :value="scope.row.accuracy"></dict-tag>
|
<dict-tag :options="com_charge_item_precision" :value="scope.row.accuracy"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="进位方式" width="100" align="center" prop="carryMethod">
|
<el-table-column align="center" label="进位方式" prop="carryMethod" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_charge_item_carry_method" :value="scope.row.carryMethod"></dict-tag>
|
<dict-tag :options="com_charge_item_carry_method" :value="scope.row.carryMethod"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="状态" width="100" align="center" prop="status">
|
<el-table-column align="center" label="状态" prop="status" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
@change="(val: string) => handleSwitch(val, scope.row)"
|
|
||||||
inactive-value="1"
|
|
||||||
active-value="0"
|
|
||||||
v-model="scope.row.status"
|
v-model="scope.row.status"
|
||||||
|
active-value="0"
|
||||||
|
inactive-value="1"
|
||||||
|
@change="(val: string) => handleSwitch(val, scope.row)"
|
||||||
></el-switch>
|
></el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="备注" show-overflow-tooltip align="center" prop="remark" />
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['chargeItem:chargeItem:edit']">编辑</el-button>
|
<el-button v-has-permi="['chargeItem:chargeItem:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['chargeItem:chargeItem:remove']">删除</el-button>
|
<el-button v-has-permi="['chargeItem:chargeItem:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="ChargeItem" lang="ts">
|
<script lang="ts" name="ChargeItem" setup>
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import Pagination from '@/components/Pagination/index.vue';
|
import Pagination from '@/components/Pagination/index.vue';
|
||||||
import DictTag from '@/components/DictTag/index.vue';
|
import DictTag from '@/components/DictTag/index.vue';
|
||||||
@@ -176,7 +176,6 @@ const getList = async () => {
|
|||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
queryFormRef.value.validate((valid: boolean) => {
|
queryFormRef.value.validate((valid: boolean) => {
|
||||||
console.log(valid);
|
|
||||||
if (valid) {
|
if (valid) {
|
||||||
queryParams.value.pageNum = 1;
|
queryParams.value.pageNum = 1;
|
||||||
getList();
|
getList();
|
||||||
|
|||||||
@@ -281,7 +281,6 @@ async function init() {
|
|||||||
form.value.startDate = res.data.startDate;
|
form.value.startDate = res.data.startDate;
|
||||||
form.value.endDate = res.data.endDate;
|
form.value.endDate = res.data.endDate;
|
||||||
StartEndDate.value = [form.value.startDate, form.value.endDate];
|
StartEndDate.value = [form.value.startDate, form.value.endDate];
|
||||||
console.log(form.value);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -328,7 +327,6 @@ function handleSelect(val: string[]) {
|
|||||||
const checkoutUser = ref([]);
|
const checkoutUser = ref([]);
|
||||||
/** 添加 业主 */
|
/** 添加 业主 */
|
||||||
function handleCheckUser(val: string[]) {
|
function handleCheckUser(val: string[]) {
|
||||||
console.log(val);
|
|
||||||
checkoutUser.value = val;
|
checkoutUser.value = val;
|
||||||
form.value.residentIds = val;
|
form.value.residentIds = val;
|
||||||
}
|
}
|
||||||
@@ -336,7 +334,6 @@ const checkoutParking = ref([]);
|
|||||||
/** 添加 车位业主 */
|
/** 添加 车位业主 */
|
||||||
function handleCheckParking(val: string[]) {
|
function handleCheckParking(val: string[]) {
|
||||||
checkoutParking.value = val;
|
checkoutParking.value = val;
|
||||||
console.log(val);
|
|
||||||
form.value.parkingIds = val;
|
form.value.parkingIds = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -433,7 +430,6 @@ const submitForm = () => {
|
|||||||
const endData = new Date(form.value.endDate);
|
const endData = new Date(form.value.endDate);
|
||||||
|
|
||||||
const diff = endData.getTime() - startData.getTime();
|
const diff = endData.getTime() - startData.getTime();
|
||||||
console.log(diff);
|
|
||||||
if (diff <= 60 * 60 * 24 * 1000 * 2) {
|
if (diff <= 60 * 60 * 24 * 1000 * 2) {
|
||||||
ElMessage.warning('起止日期不足1年');
|
ElMessage.warning('起止日期不足1年');
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -182,7 +182,15 @@
|
|||||||
<span style="padding: 0 10px">优惠:{{ totalAll.totalDiscountAmount }}元</span>
|
<span style="padding: 0 10px">优惠:{{ totalAll.totalDiscountAmount }}元</span>
|
||||||
<span style="padding: 0 10px">未收:{{ totalAll.TotalUnPaymentAmount }}元</span>
|
<span style="padding: 0 10px">未收:{{ totalAll.TotalUnPaymentAmount }}元</span>
|
||||||
</div>
|
</div>
|
||||||
<pagination v-show="total > 0" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:pageSizes="[10, 20, 30, 50, 100, 200, 300]"
|
||||||
|
:total="total"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="650px">
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="650px">
|
||||||
@@ -611,7 +619,6 @@ function getList() {
|
|||||||
|
|
||||||
function getAllBillAmount() {
|
function getAllBillAmount() {
|
||||||
getAllAccount(queryParams.value).then((res) => {
|
getAllAccount(queryParams.value).then((res) => {
|
||||||
console.log(res);
|
|
||||||
totalAll.value = {
|
totalAll.value = {
|
||||||
totalDiscountAmount: res.data.discountAmount, // 总优惠金额
|
totalDiscountAmount: res.data.discountAmount, // 总优惠金额
|
||||||
TotalPaymentAmount: res.data.receivedAmount, // 总实收金额
|
TotalPaymentAmount: res.data.receivedAmount, // 总实收金额
|
||||||
@@ -892,7 +899,6 @@ const submitForm = () => {
|
|||||||
}
|
}
|
||||||
buttonLoading.value = true;
|
buttonLoading.value = true;
|
||||||
// 部分缴纳时 判断 支付金额 和 预计支付金额 是否相等 ,相等 则 可选择 部分缴纳 方式
|
// 部分缴纳时 判断 支付金额 和 预计支付金额 是否相等 ,相等 则 可选择 部分缴纳 方式
|
||||||
console.log(totalPayAmount.value, payListAllAmount.value, eqMoney(totalPayAmount.value, payListAllAmount.value), inComeFrom.value.payStatus);
|
|
||||||
if (inComeFrom.value.payStatus === '3') {
|
if (inComeFrom.value.payStatus === '3') {
|
||||||
if (eqMoney(totalPayAmount.value, payListAllAmount.value)) {
|
if (eqMoney(totalPayAmount.value, payListAllAmount.value)) {
|
||||||
buttonLoading.value = false;
|
buttonLoading.value = false;
|
||||||
@@ -930,10 +936,6 @@ const submitForm = () => {
|
|||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
function handleRoute(row: billlistType) {
|
function handleRoute(row: billlistType) {
|
||||||
const villageId = localStorage.getItem('villageid');
|
const villageId = localStorage.getItem('villageid');
|
||||||
console.log(row);
|
|
||||||
console.log(row.villageId);
|
|
||||||
console.log(row.detailsType);
|
|
||||||
console.log(row.unitNoId);
|
|
||||||
if (row.villageId !== villageId) {
|
if (row.villageId !== villageId) {
|
||||||
ElMessage.warning('非本小区房屋/车位/车辆');
|
ElMessage.warning('非本小区房屋/车位/车辆');
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -616,7 +616,6 @@ const handleChangeWater = (val: string, row: WaterDeviceVO) => {};
|
|||||||
|
|
||||||
function handleUpdate(id: string) {
|
function handleUpdate(id: string) {
|
||||||
latestRecord(id).then((res) => {
|
latestRecord(id).then((res) => {
|
||||||
console.log('设备最新抄表记录', res);
|
|
||||||
deviceLastRecordform.value = {
|
deviceLastRecordform.value = {
|
||||||
id: '',
|
id: '',
|
||||||
deviceCode: '',
|
deviceCode: '',
|
||||||
|
|||||||
@@ -8,9 +8,9 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" ref="formRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-width="100px">
|
||||||
<el-form-item label="楼栋名称" prop="buildingName">
|
<el-form-item label="楼栋名称" prop="buildingName">
|
||||||
<el-input maxlength="6" show-word-limit v-model.trim="form.buildingName" placeholder="请输入楼栋名称">
|
<el-input v-model.trim="form.buildingName" maxlength="6" placeholder="请输入楼栋名称" show-word-limit>
|
||||||
<template #append>
|
<template #append>
|
||||||
<span>栋</span>
|
<span>栋</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -22,13 +22,13 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="楼高(m)" prop="buildTall">
|
<el-form-item label="楼高(m)" prop="buildTall">
|
||||||
<el-input maxlength="4" v-model.trim="form.buildTall" placeholder="请输入楼高(m)" />
|
<el-input v-model.trim="form.buildTall" maxlength="4" placeholder="请输入楼高(m)" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="楼栋结构" prop="buildStructure">
|
<el-form-item label="楼栋结构" prop="buildStructure">
|
||||||
<el-input maxlength="30" v-model.trim="form.buildStructure" placeholder="请输入楼栋结构" />
|
<el-input v-model.trim="form.buildStructure" maxlength="30" placeholder="请输入楼栋结构" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="楼层" prop="floorCount">
|
<el-form-item label="楼层" prop="floorCount">
|
||||||
<el-input-number :max="200" :min="1" v-model.trim="form.floorCount" placeholder="楼层数" />
|
<el-input-number v-model.trim="form.floorCount" :max="200" :min="1" placeholder="楼层数" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="margin-top: 30px">
|
<el-form-item style="margin-top: 30px">
|
||||||
<el-button type="primary" @click="submitForm">确定</el-button>
|
<el-button type="primary" @click="submitForm">确定</el-button>
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { addBuildingApi, editBuildingApi } from '@/api/system/house';
|
import { addBuildingApi, editBuildingApi } from '@/api/system/house';
|
||||||
@@ -76,7 +76,6 @@ const rules = ref({
|
|||||||
{ required: false, message: '请输入楼高', trigger: 'blur' },
|
{ required: false, message: '请输入楼高', trigger: 'blur' },
|
||||||
{
|
{
|
||||||
validator: (_: any, val: string | number, callback: (arg0?: Error) => void) => {
|
validator: (_: any, val: string | number, callback: (arg0?: Error) => void) => {
|
||||||
console.log('val', val);
|
|
||||||
if (val === '') {
|
if (val === '') {
|
||||||
return callback();
|
return callback();
|
||||||
}
|
}
|
||||||
@@ -102,7 +101,6 @@ if (buildingId) {
|
|||||||
function getBuildingById() {
|
function getBuildingById() {
|
||||||
houseStore.currentBuildingInfoList.forEach((item) => {
|
houseStore.currentBuildingInfoList.forEach((item) => {
|
||||||
if (item.id == buildingId) {
|
if (item.id == buildingId) {
|
||||||
console.log(item);
|
|
||||||
form.value.buildingName = item.buildingName;
|
form.value.buildingName = item.buildingName;
|
||||||
form.value.buildToward = item.buildToward;
|
form.value.buildToward = item.buildToward;
|
||||||
// form.value.buildingUse = item.buildingUse;
|
// form.value.buildingUse = item.buildingUse;
|
||||||
@@ -155,7 +153,7 @@ function goBack() {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.BackBox {
|
.BackBox {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
height: 45px;
|
height: 45px;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" label-position="right" ref="formRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="right" label-width="100px">
|
||||||
<el-form-item label="楼栋" prop="buildingId">
|
<el-form-item label="楼栋" prop="buildingId">
|
||||||
<el-select @change="handlechangeBuild" v-model="form.buildingId" placeholder="请选择">
|
<el-select v-model="form.buildingId" placeholder="请选择" @change="handleChangeBuild">
|
||||||
<el-option v-for="item in houseStore.currentBuildingInfoList" :key="item.id" :label="item.buildingName" :value="item.id" />
|
<el-option v-for="item in houseStore.currentBuildingInfoList" :key="item.id" :label="item.buildingName" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="单元" prop="unitNoId">
|
<el-form-item label="单元" prop="unitNoId">
|
||||||
<el-select @change="changeUnitNo" v-model="form.unitNoId" placeholder="请选择">
|
<el-select v-model="form.unitNoId" placeholder="请选择" @change="changeUnitNo">
|
||||||
<el-option v-for="item in units" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in units" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -26,44 +26,44 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="房间号" prop="houseNo">
|
<el-form-item label="房间号" prop="houseNo">
|
||||||
<el-input maxlength="15" v-model.trim="form.houseNo" placeholder="请输入房间号" />
|
<el-input v-model.trim="form.houseNo" maxlength="15" placeholder="请输入房间号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="建筑面积" prop="houseArea">
|
<el-form-item label="建筑面积" prop="houseArea">
|
||||||
<div class="unitBox flex align-center">
|
<div class="unitBox flex align-center">
|
||||||
<el-input maxlength="8" v-model.trim.number="form.houseArea" placeholder="请输入建筑面积" />
|
<el-input v-model.trim.number="form.houseArea" maxlength="8" placeholder="请输入建筑面积" />
|
||||||
<span>㎡</span>
|
<span>㎡</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="套内面积" prop="internalArea">
|
<el-form-item label="套内面积" prop="internalArea">
|
||||||
<div class="unitBox flex align-center">
|
<div class="unitBox flex align-center">
|
||||||
<el-input maxlength="8" v-model.trim.number="form.internalArea" placeholder="请输入套内面积" />
|
<el-input v-model.trim.number="form.internalArea" maxlength="8" placeholder="请输入套内面积" />
|
||||||
<span>㎡</span>
|
<span>㎡</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="公摊面积" prop="shareArea">
|
<el-form-item label="公摊面积" prop="shareArea">
|
||||||
<div class="unitBox flex align-center">
|
<div class="unitBox flex align-center">
|
||||||
<el-input maxlength="8" v-model.trim.number="form.shareArea" placeholder="请输入公摊面积" />
|
<el-input v-model.trim.number="form.shareArea" maxlength="8" placeholder="请输入公摊面积" />
|
||||||
<span>㎡</span>
|
<span>㎡</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="房屋户型">
|
<el-form-item label="房屋户型">
|
||||||
<div class="houseTypebox">
|
<div class="houseTypebox">
|
||||||
<el-input maxlength="3" v-model.trim="housetype[0]" placeholder="房间" @change="changeHouseType($event, 0)" />
|
<el-input v-model.trim="houseType[0]" maxlength="3" placeholder="房间" @change="changeHouseType($event, 0)" />
|
||||||
<span>室</span>
|
<span>室</span>
|
||||||
<el-input maxlength="3" v-model.trim="housetype[1]" placeholder="客厅" @change="changeHouseType($event, 1)" />
|
<el-input v-model.trim="houseType[1]" maxlength="3" placeholder="客厅" @change="changeHouseType($event, 1)" />
|
||||||
<span>厅</span>
|
<span>厅</span>
|
||||||
<el-input maxlength="3" v-model.trim="housetype[2]" placeholder="卫生间" @change="changeHouseType($event, 2)" />
|
<el-input v-model.trim="houseType[2]" maxlength="3" placeholder="卫生间" @change="changeHouseType($event, 2)" />
|
||||||
<span>卫</span>
|
<span>卫</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="车位号" prop="parkingIds">
|
<el-form-item label="车位号" prop="parkingIds">
|
||||||
<el-select multiple v-model="form.parkingIds" class="m-2" placeholder="请选择车位号">
|
<el-select v-model="form.parkingIds" class="m-2" multiple placeholder="请选择车位号">
|
||||||
<el-option v-for="(item, index) in parkinglist" :key="index" :label="item.parkingName" :value="item.id" />
|
<el-option v-for="(item, index) in parkingList" :key="index" :label="item.parkingName" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="储藏室" prop="storeroomId">
|
<el-form-item label="储藏室" prop="storeroomId">
|
||||||
<el-select v-model="form.storeroomId" class="m-2" placeholder="请选择储藏室">
|
<el-select v-model="form.storeroomId" class="m-2" placeholder="请选择储藏室">
|
||||||
<el-option v-for="(item, index) in storeRoomlist" :key="index" :label="item.storeroomName" :value="item.id" />
|
<el-option v-for="(item, index) in storeRoomList" :key="index" :label="item.storeroomName" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="margin-top: 30px">
|
<el-form-item style="margin-top: 30px">
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { useHouseStore } from '@/store/modules/house';
|
import { useHouseStore } from '@/store/modules/house';
|
||||||
@@ -194,51 +194,51 @@ const rules = ref({
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
const housetype = ref([]);
|
const houseType = ref([]);
|
||||||
const units = ref([]);
|
const units = ref([]);
|
||||||
const floors = ref([]);
|
const floors = ref([]);
|
||||||
|
|
||||||
const houseid = ref(null);
|
const houseId = ref(null);
|
||||||
|
|
||||||
// 车位列表
|
// 车位列表
|
||||||
const parkinglist = ref([]);
|
const parkingList = ref([]);
|
||||||
// 储藏室列表
|
// 储藏室列表
|
||||||
const storeRoomlist = ref([]);
|
const storeRoomList = ref([]);
|
||||||
|
|
||||||
const queryChangestore = ref({
|
const queryChangeStore = ref({
|
||||||
// buildingId
|
// buildingId
|
||||||
buildingId: null,
|
buildingId: null,
|
||||||
// unitno,
|
// unitNo,
|
||||||
unitNoId: null
|
unitNoId: null
|
||||||
});
|
});
|
||||||
const villageid = localStorage.getItem('villageid');
|
const villageid = localStorage.getItem('villageid');
|
||||||
async function init() {
|
async function init() {
|
||||||
if (route.query.id) {
|
if (route.query.id) {
|
||||||
houseid.value = route.query.id;
|
houseId.value = route.query.id;
|
||||||
}
|
}
|
||||||
await nextTick(() => geteditinfo());
|
await nextTick(() => getEditInfo());
|
||||||
}
|
}
|
||||||
init();
|
init();
|
||||||
|
|
||||||
const houseUseTypeList = ref([]);
|
const houseUseTypeList = ref([]);
|
||||||
async function geteditinfo() {
|
async function getEditInfo() {
|
||||||
listHouseUseType_add_house().then((res) => {
|
listHouseUseType_add_house().then((res) => {
|
||||||
houseUseTypeList.value = res.data;
|
houseUseTypeList.value = res.data;
|
||||||
});
|
});
|
||||||
// 车位列表 = 当前房屋绑定车位 + 无人绑定车位
|
// 车位列表 = 当前房屋绑定车位 + 无人绑定车位
|
||||||
GetVillageListParking(villageid, houseid.value).then((res) => {
|
GetVillageListParking(villageid, houseId.value).then((res) => {
|
||||||
parkinglist.value = res.data;
|
parkingList.value = res.data;
|
||||||
});
|
});
|
||||||
GetVillagelistStoreroom({
|
GetVillagelistStoreroom({
|
||||||
...queryChangestore.value,
|
...queryChangeStore.value,
|
||||||
villageid: villageid,
|
villageid: villageid,
|
||||||
houseId: houseid.value
|
houseId: houseId.value
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
storeRoomlist.value = res.data.filter((item) => item);
|
storeRoomList.value = res.data.filter((item) => item);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (route.query.id) {
|
if (route.query.id) {
|
||||||
getHouseApi(houseid.value).then((res) => {
|
getHouseApi(houseId.value).then((res) => {
|
||||||
form.value = {
|
form.value = {
|
||||||
...form.value,
|
...form.value,
|
||||||
buildingId: res.data.buildingId, // 楼栋id
|
buildingId: res.data.buildingId, // 楼栋id
|
||||||
@@ -253,19 +253,19 @@ async function geteditinfo() {
|
|||||||
houseUseTypeId: res.data.houseUseTypeId,
|
houseUseTypeId: res.data.houseUseTypeId,
|
||||||
shareArea: res.data.shareArea // 公摊面积
|
shareArea: res.data.shareArea // 公摊面积
|
||||||
};
|
};
|
||||||
housetype.value = res.data.houseType ? res.data.houseType.split('') : [];
|
houseType.value = res.data.houseType ? res.data.houseType.split('') : [];
|
||||||
queryChangestore.value.buildingId = form.value.buildingId;
|
queryChangeStore.value.buildingId = form.value.buildingId;
|
||||||
changeBuild(res.data.buildingId);
|
changeBuild(res.data.buildingId);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 选择楼栋
|
// 选择楼栋
|
||||||
function handlechangeBuild(id: string) {
|
function handleChangeBuild(id: string) {
|
||||||
queryChangestore.value.buildingId = id;
|
queryChangeStore.value.buildingId = id;
|
||||||
form.value.unitNoId = '';
|
form.value.unitNoId = '';
|
||||||
form.value.floorNo = '';
|
form.value.floorNo = '';
|
||||||
changeBuild(id);
|
changeBuild(id);
|
||||||
getStoreRoomlist();
|
getStoreRoomList();
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeBuild(id: string) {
|
function changeBuild(id: string) {
|
||||||
@@ -291,20 +291,20 @@ function changeBuild(id: string) {
|
|||||||
function changeUnitNo(id: string) {
|
function changeUnitNo(id: string) {
|
||||||
form.value.unitNoId = '';
|
form.value.unitNoId = '';
|
||||||
form.value.unitNoId = id;
|
form.value.unitNoId = id;
|
||||||
queryChangestore.value.unitNoId = id;
|
queryChangeStore.value.unitNoId = id;
|
||||||
form.value.floorNo = '';
|
form.value.floorNo = '';
|
||||||
getStoreRoomlist();
|
getStoreRoomList();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询储藏室列表
|
// 查询储藏室列表
|
||||||
function getStoreRoomlist() {
|
function getStoreRoomList() {
|
||||||
GetVillagelistStoreroom({
|
GetVillagelistStoreroom({
|
||||||
...queryChangestore.value,
|
...queryChangeStore.value,
|
||||||
villageid: villageid
|
villageid: villageid
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
form.value.storeroomId = '';
|
form.value.storeroomId = '';
|
||||||
storeRoomlist.value = [];
|
storeRoomList.value = [];
|
||||||
storeRoomlist.value = res.data;
|
storeRoomList.value = res.data;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -312,21 +312,34 @@ function getStoreRoomlist() {
|
|||||||
function changeHouseType(val: string, index: number) {
|
function changeHouseType(val: string, index: number) {
|
||||||
const num = Number(val);
|
const num = Number(val);
|
||||||
if (Number.isNaN(num)) {
|
if (Number.isNaN(num)) {
|
||||||
housetype.value[index] = '0';
|
houseType.value[index] = '0';
|
||||||
} else {
|
} else {
|
||||||
housetype.value[index] = num.toFixed(0);
|
houseType.value[index] = num.toFixed(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const submitForm = () => {
|
const submitForm = () => {
|
||||||
|
const houseArea = Number(form.value.houseArea) ?? 0;
|
||||||
|
if (houseArea <= 0) {
|
||||||
|
ElMessage.warning('建筑面积不能为0');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const shareArea = Number(form.value.shareArea) ?? 0;
|
||||||
|
const internalArea = Number(form.value.internalArea) ?? 0;
|
||||||
|
// 有 公摊面积 / 房屋面积
|
||||||
|
if (shareArea || internalArea) {
|
||||||
|
if (shareArea + internalArea !== Number(form.value.houseArea)) {
|
||||||
|
return ElMessage.warning('您填写的【套内面积】+【公摊面积】计算结果,和【建筑面积】不相等');
|
||||||
|
}
|
||||||
|
}
|
||||||
formRef.value?.validate(async (valid: boolean) => {
|
formRef.value?.validate(async (valid: boolean) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
const data = {
|
const data = {
|
||||||
...form.value,
|
...form.value,
|
||||||
houseType: housetype.value.join(''),
|
houseType: houseType.value.join(''),
|
||||||
villageId: houseStore.currentBuildingInfo.villageId
|
villageId: houseStore.currentBuildingInfo.villageId
|
||||||
};
|
};
|
||||||
if (houseid.value) {
|
if (houseId.value) {
|
||||||
EditHouseApi(data).then(() => {
|
EditHouseApi(data).then(() => {
|
||||||
ElMessage.success('修改成功');
|
ElMessage.success('修改成功');
|
||||||
houseStore.updateCureentBuilding();
|
houseStore.updateCureentBuilding();
|
||||||
@@ -353,7 +366,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<span>基本信息</span>
|
<span>基本信息</span>
|
||||||
<el-button v-has-permi="['system:house:edit']" type="primary" text v-if="HouseInfo.house" @click="editHouse">编辑</el-button>
|
<el-button v-if="HouseInfo.house" v-has-permi="['system:house:edit']" text type="primary" @click="editHouse">编辑</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="addBuildingFormBody" v-if="HouseInfo.house">
|
<div v-if="HouseInfo.house" class="addBuildingFormBody">
|
||||||
<div class="descriptionsbox">
|
<div class="descriptionsbox">
|
||||||
<div class="label">房号:</div>
|
<div class="label">房号:</div>
|
||||||
<div class="value">{{ HouseInfo.house?.houseNo ?? '--' }}</div>
|
<div class="value">{{ HouseInfo.house?.buildingName }}-{{ HouseInfo.house?.unitNoName }}-{{ HouseInfo.house?.houseNo ?? '--' }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="descriptionsbox">
|
<div class="descriptionsbox">
|
||||||
<div class="label">所属小区:</div>
|
<div class="label">所属小区:</div>
|
||||||
@@ -31,6 +31,10 @@
|
|||||||
<div class="label">建筑面积:</div>
|
<div class="label">建筑面积:</div>
|
||||||
<div class="value">{{ HouseInfo.house?.houseArea ? `${HouseInfo.house?.houseArea} ㎡` : '--' }}</div>
|
<div class="value">{{ HouseInfo.house?.houseArea ? `${HouseInfo.house?.houseArea} ㎡` : '--' }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="descriptionsbox">
|
||||||
|
<div class="label">套内面积:</div>
|
||||||
|
<div class="value">{{ HouseInfo.house?.internalArea ? `${HouseInfo.house?.internalArea} ㎡` : '--' }}</div>
|
||||||
|
</div>
|
||||||
<div class="descriptionsbox">
|
<div class="descriptionsbox">
|
||||||
<div class="label">公摊面积:</div>
|
<div class="label">公摊面积:</div>
|
||||||
<div class="value">{{ HouseInfo.house?.shareArea ? `${HouseInfo.house?.shareArea} ㎡` : '--' }}</div>
|
<div class="value">{{ HouseInfo.house?.shareArea ? `${HouseInfo.house?.shareArea} ㎡` : '--' }}</div>
|
||||||
@@ -52,9 +56,9 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<span>储藏室信息 </span>
|
<span>储藏室信息 </span>
|
||||||
<el-button v-has-permi="['storeroom:storeroom:edit']" type="primary" text v-if="HouseInfo.storeroom" @click="editStoreRoom">编辑</el-button>
|
<el-button v-if="HouseInfo.storeroom" v-has-permi="['storeroom:storeroom:edit']" text type="primary" @click="editStoreRoom">编辑</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="" v-if="HouseInfo.storeroom">
|
<div v-if="HouseInfo.storeroom" class="">
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<div class="descriptionsbox">
|
<div class="descriptionsbox">
|
||||||
<div class="label">楼栋:</div>
|
<div class="label">楼栋:</div>
|
||||||
@@ -95,32 +99,32 @@
|
|||||||
<div class="title">
|
<div class="title">
|
||||||
<span>车位信息</span>
|
<span>车位信息</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="" v-if="HouseInfo.parkingList.length > 0">
|
<div v-if="HouseInfo.parkingList.length > 0" class="">
|
||||||
<el-table :data="HouseInfo.parkingList">
|
<el-table :data="HouseInfo.parkingList">
|
||||||
<el-table-column align="center" prop="areaName" label="区域" />
|
<el-table-column align="center" label="区域" prop="areaName" />
|
||||||
<el-table-column align="center" prop="parkingCode" label="车位编号" />
|
<el-table-column align="center" label="车位编号" prop="parkingCode" />
|
||||||
<el-table-column align="center" width="100" prop="parkingArea" label="车位面积">
|
<el-table-column align="center" label="车位面积" prop="parkingArea" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.parkingArea ?? '--' }} /㎡</span>
|
<span>{{ scope.row.parkingArea ?? '--' }} /㎡</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" width="50" prop="parkingFloor" label="楼层" />
|
<el-table-column align="center" label="楼层" prop="parkingFloor" width="50" />
|
||||||
<el-table-column align="center" width="100" prop="type" label="车位类型">
|
<el-table-column align="center" label="车位类型" prop="type" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_parking_type" :value="scope.row.type"></dict-tag>
|
<dict-tag :options="com_parking_type" :value="scope.row.type"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" width="100" prop="parkingStatus" label="车位状态">
|
<el-table-column align="center" label="车位状态" prop="parkingStatus" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_parking_status" :value="scope.row.parkingStatus"></dict-tag>
|
<dict-tag :options="com_parking_status" :value="scope.row.parkingStatus"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" prop="residentName" label="持有人">
|
<el-table-column align="center" label="持有人" prop="residentName">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleEditUser(scope.row.residentId)">{{ scope.row.residentName }}</el-button>
|
<el-button link type="primary" @click="handleEditUser(scope.row.residentId)">{{ scope.row.residentName }}</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" show-overflow-tooltip prop="remark" label="备注" />
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="w-full h-full flex flex-center min-h-4rem">
|
<div v-else class="w-full h-full flex flex-center min-h-4rem">
|
||||||
@@ -134,25 +138,24 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-table :data="HouseInfo.chargeItemList" style="width: 100%">
|
<el-table :data="HouseInfo.chargeItemList" style="width: 100%">
|
||||||
<el-table-column prop="itemName" label="收费项目" />
|
<el-table-column label="收费项目" prop="itemName" />
|
||||||
<el-table-column prop="name" label="收费标准">
|
<el-table-column label="收费标准" prop="name">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<span>{{ scope.row.fixedPrice }}</span>
|
<span>{{ scope.row.fixedPrice }}</span>
|
||||||
<span v-if="scope.row.fixedPrice && scope.row.unit">/</span>
|
<span v-if="scope.row.fixedPrice && scope.row.unit">/</span>
|
||||||
<span v-else>---</span>
|
<span v-else>---</span>
|
||||||
|
|
||||||
<dict-tag :options="com_charge_item_unit" :value="scope.row.unit"></dict-tag>
|
<dict-tag :options="com_charge_item_unit" :value="scope.row.unit"></dict-tag>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="createTime" label="开始时间" />
|
<el-table-column label="开始时间" prop="createTime" />
|
||||||
<el-table-column prop="name" label="结束时间">
|
<el-table-column label="结束时间" prop="name">
|
||||||
<template #default>
|
<template #default>
|
||||||
<span>---</span>
|
<span>---</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="remark" label="备注" />
|
<el-table-column label="备注" prop="remark" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -163,19 +166,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-table :data="HouseInfo.residentList" style="width: 100%">
|
<el-table :data="HouseInfo.residentList" style="width: 100%">
|
||||||
<el-table-column prop="residentName" label="姓名" />
|
<el-table-column label="姓名" prop="residentName" />
|
||||||
<el-table-column prop="gender" label="性别">
|
<el-table-column label="性别" prop="gender">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<DictTag :options="sys_user_sex" :value="scope.row.gender"></DictTag>
|
<DictTag :options="sys_user_sex" :value="scope.row.gender"></DictTag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="phone" label="联系电话" />
|
<el-table-column label="联系电话" prop="phone" />
|
||||||
<el-table-column prop="ownerRelationship" label="身份">
|
<el-table-column label="身份" prop="ownerRelationship">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<DictTag :options="com_resident_relationship" :value="scope.row.ownerRelationship"></DictTag>
|
<DictTag :options="com_resident_relationship" :value="scope.row.ownerRelationship"></DictTag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="name" label="备注" />
|
<el-table-column label="备注" prop="name" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -186,19 +189,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-table :data="HouseInfo.billResidentList" style="width: 100%">
|
<el-table :data="HouseInfo.billResidentList" style="width: 100%">
|
||||||
<el-table-column prop="billCode" label="账单编号" />
|
<el-table-column label="账单编号" prop="billCode" />
|
||||||
<el-table-column prop="billName" label="账单名称" />
|
<el-table-column label="账单名称" prop="billName" />
|
||||||
<el-table-column prop="chargeTypeName" label="账单项目" />
|
<el-table-column label="账单项目" prop="chargeTypeName" />
|
||||||
<el-table-column prop="money" label="金额">
|
<el-table-column label="金额" prop="money">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.chargeTypeName === '水费' || scope.row.chargeTypeName === '电费'">--</span>
|
<span v-if="scope.row.chargeTypeName === '水费' || scope.row.chargeTypeName === '电费'">--</span>
|
||||||
<span v-else>{{ scope.row.money }}</span>
|
<span v-else>{{ scope.row.money }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="payStatus" label="支付状态">
|
<el-table-column label="支付状态" prop="payStatus">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.chargeTypeName === '水费' || scope.row.chargeTypeName === '电费'">--</span>
|
<span v-if="scope.row.chargeTypeName === '水费' || scope.row.chargeTypeName === '电费'">--</span>
|
||||||
<DictTag :options="com_pay_status" :value="scope.row.payStatus"></DictTag>
|
<DictTag :options="com_pay_status" :value="scope.row.payStatus ?? 0"></DictTag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -207,7 +210,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import DictTag from '@/components/DictTag/index.vue';
|
import DictTag from '@/components/DictTag/index.vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
@@ -251,7 +254,8 @@ function editStoreRoom() {
|
|||||||
|
|
||||||
function handleEditUser(id: string) {
|
function handleEditUser(id: string) {
|
||||||
router.push({
|
router.push({
|
||||||
path: '/house/editResident',
|
// path: '/house/editResident',
|
||||||
|
path: '/house/ResidentMain',
|
||||||
query: {
|
query: {
|
||||||
id: id
|
id: id
|
||||||
}
|
}
|
||||||
@@ -268,7 +272,7 @@ function init() {
|
|||||||
init();
|
init();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -358,9 +358,13 @@ function handleChange(val: CascaderValue) {
|
|||||||
form.value.houseId = val[2];
|
form.value.houseId = val[2];
|
||||||
if (val[2]) {
|
if (val[2]) {
|
||||||
getHouseOwnUser(val[2]).then((res) => {
|
getHouseOwnUser(val[2]).then((res) => {
|
||||||
if (res.msg && res.msg.trim()) {
|
if (res.data) {
|
||||||
form.value.rentalName = res.msg.trim();
|
form.value.rentalName = res.data.ownerName ?? '';
|
||||||
|
form.value.houseArea = res.data.houseArea;
|
||||||
|
form.value.floorNo = res.data.floorNo;
|
||||||
} else {
|
} else {
|
||||||
|
form.value.floorNo = undefined;
|
||||||
|
form.value.houseArea = undefined;
|
||||||
form.value.rentalName = undefined;
|
form.value.rentalName = undefined;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -424,7 +424,6 @@ function sign(row: HouseRentalVO) {
|
|||||||
const list = row.signingList[0].contractUrl ? row.signingList[0].contractUrl.split(',') : [];
|
const list = row.signingList[0].contractUrl ? row.signingList[0].contractUrl.split(',') : [];
|
||||||
if (list.length > 0) {
|
if (list.length > 0) {
|
||||||
showImgList.value = list.map((item, index) => {
|
showImgList.value = list.map((item, index) => {
|
||||||
console.log(names[index]);
|
|
||||||
return {
|
return {
|
||||||
uid: index,
|
uid: index,
|
||||||
name: names[index] || (item ? item.split('.com/')[1].split('/')[3] : ''),
|
name: names[index] || (item ? item.split('.com/')[1].split('/')[3] : ''),
|
||||||
|
|||||||
@@ -4,16 +4,16 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="选择日期" prop="statDate">
|
<el-form-item label="选择日期" prop="statDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="starDate"
|
v-model="starDate"
|
||||||
type="daterange"
|
|
||||||
unlink-panels
|
|
||||||
range-separator="到"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
end-placeholder="结束日期"
|
||||||
format="YYYY/MM/DD"
|
format="YYYY/MM/DD"
|
||||||
|
range-separator="到"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
type="daterange"
|
||||||
|
unlink-panels
|
||||||
value-format="YYYY/MM/DD"
|
value-format="YYYY/MM/DD"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -40,22 +40,22 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
<el-table v-loading="loading" border row-key="id" :data="itemList" @selectionChange="handleChange">
|
<el-table v-loading="loading" :data="itemList" border row-key="id" @selectionChange="handleChange">
|
||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column label="日期" width="100" align="center" prop="statDate" />
|
<el-table-column align="center" label="日期" prop="statDate" width="100" />
|
||||||
<el-table-column label="计划巡检任务" width="120" align="center" prop="totalPlans" />
|
<el-table-column align="center" label="计划巡检任务" prop="totalPlans" width="120" />
|
||||||
<el-table-column label="按时完成" align="center" prop="completedTasks" />
|
<el-table-column align="center" label="按时完成" prop="completedTasks" />
|
||||||
<el-table-column label="超时完成" align="center" prop="outCompletedTasks" />
|
<el-table-column align="center" label="超时完成" prop="outCompletedTasks" />
|
||||||
<el-table-column label="超时未完成" align="center" prop="outUncompletedTasks" />
|
<el-table-column align="center" label="超时未完成" prop="outUncompletedTasks" />
|
||||||
<el-table-column label="进行中" align="center" prop="activeTask" />
|
<el-table-column align="center" label="进行中" prop="activeTask" />
|
||||||
<el-table-column label="未开始" align="center" prop="pendingTask" />
|
<el-table-column align="center" label="未开始" prop="pendingTask" />
|
||||||
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Item" lang="ts">
|
<script lang="ts" name="Item" setup>
|
||||||
import { listItem } from '@/api/system/Inspection';
|
import { listItem } from '@/api/system/Inspection';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
@@ -135,7 +135,6 @@ function handleChange(val) {
|
|||||||
const exportChecked = () => {
|
const exportChecked = () => {
|
||||||
if (multipleSelection.value.length > 0) {
|
if (multipleSelection.value.length > 0) {
|
||||||
const listValue = multipleSelection.value.map((item) => item.id);
|
const listValue = multipleSelection.value.map((item) => item.id);
|
||||||
console.log(listValue);
|
|
||||||
proxy?.download(
|
proxy?.download(
|
||||||
'/inspection/data/export/selected',
|
'/inspection/data/export/selected',
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,16 +4,16 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="选择日期" prop="itemName">
|
<el-form-item label="选择日期" prop="itemName">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="starDate"
|
v-model="starDate"
|
||||||
type="daterange"
|
|
||||||
unlink-panels
|
|
||||||
range-separator="到"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
end-placeholder="结束日期"
|
||||||
format="YYYY/MM/DD"
|
format="YYYY/MM/DD"
|
||||||
|
range-separator="到"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
type="daterange"
|
||||||
|
unlink-panels
|
||||||
value-format="YYYY/MM/DD"
|
value-format="YYYY/MM/DD"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -41,22 +41,22 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="itemList" @selectionChange="handleChange">
|
<el-table v-loading="loading" :data="itemList" border @selectionChange="handleChange">
|
||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column label="日期" width="100" align="center" prop="statDate" />
|
<el-table-column align="center" label="日期" prop="statDate" width="100" />
|
||||||
<el-table-column label="计划巡检任务" width="120" align="center" prop="totalPlans" />
|
<el-table-column align="center" label="计划巡检任务" prop="totalPlans" width="120" />
|
||||||
<el-table-column label="按时完成" align="center" prop="completedTasks" />
|
<el-table-column align="center" label="按时完成" prop="completedTasks" />
|
||||||
<el-table-column label="超时完成" align="center" prop="outCompletedTasks" />
|
<el-table-column align="center" label="超时完成" prop="outCompletedTasks" />
|
||||||
<el-table-column label="超时未完成" align="center" prop="outUncompletedTasks" />
|
<el-table-column align="center" label="超时未完成" prop="outUncompletedTasks" />
|
||||||
<el-table-column label="进行中" align="center" prop="activeTask" />
|
<el-table-column align="center" label="进行中" prop="activeTask" />
|
||||||
<el-table-column label="未开始" align="center" prop="pendingTask" />
|
<el-table-column align="center" label="未开始" prop="pendingTask" />
|
||||||
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Item" lang="ts">
|
<script lang="ts" name="Item" setup>
|
||||||
import { listItem } from '@/api/system/Inspection';
|
import { listItem } from '@/api/system/Inspection';
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
const itemList = ref<any[]>([]);
|
const itemList = ref<any[]>([]);
|
||||||
@@ -134,7 +134,6 @@ function handleChange(val) {
|
|||||||
const exportChecked = () => {
|
const exportChecked = () => {
|
||||||
if (multipleSelection.value.length > 0) {
|
if (multipleSelection.value.length > 0) {
|
||||||
const listValue = multipleSelection.value.map((item) => item.id);
|
const listValue = multipleSelection.value.map((item) => item.id);
|
||||||
console.log(listValue);
|
|
||||||
proxy?.download(
|
proxy?.download(
|
||||||
'/inspection/data/export/selected',
|
'/inspection/data/export/selected',
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -142,9 +142,7 @@ const date = ref<string | null>(null);
|
|||||||
const setDefaultDate = () => {
|
const setDefaultDate = () => {
|
||||||
const today = new Date();
|
const today = new Date();
|
||||||
today.setHours(0, 0, 0, 0);
|
today.setHours(0, 0, 0, 0);
|
||||||
console.log(!form.value.taskTime);
|
|
||||||
if (!form.value.taskTime) {
|
if (!form.value.taskTime) {
|
||||||
console.log('date', formatDate(today, 'YYYY-MM-DD'));
|
|
||||||
date.value = formatDate(today, 'YYYY-MM-DD');
|
date.value = formatDate(today, 'YYYY-MM-DD');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,16 +4,16 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="选择日期" prop="itemName">
|
<el-form-item label="选择日期" prop="itemName">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="starDate"
|
v-model="starDate"
|
||||||
type="daterange"
|
|
||||||
unlink-panels
|
|
||||||
range-separator="到"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
end-placeholder="结束日期"
|
||||||
format="YYYY/MM/DD"
|
format="YYYY/MM/DD"
|
||||||
|
range-separator="到"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
type="daterange"
|
||||||
|
unlink-panels
|
||||||
value-format="YYYY/MM/DD"
|
value-format="YYYY/MM/DD"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -41,22 +41,22 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="itemList" @selectionChange="handleChange">
|
<el-table v-loading="loading" :data="itemList" border @selectionChange="handleChange">
|
||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column label="日期" width="120" align="center" prop="statDate" />
|
<el-table-column align="center" label="日期" prop="statDate" width="120" />
|
||||||
<el-table-column label="计划巡检任务" width="120" align="center" prop="totalPlans" />
|
<el-table-column align="center" label="计划巡检任务" prop="totalPlans" width="120" />
|
||||||
<el-table-column label="按时完成" align="center" prop="completedTasks" />
|
<el-table-column align="center" label="按时完成" prop="completedTasks" />
|
||||||
<el-table-column label="超时完成" align="center" prop="outCompletedTasks" />
|
<el-table-column align="center" label="超时完成" prop="outCompletedTasks" />
|
||||||
<el-table-column label="超时未完成" align="center" prop="outUncompletedTasks" />
|
<el-table-column align="center" label="超时未完成" prop="outUncompletedTasks" />
|
||||||
<el-table-column label="进行中" align="center" prop="activeTask" />
|
<el-table-column align="center" label="进行中" prop="activeTask" />
|
||||||
<el-table-column label="未开始" align="center" prop="pendingTask" />
|
<el-table-column align="center" label="未开始" prop="pendingTask" />
|
||||||
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Item" lang="ts">
|
<script lang="ts" name="Item" setup>
|
||||||
import { listItem } from '@/api/system/Inspection';
|
import { listItem } from '@/api/system/Inspection';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
@@ -139,7 +139,6 @@ function handleChange(val) {
|
|||||||
const exportChecked = () => {
|
const exportChecked = () => {
|
||||||
if (multipleSelection.value.length > 0) {
|
if (multipleSelection.value.length > 0) {
|
||||||
const listValue = multipleSelection.value.map((item) => item.id);
|
const listValue = multipleSelection.value.map((item) => item.id);
|
||||||
console.log(listValue);
|
|
||||||
proxy?.download(
|
proxy?.download(
|
||||||
'/inspection/data/export/selected',
|
'/inspection/data/export/selected',
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,11 +4,11 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" label-position="left" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="left" label-width="130px">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="区域" prop="areaId">
|
<el-form-item label="区域" prop="areaId">
|
||||||
<el-select v-model="form.areaId" placeholder="请选择" clearable>
|
<el-select v-model="form.areaId" clearable placeholder="请选择">
|
||||||
<el-option v-for="dict in areaList" :key="dict.value" :label="`${dict.areaName}(${dict.areaCode})`" :value="dict.id" />
|
<el-option v-for="dict in areaList" :key="dict.value" :label="`${dict.areaName}(${dict.areaCode})`" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -16,20 +16,20 @@
|
|||||||
<el-col :span="2"></el-col>
|
<el-col :span="2"></el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="车位编号" prop="parkingCode">
|
<el-form-item label="车位编号" prop="parkingCode">
|
||||||
<el-input maxlength="20" v-model.trim="form.parkingCode" placeholder="请输入车位编号" />
|
<el-input v-model.trim="form.parkingCode" maxlength="20" placeholder="请输入车位编号" />
|
||||||
</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">
|
||||||
<el-input maxlength="8" v-model.number="form.parkingArea" placeholder="请输入车位面积" />
|
<el-input v-model.number="form.parkingArea" maxlength="8" placeholder="请输入车位面积" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2"></el-col>
|
<el-col :span="2"></el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="所属楼层" prop="parkingFloor">
|
<el-form-item label="所属楼层" prop="parkingFloor">
|
||||||
<el-input maxlength="5" v-model.number="form.parkingFloor" placeholder="请输入所属楼层" />
|
<el-input v-model.number="form.parkingFloor" maxlength="5" placeholder="请输入所属楼层" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
<el-col :span="2"></el-col>
|
<el-col :span="2"></el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="车位状态" prop="parkingStatus">
|
<el-form-item label="车位状态" prop="parkingStatus">
|
||||||
<el-select v-model="form.parkingStatus" placeholder="请选择" clearable>
|
<el-select v-model="form.parkingStatus" clearable placeholder="请选择">
|
||||||
<el-option v-for="dict in com_parking_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
<el-option v-for="dict in com_parking_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -63,23 +63,23 @@
|
|||||||
<el-row v-if="form.contactType === 0">
|
<el-row v-if="form.contactType === 0">
|
||||||
<el-col :span="10">
|
<el-col :span="10">
|
||||||
<el-form-item label="联系人名称" prop="contactName">
|
<el-form-item label="联系人名称" prop="contactName">
|
||||||
<el-input maxlength="20" v-model.trim="form.contactName"></el-input>
|
<el-input v-model.trim="form.contactName" maxlength="20"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2"></el-col>
|
<el-col :span="2"></el-col>
|
||||||
<el-col :span="10">
|
<el-col :span="10">
|
||||||
<el-form-item label="联系人电话" prop="contactPhone">
|
<el-form-item label="联系人电话" prop="contactPhone">
|
||||||
<el-input maxlength="11" v-model.trim="form.contactPhone"></el-input>
|
<el-input v-model.trim="form.contactPhone" maxlength="11"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row v-else>
|
<el-row v-else>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="持有人" prop="residentId">
|
<el-form-item label="持有人" prop="residentId">
|
||||||
<Holder :isMultiple="false" :userid="form.residentId ?? ''" ref="HolderRef" @change="handleChange">
|
<Holder ref="HolderRef" :isMultiple="false" :userid="form.residentId ?? ''" @change="handleChange">
|
||||||
<template #default>
|
<template #default>
|
||||||
<div class="residentBox" @click="choiceResidentFun">
|
<div class="residentBox" @click="choiceResidentFun">
|
||||||
<div class="defaultBox" v-if="form.residentId == null || form.residentId === ''">
|
<div v-if="form.residentId == null || form.residentId === ''" class="defaultBox">
|
||||||
<span>请选择</span>
|
<span>请选择</span>
|
||||||
<el-icon><Search /></el-icon>
|
<el-icon><Search /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input type="textarea" maxlength="200" show-word-limit :rows="5" v-model.trim="form.remark" placeholder="请输入" />
|
<el-input v-model.trim="form.remark" :rows="5" maxlength="200" placeholder="请输入" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import Holder from '@/components/Holder/index.vue';
|
import Holder from '@/components/Holder/index.vue';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
@@ -261,9 +261,7 @@ function handleChange(pop) {
|
|||||||
// !== 提交 =============================================================================
|
// !== 提交 =============================================================================
|
||||||
// 提交
|
// 提交
|
||||||
const submitForm = () => {
|
const submitForm = () => {
|
||||||
console.log(form.value);
|
|
||||||
formRef.value?.validate(async (valid: boolean) => {
|
formRef.value?.validate(async (valid: boolean) => {
|
||||||
console.log(valid);
|
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (userid.value) {
|
if (userid.value) {
|
||||||
updateParking(form.value).then(() => {
|
updateParking(form.value).then(() => {
|
||||||
@@ -285,7 +283,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,11 +4,11 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="小区" prop="villageId">
|
<el-form-item label="小区" prop="villageId">
|
||||||
<el-select @change="handleVillageChange" v-model="queryParams.villageId" placeholder="请选择">
|
<el-select v-model="queryParams.villageId" placeholder="请选择" @change="handleVillageChange">
|
||||||
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -33,15 +33,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" style="margin-bottom: 30px">
|
<el-row :gutter="10" style="margin-bottom: 30px">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<div style="width: 200px; font-size: 15px; margin-right: 10px">应收欠费汇总列表</div>
|
<div style="width: 200px; font-size: 15px; margin-right: 10px">应收欠费汇总列表</div>
|
||||||
<el-select @change="handleViewTypeChange" v-model="queryParams.viewType" placeholder="请选择视图类型">
|
<el-select v-model="queryParams.viewType" placeholder="请选择视图类型" @change="handleViewTypeChange">
|
||||||
<el-option label="维度1(按收费类型)" :value="1" />
|
<el-option :value="1" label="维度1(按收费类型)" />
|
||||||
<el-option label="维度2(按房屋类型)" :value="2" />
|
<el-option :value="2" label="维度2(按房屋类型)" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -54,15 +54,15 @@
|
|||||||
|
|
||||||
<el-table
|
<el-table
|
||||||
:key="queryParams.viewType"
|
:key="queryParams.viewType"
|
||||||
|
v-loading="loading"
|
||||||
|
:data="ArrearsList"
|
||||||
:row-class-name="handleRowClass"
|
:row-class-name="handleRowClass"
|
||||||
:span-method="mergeSpanMethod"
|
:span-method="mergeSpanMethod"
|
||||||
v-loading="loading"
|
|
||||||
border
|
border
|
||||||
:data="ArrearsList"
|
|
||||||
>
|
>
|
||||||
<el-table-column label="小区" align="center" prop="villageName" />
|
<el-table-column align="center" label="小区" prop="villageName" />
|
||||||
<template v-if="queryParams.viewType === 1">
|
<template v-if="queryParams.viewType === 1">
|
||||||
<el-table-column label="收费项目" align="center" prop="chargeItemName" />
|
<el-table-column align="center" label="收费项目" prop="chargeItemName" />
|
||||||
<el-table-column v-for="(item, index) in houseTypeKeys" :key="index" :label="item" align="center">
|
<el-table-column v-for="(item, index) in houseTypeKeys" :key="index" :label="item" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.houseTypeAmounts?.[item] || '---' }}</span>
|
<span>{{ scope.row.houseTypeAmounts?.[item] || '---' }}</span>
|
||||||
@@ -70,21 +70,21 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="queryParams.viewType === 2">
|
<template v-if="queryParams.viewType === 2">
|
||||||
<el-table-column label="房屋类型" align="center" prop="houseTypeName" />
|
<el-table-column align="center" label="房屋类型" prop="houseTypeName" />
|
||||||
<el-table-column v-for="(item, index) in houseTypeKeys2" :key="index" :label="item" align="center">
|
<el-table-column v-for="(item, index) in houseTypeKeys2" :key="index" :label="item" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.chargeItemAmounts?.[item] || '---' }}</span>
|
<span>{{ scope.row.chargeItemAmounts?.[item] || '---' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
<el-table-column label="金额" align="center" prop="totalAmount" />
|
<el-table-column align="center" label="金额" prop="totalAmount" />
|
||||||
</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>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Arrears" lang="ts">
|
<script lang="ts" name="Arrears" setup>
|
||||||
// import pagination from '@/components/Pagination/index.vue';
|
// import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getArrearsList } from '@/api/system/report/arrears/arrears';
|
import { getArrearsList } from '@/api/system/report/arrears/arrears';
|
||||||
@@ -312,7 +312,6 @@ const handleExport = () => {
|
|||||||
}
|
}
|
||||||
return obj;
|
return obj;
|
||||||
});
|
});
|
||||||
console.log(processedData, columns);
|
|
||||||
const mergeSpanMethod = ({ row, columnIndex, rowIndex }) => {
|
const mergeSpanMethod = ({ row, columnIndex, rowIndex }) => {
|
||||||
const lastRowIndex = ArrearsList.value.length - 1;
|
const lastRowIndex = ArrearsList.value.length - 1;
|
||||||
if (rowIndex === lastRowIndex) {
|
if (rowIndex === lastRowIndex) {
|
||||||
|
|||||||
@@ -141,7 +141,6 @@ const getList = async () => {
|
|||||||
});
|
});
|
||||||
getPaidInExpensesList(search)
|
getPaidInExpensesList(search)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
console.log(res);
|
|
||||||
ArrearsDetailList.value = [res.data.total, ...res.data.details];
|
ArrearsDetailList.value = [res.data.total, ...res.data.details];
|
||||||
rowChargeTypesList.value = res.data.chargeTypes;
|
rowChargeTypesList.value = res.data.chargeTypes;
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -5,26 +5,26 @@
|
|||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form
|
<el-form
|
||||||
:rules="formRules"
|
|
||||||
label-width="180px"
|
|
||||||
label-position="right"
|
|
||||||
ref="queryFormRef"
|
ref="queryFormRef"
|
||||||
:model="queryParams"
|
|
||||||
@submit.prevent="handleQuery"
|
|
||||||
:inline="true"
|
:inline="true"
|
||||||
|
:model="queryParams"
|
||||||
|
:rules="formRules"
|
||||||
|
label-position="right"
|
||||||
|
label-width="180px"
|
||||||
|
@submit.prevent="handleQuery"
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="日期" prop="payTime">
|
<el-form-item label="日期" prop="payTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="payTime"
|
v-model="payTime"
|
||||||
type="daterange"
|
end-placeholder="结束日期"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
range-separator="至"
|
range-separator="至"
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
end-placeholder="结束日期"
|
type="daterange"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
@clear="handleClear()"
|
@clear="handleClear()"
|
||||||
@update:model-value="(val: string[]) => handleUpdateLeaseDate(val)"
|
@update:model-value="(val: string[]) => handleUpdateLeaseDate(val)"
|
||||||
format="YYYY-MM-DD"
|
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="户主" prop="residentName">
|
<el-form-item label="户主" prop="residentName">
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<div v-show="!isShow" class="flex justify-end">
|
<div v-show="!isShow" class="flex justify-end">
|
||||||
<el-button type="primary" @click="handleQuery">查询</el-button>
|
<el-button type="primary" @click="handleQuery">查询</el-button>
|
||||||
<el-button @click="resetQuery">重置</el-button>
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
<div @click="toggleShow" class="flex items-center cursor-pointer hover:color-blue" style="margin-left: 10px; font-size: 13px">
|
<div class="flex items-center cursor-pointer hover:color-blue" style="margin-left: 10px; font-size: 13px" @click="toggleShow">
|
||||||
<span>展开</span>
|
<span>展开</span>
|
||||||
<el-icon style="margin-left: 5px"><ArrowDownBold /></el-icon>
|
<el-icon style="margin-left: 5px"><ArrowDownBold /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -92,6 +92,20 @@
|
|||||||
<el-form-item :label="`${item.chargeTypeName} (开始时间)`">
|
<el-form-item :label="`${item.chargeTypeName} (开始时间)`">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.chargeTypeFilters[index].startDate"
|
v-model="queryParams.chargeTypeFilters[index].startDate"
|
||||||
|
clearable
|
||||||
|
end-placeholder="结束时间"
|
||||||
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
range-separator="到"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
type="datetimerange"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
@clear="
|
||||||
|
() => {
|
||||||
|
queryParams.chargeTypeFilters[index].startDate = '';
|
||||||
|
queryParams.chargeTypeFilters[index].startDateBegin = '';
|
||||||
|
queryParams.chargeTypeFilters[index].startDateEnd = '';
|
||||||
|
}
|
||||||
|
"
|
||||||
@update:model-value="
|
@update:model-value="
|
||||||
(val: string[]) => {
|
(val: string[]) => {
|
||||||
if (val.length === 0) {
|
if (val.length === 0) {
|
||||||
@@ -101,26 +115,25 @@
|
|||||||
queryParams.chargeTypeFilters[index].startDateEnd = val[1];
|
queryParams.chargeTypeFilters[index].startDateEnd = val[1];
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
clearable
|
|
||||||
@clear="
|
|
||||||
() => {
|
|
||||||
queryParams.chargeTypeFilters[index].startDate = '';
|
|
||||||
queryParams.chargeTypeFilters[index].startDateBegin = '';
|
|
||||||
queryParams.chargeTypeFilters[index].startDateEnd = '';
|
|
||||||
}
|
|
||||||
"
|
|
||||||
type="datetimerange"
|
|
||||||
range-separator="到"
|
|
||||||
start-placeholder="开始时间"
|
|
||||||
end-placeholder="结束时间"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="`${item.chargeTypeName} (结束时间)`">
|
<el-form-item :label="`${item.chargeTypeName} (结束时间)`">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.chargeTypeFilters[index].endDate"
|
v-model="queryParams.chargeTypeFilters[index].endDate"
|
||||||
|
clearable
|
||||||
|
end-placeholder="结束时间"
|
||||||
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
range-separator="到"
|
||||||
|
start-placeholder="开始时间"
|
||||||
type="datetimerange"
|
type="datetimerange"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
@clear="
|
||||||
|
() => {
|
||||||
|
queryParams.chargeTypeFilters[index].endDate = '';
|
||||||
|
queryParams.chargeTypeFilters[index].endDateBegin = '';
|
||||||
|
queryParams.chargeTypeFilters[index].endDateEnd = '';
|
||||||
|
}
|
||||||
|
"
|
||||||
@update:model-value="
|
@update:model-value="
|
||||||
(val: string[]) => {
|
(val: string[]) => {
|
||||||
if (val.length === 0) {
|
if (val.length === 0) {
|
||||||
@@ -130,19 +143,6 @@
|
|||||||
queryParams.chargeTypeFilters[index].endDateEnd = val[1];
|
queryParams.chargeTypeFilters[index].endDateEnd = val[1];
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
clearable
|
|
||||||
@clear="
|
|
||||||
() => {
|
|
||||||
queryParams.chargeTypeFilters[index].endDate = '';
|
|
||||||
queryParams.chargeTypeFilters[index].endDateBegin = '';
|
|
||||||
queryParams.chargeTypeFilters[index].endDateEnd = '';
|
|
||||||
}
|
|
||||||
"
|
|
||||||
range-separator="到"
|
|
||||||
start-placeholder="开始时间"
|
|
||||||
end-placeholder="结束时间"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
<div v-show="isShow" class="flex justify-end">
|
<div v-show="isShow" class="flex justify-end">
|
||||||
<el-button type="primary" @click="handleQuery">查询</el-button>
|
<el-button type="primary" @click="handleQuery">查询</el-button>
|
||||||
<el-button @click="resetQuery">重置</el-button>
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
<div @click="toggleShow" class="flex items-center cursor-pointer hover:color-blue" style="margin-left: 10px; font-size: 13px">
|
<div class="flex items-center cursor-pointer hover:color-blue" style="margin-left: 10px; font-size: 13px" @click="toggleShow">
|
||||||
<span>收起</span>
|
<span>收起</span>
|
||||||
<el-icon style="margin-left: 5px"><ArrowUpBold /></el-icon>
|
<el-icon style="margin-left: 5px"><ArrowUpBold /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@@ -180,53 +180,53 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
<el-table :row-class-name="handleRowClass" v-loading="loading" border :data="ArrearsDetailList">
|
<el-table v-loading="loading" :data="ArrearsDetailList" :row-class-name="handleRowClass" border>
|
||||||
<el-table-column label="日期" width="100" align="center" fixed="left" prop="payTime" />
|
<el-table-column align="center" fixed="left" label="日期" prop="payTime" width="100" />
|
||||||
<el-table-column label="房屋信息" align="center" fixed="left">
|
<el-table-column align="center" fixed="left" label="房屋信息">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-table-column label="户主" align="center" width="100" prop="residentName"></el-table-column>
|
<el-table-column align="center" label="户主" prop="residentName" width="100"></el-table-column>
|
||||||
<el-table-column label="房号" align="center" width="100" prop="houseName"></el-table-column>
|
<el-table-column align="center" label="房号" prop="houseName" width="100"></el-table-column>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="支付方式" align="center">
|
<el-table-column align="center" label="支付方式">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-table-column label="现金类" align="center" prop="cashAmount">
|
<el-table-column align="center" label="现金类" prop="cashAmount">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-table-column label="现金" align="center" prop="cashAmount"></el-table-column>
|
<el-table-column align="center" label="现金" prop="cashAmount"></el-table-column>
|
||||||
<el-table-column label="支付宝" align="center" prop="alipayAmount"></el-table-column>
|
<el-table-column align="center" label="支付宝" prop="alipayAmount"></el-table-column>
|
||||||
<el-table-column label="宜当付" align="center" prop="yiDangFuAmount"></el-table-column>
|
<el-table-column align="center" label="宜当付" prop="yiDangFuAmount"></el-table-column>
|
||||||
<el-table-column label="银联" align="center" prop="unionPayAmount"></el-table-column>
|
<el-table-column align="center" label="银联" prop="unionPayAmount"></el-table-column>
|
||||||
<el-table-column label="转账" align="center" prop="transferAmount"></el-table-column>
|
<el-table-column align="center" label="转账" prop="transferAmount"></el-table-column>
|
||||||
<el-table-column label="微信" align="center" prop="wechatAmount"></el-table-column>
|
<el-table-column align="center" label="微信" prop="wechatAmount"></el-table-column>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="顶账类" align="center" prop="deposit">
|
<el-table-column align="center" label="顶账类" prop="deposit">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-table-column label="押金抵顶" align="center" prop="depositAmount"></el-table-column>
|
<el-table-column align="center" label="押金抵顶" prop="depositAmount"></el-table-column>
|
||||||
<el-table-column label="房产抵顶" align="center" prop="propertyOffsetAmount"></el-table-column>
|
<el-table-column align="center" label="房产抵顶" prop="propertyOffsetAmount"></el-table-column>
|
||||||
<el-table-column label="减免优惠" align="center" prop="discountAmount"></el-table-column>
|
<el-table-column align="center" label="减免优惠" prop="discountAmount"></el-table-column>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="水费" align="center" prop="waterFee" />
|
<el-table-column align="center" label="水费" prop="waterFee" />
|
||||||
<el-table-column label="电费" align="center" prop="electricFee" />
|
<el-table-column align="center" label="电费" prop="electricFee" />
|
||||||
<el-table-column label="押金" align="center" prop="deposit" />
|
<el-table-column align="center" label="押金" prop="deposit" />
|
||||||
<el-table-column label="收费项目" align="center" prop="chargeTypeAmounts">
|
<el-table-column align="center" label="收费项目" prop="chargeTypeAmounts">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-table-column v-for="(item, index) in rowChargeTypesList" :key="index" :label="item" align="center">
|
<el-table-column v-for="(item, index) in rowChargeTypesList" :key="index" :label="item" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-table-column label="金额" align="center" v-if="item !== '卡表' && item !== '其他'">
|
<el-table-column v-if="item !== '卡表' && item !== '其他'" align="center" label="金额">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.chargeTypeAmounts[item].amount }}
|
{{ scope.row.chargeTypeAmounts[item].amount }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="开始时间" width="100" align="center" v-if="item !== '卡表' && item !== '其他'">
|
<el-table-column v-if="item !== '卡表' && item !== '其他'" align="center" label="开始时间" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.chargeTypeAmounts[item].startDate }}
|
{{ scope.row.chargeTypeAmounts[item].startDate }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="结束时间" width="100" align="center" v-if="item !== '卡表' && item !== '其他'">
|
<el-table-column v-if="item !== '卡表' && item !== '其他'" align="center" label="结束时间" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.chargeTypeAmounts[item].endDate }}
|
{{ scope.row.chargeTypeAmounts[item].endDate }}
|
||||||
</template>
|
</template>
|
||||||
@@ -239,12 +239,12 @@
|
|||||||
<!-- <el-table-column label="经办人" align="center" prop="handler" />-->
|
<!-- <el-table-column label="经办人" align="center" prop="handler" />-->
|
||||||
<!-- <el-table-column show-overflow-tooltip width="250" label="备注" align="center" prop="remark" />-->
|
<!-- <el-table-column show-overflow-tooltip width="250" label="备注" align="center" prop="remark" />-->
|
||||||
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getCommunitylistAPI } from '@/api/system/community';
|
import { getCommunitylistAPI } from '@/api/system/community';
|
||||||
@@ -550,7 +550,6 @@ const handleExport = () => {
|
|||||||
// { label: '经办人', prop: 'inspectorName' },
|
// { label: '经办人', prop: 'inspectorName' },
|
||||||
// { label: '备注', prop: 'remark' }
|
// { label: '备注', prop: 'remark' }
|
||||||
];
|
];
|
||||||
console.log(columns);
|
|
||||||
exportToExcel(ArrearsDetailList.value, columns, `日报_${new Date().getTime()}`);
|
exportToExcel(ArrearsDetailList.value, columns, `日报_${new Date().getTime()}`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
proxy?.$modal.msgError('导出失败,请重试');
|
proxy?.$modal.msgError('导出失败,请重试');
|
||||||
|
|||||||
@@ -150,7 +150,6 @@ const getList = async () => {
|
|||||||
});
|
});
|
||||||
getPaidInExpensesList(search)
|
getPaidInExpensesList(search)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
console.log(res);
|
|
||||||
ArrearsDetailList.value = [res.data.total, ...res.data.details];
|
ArrearsDetailList.value = [res.data.total, ...res.data.details];
|
||||||
rowChargeTypesList.value = res.data.chargeTypes;
|
rowChargeTypesList.value = res.data.chargeTypes;
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -150,7 +150,6 @@ const getList = async () => {
|
|||||||
});
|
});
|
||||||
getPaidInExpensesReceivableList(search)
|
getPaidInExpensesReceivableList(search)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
console.log(res);
|
|
||||||
ArrearsDetailList.value = [res.data.total, ...res.data.details];
|
ArrearsDetailList.value = [res.data.total, ...res.data.details];
|
||||||
rowChargeTypesList.value = res.data.chargeTypes;
|
rowChargeTypesList.value = res.data.chargeTypes;
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -2,109 +2,111 @@
|
|||||||
<div class="ResidentMainBox p-2 w-full h-full">
|
<div class="ResidentMainBox p-2 w-full h-full">
|
||||||
<PageHeader title="住户详情"></PageHeader>
|
<PageHeader title="住户详情"></PageHeader>
|
||||||
<div class="ResidentMainBody">
|
<div class="ResidentMainBody">
|
||||||
<el-row :span="24" :gutter="20">
|
<el-row :gutter="20" :span="24">
|
||||||
<el-col :span="16">
|
<el-col :span="16">
|
||||||
<div class="userInfobox">
|
<div class="h-full flex flex-col">
|
||||||
<el-card>
|
<div class="userInfobox">
|
||||||
<template #header>
|
<el-card class="h-full">
|
||||||
<div class="card-header">
|
<template #header>
|
||||||
<span>基础资料</span>
|
<div class="card-header">
|
||||||
</div>
|
<span>基础资料</span>
|
||||||
</template>
|
</div>
|
||||||
<div class="w-full h-full">
|
</template>
|
||||||
<el-row :gutter="20">
|
<div class="w-full h-full">
|
||||||
<el-col :span="12">
|
<el-row :gutter="20">
|
||||||
<div class="userinfo_item">
|
<el-col :span="12">
|
||||||
<div class="title_item">住户姓名:</div>
|
<div class="userinfo_item">
|
||||||
<span> {{ userInfo.name }} </span>
|
<div class="title_item">住户姓名:</div>
|
||||||
</div>
|
<span> {{ userInfo.name }} </span>
|
||||||
<div class="userinfo_item">
|
|
||||||
<div class="title_item">手机号码:</div>
|
|
||||||
<span> {{ userInfo.phone }} </span>
|
|
||||||
</div>
|
|
||||||
<div class="userinfo_item">
|
|
||||||
<div class="title_item">证件类型:</div>
|
|
||||||
<DictTag :options="com_id_card_type" :value="userInfo.idCardType"></DictTag>
|
|
||||||
</div>
|
|
||||||
<div class="userinfo_item">
|
|
||||||
<div class="title_item">与主业主关系:</div>
|
|
||||||
<DictTag :options="com_resident_relationship" :value="userInfo.ownerRelationship"></DictTag>
|
|
||||||
</div>
|
|
||||||
<!-- <div class="userinfo_item">
|
|
||||||
<div class="title_item">住户来源:</div>
|
|
||||||
<span> {{ userInfo.name }} </span>
|
|
||||||
</div> -->
|
|
||||||
<!-- <div class="userinfo_item">
|
|
||||||
<div class="title_item">注册时间:</div>
|
|
||||||
<span> {{ userInfo.name }} </span>
|
|
||||||
</div> -->
|
|
||||||
<div class="userinfo_item img">
|
|
||||||
<div class="title_item">身份证正面:</div>
|
|
||||||
<div class="userinfo_itme_img">
|
|
||||||
<el-image class="w-full h-full" fit="fill" :src="userInfo.cardImageFront"></el-image>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="userinfo_item">
|
||||||
</el-col>
|
<div class="title_item">手机号码:</div>
|
||||||
<el-col :span="12">
|
<span> {{ userInfo.phone }} </span>
|
||||||
<div class="userinfo_item">
|
|
||||||
<div class="title_item">住户编号:</div>
|
|
||||||
<span> {{ userInfo.id }} </span>
|
|
||||||
</div>
|
|
||||||
<div class="userinfo_item">
|
|
||||||
<div class="title_item">住户性别:</div>
|
|
||||||
<span> {{ userInfo.gender === '0' ? '男' : '女' }} </span>
|
|
||||||
</div>
|
|
||||||
<div class="userinfo_item">
|
|
||||||
<div class="title_item">证件号码:</div>
|
|
||||||
<span> {{ userInfo.idCard }} </span>
|
|
||||||
</div>
|
|
||||||
<div class="userinfo_item img">
|
|
||||||
<div class="title_item">身份证背面:</div>
|
|
||||||
<div class="userinfo_itme_img">
|
|
||||||
<el-image class="w-full h-full" fit="fill" :src="userInfo.cardImageBack"></el-image>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="userinfo_item">
|
||||||
</el-col>
|
<div class="title_item">证件类型:</div>
|
||||||
<el-col :span="24">
|
<DictTag :options="com_id_card_type" :value="userInfo.idCardType"></DictTag>
|
||||||
<div class="userinfo_item">
|
</div>
|
||||||
<div class="title_item">备注:</div>
|
<div class="userinfo_item">
|
||||||
<span> {{ userInfo.remark ?? '无' }} </span>
|
<div class="title_item">与主业主关系:</div>
|
||||||
</div>
|
<DictTag :options="com_resident_relationship" :value="userInfo.ownerRelationship"></DictTag>
|
||||||
</el-col>
|
</div>
|
||||||
</el-row>
|
<!-- <div class="userinfo_item">
|
||||||
</div>
|
<div class="title_item">住户来源:</div>
|
||||||
</el-card>
|
<span> {{ userInfo.name }} </span>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="previewbox">
|
<!-- <div class="userinfo_item">
|
||||||
<el-card>
|
<div class="title_item">注册时间:</div>
|
||||||
<template #header>
|
<span> {{ userInfo.name }} </span>
|
||||||
<div class="card-header">
|
</div> -->
|
||||||
<span>审核</span>
|
<div class="userinfo_item img">
|
||||||
|
<div class="title_item">身份证正面:</div>
|
||||||
|
<div class="userinfo_itme_img">
|
||||||
|
<el-image :src="userInfo.cardImageFront" class="w-full h-full" fit="fill"></el-image>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="userinfo_item">
|
||||||
|
<div class="title_item">住户编号:</div>
|
||||||
|
<span> {{ userInfo.id }} </span>
|
||||||
|
</div>
|
||||||
|
<div class="userinfo_item">
|
||||||
|
<div class="title_item">住户性别:</div>
|
||||||
|
<span> {{ userInfo.gender === '0' ? '男' : '女' }} </span>
|
||||||
|
</div>
|
||||||
|
<div class="userinfo_item">
|
||||||
|
<div class="title_item">证件号码:</div>
|
||||||
|
<span> {{ userInfo.idCard }} </span>
|
||||||
|
</div>
|
||||||
|
<div class="userinfo_item img">
|
||||||
|
<div class="title_item">身份证背面:</div>
|
||||||
|
<div class="userinfo_itme_img">
|
||||||
|
<el-image :src="userInfo.cardImageBack" class="w-full h-full" fit="fill"></el-image>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<div class="userinfo_item">
|
||||||
|
<div class="title_item">备注:</div>
|
||||||
|
<span> {{ userInfo.remark ?? '无' }} </span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</el-card>
|
||||||
<div class="w-full h-full flex mt-2">
|
</div>
|
||||||
<div class="title">审批意见</div>
|
<div v-if="activeStop !== 4" class="previewbox">
|
||||||
<div class="preivewBodybox">
|
<el-card>
|
||||||
<el-input
|
<template #header>
|
||||||
maxlength="200"
|
<div class="card-header">
|
||||||
show-word-limit
|
<span>审核</span>
|
||||||
v-model.trim="reviewInfo.propertyReviewFeedback"
|
</div>
|
||||||
placeholder="请输入"
|
</template>
|
||||||
type="textarea"
|
<div class="w-full h-full flex mt-2">
|
||||||
:rows="5"
|
<div class="title">审批意见</div>
|
||||||
></el-input>
|
<div class="preivewBodybox">
|
||||||
<div class="actions">
|
<el-input
|
||||||
<el-button type="primary" @click="updatePass('1')">审核通过</el-button>
|
v-model.trim="reviewInfo.propertyReviewFeedback"
|
||||||
<el-button type="danger" @click="updatePass('2')">审核不通过</el-button>
|
:rows="5"
|
||||||
<el-button @click="backRoute">返回</el-button>
|
maxlength="200"
|
||||||
|
placeholder="请输入"
|
||||||
|
show-word-limit
|
||||||
|
type="textarea"
|
||||||
|
></el-input>
|
||||||
|
<div class="actions">
|
||||||
|
<el-button type="primary" @click="updatePass('1')">审核通过</el-button>
|
||||||
|
<el-button type="danger" @click="updatePass('2')">审核不通过</el-button>
|
||||||
|
<el-button @click="backRoute">返回</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</el-card>
|
||||||
</el-card>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-card style="position: relative" class="h-full">
|
<el-card class="h-full" style="position: relative">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="asideCardHeader w-full h-full">
|
<div class="asideCardHeader w-full h-full">
|
||||||
<div class="cardSubtitle">
|
<div class="cardSubtitle">
|
||||||
@@ -114,7 +116,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<div class="w-full h-50%">
|
<div class="w-full h-50%">
|
||||||
<el-steps space="200px" direction="vertical" :active="activeStop">
|
<el-steps :active="activeStop" direction="vertical" space="200px">
|
||||||
<el-step :description="reviewInfo.submitTime">
|
<el-step :description="reviewInfo.submitTime">
|
||||||
<template #title>
|
<template #title>
|
||||||
<DictTag :options="com_sub_status" :value="reviewInfo.submitStatus || '0'"></DictTag>
|
<DictTag :options="com_sub_status" :value="reviewInfo.submitStatus || '0'"></DictTag>
|
||||||
@@ -143,7 +145,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getResident, getresidentReviewlistAPI, UpdateResidentReviewAPI } from '@/api/system/residentReviewProcess/resident';
|
import { getResident, getresidentReviewlistAPI, UpdateResidentReviewAPI } from '@/api/system/residentReviewProcess/resident';
|
||||||
@@ -199,12 +201,12 @@ if (route.query.id) {
|
|||||||
getResident(userid.value).then((res) => {
|
getResident(userid.value).then((res) => {
|
||||||
userInfo.value = res.data;
|
userInfo.value = res.data;
|
||||||
// 获取 审核流程
|
// 获取 审核流程
|
||||||
getresidentReviewlistAPI(userid.value).then((res) => {
|
});
|
||||||
if (res.rows[0]) {
|
getresidentReviewlistAPI(userid.value).then((res) => {
|
||||||
reviewInfo.value = res.rows[0];
|
if (res.rows[0]) {
|
||||||
handleActiveStaus(reviewInfo.value);
|
reviewInfo.value = res.rows[0];
|
||||||
}
|
handleActiveStaus(reviewInfo.value);
|
||||||
});
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 在 script setup 中添加
|
// 在 script setup 中添加
|
||||||
@@ -282,7 +284,7 @@ function backRoute() {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.ResidentMainBox {
|
.ResidentMainBox {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -290,6 +292,7 @@ function backRoute() {
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
.userInfobox {
|
.userInfobox {
|
||||||
|
flex: 1;
|
||||||
.card-header {
|
.card-header {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
@@ -319,6 +322,7 @@ function backRoute() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.previewbox {
|
.previewbox {
|
||||||
|
height: 327px;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
.card-header {
|
.card-header {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<el-input v-model.trim="form.roleKey" placeholder="请输入权限字符" />
|
<el-input v-model.trim="form.roleKey" placeholder="请输入权限字符" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="角色顺序" prop="roleSort">
|
<el-form-item label="角色顺序" prop="roleSort">
|
||||||
<el-input-number v-model="form.roleSort" controls-position="right" :min="0" />
|
<el-input-number v-model="form.roleSort" :min="0" controls-position="right" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="状态">
|
<el-form-item label="状态">
|
||||||
<el-radio-group v-model="form.status">
|
<el-radio-group v-model="form.status">
|
||||||
@@ -42,18 +42,18 @@
|
|||||||
<el-checkbox v-model="form.menuCheckStrictly" @change="handleCheckedTreeConnect($event, 'menu')">父子联动</el-checkbox>
|
<el-checkbox v-model="form.menuCheckStrictly" @change="handleCheckedTreeConnect($event, 'menu')">父子联动</el-checkbox>
|
||||||
<el-tree
|
<el-tree
|
||||||
ref="menuRef"
|
ref="menuRef"
|
||||||
class="tree-border"
|
|
||||||
:data="menuOptions"
|
|
||||||
show-checkbox
|
|
||||||
node-key="id"
|
|
||||||
:check-strictly="!form.menuCheckStrictly"
|
:check-strictly="!form.menuCheckStrictly"
|
||||||
empty-text="加载中,请稍候"
|
:data="menuOptions"
|
||||||
:props="{ label: 'label', children: 'children' }"
|
:props="{ label: 'label', children: 'children' }"
|
||||||
|
class="tree-border"
|
||||||
|
empty-text="加载中,请稍候"
|
||||||
|
node-key="id"
|
||||||
|
show-checkbox
|
||||||
>
|
>
|
||||||
</el-tree>
|
</el-tree>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注">
|
<el-form-item label="备注">
|
||||||
<el-input maxlength="200" show-word-limit v-model.trim="form.remark" type="textarea" placeholder="请输入内容"></el-input>
|
<el-input v-model.trim="form.remark" maxlength="200" placeholder="请输入内容" show-word-limit type="textarea"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="dialog-footer text-center">
|
<div class="dialog-footer text-center">
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { roleMenuTreeselect, treeselect as menuTreeselect } from '@/api/system/menu/index';
|
import { roleMenuTreeselect, treeselect as menuTreeselect } from '@/api/system/menu/index';
|
||||||
@@ -131,7 +131,6 @@ const getMenuTreeselect = async () => {
|
|||||||
/** 根据角色ID查询菜单树结构 */
|
/** 根据角色ID查询菜单树结构 */
|
||||||
const getRoleMenuTreeselect = (roleId: string | number) => {
|
const getRoleMenuTreeselect = (roleId: string | number) => {
|
||||||
return roleMenuTreeselect(roleId).then((res): RoleMenuTree => {
|
return roleMenuTreeselect(roleId).then((res): RoleMenuTree => {
|
||||||
console.log(res.data);
|
|
||||||
menuOptions.value = res.data.menus;
|
menuOptions.value = res.data.menus;
|
||||||
// const arr = handleHiddeMenu(res.data.menus);
|
// const arr = handleHiddeMenu(res.data.menus);
|
||||||
// menuOptions.value = arr;
|
// menuOptions.value = arr;
|
||||||
@@ -232,7 +231,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<script name="RingProgress" setup lang="ts">
|
<script lang="ts" name="RingProgress" setup>
|
||||||
import { EChartsOption } from 'echarts';
|
import { EChartsOption } from 'echarts';
|
||||||
import Echarts from '@/components/Echarts/index.vue';
|
import Echarts from '@/components/Echarts/index.vue';
|
||||||
|
|
||||||
@@ -8,8 +8,6 @@ const props = defineProps<{
|
|||||||
color: string;
|
color: string;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
console.log(props.name, props.value);
|
|
||||||
|
|
||||||
const options = ref<EChartsOption>({
|
const options = ref<EChartsOption>({
|
||||||
tooltip: {
|
tooltip: {
|
||||||
show: false,
|
show: false,
|
||||||
@@ -74,7 +72,7 @@ const options = ref<EChartsOption>({
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.chart-item {
|
.chart-item {
|
||||||
min-width: 120px;
|
min-width: 120px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,7 +76,7 @@
|
|||||||
<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 { getBuildinglistAPI, getBuildinglists } from '@/api/system/house';
|
import { getBuildinglistAPI } from '@/api/system/house';
|
||||||
import { addStoreroom, getStoreroom, updateStoreroom } from '@/api/system/storeroom';
|
import { addStoreroom, getStoreroom, updateStoreroom } from '@/api/system/storeroom';
|
||||||
import { StoreroomVO } from '@/api/system/storeroom/types';
|
import { StoreroomVO } from '@/api/system/storeroom/types';
|
||||||
import { getByBUildingidtoUnitNo } from '@/api/system/houseUnit';
|
import { getByBUildingidtoUnitNo } from '@/api/system/houseUnit';
|
||||||
@@ -187,7 +187,6 @@ function getStoreRoomInfo(id: string) {
|
|||||||
form.value.unitNoId = res.data.unitNoId;
|
form.value.unitNoId = res.data.unitNoId;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
console.log(form.value);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 根据小区id获取楼栋单元
|
// 根据小区id获取楼栋单元
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="p-2 flex storeRoomBox">
|
<div class="p-2 flex storeRoomBox">
|
||||||
<pageHeader title="储藏室管理"></pageHeader>
|
<pageHeader></pageHeader>
|
||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
@@ -38,9 +38,19 @@
|
|||||||
<el-table-column label="楼栋名" align="center" prop="buildingName" />
|
<el-table-column label="楼栋名" align="center" prop="buildingName" />
|
||||||
<el-table-column label="单元号" show-overflow-tooltip align="center" prop="unitName" />
|
<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="storeroomNo" />
|
||||||
<el-table-column label="建筑面积(㎡)" align="center" prop="houseArea" />
|
<el-table-column label="建筑面积(㎡)" align="center" prop="houseArea">
|
||||||
<el-table-column label="公摊面积(㎡)" align="center" prop="shareArea" />
|
<template #default="scope">
|
||||||
<el-table-column label="实用面积(㎡)" align="center" prop="internalArea" />
|
{{ scope.row.houseArea || '---' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="公摊面积(㎡)" align="center" prop="shareArea">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.row.shareArea || '---' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="实用面积(㎡)" align="center" prop="internalArea">
|
||||||
|
<template #default="scope"> {{ scope.row.internalArea || '---' }} </template>
|
||||||
|
</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="操作" width="150" align="center" 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">
|
||||||
@@ -111,12 +121,16 @@ const data = reactive<PageData<StoreroomForm, StoreroomQuery>>({
|
|||||||
const { queryParams } = toRefs(data);
|
const { queryParams } = toRefs(data);
|
||||||
|
|
||||||
/** 查询储藏室管理列表 */
|
/** 查询储藏室管理列表 */
|
||||||
const getList = async () => {
|
const getList = () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const res = await listStoreroom(queryParams.value);
|
listStoreroom(queryParams.value)
|
||||||
storeroomList.value = res.rows;
|
.then((res) => {
|
||||||
total.value = res.total;
|
storeroomList.value = res.rows;
|
||||||
loading.value = false;
|
total.value = res.total;
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
|
|||||||
@@ -4,45 +4,45 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" label-position="right" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="right" label-width="130px">
|
||||||
<el-form-item label="员工姓名" prop="nickName">
|
<el-form-item label="员工姓名" prop="nickName">
|
||||||
<el-input maxlength="30" show-word-limit v-model.trim="form.nickName" placeholder="请输入员工姓名" />
|
<el-input v-model.trim="form.nickName" maxlength="30" placeholder="请输入员工姓名" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="登录账号" v-if="form.userId == undefined" prop="userName">
|
<el-form-item v-if="form.userId == undefined" label="登录账号" prop="userName">
|
||||||
<el-input maxlength="16" show-word-limit v-model.trim="form.userName" placeholder="请输入登录账号" />
|
<el-input v-model.trim="form.userName" maxlength="16" placeholder="请输入登录账号" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="登录密码" v-if="form.userId == undefined" prop="password">
|
<el-form-item v-if="form.userId == undefined" label="登录密码" prop="password">
|
||||||
<el-input type="password" show-password clearable v-model.trim="form.password" placeholder="请输入" />
|
<el-input v-model.trim="form.password" clearable placeholder="请输入" show-password type="password" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="员工性别" prop="chargeScope">
|
<el-form-item label="员工性别" prop="chargeScope">
|
||||||
<el-select v-model="form.sex" placeholder="请选择">
|
<el-select v-model="form.sex" placeholder="请选择">
|
||||||
<el-option v-for="dict in sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
<el-option v-for="dict in sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="员工角色" prop="roleIds" v-if="form.userId == null || form.userId != useUserStore().userId">
|
<el-form-item v-if="form.userId == null || form.userId != useUserStore().userId" label="员工角色" prop="roleIds">
|
||||||
<el-select v-model="form.roleIds">
|
<el-select v-model="form.roleIds">
|
||||||
<el-option
|
<el-option
|
||||||
:disabled="item.status == '1'"
|
|
||||||
v-for="(item, index) in roleOptions"
|
v-for="(item, index) in roleOptions"
|
||||||
:key="index"
|
:key="index"
|
||||||
:value="item.roleId"
|
:disabled="item.status == '1'"
|
||||||
:label="item.roleName"
|
:label="item.roleName"
|
||||||
|
:value="item.roleId"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="管理小区" prop="villageIds">
|
<el-form-item label="管理小区" prop="villageIds">
|
||||||
<el-select v-model="checkVillage" multiple @change="handleChangeVillage">
|
<el-select v-model="checkVillage" multiple @change="handleChangeVillage">
|
||||||
<el-option v-for="(item, index) in villageList" :key="index" :value="item.villageId" :label="item.villageName"></el-option>
|
<el-option v-for="(item, index) in villageList" :key="index" :label="item.villageName" :value="item.villageId"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="手机号" prop="phonenumber">
|
<el-form-item label="手机号" prop="phonenumber">
|
||||||
<el-input maxlength="11" v-model.trim="form.phonenumber" placeholder="请输入" />
|
<el-input v-model.trim="form.phonenumber" maxlength="11" placeholder="请输入" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="邮箱" prop="email">
|
<el-form-item label="邮箱" prop="email">
|
||||||
<el-input maxlength="35" v-model.trim="form.email" placeholder="请输入" />
|
<el-input v-model.trim="form.email" maxlength="35" placeholder="请输入" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input maxlength="200" show-word-limit type="textarea" :rows="5" v-model.trim="form.remark" placeholder="请输入" />
|
<el-input v-model.trim="form.remark" :rows="5" maxlength="200" placeholder="请输入" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="margin-top: 30px">
|
<el-form-item style="margin-top: 30px">
|
||||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import api from '@/api/system/user';
|
import api from '@/api/system/user';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
@@ -162,7 +162,6 @@ const villageList = ref([]);
|
|||||||
const getVillageList = async () => {
|
const getVillageList = async () => {
|
||||||
const res = await getCommunitylistAPI();
|
const res = await getCommunitylistAPI();
|
||||||
villageList.value = res.rows;
|
villageList.value = res.rows;
|
||||||
console.log(villageList.value);
|
|
||||||
};
|
};
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getVillageList();
|
getVillageList();
|
||||||
@@ -201,7 +200,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams">
|
||||||
<el-form-item label="应用名称" prop="channel">
|
<el-form-item label="应用名称" prop="channel">
|
||||||
<el-select v-model="queryParams.channel" placeholder="请选择">
|
<el-select v-model="queryParams.channel" placeholder="请选择">
|
||||||
<el-option v-for="(item, index) in com_app_list" :key="index" :label="item.label" :value="item.value"></el-option>
|
<el-option v-for="(item, index) in com_app_list" :key="index" :label="item.label" :value="item.value"></el-option>
|
||||||
@@ -17,13 +17,13 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="版本号" prop="versionCode">
|
<el-form-item label="版本号" prop="versionCode">
|
||||||
<el-input maxlength="20" v-model.trim="queryParams.versionCode" placeholder="请输入版本号" clearable @keyup.enter="handleQuery" />
|
<el-input v-model.trim="queryParams.versionCode" clearable maxlength="20" placeholder="请输入版本号" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="版本名称" prop="versionName">
|
<el-form-item label="版本名称" prop="versionName">
|
||||||
<el-input maxlength="20" v-model.trim="queryParams.versionName" placeholder="请输入版本名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model.trim="queryParams.versionName" clearable maxlength="20" placeholder="请输入版本名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
<el-button icon="Search" type="primary" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -31,70 +31,70 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-has-permi="['system:version:add']">新增</el-button>
|
<el-button v-has-permi="['system:version:add']" icon="Plus" plain type="primary" @click="handleAdd">新增</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table
|
<el-table
|
||||||
:default-sort="{ prop: 'versionCode', order: 'descending' }"
|
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
border
|
|
||||||
:data="versionList"
|
:data="versionList"
|
||||||
|
:default-sort="{ prop: 'versionCode', order: 'descending' }"
|
||||||
|
border
|
||||||
@selection-change="handleSelectionChange"
|
@selection-change="handleSelectionChange"
|
||||||
>
|
>
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="应用名称" sortable align="center" prop="appChannel">
|
<el-table-column align="center" label="应用名称" prop="appChannel" sortable>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_app_list" :value="scope.row.appChannel"></dict-tag>
|
<dict-tag :options="com_app_list" :value="scope.row.appChannel"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="版本类型" align="center" prop="platform">
|
<el-table-column align="center" label="版本类型" prop="platform">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag type="success" v-if="scope.row.platform === 'ios'">ios</el-tag>
|
<el-tag v-if="scope.row.platform === 'ios'" type="success">ios</el-tag>
|
||||||
<el-tag type="primary" v-else>android</el-tag>
|
<el-tag v-else type="primary">android</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="更新渠道" sortable align="center" prop="channel" />
|
<el-table-column align="center" label="更新渠道" prop="channel" sortable />
|
||||||
<el-table-column label="版本号" sortable align="center" prop="versionCode" />
|
<el-table-column align="center" label="版本号" prop="versionCode" sortable />
|
||||||
<el-table-column label="版本名称" sortable align="center" prop="versionName" />
|
<el-table-column align="center" label="版本名称" prop="versionName" sortable />
|
||||||
<el-table-column label="最低支持版本" sortable align="center" prop="minVersionName" />
|
<el-table-column align="center" label="最低支持版本" prop="minVersionName" sortable />
|
||||||
<el-table-column label="下载地址" align="center" prop="downloadUrl" />
|
<el-table-column align="center" label="下载地址" prop="downloadUrl" />
|
||||||
<el-table-column label="更新日志" align="center" prop="releaseNotes" />
|
<el-table-column align="center" label="更新日志" prop="releaseNotes" />
|
||||||
<el-table-column label="停用/启用" align="center" prop="status">
|
<el-table-column align="center" label="停用/启用" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
@change="(val: string) => switchVersion(scope.row.id, val)"
|
|
||||||
v-model="scope.row.status"
|
v-model="scope.row.status"
|
||||||
active-value="1"
|
active-value="1"
|
||||||
inactive-value="0"
|
inactive-value="0"
|
||||||
|
@change="(val: string) => switchVersion(scope.row.id, val)"
|
||||||
></el-switch>
|
></el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="上传时间" align="center" prop="createTime" />
|
<el-table-column align="center" label="上传时间" prop="createTime" />
|
||||||
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改对话框 -->
|
<!-- 添加或修改对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="650px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="650px">
|
||||||
<el-form ref="versionFormRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="versionFormRef" :model="form" :rules="rules" label-width="130px">
|
||||||
<el-form-item label="App端" prop="appChannel">
|
<el-form-item label="App端" prop="appChannel">
|
||||||
<el-select @change="handleGetVersionlast" v-model="form.appChannel" placeholder="请选择">
|
<el-select v-model="form.appChannel" placeholder="请选择" @change="handleGetVersionlast">
|
||||||
<el-option v-for="(item, index) in com_app_list" :key="index" :label="item.label" :value="item.value"></el-option>
|
<el-option v-for="(item, index) in com_app_list" :key="index" :label="item.label" :value="item.value"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="App类型" prop="platform">
|
<el-form-item label="App类型" prop="platform">
|
||||||
<el-radio-group @change="handleChangePlatform" v-model="form.platform">
|
<el-radio-group v-model="form.platform" @change="handleChangePlatform">
|
||||||
<el-radio :value="appType.android">Android</el-radio>
|
<el-radio :value="appType.android">Android</el-radio>
|
||||||
<el-radio :value="appType.ios">ios</el-radio>
|
<el-radio :value="appType.ios">ios</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="版本名称" prop="versionName">
|
<el-form-item label="版本名称" prop="versionName">
|
||||||
<el-input maxlength="20" v-model.trim="form.versionName" placeholder="请输入版本名称例如:1.2.0" />
|
<el-input v-model.trim="form.versionName" maxlength="20" placeholder="请输入版本名称例如:1.2.0" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="最低支持版本" prop="minVersionCode">
|
<el-form-item label="最低支持版本" prop="minVersionCode">
|
||||||
<el-select v-if="getlastVersionlist.length > 0" v-model="form.minVersionCode" placeholder="请输入最低支持版本">
|
<el-select v-if="getlastVersionlist.length > 0" v-model="form.minVersionCode" placeholder="请输入最低支持版本">
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="渠道" prop="channel">
|
<el-form-item label="渠道" prop="channel">
|
||||||
<el-radio-group @change="handleChangeChannel" v-model="form.channel">
|
<el-radio-group v-model="form.channel" @change="handleChangeChannel">
|
||||||
<el-radio v-if="form.platform !== appType.ios" value="huawei">华为</el-radio>
|
<el-radio v-if="form.platform !== appType.ios" value="huawei">华为</el-radio>
|
||||||
<el-radio v-if="form.platform !== appType.ios" value="xiaomi">小米</el-radio>
|
<el-radio v-if="form.platform !== appType.ios" value="xiaomi">小米</el-radio>
|
||||||
<el-radio v-if="form.platform !== appType.ios" value="oppo">oppo</el-radio>
|
<el-radio v-if="form.platform !== appType.ios" value="oppo">oppo</el-radio>
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="更新日志" prop="releaseNotes">
|
<el-form-item label="更新日志" prop="releaseNotes">
|
||||||
<el-input maxlength="200" show-word-limit :rows="5" v-model="form.releaseNotes" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.releaseNotes" :rows="5" maxlength="200" placeholder="请输入内容" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="低版本强制更新">-->
|
<!-- <el-form-item label="低版本强制更新">-->
|
||||||
<!-- <div>-->
|
<!-- <div>-->
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
<!-- </el-radio-group>-->
|
<!-- </el-radio-group>-->
|
||||||
<!-- </el-form-item>-->
|
<!-- </el-form-item>-->
|
||||||
<el-form-item label="上传安装包地址" prop="downloadUrl">
|
<el-form-item label="上传安装包地址" prop="downloadUrl">
|
||||||
<el-input maxlength="20" v-model.trim="form.downloadUrl" placeholder="请输入更新地址" />
|
<el-input v-model.trim="form.downloadUrl" maxlength="20" placeholder="请输入更新地址" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Version" lang="ts">
|
<script lang="ts" name="Version" setup>
|
||||||
import { listVersion, addVersion, getPastVersion, switchVersion } from '@/api/system/version';
|
import { listVersion, addVersion, getPastVersion, switchVersion } from '@/api/system/version';
|
||||||
import { VersionVO, VersionQuery, VersionForm } from '@/api/system/version/type';
|
import { VersionVO, VersionQuery, VersionForm } from '@/api/system/version/type';
|
||||||
|
|
||||||
@@ -341,7 +341,6 @@ const channelUrl = {
|
|||||||
'ios': 'itms-apps://apps.apple.com/cn/app/id'
|
'ios': 'itms-apps://apps.apple.com/cn/app/id'
|
||||||
};
|
};
|
||||||
function handleChangeChannel(val: string) {
|
function handleChangeChannel(val: string) {
|
||||||
console.log(val);
|
|
||||||
form.value.downloadUrl = channelUrl[val];
|
form.value.downloadUrl = channelUrl[val];
|
||||||
}
|
}
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
<el-table-column align="center" label="品牌" prop="brand" />
|
<el-table-column align="center" label="品牌" prop="brand" />
|
||||||
<el-table-column align="center" label="规格型号" prop="model" />
|
<el-table-column align="center" label="规格型号" prop="model" />
|
||||||
<el-table-column align="center" label="单位" prop="unit" width="60" />
|
<el-table-column align="center" label="单位" prop="unit" width="60" />
|
||||||
<!-- <el-table-column label="成本" width="100" align="center" prop="costPrice" />-->
|
<!-- <el-table-column label="成本" width="100" align="center" prop="costPrice" />-->
|
||||||
<el-table-column align="center" label="当前库存" prop="totalStockNum" width="80" />
|
<el-table-column align="center" label="当前库存" prop="totalStockNum" width="80" />
|
||||||
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
||||||
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
|
|||||||
@@ -178,8 +178,6 @@ function handleChangeitem(row: MaterialVO[]) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.filter((item) => item !== null);
|
.filter((item) => item !== null);
|
||||||
|
|
||||||
console.log(arr);
|
|
||||||
form.value.items = arr;
|
form.value.items = arr;
|
||||||
}
|
}
|
||||||
function handleDeleteRow(id: string) {
|
function handleDeleteRow(id: string) {
|
||||||
@@ -199,7 +197,6 @@ const submitForm = () => {
|
|||||||
const bol = form.value.items.every((item) => {
|
const bol = form.value.items.every((item) => {
|
||||||
return item.costPrice !== 0 && item.costPrice !== null && item.outNum !== 0 && item.outNum !== null;
|
return item.costPrice !== 0 && item.costPrice !== null && item.outNum !== 0 && item.outNum !== null;
|
||||||
});
|
});
|
||||||
console.log(bol);
|
|
||||||
if (!bol) {
|
if (!bol) {
|
||||||
ElMessage.warning('出库数量,出库价格 不能未空或者0');
|
ElMessage.warning('出库数量,出库价格 不能未空或者0');
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -166,7 +166,6 @@ function handleChangeitem(row: MaterialVO[]) {
|
|||||||
.map((item) => {
|
.map((item) => {
|
||||||
if (!item.id) return null;
|
if (!item.id) return null;
|
||||||
const find = form.value.items.find((i) => i.id === item.id);
|
const find = form.value.items.find((i) => i.id === item.id);
|
||||||
console.log(item, find);
|
|
||||||
if (find || form.value.items.length <= 0) {
|
if (find || form.value.items.length <= 0) {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
|
|||||||
@@ -7,11 +7,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex flex-items-center justify-center">
|
<div class="flex flex-items-center justify-center">
|
||||||
<div
|
<div
|
||||||
class="actions"
|
|
||||||
@click="changeActive_index(index)"
|
|
||||||
:class="{ active: active_index === index }"
|
|
||||||
v-for="(item, index) in actions"
|
v-for="(item, index) in actions"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
:class="{ active: active_index === index }"
|
||||||
|
class="actions"
|
||||||
|
@click="changeActive_index(index)"
|
||||||
>
|
>
|
||||||
{{ item }}
|
{{ item }}
|
||||||
</div>
|
</div>
|
||||||
@@ -119,7 +119,6 @@ async function changeChartConfig(val: number) {
|
|||||||
const outcomePromise = val === 0 || val === 2 ? await workSpaceOutcomeTrendListApi(id) : [];
|
const outcomePromise = val === 0 || val === 2 ? await workSpaceOutcomeTrendListApi(id) : [];
|
||||||
// 2. 并行等待,确保顺序一致:[收入数据, 支出数据]
|
// 2. 并行等待,确保顺序一致:[收入数据, 支出数据]
|
||||||
const [incomeRes, outcomeRes] = await Promise.all([incomePromise, outcomePromise]);
|
const [incomeRes, outcomeRes] = await Promise.all([incomePromise, outcomePromise]);
|
||||||
console.log(incomeRes, outcomeRes);
|
|
||||||
|
|
||||||
// 处理收入数据
|
// 处理收入数据
|
||||||
if (incomeRes && incomeRes.length > 0) {
|
if (incomeRes && incomeRes.length > 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user