8/31 dev 权限,sse,账单,bug

This commit is contained in:
Zy
2026-08-31 08:09:28 +08:00
parent bfdfa05cd7
commit e4417f35b1
82 changed files with 2327 additions and 1644 deletions

View File

@@ -5,14 +5,14 @@
<div v-show="showSearch" class="mb-[10px]">
<el-card>
<div class="h-full flex flex-align-center">
<el-form label-width="80px" ref="queryFormRef" :model="queryParams" :inline="true">
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="80px">
<el-form-item label="房屋类型" prop="houseUse">
<el-select v-model="queryParams.houseUse" placeholder="选择房屋类型" style="width: 240px">
<el-option v-for="item in houseUseTypeList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="发布人" prop="rentalName">
<el-input maxlength="15" v-model="queryParams.rentalName" placeholder="请输入" clearable @keyup.enter="handleQuery" />
<el-input v-model="queryParams.rentalName" clearable maxlength="15" placeholder="请输入" @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleQuery">搜索</el-button>
@@ -31,8 +31,8 @@
:disable-delete="multiple"
:disable-edit="single"
:show-add="checkPermi(['houseRental:houseRental:add'])"
:show-edit="checkPermi(['houseRental:houseRental:edit'])"
:show-delete="checkPermi(['houseRental:houseRental:remove'])"
:show-edit="checkPermi(['houseRental:houseRental:edit'])"
@update:add="handleAdd"
@update:edit="handleUpdate()"
@update:delete="handleDelete()"
@@ -40,63 +40,63 @@
</el-row>
</template>
<el-table class="h-full" v-loading="loading" border :data="houseRentalList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="房屋信息" align="center" prop="name" />
<el-table-column label="租赁状态" align="center" prop="rentalStatus">
<el-table v-loading="loading" :data="houseRentalList" border class="h-full" @selection-change="handleSelectionChange">
<el-table-column align="center" type="selection" width="55" />
<el-table-column align="center" label="房屋信息" prop="name" />
<el-table-column align="center" label="租赁状态" prop="rentalStatus">
<template #default="{ row }">
<DictTag :options="com_rental_status" :value="row.rentalStatus"></DictTag>
</template>
</el-table-column>
<el-table-column label="发布人" align="center" prop="rentalName" />
<el-table-column label="联系方式" align="center" prop="phone" />
<el-table-column label="发布时间" align="center" prop="pubTime" />
<el-table-column label="房屋类型" align="center" prop="houseUse">
<el-table-column align="center" label="发布人" prop="rentalName" />
<el-table-column align="center" label="联系方式" prop="phone" />
<el-table-column align="center" label="发布时间" prop="pubTime" />
<el-table-column align="center" label="房屋类型" prop="houseUse">
<template #default="{ row }">
<span>{{ handleHouseUse(row.houseUse) }}</span>
</template>
</el-table-column>
<el-table-column label="租赁方式" align="center" prop="rentalType">
<el-table-column align="center" label="租赁方式" prop="rentalType">
<template #default="{ row }">
<DictTag :options="com_rental_method" :value="row.rentalType"></DictTag>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<el-table-column align="center" label="状态" prop="status">
<template #default="{ row }">
<span>{{ row.status === '0' ? '下架' : '上架' }}</span>
</template>
</el-table-column>
<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">
<el-button link type="primary" v-if="scope.row.status === '0'" @click="sign(scope.row)">签约</el-button>
<el-button link type="primary" v-if="scope.row.status === '0'" @click="putOnSale(scope.row)">上架</el-button>
<el-button link type="primary" v-else @click="putOnSale(scope.row)">下架</el-button>
<el-button v-if="scope.row.status === '0'" link type="primary" @click="sign(scope.row)">签约</el-button>
<el-button v-if="scope.row.status === '0'" link type="primary" @click="putOnSale(scope.row)">上架</el-button>
<el-button v-else link type="primary" @click="putOnSale(scope.row)">下架</el-button>
<el-button link type="primary" @click="handleMain(scope.row)">详情</el-button>
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['houseRental:houseRental:query']">编辑</el-button>
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['houseRental:houseRental:remove']">删除</el-button>
<el-button v-has-permi="['houseRental:houseRental:query']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
<el-button v-has-permi="['houseRental:houseRental:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</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-dialog :title="dialog.title" v-model="dialog.visible" width="680px" append-to-body>
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="680px">
<el-form ref="houseRentalFormRef" :model="form" :rules="rules" label-width="120px">
<el-form-item label="区域" prop="villageId">
<el-input disabled maxlength="20" v-model.trim="form.villageName" placeholder="请输入区域" />
<el-input v-model.trim="form.villageName" disabled maxlength="20" placeholder="请输入区域" />
</el-form-item>
<el-form-item label="承租方" prop="tenantName">
<el-input maxlength="20" show-word-limit v-model.trim="form.tenantName" placeholder="请输入承租方" />
<el-input v-model.trim="form.tenantName" maxlength="20" placeholder="请输入承租方" show-word-limit />
</el-form-item>
<el-form-item label="电话" prop="tenantPhone">
<el-input maxlength="11" v-model.trim="form.tenantPhone" placeholder="请输入电话" />
<el-input v-model.trim="form.tenantPhone" maxlength="11" placeholder="请输入电话" />
</el-form-item>
<el-form-item label="房号" prop="houseId">
<el-input disabled maxlength="20" show-word-limit v-model.trim="form.houseName" placeholder="请输入房号" />
<el-input v-model.trim="form.houseName" disabled maxlength="20" placeholder="请输入房号" show-word-limit />
</el-form-item>
<el-form-item label="面积" prop="houseArea">
<el-input disabled maxlength="20" show-word-limit v-model.trim="form.houseArea" placeholder="请输入面积" />
<el-input v-model.trim="form.houseArea" disabled maxlength="20" placeholder="请输入面积" show-word-limit />
</el-form-item>
<el-form-item label="收费模式" prop="chargeMode">
<el-select v-model.trim="form.chargeMode" placeholder="请选择收费模式">
@@ -109,40 +109,40 @@
</el-select>
</el-form-item>
<el-form-item label="合同编号" prop="contractNo">
<el-input maxlength="20" show-word-limit v-model.trim="form.contractNo" placeholder="请输入合同编号" />
<el-input v-model.trim="form.contractNo" maxlength="20" placeholder="请输入合同编号" show-word-limit />
</el-form-item>
<el-form-item label="合同状态" prop="contractStatus">
<el-input show-word-limit maxlength="40" v-model.trim="form.contractStatus" placeholder="请输入合同状态" />
<el-input v-model.trim="form.contractStatus" maxlength="40" placeholder="请输入合同状态" show-word-limit />
</el-form-item>
<el-form-item label="租赁起始日" prop="leaseStartDate">
<el-date-picker
style="width: 100%"
v-model.trim="form.leaseStartDate"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择租赁起始日"
style="width: 100%"
type="date"
value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item label="租赁终止日" prop="leaseEndDate">
<el-date-picker
style="width: 100%"
v-model.trim="form.leaseEndDate"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择租赁终止日"
style="width: 100%"
type="date"
value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item label="租金" prop="rentAmount">
<el-input maxlength="8" v-model.trim.number="form.rentAmount" placeholder="请输入租金">
<el-input v-model.trim.number="form.rentAmount" maxlength="8" placeholder="请输入租金">
<template #append>
<span>元/月</span>
</template>
</el-input>
</el-form-item>
<el-form-item label="押金" prop="depositAmount">
<el-input maxlength="8" v-model.trim.number="form.depositAmount" placeholder="请输入押金">
<el-input v-model.trim.number="form.depositAmount" maxlength="8" placeholder="请输入押金">
<template #append>
<span>元</span>
</template>
@@ -150,21 +150,21 @@
</el-form-item>
<el-form-item label="合同附件">
<el-upload
accept=".png,.jpg,.jpeg, .pdf"
class="upload-demo"
ref="uploadRef"
:show-file-list="true"
v-model:file-list="showImgList"
name="files"
:action="uploadApi"
:auto-upload="false"
:limit="MAX_UPLOAD_FILES"
:onChange="handleChange"
:onExceed="handleExceed"
:multiple="true"
:on-preview="handlePreview"
:auto-upload="false"
:onChange="handleChange"
:onExceed="handleExceed"
:show-file-list="true"
accept=".png,.jpg,.jpeg, .pdf"
class="upload-demo"
drag
name="files"
style="width: 100%"
:action="uploadApi"
>
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
<div class="el-upload__text"><em>点击</em>或者将文件<em>拖拽</em>到这里上传</div>
@@ -184,7 +184,7 @@
</div>
</template>
<script setup name="HouseRental" lang="ts">
<script lang="ts" name="HouseRental" setup>
import pageHeader from '@/components/Pageheader/index.vue';
import { changeHouseRedientStatus, delHouseRental, HouseRedientSign, HouseRedientSignUpload, listHouseRental } from '@/api/system/houseRental';
import { HouseRentalQuery, HouseRentalSigningVO, HouseRentalVO } from '@/api/system/houseRental/type';
@@ -407,13 +407,15 @@ function handleHouseUse(houseUser: string) {
function sign(row: HouseRentalVO) {
clearForm();
form.value = {
...initFormData,
...row.signingList?.[0]
};
const info = JSON.parse(villageInfo || '{}');
form.value.villageName = info.villageName;
form.value.houseName = row.name;
form.value.houseArea = row.houseArea;
form.value.tenantPhone = row.signingList?.[0].tenantPhone || '';
form.value.tenantPhone = row.signingList.length > 0 ? row.signingList[0].tenantPhone : '';
form.value.houseId = row.houseId;
form.value.villageId = info.villageId;
form.value.rentalId = row.id;
@@ -422,9 +424,10 @@ function sign(row: HouseRentalVO) {
const list = row.signingList[0].contractUrl ? row.signingList[0].contractUrl.split(',') : [];
if (list.length > 0) {
showImgList.value = list.map((item, index) => {
console.log(names[index]);
return {
uid: index,
name: names[index] || item ? item.split('.com/')[1].split('/')[3] : '',
name: names[index] || (item ? item.split('.com/')[1].split('/')[3] : ''),
url: item,
isLink: true
};
@@ -509,7 +512,7 @@ onMounted(() => {
});
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
.el-table {
height: calc(100% - 100px);
}