Compare commits

...

2 Commits

Author SHA1 Message Date
Zy
de4bae3bc1 8/31 dev 权限,sse,账单,bug 2026-08-31 18:00:11 +08:00
Zy
466ec4675e 8/31 储藏室面积0时,不显示 2026-08-31 09:25:31 +08:00
52 changed files with 589 additions and 595 deletions

View File

@@ -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'

View File

@@ -88,7 +88,7 @@ export const getParkingReviewInfo = (id: string) => {
/** /**
* 查询小区内车位列表 * 查询小区内车位列表
* @param { string } villageid * @param { string } villageid
* @param houseId * @param { string } houseId
* @returns {*} * @returns {*}
*/ */

View File

@@ -6,6 +6,7 @@ export interface ResidentVO {
id: string; id: string;
unitNoId: string; unitNoId: string;
idCardType: string; idCardType: string;
ownerRelationship: string;
/** /**
* 住户编号 * 住户编号
*/ */

View File

@@ -13,6 +13,9 @@ export interface StoreroomVO {
* 单元号 * 单元号
*/ */
unitNoId: string | number; unitNoId: string | number;
/**
* 单元名
*/
unitName: string; unitName: string;
/** /**

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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() {

View File

@@ -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 就能实现完美单选

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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(() => {

View File

@@ -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,

View File

@@ -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();
// 得到所有的有房屋的 楼层 数组 // 得到所有的有房屋的 楼层 数组

View File

@@ -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) ?? [];

View File

@@ -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%;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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'));

View File

@@ -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();
} }
// ! 富文本 ============================================================================================================= // ! 富文本 =============================================================================================================

View File

@@ -246,7 +246,6 @@ function handleGetMain(id: string) {
}); });
dialog.visible = true; dialog.visible = true;
dialog.title = '问卷调查回答详情'; dialog.title = '问卷调查回答详情';
console.log(form.value);
}); });
} }
</script> </script>

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;

View File

@@ -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: '',

View File

@@ -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;

View File

@@ -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%;

View File

@@ -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%;

View File

@@ -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;
} }
}); });

View File

@@ -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] : ''),

View File

@@ -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',
{ {

View File

@@ -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',
{ {

View File

@@ -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;
} }

View File

@@ -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',
{ {

View File

@@ -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%;

View File

@@ -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) {

View File

@@ -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;
}) })

View File

@@ -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('导出失败,请重试');

View File

@@ -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;
}) })

View File

@@ -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;
}) })

View File

@@ -2,10 +2,11 @@
<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="h-full flex flex-col">
<div class="userInfobox"> <div class="userInfobox">
<el-card> <el-card class="h-full">
<template #header> <template #header>
<div class="card-header"> <div class="card-header">
<span>基础资料</span> <span>基础资料</span>
@@ -41,7 +42,7 @@
<div class="userinfo_item img"> <div class="userinfo_item img">
<div class="title_item">身份证正面:</div> <div class="title_item">身份证正面:</div>
<div class="userinfo_itme_img"> <div class="userinfo_itme_img">
<el-image class="w-full h-full" fit="fill" :src="userInfo.cardImageFront"></el-image> <el-image :src="userInfo.cardImageFront" class="w-full h-full" fit="fill"></el-image>
</div> </div>
</div> </div>
</el-col> </el-col>
@@ -61,7 +62,7 @@
<div class="userinfo_item img"> <div class="userinfo_item img">
<div class="title_item">身份证背面:</div> <div class="title_item">身份证背面:</div>
<div class="userinfo_itme_img"> <div class="userinfo_itme_img">
<el-image class="w-full h-full" fit="fill" :src="userInfo.cardImageBack"></el-image> <el-image :src="userInfo.cardImageBack" class="w-full h-full" fit="fill"></el-image>
</div> </div>
</div> </div>
</el-col> </el-col>
@@ -75,7 +76,7 @@
</div> </div>
</el-card> </el-card>
</div> </div>
<div class="previewbox"> <div v-if="activeStop !== 4" class="previewbox">
<el-card> <el-card>
<template #header> <template #header>
<div class="card-header"> <div class="card-header">
@@ -86,12 +87,12 @@
<div class="title">审批意见</div> <div class="title">审批意见</div>
<div class="preivewBodybox"> <div class="preivewBodybox">
<el-input <el-input
maxlength="200"
show-word-limit
v-model.trim="reviewInfo.propertyReviewFeedback" v-model.trim="reviewInfo.propertyReviewFeedback"
placeholder="请输入"
type="textarea"
:rows="5" :rows="5"
maxlength="200"
placeholder="请输入"
show-word-limit
type="textarea"
></el-input> ></el-input>
<div class="actions"> <div class="actions">
<el-button type="primary" @click="updatePass('1')">审核通过</el-button> <el-button type="primary" @click="updatePass('1')">审核通过</el-button>
@@ -102,9 +103,10 @@
</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,13 +201,13 @@ 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) => { getresidentReviewlistAPI(userid.value).then((res) => {
if (res.rows[0]) { if (res.rows[0]) {
reviewInfo.value = res.rows[0]; reviewInfo.value = res.rows[0];
handleActiveStaus(reviewInfo.value); handleActiveStaus(reviewInfo.value);
} }
}); });
});
} }
// 在 script setup 中添加 // 在 script setup 中添加
const getReviewStatusLabel = (status: string) => { const getReviewStatusLabel = (status: string) => {
@@ -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;

View File

@@ -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%;

View File

@@ -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;
} }

View File

@@ -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获取楼栋单元

View File

@@ -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)
.then((res) => {
storeroomList.value = res.rows; storeroomList.value = res.rows;
total.value = res.total; total.value = res.total;
})
.finally(() => {
loading.value = false; loading.value = false;
});
}; };
/** 搜索按钮操作 */ /** 搜索按钮操作 */

View File

@@ -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%;

View File

@@ -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];
} }
/** 提交按钮 */ /** 提交按钮 */

View File

@@ -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="操作">

View File

@@ -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;

View File

@@ -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,

View File

@@ -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) {