From 16217be9c85f95cb236e639da6e546bb38cdc53d Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 05 十二月 2024 14:45:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
admin/.env | 2
admin/src/views/contract/components/contractEdit.vue | 199 ++++++++++----
admin/src/api/customer.js | 6
admin/vue.config.js | 5
h5/pages/login.vue | 2
admin/src/views/contract/components/contractDetail.vue | 108 +++++--
admin/src/views/project/projectList.vue | 2
admin/src/views/workorder/components/detail.vue | 5
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java | 4
admin/src/views/operation/components/deviceDetail.vue | 8
h5/pages/workOrder/detail.vue | 4
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java | 6
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java | 3
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java | 1
admin/src/views/client/components/OperaYwCustomerWindow.vue | 6
admin/src/views/finance/components/details.vue | 2
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwProjectService.java | 3
admin/src/views/system/user.vue | 2
server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java | 8
admin/.gitignore | 3
admin/src/views/finance/components/bullEdit.vue | 2
admin/src/views/finance/bull.vue | 16
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ProjectDataVO.java | 4
admin/.env.development | 10
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java | 4
admin/src/views/login.vue | 1
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 8
admin/src/views/contract/components/terminateLease.vue | 32 -
admin/src/views/finance/components/flowingWater.vue | 7
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java | 60 +++
admin/src/views/contract/contractList.vue | 10
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java | 46 +++
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java | 23 +
/dev/null | 5
admin/src/components/common/GlobalWindow.vue | 4
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java | 3
admin/src/views/operation/components/maintainDetail.vue | 5
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwProjectCloudController.java | 5
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java | 3
admin/src/views/project/components/OperaYwBuildingWindow.vue | 2
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java | 25 +
admin/src/views/contract/components/config.js | 2
admin/src/views/finance/components/bullDetail.vue | 133 +++++----
admin/src/views/project/buildingList.vue | 2
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java | 1
admin/src/router/index.js | 2
admin/src/views/client/components/staffEdit.vue | 6
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/DataDTO.java | 29 ++
48 files changed, 567 insertions(+), 262 deletions(-)
diff --git a/admin/.env b/admin/.env
index af248a9..18495ab 100644
--- a/admin/.env
+++ b/admin/.env
@@ -4,7 +4,7 @@
VUE_APP_ROUTER_MODE = 'hash'
# 椤圭洰涓婁笅鏂囪矾寰�
-VUE_APP_CONTEXT_PATH = '/'
+VUE_APP_CONTEXT_PATH = '/fn_admin/#/'
# 鎺ュ彛鍓嶇紑
VUE_APP_API_PREFIX = '/gateway_interface'
diff --git a/admin/.env.development b/admin/.env.development
new file mode 100644
index 0000000..a124a35
--- /dev/null
+++ b/admin/.env.development
@@ -0,0 +1,10 @@
+# 寮�鍙戠幆澧冮厤缃�
+NODE_ENV = 'development'
+# 椤圭洰涓婁笅鏂囪矾寰�
+VUE_APP_CONTEXT_PATH = './'
+
+#VUE_APP_API_URL = 'http://localhost:10010'
+VUE_APP_API_URL = 'http://192.168.0.163:10010'
+# VUE_APP_API_URL = 'https://dmtest.ahapp.net/fn_admin'
+# VUE_APP_API_URL = 'http://10.50.250.253:8088/gateway_interface'
+
diff --git a/admin/.gitignore b/admin/.gitignore
index 25910be..c2dd892 100644
--- a/admin/.gitignore
+++ b/admin/.gitignore
@@ -1,7 +1,7 @@
.DS_Store
coderd.json
node_modules
-.env.development
+# .env.development
/dist
@@ -10,6 +10,7 @@
.env.*.local
unpackage
admin
+fn_admin
# Log files
npm-debug.log*
yarn-debug.log*
diff --git a/admin/babel.config.js b/admin/babel.config.js
deleted file mode 100644
index e955840..0000000
--- a/admin/babel.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- presets: [
- '@vue/cli-plugin-babel/preset'
- ]
-}
diff --git a/admin/src/api/customer.js b/admin/src/api/customer.js
index e57764c..48bb68e 100644
--- a/admin/src/api/customer.js
+++ b/admin/src/api/customer.js
@@ -11,3 +11,9 @@
export function list (data) {
return request.post('/visitsAdmin/cloudService/business/ywCustomer/list', data)
}
+
+// 闃滃畞杩愮淮 - 鏌ヨ鑱旂郴浜哄垪琛�
+export function ywList (data) {
+ return request.post('/visitsAdmin/cloudService/business/member/ywList', data)
+}
+
diff --git a/admin/src/components/common/GlobalWindow.vue b/admin/src/components/common/GlobalWindow.vue
index 376a5b7..b734be2 100644
--- a/admin/src/components/common/GlobalWindow.vue
+++ b/admin/src/components/common/GlobalWindow.vue
@@ -125,11 +125,11 @@
.window__body {
// width: 1100px;
// margin: 0 auto;
- // background-color: #fff;
+ background-color: #fff;
width: 100%;
height: 100%;
overflow-y: auto;
- padding: 12px 16px;
+ padding: 0 16px 12px 16px;
// 鏍囩
// .el-form-item__label {
// float: none;
diff --git a/admin/src/router/index.js b/admin/src/router/index.js
index f69ea19..6002274 100644
--- a/admin/src/router/index.js
+++ b/admin/src/router/index.js
@@ -10,7 +10,7 @@
const router = new VueRouter({
// + (process.env.VUE_APP_ROUTER_MODE === 'hash' ? '#' : '')
- // base: process.env.VUE_APP_CONTEXT_PATH,
+ base: '/',
mode: 'hash',
routes: [
// 鐧诲綍
diff --git a/admin/src/views/client/components/OperaYwCustomerWindow.vue b/admin/src/views/client/components/OperaYwCustomerWindow.vue
index d3c0941..c966c3f 100644
--- a/admin/src/views/client/components/OperaYwCustomerWindow.vue
+++ b/admin/src/views/client/components/OperaYwCustomerWindow.vue
@@ -45,7 +45,9 @@
<el-form-item label="璇佷欢鍙风爜" prop="member.idcardNo">
<el-input v-model="form.member.idcardNo" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="閭" prop="email">
+ <el-form-item label="閭" prop="member.email" :rules="[
+ { required: false, type: 'email', message: '璇疯緭鍏ユ纭殑閭鏍煎紡'}
+ ]">
<el-input v-model="form.member.email" placeholder="璇疯緭鍏ラ偖绠�" v-trim />
</el-form-item>
</template>
@@ -264,4 +266,4 @@
}
}
}
-</style>
\ No newline at end of file
+</style>
diff --git a/admin/src/views/client/components/staffEdit.vue b/admin/src/views/client/components/staffEdit.vue
index e1ce3d3..ffe8cd5 100644
--- a/admin/src/views/client/components/staffEdit.vue
+++ b/admin/src/views/client/components/staffEdit.vue
@@ -32,7 +32,9 @@
<el-form-item label="璇佷欢鍙风爜" prop="member.idcardNo">
<el-input v-model="form.idcardNo" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="閭" prop="email">
+ <el-form-item label="閭" prop="email" :rules="[
+ { required: false, type: 'email', message: '璇疯緭鍏ユ纭殑閭鏍煎紡'}
+ ]">
<el-input v-model="form.email" placeholder="璇疯緭鍏ラ偖绠�" v-trim />
</el-form-item>
<el-form-item label="鎬у埆">
@@ -213,4 +215,4 @@
}
}
}
-</style>
\ No newline at end of file
+</style>
diff --git a/admin/src/views/contract/components/config.js b/admin/src/views/contract/components/config.js
index c094419..0611aea 100644
--- a/admin/src/views/contract/components/config.js
+++ b/admin/src/views/contract/components/config.js
@@ -9,7 +9,7 @@
roundedUp: [{ required: true, message: '璇烽�夋嫨' }],
companyId: [{ required: true, message: '璇烽�夋嫨' }],
renterName: [{ required: true, message: '璇烽�夋嫨' }],
- memberName: [{ required: true, message: '璇烽�夋嫨' }],
+ memberId: [{ required: true, message: '璇烽�夋嫨' }],
zlDeposit: [{ required: true, message: '璇疯緭鍏�' }],
zlPayType: [{ required: true, message: '璇烽�夋嫨' }],
wyDeposit: [{ required: true, message: '璇疯緭鍏�' }],
diff --git a/admin/src/views/contract/components/contractDetail.vue b/admin/src/views/contract/components/contractDetail.vue
index f13cf9a..730f2c2 100644
--- a/admin/src/views/contract/components/contractDetail.vue
+++ b/admin/src/views/contract/components/contractDetail.vue
@@ -6,22 +6,25 @@
:confirm-working="isWorking"
@close="close"
@confirm="confirm">
- <div class="home_title" v-if="info">
- <div class="left">
- <span class="mr10">鍗曚綅鍚嶇О锛歿{info.renterName}}</span>
- <el-tag type="success" v-if="info.status === 0">寰呮墽琛�</el-tag>
- <el-tag type="success" v-if="info.status === 1">姝e父鎵ц涓�</el-tag>
- <el-tag type="info" v-if="info.status === 2">宸插埌鏈�</el-tag>
- <el-tag type="info" v-if="info.status === 3">閫�绉熺粨绠椾腑</el-tag>
- <el-tag type="info" v-if="info.status === 4">宸查��绉�</el-tag>
+ <div style="width: 100%; position: sticky; top: 0; left: 0; z-index: 999; background: #ffffff;">
+ <div class="home_title" v-if="info">
+ <div class="left">
+ <span class="mr10">鍗曚綅鍚嶇О锛歿{info.renterName}}</span>
+ <el-tag type="success" v-if="info.status === 0">寰呮墽琛�</el-tag>
+ <el-tag type="success" v-if="info.status === 1">姝e父鎵ц涓�</el-tag>
+ <el-tag type="info" v-if="info.status === 2">宸插埌鏈�</el-tag>
+ <el-tag type="info" v-if="info.status === 3">閫�绉熺粨绠椾腑</el-tag>
+ <el-tag type="info" v-if="info.status === 4">宸查��绉�</el-tag>
+ </div>
+ <el-button plain type="danger" v-if="[0, 1, 2].includes(info.status)" @click="refund">閫�绉�</el-button>
</div>
- <el-button plain type="danger" v-if="[0, 1, 2].includes(info.status)" @click="refund">閫�绉�</el-button>
- </div>
- <div class="remark" v-if="info">{{info.remark}}</div>
- <div class="tabs">
- <div class="tab" :class="{ active: activeTabs === 0 }" @click="tabsClick(0)">鍚堝悓淇℃伅</div>
- <div class="tab" :class="{ active: activeTabs === 1 }" @click="tabsClick(1)">鍏宠仈璐﹀崟</div>
- <div class="tab" :class="{ active: activeTabs === 2 }" @click="tabsClick(2)">鎿嶄綔璁板綍</div>
+ <div class="remark" v-if="info">{{info.remark}}</div>
+ <div class="remark" v-if="info && info.status === 3">{{info.btRemark}}</div>
+ <div class="tabs">
+ <div class="tab" :class="{ active: activeTabs === 0 }" @click="tabsClick(0)">鍚堝悓淇℃伅</div>
+ <div class="tab" :class="{ active: activeTabs === 1 }" @click="tabsClick(1)">鍏宠仈璐﹀崟</div>
+ <div class="tab" :class="{ active: activeTabs === 2 }" @click="tabsClick(2)">鎿嶄綔璁板綍</div>
+ </div>
</div>
<div class="main" v-if="activeTabs === 0 && info">
<div class="title">鍩虹淇℃伅</div>
@@ -40,7 +43,7 @@
</div>
<div class="item">
<div class="la">鍚堝悓绉熻祦鏁�</div>
- <div class="val">{{ info.totalArea }}</div>
+ <div class="val">{{ info.totalArea }}銕�</div>
</div>
<div class="item">
<div class="la">鎵�灞炲叕鍙�</div>
@@ -99,7 +102,7 @@
<div class="list" style="background: #F7F7F7; padding: 15px 20px;" v-if="info.type === 2 || info.type === 0">
<div class="item">
<div class="la">鎶奸噾閲戦</div>
- <div class="val">{{ info.zlDeposit }}</div>
+ <div class="val">{{ info.zlDeposit }}鍏�</div>
</div>
<div class="item">
<div class="la">浠樻鏂瑰紡</div>
@@ -116,14 +119,22 @@
<el-table :data="info.zlDetailList" stripe style="margin-bottom: 20px;" v-if="info.type === 2 || info.type === 0">
<el-table-column prop="startDate" label="寮�濮嬫棩鏈�" min-width="100" show-overflow-tooltip />
<el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="100" show-overflow-tooltip />
- <el-table-column prop="price" label="鍚堝悓鍗曚环" min-width="100" show-overflow-tooltip />
- <el-table-column prop="advanceDays" label="浠樻鎻愬墠澶╂暟" min-width="100" show-overflow-tooltip />
+ <el-table-column label="鍚堝悓鍗曚环" min-width="100" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ {{row.price}} {{returnUnit(row.circleType)}}
+ </template>
+ </el-table-column>
+ <el-table-column label="浠樻鎻愬墠澶╂暟" min-width="100" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ {{row.advanceDays}}澶�
+ </template>
+ </el-table-column>
</el-table>
<div class="title" v-if="info.type === 1 || info.type === 0">鐗╀笟璐规潯娆�</div>
<div class="list" style="background: #F7F7F7; padding: 15px 20px;" v-if="info.type === 1 || info.type === 0">
<div class="item">
<div class="la">鎶奸噾閲戦</div>
- <div class="val">{{ info.wyDeposit }}</div>
+ <div class="val">{{ info.wyDeposit }}鍏�</div>
</div>
<div class="item">
<div class="la">浠樻鏂瑰紡</div>
@@ -140,13 +151,25 @@
<el-table :data="info.wyDetailList" stripe style="margin-bottom: 20px;" v-if="info.type === 1 || info.type === 0">
<el-table-column prop="startDate" label="寮�濮嬫棩鏈�" min-width="100" show-overflow-tooltip />
<el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="100" show-overflow-tooltip />
- <el-table-column prop="price" label="鍚堝悓鍗曚环" min-width="100" show-overflow-tooltip />
- <el-table-column prop="advanceDays" label="浠樻鎻愬墠澶╂暟" min-width="100" show-overflow-tooltip />
+ <el-table-column label="鍚堝悓鍗曚环" min-width="100" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ {{row.price}} {{returnUnit(row.circleType)}}
+ </template>
+ </el-table-column>
+ <el-table-column label="浠樻鎻愬墠澶╂暟" min-width="100" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ {{row.advanceDays}}澶�
+ </template>
+ </el-table-column>
</el-table>
<div class="title">鍚堝悓闄勪欢</div>
<div class="list">
<el-table :data="info.fileList" stripe>
- <el-table-column prop="name" label="闄勪欢鍚嶇О" show-overflow-tooltip />
+ <el-table-column label="闄勪欢鍚嶇О" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ <u style="color: #0c6ce3; cursor: pointer;" @click="xiazai(row.fileurlFull)">{{row.name}}</u>
+ </template>
+ </el-table-column>
<el-table-column prop="userName" label="鎿嶄綔浜�" show-overflow-tooltip />
<el-table-column prop="createDate" label="鎿嶄綔鏃堕棿" show-overflow-tooltip />
</el-table>
@@ -182,18 +205,22 @@
<el-table-column
:key="Date.now()"
prop="receivableFee"
- label="搴旀敹閲戦">
+ :label="`搴�${type === 0 ? '鏀�' : '浠�'}閲戦`">
</el-table-column>
<el-table-column
prop="actReceivableFee"
- label="瀹炴敹閲戦">
+ :label="`瀹�${type === 0 ? '鏀�' : '浠�'}閲戦`">
</el-table-column>
<el-table-column
- prop="needReceivableFee"
- label="闇�鏀堕噾棰�">
+ :label="`闇�${type === 0 ? '鏀�' : '浠�'}閲戦`">
<template slot-scope="{row}">
- <el-tag type="success" v-if="row.needReceivableFee > 0">鏀�</el-tag>
- <el-tag type="warning" v-else>浠�</el-tag>
+ <template v-if="type === 0">
+ <el-tag type="success" v-if="row.needReceivableFee > 0">鏀�</el-tag>
+ <el-tag type="warning" v-else-if="row.needReceivableFee < 0">浠�</el-tag>
+ </template>
+ <template v-else>
+ <el-tag type="warning" v-if="row.needReceivableFee !== 0">浠�</el-tag>
+ </template>
<span style="margin-left: 10px;">{{Math.abs(row.needReceivableFee)}}</span>
</template>
</el-table-column>
@@ -205,6 +232,7 @@
</template>
</el-table-column>
<el-table-column
+ width="200"
label="璁¤垂鍛ㄦ湡">
<template slot-scope="{row}">
{{ row.startDate }} ~ {{ row.endDate }}
@@ -325,6 +353,27 @@
this.id = id
this.getData()
},
+ xiazai (url) {
+ window.open(url)
+ },
+ returnUnit (type) {
+ switch (type) {
+ case 0:
+ return '鍏�/m虏路澶�'
+ case 1:
+ return '鍏�/m虏路鏈�'
+ case 2:
+ return '鍏�/m虏路骞�'
+ case 3:
+ return '鍏�/澶�'
+ case 4:
+ return '鍏�/鏈�'
+ case 5:
+ return '鍏�/骞�'
+ case 6:
+ return '鍏�/鍦�'
+ }
+ },
getData () {
getById(this.id)
.then(res => {
@@ -342,6 +391,7 @@
capacity: this.pageSize,
page: this.page,
model: {
+ status: 0,
billType: this.type,
contractId: this.info.id
}
diff --git a/admin/src/views/contract/components/contractEdit.vue b/admin/src/views/contract/components/contractEdit.vue
index 213d597..3fa3f50 100644
--- a/admin/src/views/contract/components/contractEdit.vue
+++ b/admin/src/views/contract/components/contractEdit.vue
@@ -1,6 +1,4 @@
<template>
-<!-- :text="activeTabs === 0 ? '涓嬩竴姝�' : '鎻愪氦'"-->
-<!-- :backText="activeTabs === 0 ? '杩斿洖' : '涓婁竴姝�'"-->
<GlobalWindow
width="100%"
:title="title"
@@ -42,7 +40,7 @@
<el-date-picker type="date" v-model="form.endDate" @change="getHouseData" :clearable="false" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
</el-form-item>
<el-form-item label="褰掑睘椤圭洰" prop="projectId">
- <el-select v-model="form.projectId" placeholder="璇烽�夋嫨">
+ <el-select v-model="form.projectId" @change="getHouseTree" placeholder="璇烽�夋嫨">
<el-option v-for="(item, index) in projectList" :key="index" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
@@ -65,8 +63,11 @@
<el-input v-model="form.renterName" readonly placeholder="璇风偣鍑婚�夋嫨绉熷" />
</div>
</el-form-item>
- <el-form-item label="鑱旂郴浜�" prop="memberName">
- <el-input v-model="form.memberName" readonly placeholder="璇风偣鍑婚�夋嫨绉熷" />
+ <el-form-item label="鑱旂郴浜�" prop="memberId">
+ <el-select v-model="form.memberId" placeholder="璇烽�夋嫨">
+ <el-option v-for="(item, index) in contactsList" :key="index" :value="item.id" :label="item.name"></el-option>
+ </el-select>
+<!-- <el-input v-model="form.memberName" readonly placeholder="璇风偣鍑婚�夋嫨绉熷" />-->
</el-form-item>
</div>
</el-form>
@@ -81,6 +82,12 @@
:default-expanded-keys="ids"
:default-checked-keys="ids"
:props="{ children: 'projectDataVOList', label: 'name' }">
+ <span class="custom-tree-node" style="width: 100%; display: flex; align-items: center; justify-content: space-between;" slot-scope="{ node, data }">
+ <span>{{ data.name }}</span>
+ <span style="color: #2080f7;" v-if="data.lv === 3">
+ {{ data.area }}銕�
+ </span>
+ </span>
</el-tree>
</div>
</div>
@@ -117,10 +124,10 @@
<div class="m_title">绉熻祦淇℃伅</div>
<div class="list">
<el-form-item label="鎶奸噾閲戦(鍏�)" prop="zlDeposit">
- <el-input v-model="form.zlDeposit" placeholder="璇疯緭鍏�" v-trim />
+ <el-input v-model="form.zlDeposit" @input="clearzl" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
<el-form-item label="浠樻鏂瑰紡" prop="zlPayType">
- <el-select v-model="form.zlPayType" placeholder="璇烽�夋嫨">
+ <el-select v-model="form.zlPayType" @change="clearzl" placeholder="璇烽�夋嫨">
<el-option v-for="(item, index) in payMethods" :key="index" :value="item.value" :label="item.name"></el-option>
</el-select>
</el-form-item>
@@ -134,20 +141,26 @@
<el-button type="text" size="medium" @click="addZl">澧炲姞</el-button>
</div>
<div class="list">
- <div v-for="(item, index) in form.zlDetailList" :key="index">
- <el-form-item label="璧峰鏃ユ湡" prop="time">
- <el-date-picker type="daterange" v-model="item.time" @change="getDate1($event, index)" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ <div style="width: 100%; display: flex; flex-wrap: wrap;" v-for="(zlDetailList, index) in form.zlDetailList" :key="index">
+ <el-form-item label="璧峰鏃ユ湡" :prop="'zlDetailList.' + index + '.time'" :rules="{
+ required: true, message: '璇烽�夋嫨', trigger: 'blur'
+ }">
+ <el-date-picker type="daterange" v-model="zlDetailList.time" @change="getDate1($event, index)" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
</el-form-item>
- <el-form-item label="鍚堝悓鍗曚环" prop="price">
- <el-input placeholder="璇疯緭鍏�" v-model="item.price" class="input-with-select">
- <el-select v-model="item.circleType" style="width: 150px;" slot="append" placeholder="璇烽�夋嫨">
+ <el-form-item label="鍚堝悓鍗曚环" :prop="'zlDetailList.' + index + '.price'" :rules="{
+ required: true, message: '璇疯緭鍏�', trigger: 'blur'
+ }">
+ <el-input placeholder="璇疯緭鍏�" v-model="zlDetailList.price" @input="clearzl" class="input-with-select">
+ <el-select v-model="zlDetailList.circleType" @change="clearzl" style="width: 150px;" slot="append" placeholder="璇烽�夋嫨">
<el-option v-for="(item, index) in unitOps" :key="index" :value="item.value" :label="item.name"></el-option>
</el-select>
</el-input>
</el-form-item>
- <el-form-item label="浠樻鎻愬墠澶╂暟" prop="advanceDays">
+ <el-form-item label="浠樻鎻愬墠澶╂暟" :prop="'zlDetailList.' + index + '.advanceDays'" :rules="{
+ required: true, message: '璇疯緭鍏�', trigger: 'blur'
+ }">
<div style="display: flex; align-items: center; justify-content: space-between;">
- <el-input v-model="item.advanceDays" placeholder="璇疯緭鍏�" v-trim />
+ <el-input v-model="zlDetailList.advanceDays" @input="clearzl" placeholder="璇疯緭鍏�" v-trim />
<el-link :underline="false" type="danger" @click="deleZl(index)" style="margin-left: 20px; flex-shrink: 0;">鍒犻櫎</el-link>
</div>
</el-form-item>
@@ -172,7 +185,7 @@
</el-table-column>
<el-table-column label="鏈熸暟" align="center" show-overflow-tooltip>
<template slot-scope="{row}">
- <el-tag type="success">{{row.sortnum}}</el-tag>
+ <el-tag type="success" v-if="row.sortnum > 0">{{row.sortnum}}</el-tag>
</template>
</el-table-column>
<el-table-column label="鍖洪棿" align="center" show-overflow-tooltip>
@@ -200,10 +213,10 @@
<div class="m_title">鐗╀笟淇℃伅</div>
<div class="list">
<el-form-item label="鐗╀笟鎶奸噾" prop="wyDeposit">
- <el-input v-model="form.wyDeposit" placeholder="璇疯緭鍏�" v-trim />
+ <el-input v-model="form.wyDeposit" @input="clearwy" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
<el-form-item label="浠樻鏂瑰紡" prop="wyPayType">
- <el-select v-model="form.wyPayType" placeholder="璇烽�夋嫨">
+ <el-select v-model="form.wyPayType" @change="clearwy" placeholder="璇烽�夋嫨">
<el-option v-for="(item, index) in payMethods" :key="index" :value="item.value" :label="item.name"></el-option>
</el-select>
</el-form-item>
@@ -217,20 +230,26 @@
<el-button type="text" size="medium" @click="addWy">澧炲姞</el-button>
</div>
<div class="list">
- <div v-for="(item, index) in form.wyDetailList" :key="index">
- <el-form-item label="璧峰鏃ユ湡" prop="time">
- <el-date-picker type="daterange" v-model="item.time" @change="getDate2($event, index)" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ <div style="width: 100%; display: flex; flex-wrap: wrap;" v-for="(wyDetailList, index) in form.wyDetailList" :key="index">
+ <el-form-item label="璧峰鏃ユ湡" :prop="'wyDetailList.' + index + '.time'" :rules="{
+ required: true, message: '璇疯緭鍏�', trigger: 'blur'
+ }">
+ <el-date-picker type="daterange" v-model="wyDetailList.time" @change="getDate2($event, index)" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
</el-form-item>
- <el-form-item label="鍚堝悓鍗曚环" prop="price">
- <el-input placeholder="璇疯緭鍏�" v-model="item.price">
- <el-select v-model="item.circleType" style="width: 150px;" slot="append" placeholder="璇烽�夋嫨">
+ <el-form-item label="鍚堝悓鍗曚环" :prop="'wyDetailList.' + index + '.price'" :rules="{
+ required: true, message: '璇疯緭鍏�', trigger: 'blur'
+ }">
+ <el-input placeholder="璇疯緭鍏�" @input="clearwy" v-model="wyDetailList.price">
+ <el-select v-model="wyDetailList.circleType" @change="clearwy" style="width: 150px;" slot="append" placeholder="璇烽�夋嫨">
<el-option v-for="(item, index) in unitOps" :key="index" :value="item.value" :label="item.name"></el-option>
</el-select>
</el-input>
</el-form-item>
- <el-form-item label="浠樻鎻愬墠澶╂暟" prop="advanceDays">
+ <el-form-item label="浠樻鎻愬墠澶╂暟" :prop="'wyDetailList.' + index + '.advanceDays'" :rules="{
+ required: true, message: '璇疯緭鍏�', trigger: 'blur'
+ }">
<div style="display: flex; align-items: center; justify-content: space-between;">
- <el-input v-model="item.advanceDays" placeholder="璇疯緭鍏�" v-trim />
+ <el-input v-model="wyDetailList.advanceDays" @input="clearwy" placeholder="璇疯緭鍏�" v-trim />
<el-link :underline="false" type="danger" @click="deleWy(index)" style="margin-left: 20px; flex-shrink: 0;">鍒犻櫎</el-link>
</div>
</el-form-item>
@@ -255,7 +274,7 @@
</el-table-column>
<el-table-column label="鏈熸暟" align="center" show-overflow-tooltip>
<template slot-scope="{row}">
- <el-tag type="success">{{row.sortnum}}</el-tag>
+ <el-tag type="success" v-if="row.sortnum > 0">{{row.sortnum}}</el-tag>
</template>
</el-table-column>
<el-table-column label="鍖洪棿" align="center" show-overflow-tooltip>
@@ -294,6 +313,7 @@
import MemberSearch from '@/components/common/MemberSearch'
import { rules } from './config'
import { create, getBillList } from '@/api/contract'
+import { ywList } from '@/api/customer'
import { getUserList } from '@/api/system/user'
import { getProjectList, tree } from '@/api/project/ywProject'
import { companyList } from '@/api/company'
@@ -335,6 +355,7 @@
zlDate: [],
zlDetailList: [
{
+ circleType: 0,
startDate: '',
endDate: '',
time: [],
@@ -350,6 +371,7 @@
wyDate: [],
wyDetailList: [
{
+ circleType: 0,
startDate: '',
endDate: '',
time: [],
@@ -367,6 +389,8 @@
wyList: [],
rules,
+
+ contactsList: [],
loadingInstance: null,
uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
@@ -388,7 +412,7 @@
{ name: '涓�娆℃�т粯娆�', value: 0 },
{ name: '3涓湀涓�浠�', value: 1 },
{ name: '6涓湀涓�浠�', value: 2 },
- { name: '1骞翠竴浠�', value: 2 },
+ { name: '1骞翠竴浠�', value: 3 },
],
unitOps: [
{ name: '鍏�/m虏路澶�', value: 0 },
@@ -407,6 +431,9 @@
open (title, target) {
this.title = title
this.ids = []
+ this.houseList = []
+ this.zlPrice = ''
+ this.wyPrice = ''
this.getUser()
this.getProject()
this.getCompany()
@@ -420,31 +447,41 @@
this.form[key] = ''
}
}
- this.form.zlDetailList = [
- {
- startDate: '',
- endDate: '',
- time: [],
- price: '',
- advanceDays: ''
- }
- ]
- this.form.wyDetailList = [
- {
- startDate: '',
- endDate: '',
- time: [],
- price: '',
- advanceDays: ''
- }
- ]
this.wyList = []
this.zlList = []
this.form.userId = this.userInfo.id
this.form.signDate = this.getDayTime()
this.form.startDate = this.getDayTime()
this.form.endDate = this.getDayTime(1)
- this.getHouseTree()
+ this.form.zlDetailList = [
+ {
+ circleType: 0,
+ startDate: this.form.startDate,
+ endDate: this.form.endDate,
+ time: [this.form.startDate, this.form.endDate],
+ price: '',
+ advanceDays: ''
+ }
+ ]
+ this.form.wyDetailList = [
+ {
+ circleType: 0,
+ startDate: this.form.startDate,
+ endDate: this.form.endDate,
+ time: [this.form.startDate, this.form.endDate],
+ price: '',
+ advanceDays: ''
+ }
+ ]
+ // this.getHouseTree()
+ })
+ },
+ // 鑾峰彇鑱旂郴浜�
+ getYwList () {
+ ywList({
+ customerId: this.form.renterId
+ }).then(res => {
+ this.contactsList = res
})
},
getHouseData () {
@@ -467,13 +504,45 @@
if (!num) {
return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`;
} else {
- return `${year + 1}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`;
+ return `${year + 1}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day - 1 : day - 1}`;
}
},
+ clearData () {
+ this.form.zlDetailList = [
+ {
+ circleType: 0,
+ startDate: this.form.startDate,
+ endDate: this.form.endDate,
+ time: [this.form.startDate, this.form.endDate],
+ price: '',
+ advanceDays: ''
+ }
+ ]
+ this.form.wyDetailList = [
+ {
+ circleType: 0,
+ startDate: this.form.startDate,
+ endDate: this.form.endDate,
+ time: [this.form.startDate, this.form.endDate],
+ price: '',
+ advanceDays: ''
+ }
+ ]
+ },
+ clearzl () {
+ this.zlList = []
+ this.zlPrice = ''
+ },
+ clearwy () {
+ this.wyList = []
+ this.wyPrice = ''
+ },
confirm () {
+ var that = this
if (this.activeTabs === 0) {
this.$refs.form.validate((valid) => {
if (!valid) return
+ if (this.form.roomIds.length === 0) return this.$message.warning('璇烽�夋嫨鎴挎簮锛�')
this.activeTabs = 1
})
} else if (this.activeTabs === 1) {
@@ -486,6 +555,8 @@
if (!valid2) {
return
}
+ if (that.zlList.length === 0) return that.$message.warning('璇峰厛鐢熸垚绉熻祦璐﹀崟锛�')
+ if (that.wyList.length === 0) return that.$message.warning('璇峰厛鐢熸垚鐗╀笟璐﹀崟锛�')
this.submit()
})
})
@@ -494,6 +565,7 @@
if (!valid1) {
return
}
+ if (that.zlList.length === 0) return that.$message.warning('璇峰厛鐢熸垚绉熻祦璐﹀崟锛�')
this.submit()
})
} else if (this.form.type === 1) {
@@ -501,6 +573,7 @@
if (!valid2) {
return
}
+ if (that.wyList.length === 0) return that.$message.warning('璇峰厛鐢熸垚鐗╀笟璐﹀崟锛�')
this.submit()
})
}
@@ -522,10 +595,12 @@
getDate1 (e, index) {
this.form.zlDetailList[index].startDate = e[0]
this.form.zlDetailList[index].endDate = e[1]
+ this.clearzl()
},
getDate2 (e, index) {
this.form.wyDetailList[index].startDate = e[0]
this.form.wyDetailList[index].endDate = e[1]
+ this.clearwy()
},
checkHouseRoom (a, b) {
this.ids = b.checkedKeys
@@ -539,7 +614,8 @@
getHouseTree () {
tree({
startDate: this.form.startDate,
- endDate: this.form.endDate
+ endDate: this.form.endDate,
+ projectId: this.form.projectId
})
.then(res => {
res.forEach(item => {
@@ -576,6 +652,7 @@
generateWY () {
getBillList({ ...this.form, billType: 1 })
.then(res => {
+ this.wy = true
let zlPrice = 0
let arr = []
res.forEach(item => {
@@ -590,18 +667,20 @@
},
addZl () {
this.form.zlDetailList.push({
- startDate: '',
- endDate: '',
- time: [],
+ circleType: 0,
+ startDate: this.form.startDate,
+ endDate: this.form.endDate,
+ time: [this.form.startDate, this.form.endDate],
price: '',
advanceDays: ''
})
},
addWy () {
this.form.wyDetailList.push({
- startDate: '',
- endDate: '',
- time: [],
+ circleType: 0,
+ startDate: this.form.startDate,
+ endDate: this.form.endDate,
+ time: [this.form.startDate, this.form.endDate],
price: '',
advanceDays: ''
})
@@ -609,24 +688,29 @@
deleZl(index) {
if (this.form.zlDetailList.length === 1) return Message.warning('鑷冲皯淇濈暀涓�鏉★紒')
this.form.zlDetailList.splice(index, 1)
+ this.clearzl()
},
deleWy(index) {
if (this.form.wyDetailList.length === 1) return Message.warning('鑷冲皯淇濈暀涓�鏉★紒')
this.form.wyDetailList.splice(index, 1)
+ this.clearwy()
},
getZLDate (e) {
this.form.zlFreeStartDate = e[0]
this.form.zlFreeEndDate = e[1]
+ this.clearzl()
},
getWYDate (e) {
this.form.wyFreeStartDate = e[0]
this.form.wyFreeEndDate = e[1]
+ this.clearwy()
},
getTenant (row) {
this.form.renterId = row.id
this.form.renterName = row.name
- this.form.memberId = row.memberId
- this.form.memberName = row.memberName
+ this.form.memberId = ''
+ this.form.memberName = ''
+ this.getYwList()
},
dele (imgaddr) {
this.form.fileList.forEach((item, index) => {
@@ -718,6 +802,7 @@
position: sticky;
top: 0;
left: 0;
+ z-index: 999;
}
.tabs {
border-bottom: 1px solid #DFE2E8;
diff --git a/admin/src/views/contract/components/terminateLease.vue b/admin/src/views/contract/components/terminateLease.vue
index 6bb8929..83108ee 100644
--- a/admin/src/views/contract/components/terminateLease.vue
+++ b/admin/src/views/contract/components/terminateLease.vue
@@ -84,6 +84,7 @@
label="璐﹀崟缂栧彿">
</el-table-column>
<el-table-column
+ width="100"
label="璐圭敤绫诲瀷">
<template slot-scope="{row}">
<span v-if="row.costType === 0">绉熻祦璐�</span>
@@ -103,13 +104,14 @@
label="搴旀敹浠橀噾棰�/鍘熷搴旀敹浠�">
<template v-slot="{row}">
<div style="display: flex; align-items: center;">
- <el-input v-model="row.receivableFee" @input="changeReceivableFee($event, row)" placeholder="璇疯緭鍏ュ唴瀹�" style="width: 90px;"></el-input>
+ <el-input v-model="row.receivableFee" @input="changeReceivableFee($event, row)" placeholder="璇疯緭鍏ュ唴瀹�" style="flex: 1;"></el-input>
<span style="margin: 0 10px;">/</span>
{{row.receivableFeeCopy}}
</div>
</template>
</el-table-column>
<el-table-column
+ width="120"
prop="actReceivableFee"
label="瀹炴敹/浠橀噾棰�">
</el-table-column>
@@ -247,26 +249,6 @@
loading: false
}
},
- watch: {
- // info: {
- // deep: true,
- // immediate: true,
- // handler(news, olds) {
- // const arr = [...this.info.terminateList, ...this.info.depositList]
- // let total1 = 0
- // let total2 = 0
- // arr.forEach(item => {
- // if (item.billType === 0) {
- // total1 += Number(item.price)
- // } else if (item.billType === 1) {
- // total2 += Number(item.price)
- // }
- // })
- // this.receivable = total1
- // this.meet = total2
- // }
- // }
- },
methods: {
open (title, info) {
this.title = title
@@ -279,12 +261,12 @@
this.$refs.form.resetFields()
})
this.info.canBackRentBills.forEach(item => {
- this.$set(item, 'receivableFeeCopy', item.receivableFee)
- this.$set(item, 'receivableFee', item.needReceivableFee)
if ([2,3,7].includes(item.costType)) {
this.$set(item, 'billType', 1)
this.$set(item, 'price', item.actReceivableFee)
} else {
+ this.$set(item, 'receivableFeeCopy', item.receivableFee)
+ this.$set(item, 'receivableFee', item.needReceivableFee)
this.$set(item, 'price', item.needReceivableFee)
}
})
@@ -315,8 +297,8 @@
total2 += Number(item.price)
}
})
- this.receivable = total1
- this.meet = total2
+ this.receivable = total1.toFixed(2)
+ this.meet = total2.toFixed(2)
},
getDay () {
const today = new Date();
diff --git a/admin/src/views/contract/contractList.vue b/admin/src/views/contract/contractList.vue
index 13a9176..089e6f5 100644
--- a/admin/src/views/contract/contractList.vue
+++ b/admin/src/views/contract/contractList.vue
@@ -15,14 +15,8 @@
<el-table-column prop="zlFirstPrice" label="绉熻祦鍗曚环" min-width="100" show-overflow-tooltip>
<template slot-scope="{row}">
<div style="display: flex; align-items: center;">
- <span>{{row.zlFirstPrice}}</span>
- <span v-if="row.zlFirstCircle === 0">鍏�/m虏路澶�</span>
- <span v-if="row.zlFirstCircle === 1">鍏�/m虏路鏈�</span>
- <span v-if="row.zlFirstCircle === 2">鍏�/澶�</span>
- <span v-if="row.zlFirstCircle === 3">鍏�/鏈�</span>
- <span v-if="row.zlFirstCircle === 4">鍏�/骞�</span>
- <span v-if="row.zlFirstCircle === 5">鍏�/m虏路骞�</span>
- <span v-if="row.zlFirstCircle === 6">鍏�/鍦�</span>
+ <span>{{row.zlFirstPrice || row.wyFirstPrice}}</span>
+ <span>{{row.zlFirstCircleStr || row.wyFirstCircleStr}}</span>
</div>
</template>
</el-table-column>
diff --git a/admin/src/views/finance/bull.vue b/admin/src/views/finance/bull.vue
index 4c7923a..e0e4de8 100644
--- a/admin/src/views/finance/bull.vue
+++ b/admin/src/views/finance/bull.vue
@@ -33,9 +33,13 @@
</template>
</el-table-column>
<el-table-column prop="totleFee" label="璐﹀崟閲戦" min-width="100" show-overflow-tooltip />
- <el-table-column prop="receivableFee" label="搴旀敹閲戦" min-width="100" show-overflow-tooltip />
- <el-table-column prop="actReceivableFee" label="瀹炴敹閲戦" min-width="100" show-overflow-tooltip />
- <el-table-column prop="needReceivableFee" label="闇�鏀堕噾棰�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="receivableFee" :label="`搴�${billType === 0 ? '鏀�' : '浠�'}閲戦`" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="actReceivableFee" :label="`瀹�${billType === 0 ? '鏀�' : '浠�'}閲戦`" min-width="100" show-overflow-tooltip />
+ <el-table-column :label="`闇�鏀�/浠橀噾棰漙" min-width="100" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ {{Math.abs(row.needReceivableFee)}}
+ </template>
+ </el-table-column>
<el-table-column label="璐圭敤绫诲瀷" min-width="100" show-overflow-tooltip>
<template slot-scope="{row}">
<span v-if="row.costType === 0">绉熻祦璐�</span>
@@ -59,7 +63,7 @@
{{ row.startDate }} ~ {{ row.endDate }}
</template>
</el-table-column>
- <el-table-column prop="planPayDate" label="搴旀敹鏃ユ湡" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="planPayDate" :label="`搴�${billType === 0 ? '鏀�' : '浠�'}鏃ユ湡`" min-width="100" show-overflow-tooltip />
<el-table-column label="璐﹀崟鏉ユ簮" min-width="100" show-overflow-tooltip>
<template slot-scope="{row}">
<span v-if="row.type === 0">鍚堝悓璐﹀崟</span>
@@ -145,8 +149,8 @@
{ value: 0, label: '寰呮敹娆�' },
{ value: 1, label: '宸茬粨绠�' },
{ value: 2, label: '閮ㄥ垎缁撴竻' },
- { value: 3, label: '寰呴��娆�' },
- { value: 4, label: '寰呬粯娆�' }
+ { value: 3, label: '寰呬粯娆�' },
+ { value: 4, label: '寰呴��娆�' }
]
},
{
diff --git a/admin/src/views/finance/components/bullDetail.vue b/admin/src/views/finance/components/bullDetail.vue
index bfea17f..d08fee0 100644
--- a/admin/src/views/finance/components/bullDetail.vue
+++ b/admin/src/views/finance/components/bullDetail.vue
@@ -1,63 +1,68 @@
<template>
<GlobalWindow :title="'璐﹀崟璇︽儏'" :visible.sync="visible" :confirm-working="isWorking" @close="close"
@confirm="confirm">
- <div class="home_title">
- <div class="left">
- <span class="mr10">浠樻鏂癸細{{info.customerName}}</span>
- <el-tag type="success" v-if="info.status === 0">寮�鍚�</el-tag>
- <el-tag type="info" v-if="info.status === 1">鍏抽棴</el-tag>
+ <div style="width: 100%; position: sticky; top: 0; left: 0; z-index: 999; background: #ffffff;">
+ <div class="home_title">
+ <div class="left">
+ <span class="mr10">浠樻鏂癸細{{info.customerName}}</span>
+ <el-tag type="success" v-if="info.status === 0">寮�鍚�</el-tag>
+ <el-tag type="info" v-if="info.status === 1">鍏抽棴</el-tag>
+ </div>
+ <el-button plain type="primary" v-if="![1].includes(info.payStatus)" @click="$refs.flowingWater.open('鍒涘缓鏀舵敮娴佹按', {
+ billType: returnBillType(),
+ billId: info.id,
+ costType: info.costType,
+ receivableFee: Math.abs(info.needReceivableFee),
+ costTypeName: returnText(info.costType),
+ contractCode: info.contractCode,
+ contractId: info.contractId,
+ startDate: info.startDate,
+ endDate: info.endDate,
+ multifileList: [],
+ date: `${info.startDate} ~ ${info.endDate}`,
+ companyId: info.companyId,
+ companyName: info.companyName,
+ actReceivableFee: Math.abs(info.needReceivableFee),
+ needReceivableFeeCopy: info.needReceivableFee
+ })">鏂板缓鏀舵敮娴佹按</el-button>
</div>
- <el-button plain type="primary" @click="$refs.flowingWater.open('鍒涘缓鏀舵敮娴佹按', {
- billType: info.billType,
- billId: info.id,
- costType: info.costType,
- receivableFee: info.needReceivableFee,
- costTypeName: returnText(info.costType),
- contractCode: info.contractCode,
- contractId: info.contractId,
- startDate: info.startDate,
- endDate: info.endDate,
- multifileList: [],
- date: `${info.startDate} ~ ${info.endDate}`,
- companyId: info.companyId,
- companyName: info.companyName,
- actReceivableFee: info.actReceivableFee
- })">鏂板缓鏀舵敮娴佹按</el-button>
- </div>
- <div class="line"></div>
- <div class="main">
- <div class="list" style="background: rgba(0,0,0,0); padding: 0; margin-bottom: 0;">
- <div class="item" style="flex: 1;">
- <div class="la">缁撴竻鐘舵��</div>
- <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 0">寰呮敹娆�</div>
- <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 1">宸茬粨娓�</div>
- <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 2">閮ㄥ垎缁撴竻</div>
- <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 3">寰呬粯娆�</div>
- <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 4">寰呴��娆�</div>
- <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 5">宸插叧闂�</div>
- </div>
- <div class="item" style="flex: 1;">
- <div class="la">搴攞{info.billType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
- <div class="val" style="margin-top: 10px;">{{info.receivableFee}}</div>
- </div>
- <div class="item" style="flex: 1;">
- <div class="la">瀹瀧{info.billType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
- <div class="val" style="margin-top: 10px;">{{info.actReceivableFee}}</div>
- </div>
- <div class="item" style="flex: 1;">
- <div class="la">闇�{{info.billType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
- <div class="val" style="margin-top: 10px;">{{info.needReceivableFee}}</div>
- </div>
- <div class="item" style="flex: 1;">
- <div class="la">搴攞{info.billType === 0 ? '鏀�' : '浠�'}}鏃ユ湡</div>
- <div class="val" style="margin-top: 10px;">{{info.planPayDate}}</div>
+ <div class="line"></div>
+ <div class="main">
+ <div class="list" style="background: rgba(0,0,0,0); padding: 0; margin-bottom: 0;">
+ <div class="item" style="flex: 1;">
+ <div class="la">缁撴竻鐘舵��</div>
+ <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 0">寰呮敹娆�</div>
+ <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 1">宸茬粨娓�</div>
+ <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 2">閮ㄥ垎缁撴竻</div>
+ <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 3">寰呬粯娆�</div>
+ <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 4">寰呴��娆�</div>
+ <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 5">宸插叧闂�</div>
+ </div>
+ <div class="item" style="flex: 1;">
+ <div class="la">搴攞{info.billType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
+ <div class="val" style="margin-top: 10px;">{{info.receivableFee}}</div>
+ </div>
+ <div class="item" style="flex: 1;">
+ <div class="la">瀹瀧{info.billType === 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
+ <div class="val" style="margin-top: 10px;">{{info.actReceivableFee}}</div>
+ </div>
+ <div class="item" style="flex: 1;">
+ <template v-if="info.billType === 1">
+ <div class="la">闇�浠橀噾棰濓紙鍏冿級</div>
+ </template>
+ <div class="la" v-else>闇�{{info.needReceivableFee > 0 ? '鏀�' : '浠�'}}閲戦锛堝厓锛�</div>
+ <div class="val" style="margin-top: 10px;">{{Math.abs(info.needReceivableFee)}}</div>
+ </div>
+ <div class="item" style="flex: 1;">
+ <div class="la">搴攞{info.billType === 0 ? '鏀�' : '浠�'}}鏃ユ湡</div>
+ <div class="val" style="margin-top: 10px;">{{info.planPayDate}}</div>
+ </div>
</div>
</div>
- </div>
- <div class="tabs">
- <div class="tab" :class="{ active: activeTabs == 0 }" @click="tabsClick(0)">鍩虹淇℃伅</div>
-<!-- <div class="tab" :class="{ active: activeTabs == 1 }" @click="tabsClick(1)">璐﹀崟鏄庣粏</div>-->
- <div class="tab" :class="{ active: activeTabs == 2 }" @click="tabsClick(2)">鏀舵敮娴佹按</div>
+ <div class="tabs">
+ <div class="tab" :class="{ active: activeTabs == 0 }" @click="tabsClick(0)">鍩虹淇℃伅</div>
+ <div class="tab" :class="{ active: activeTabs == 2 }" @click="tabsClick(2)">鏀舵敮娴佹按</div>
+ </div>
</div>
<div class="main">
<div class="title">鍩虹淇℃伅</div>
@@ -80,7 +85,7 @@
</div>
<div class="item">
<div class="la">鍚堝悓缂栧彿</div>
- <div class="val">{{info.contractCode}}</div>
+ <div class="val" style="color: #2080f7; cursor: pointer;" @click="handleDetail(info.contractId)">{{info.contractCode}}</div>
</div>
<div class="item">
<div class="la">鍒涘缓鏃堕棿</div>
@@ -183,6 +188,8 @@
</div>
<!-- 鍒涘缓娴佹按 -->
<FlowingWater ref="flowingWater" @success="getDetails" @refresh="Refresh" />
+ <!-- 鍚堝悓璇︽儏 -->
+ <ContractDetail ref="ContractDetailRef" />
</GlobalWindow>
</template>
@@ -190,11 +197,13 @@
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
import FlowingWater from './flowingWater'
+import ContractDetail from '../../contract/components/contractDetail'
import { getYwContractBillById } from '@/api/contract'
export default {
components: {
GlobalWindow,
- FlowingWater
+ FlowingWater,
+ ContractDetail
},
extends: BaseOpera,
data() {
@@ -212,6 +221,9 @@
this.id = id
this.getDetails()
},
+ handleDetail (id) {
+ this.$refs.ContractDetailRef.open('鍚堝悓璇︽儏', id)
+ },
getDetails () {
getYwContractBillById(this.id)
.then(res => {
@@ -219,6 +231,15 @@
this.visible = true
})
},
+ returnBillType () {
+ if (this.info.payStatus === 0) {
+ return 0
+ } else if (this.info.payStatus === 2) {
+ return this.info.billType
+ } else if ([3,4].includes(this.info.payStatus)) {
+ return 1
+ }
+ },
Refresh () {
this.$emit('success')
},
diff --git a/admin/src/views/finance/components/bullEdit.vue b/admin/src/views/finance/components/bullEdit.vue
index 9eaf189..de28758 100644
--- a/admin/src/views/finance/components/bullEdit.vue
+++ b/admin/src/views/finance/components/bullEdit.vue
@@ -18,7 +18,7 @@
</el-select>
</el-form-item>
<el-form-item label="浠樻鏂�" prop="renterName">
- <el-input v-model="form.renterName" disabled placeholder="璇疯緭鍏ュ簲鏀堕噾棰�" v-trim />
+ <el-input v-model="form.renterName" disabled placeholder="浠樻鏂�" v-trim />
</el-form-item>
<el-form-item label="鎴挎簮" prop="ywContractRoomList">
<el-select v-model="form.ywContractRoomList" @click="clickHouse" multiple placeholder="璇烽�夋嫨">
diff --git a/admin/src/views/finance/components/details.vue b/admin/src/views/finance/components/details.vue
index 1336c5a..f349cc1 100644
--- a/admin/src/views/finance/components/details.vue
+++ b/admin/src/views/finance/components/details.vue
@@ -1,5 +1,5 @@
<template>
- <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @close="close"
+ <GlobalWindow :title="title" :withFooter="false" :visible.sync="visible" :confirm-working="isWorking" @close="close"
@confirm="confirm">
<div class="home_title">
<div class="left">
diff --git a/admin/src/views/finance/components/flowingWater.vue b/admin/src/views/finance/components/flowingWater.vue
index d011587..c042606 100644
--- a/admin/src/views/finance/components/flowingWater.vue
+++ b/admin/src/views/finance/components/flowingWater.vue
@@ -17,10 +17,10 @@
<el-form-item label="璁¤垂鍛ㄦ湡" required>
<el-input v-model="form.date" disabled placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="搴旀敹閲戦" required>
+ <el-form-item :label="`搴�${form.needReceivableFeeCopy > 0 ? '鏀�' : '浠�'}閲戦`" required>
<el-input v-model="form.receivableFee" disabled placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
- <el-form-item label="瀹炴敹閲戦" prop="actReceivableFee">
+ <el-form-item :label="`瀹�${form.needReceivableFeeCopy > 0 ? '鏀�' : '浠�'}閲戦`" prop="actReceivableFee">
<el-input v-model="form.actReceivableFee" placeholder="璇疯緭鍏�" v-trim />
</el-form-item>
<el-form-item label="鍏ヨ处鏃ユ湡" prop="actPayDate">
@@ -110,7 +110,8 @@
remark: '',
accountId: '',
multifileList: [],
- costTypeName: ''
+ costTypeName: '',
+ needReceivableFeeCopy: ''
},
rules: {
receivableFee: [
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index a728dbc..c51189a 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -138,6 +138,7 @@
}
Cookies.set('dm_user_token', res)
window.location.href = process.env.VUE_APP_CONTEXT_PATH
+ // this.$router.push('')
})
.catch(e => {
this.refreshCaptcha()
diff --git a/admin/src/views/operation/components/deviceDetail.vue b/admin/src/views/operation/components/deviceDetail.vue
index 5dad8e6..f3181aa 100644
--- a/admin/src/views/operation/components/deviceDetail.vue
+++ b/admin/src/views/operation/components/deviceDetail.vue
@@ -1,5 +1,5 @@
<template>
- <GlobalWindow width="720px" title="宸ュ崟璇︽儏" :visible.sync="visible" :confirm-working="isWorking" @close="close"
+ <GlobalWindow width="720px" title="璁惧璇︽儏" :visible.sync="visible" :confirm-working="isWorking" @close="close"
@confirm="confirm">
<div class="main">
<div class="title">
@@ -25,7 +25,7 @@
</div>
<div class="item">
<div class="la">璁惧绠$悊鍛�</div>
- <div class="val">{{ info.realName }}</div>
+ <div class="val">{{ info.realName || info.realname }}</div>
</div>
<div class="item">
<div class="la">鎵�鍦ㄤ綅缃�</div>
@@ -138,7 +138,7 @@
.item {
width: 33.3%;
- margin-bottom: 12px;
+ margin-bottom: 14px;
.photo {
width: 92px;
@@ -147,7 +147,7 @@
.la {
color: #7f7f7f;
- margin-top: 2px;
+ margin-bottom: 6px;
}
}
diff --git a/admin/src/views/operation/components/maintainDetail.vue b/admin/src/views/operation/components/maintainDetail.vue
index 0ab9cd3..048a182 100644
--- a/admin/src/views/operation/components/maintainDetail.vue
+++ b/admin/src/views/operation/components/maintainDetail.vue
@@ -90,10 +90,11 @@
.item {
width: 33.33%;
- margin-bottom: 8px;
+ margin-bottom: 14px;
.la {
- color: #7f7f7f
+ color: #7f7f7f;
+ margin-bottom: 6px;
}
}
.max{
diff --git a/admin/src/views/project/buildingList.vue b/admin/src/views/project/buildingList.vue
index cb453d9..a94db6f 100644
--- a/admin/src/views/project/buildingList.vue
+++ b/admin/src/views/project/buildingList.vue
@@ -35,7 +35,7 @@
<el-table-column prop="projectName" label="鎵�灞為」鐩�" min-width="100px"></el-table-column>
<el-table-column prop="code" label="妤煎畤缂栫爜" min-width="80px"></el-table-column>
<el-table-column prop="area" label="寤虹瓚闈㈢Н(m虏)" min-width="80px"></el-table-column>
- <el-table-column prop="cqArea" label="绠$悊闈㈢Н(m虏)" min-width="80px"></el-table-column>
+ <el-table-column prop="manageArea" label="绠$悊闈㈢Н(m虏)" min-width="80px"></el-table-column>
<el-table-column prop="roomNum" label="鎴块棿鎬绘暟(闂�)" min-width="80px"></el-table-column>
<el-table-column prop="roomRentNum" label="鍙嫑鍟嗘埧婧愭暟閲�(闂�)" min-width="100px"></el-table-column>
<el-table-column v-if="containPermissions(['business:ywbuilding:update', 'business:ywbuilding:delete'])"
diff --git a/admin/src/views/project/components/OperaYwBuildingWindow.vue b/admin/src/views/project/components/OperaYwBuildingWindow.vue
index 3a4c986..83fecbe 100644
--- a/admin/src/views/project/components/OperaYwBuildingWindow.vue
+++ b/admin/src/views/project/components/OperaYwBuildingWindow.vue
@@ -19,7 +19,7 @@
<el-input type="textarea" :rows="4" v-model="form.remark" placeholder="璇疯緭鍏�" />
</el-form-item>
<el-form-item label="寤虹瓚闈㈢Н(m虏)" prop="area">
- <el-input v-model="form.area" placeholder="璇疯緭鍏ョ畝鐩撮潰绉�(m虏)" v-trim />
+ <el-input v-model="form.area" placeholder="璇疯緭鍏ュ缓绛戦潰绉�(m虏)" v-trim />
</el-form-item>
<el-form-item label="浜ф潈闈㈢Н(m虏)" prop="cqArea">
<el-input v-model="form.cqArea" placeholder="璇疯緭鍏ヤ骇鏉冮潰绉�(m虏)" v-trim />
diff --git a/admin/src/views/project/projectList.vue b/admin/src/views/project/projectList.vue
index a150378..383fc76 100644
--- a/admin/src/views/project/projectList.vue
+++ b/admin/src/views/project/projectList.vue
@@ -22,7 +22,7 @@
<el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="name" label="椤圭洰鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="area" label="绠$悊闈㈢Н(m)" min-width="100px"></el-table-column>
+ <el-table-column prop="area" label="绠$悊闈㈢Н(m虏)" min-width="100px"></el-table-column>
<el-table-column prop="roomNum" label="鎬绘埧婧愭暟閲�(闂�)" min-width="100px"></el-table-column>
<el-table-column prop="roomRentNum" label="鍙嫑鍟嗘埧婧愭暟閲�(闂�)" min-width="100px"></el-table-column>
<el-table-column v-if="containPermissions(['business:ywproject:update', 'business:ywproject:delete'])"
diff --git a/admin/src/views/system/user.vue b/admin/src/views/system/user.vue
index 73d74f4..ee79e9f 100644
--- a/admin/src/views/system/user.vue
+++ b/admin/src/views/system/user.vue
@@ -28,7 +28,7 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']">
- <li v-permissions="['system:user:create']"><el-button icon="el-icon-plus" type="primary" @click="$refs.operaUserWindow.open('鏂板缓鐢ㄦ埛')">鏂板缓</el-button></li>
+ <!-- <li v-permissions="['system:user:create']"><el-button icon="el-icon-plus" type="primary" @click="$refs.operaUserWindow.open('鏂板缓鐢ㄦ埛')">鏂板缓</el-button></li> -->
<li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">鍒犻櫎</el-button></li>
</ul>
<el-table
diff --git a/admin/src/views/workorder/components/detail.vue b/admin/src/views/workorder/components/detail.vue
index 55f1e8d..d5337ea 100644
--- a/admin/src/views/workorder/components/detail.vue
+++ b/admin/src/views/workorder/components/detail.vue
@@ -70,6 +70,7 @@
<div class="name">{{ item.title }}</div>
<div class="time">鎿嶄綔鏃堕棿锛歿{ item.createDate }}</div>
<div class="creator">鎿嶄綔浜猴細{{ item.param1 }}</div>
+ <div class="creator" v-if="item.param2">鎸囨淳缁欙細{{ item.param2 }}</div>
</div>
</div>
</div>
@@ -330,11 +331,11 @@
.item {
width: 33.3%;
- margin-bottom: 12px;
+ margin-bottom: 14px;
.la {
color: #7f7f7f;
- margin-top: 2px;
+ margin-bottom: 6px;
}
}
diff --git a/admin/vue.config.js b/admin/vue.config.js
index c429385..9d855e9 100644
--- a/admin/vue.config.js
+++ b/admin/vue.config.js
@@ -1,13 +1,12 @@
// 璇︾粏閰嶇疆璇峰弬鑰僪ttps://cli.vuejs.org/zh/config/#vue-config-js
-// const outputDir = process.env.VUE_APP_CONTEXT_PATH.substring(1, process.env.VUE_APP_CONTEXT_PATH.length - 1)
const path = require('path')
function resolve (dir) {
return path.join(__dirname, dir)
}
module.exports = {
- publicPath: process.env.VUE_APP_CONTEXT_PATH,
- outputDir: 'admin',
+ publicPath: './',
+ outputDir: 'fn_admin',
assetsDir: 'static',
lintOnSave: false,
devServer: {
diff --git a/h5/pages/login.vue b/h5/pages/login.vue
index 666d529..4c32dbc 100644
--- a/h5/pages/login.vue
+++ b/h5/pages/login.vue
@@ -33,7 +33,7 @@
data() {
return {
form: {
- phone: '17878787878',
+ phone: '18888888888',
code: '1'
},
downTime: 0
diff --git a/h5/pages/workOrder/detail.vue b/h5/pages/workOrder/detail.vue
index 6e74b6a..f1726d3 100644
--- a/h5/pages/workOrder/detail.vue
+++ b/h5/pages/workOrder/detail.vue
@@ -23,9 +23,9 @@
<view class="la">涓婃姤浜猴細</view>
<view class="val">{{ info.creatorName }}{{info.creatorCompany ? '-' + info.creatorCompany : ''}}</view>
</view>
- <view class="line" v-if="info.creatorPhone">
+ <view class="line" v-if="info.creatorPhone || info.creatorMobile">
<view class="la">鑱旂郴鐢佃瘽锛�</view>
- <view class="val">{{ info.creatorPhone }}</view>
+ <view class="val">{{ info.creatorMobile || info.creatorPhone }}</view>
</view>
<view class="line">
<view class="la">涓婃姤鏃堕棿锛�</view>
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java b/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java
index 630334d..df82f83 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java
@@ -44,7 +44,10 @@
*/
public static DateCompare dayCompare(Date fromDateOrigin,Date toDateOrigin,Date freeStart,Date freeEnd){
//寮�濮嬫椂闂村線鍚庡欢浼革紝闄ゅ幓鏈夋晥鏃舵湡
- Date fromDate = DateUtil.addDaysToDate(fromDateOrigin,getIntersectingDays(fromDateOrigin,DateUtil.addDaysToDate(toDateOrigin,1),freeStart,DateUtil.addDaysToDate(freeEnd,1)));
+ Date fromDate = DateUtil.addDaysToDate(fromDateOrigin,getIntersectingDays(fromDateOrigin,DateUtil.addDaysToDate(toDateOrigin,1),
+ freeStart,
+ Objects.isNull(freeEnd)?null:DateUtil.addDaysToDate(freeEnd,1))
+ );
if(toDateOrigin.getTime()< fromDate.getTime()){
return DateCompare.builder().day(0).month(0).year(0).yearFloat(new BigDecimal(0)).monthFloat(new BigDecimal(0)).build();
}
@@ -141,6 +144,9 @@
}
public static int getIntersectingDays(Date start1, Date end1, Date start2, Date end2) {
+ if(Objects.isNull(start2)||Objects.isNull(end2)){
+ return 0;
+ }
Date earlierStart = DateUtil.daysBetweenDates(start1,start2)>0? start1 : start2;
Date laterEnd = DateUtil.daysBetweenDates(end2,end1)>0 ? end1 : end2;
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwProjectCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwProjectCloudController.java
index 02e8e94..02ec71c 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwProjectCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwProjectCloudController.java
@@ -7,6 +7,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.dto.DataDTO;
import com.doumee.dao.business.model.YwProject;
import com.doumee.dao.business.model.YwRoom;
import com.doumee.dao.business.vo.ProjectDataVO;
@@ -90,8 +91,8 @@
@ApiOperation("椤圭洰鏍�")
@PostMapping("/tree")
@CloudRequiredPermission("business:ywproject:query")
- public ApiResponse<List<ProjectDataVO>> tree (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
- return ApiResponse.success(ywProjectService.projectTree());
+ public ApiResponse<List<ProjectDataVO>> tree (@RequestBody DataDTO dataDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+ return ApiResponse.success(ywProjectService.projectTree(dataDTO));
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/DataDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/DataDTO.java
new file mode 100644
index 0000000..82dad9d
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/DataDTO.java
@@ -0,0 +1,29 @@
+package com.doumee.dao.business.dto;
+
+import com.doumee.core.model.LoginUserInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/5/20 14:54
+ */
+@Data
+@ApiModel("鏃ユ湡鏌ヨ绫�")
+public class DataDTO {
+
+ @ApiModelProperty(value = "椤圭洰涓婚敭")
+ private Integer projectId;
+
+ @ApiModelProperty(value = "寮�濮嬫棩鏈�: yyyy-MM-dd")
+ private String startDate;
+
+ @ApiModelProperty(value = "缁撴潫鏃ユ湡: yyyy-MM-dd")
+ private String endDate;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java
index 0da0eea..5fca146 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java
@@ -102,6 +102,10 @@
@ExcelColumn(name="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)")
private Integer projectId;
+ @ApiModelProperty(value = "绠$悊闈㈢Н")
+ @TableField(exist = false)
+ private BigDecimal manageArea;
+
@ApiModelProperty(value = "鍙嫑鍟嗘埧婧愭暟")
@TableField(exist = false)
private Integer roomRentNum;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ProjectDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ProjectDataVO.java
index f292cb0..ba8b2d3 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ProjectDataVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ProjectDataVO.java
@@ -4,6 +4,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.math.BigDecimal;
import java.util.List;
/**
@@ -21,6 +22,9 @@
@ApiModelProperty(value = "涓氬姟鍚嶇О")
private String name;
+ @ApiModelProperty(value = "闈㈢Н")
+ private BigDecimal area;
+
@ApiModelProperty(value = "鐖剁骇涓婚敭")
private Integer pId;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwProjectService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwProjectService.java
index d4232c7..7175677 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwProjectService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwProjectService.java
@@ -3,6 +3,7 @@
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.dto.DataDTO;
import com.doumee.dao.business.model.YwProject;
import com.doumee.dao.business.vo.ProjectDataVO;
@@ -99,5 +100,5 @@
long count(YwProject ywProject);
- List<ProjectDataVO> projectTree();
+ List<ProjectDataVO> projectTree(DataDTO dataDTO);
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
index bdbf056..e75dac5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -135,7 +135,9 @@
Utils.MP.blankToNull(pageWrap.getModel());
queryWrapper.lambda().eq(Category::getIsdeleted,Constants.ZERO)
.eq(Objects.nonNull(pageWrap.getModel().getType()),Category::getType,pageWrap.getModel().getType())
- .isNull(Category::getParentId);
+ .isNull(Category::getParentId)
+ .orderByAsc(Category::getSortnum)
+ ;
PageData<Category> categoryPageData = PageData.from(categoryMapper.selectPage(page, queryWrapper));
//鏌ヨ鎵�鏈変簩绾ф暟鎹�
List<Category> categoryList = categoryMapper.selectList(
@@ -191,7 +193,7 @@
private void checkUnique(Category category){
QueryWrapper<Category> wrapper = new QueryWrapper<>();
wrapper.lambda()
- .eq(Objects.nonNull(category.getId()),Category::getId,category.getId())
+ .ne(Objects.nonNull(category.getId()),Category::getId,category.getId())
.eq(Category::getIsdeleted,Constants.ZERO)
.eq(Category::getType,category.getType())
.eq(Category::getName,category.getName());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index ad6f19c..534d629 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -2118,9 +2118,6 @@
){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
- if(StringUtils.isNotBlank(member.getEmail())&&!Constants.validEmail(member.getEmail())){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇峰~鍐欐纭殑email");
- }
LoginUserInfo loginUserInfo = member.getLoginUserInfo();
member.setCreator(loginUserInfo.getId());
member.setCreateDate(new Date());
@@ -2162,8 +2159,10 @@
@Override
public List<Member> ywList(Member member) {
List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>()
- .lambda().eq(Member::getIsdeleted,Constants.ZERO)
+ .lambda()
+ .eq(Member::getIsdeleted,Constants.ZERO)
.eq(Member::getStatus,Constants.ZERO)
+ .eq(Objects.nonNull(member.getCustomerId()),Member::getCustomerId,member.getCustomerId())
.eq(Member::getType,Constants.memberType.customer)
);
return memberList;
@@ -2210,6 +2209,7 @@
.and(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getName()),i->i.like(Member::getName,model.getName()).or().like(
Member::getPhone,model.getName()
))
+ .orderByDesc(Member::getCreateDate)
);
return PageData.from(iPage);
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java
index 612f09e..ac034cb 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java
@@ -147,7 +147,8 @@
Utils.MP.blankToNull(pageWrap.getModel());
pageWrap.getModel().setIsdeleted(Constants.ZERO);
queryWrapper.select(" (select count(1) from yw_room a where a.isdeleted=0 and a.BUILDING_ID=t.id) as roomNum "+
- ",(select count(1) from yw_room a where a.isdeleted=0 and a.BUILDING_ID=t.id and a.IS_INVESTMENT=1) as roomRentNum");
+ ",(select count(1) from yw_room a where a.isdeleted=0 and a.BUILDING_ID=t.id and a.IS_INVESTMENT=1) as roomRentNum " +
+ ", ( select ifnull(sum(a.RENT_AREA),0) from yw_room a where a.isdeleted=0 and a.BUILDING_ID=t.id ) as manageArea");
if (pageWrap.getModel().getId() != null) {
queryWrapper.eq(YwBuilding::getId, pageWrap.getModel().getId());
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java
index 03953ce..471d18f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java
@@ -98,11 +98,14 @@
ywContractBill.setEndDate(ywContractBill.getPlanPayDate());
}
//鏌ヨ鍚堝悓涓嬬殑鏈�澶х殑搴忓彿
- List<YwContractBill> ywContractBillList = ywContractBillMapper.selectList(new QueryWrapper<YwContractBill>().lambda().eq(YwContractBill::getContractId,ywContract.getId()).orderByDesc(YwContractBill::getId));
+ List<YwContractBill> ywContractBillList = ywContractBillMapper.selectList(new QueryWrapper<YwContractBill>()
+ .lambda().eq(YwContractBill::getContractId,ywContract.getId())
+ .in(YwContractBill::getCostType,Constants.ZERO,Constants.SIX,Constants.FOUR,Constants.FIVE,7)
+ .orderByDesc(YwContractBill::getId));
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBillList)){
ywContractBill.setSortnum(ywContractBillList.size() + 1 );
}else{
- ywContractBill.setSortnum(Constants.ZERO);
+ ywContractBill.setSortnum(0);
}
ywContractBillMapper.insert(ywContractBill);
@@ -186,7 +189,8 @@
public YwContractBill getDetail(Integer id) {
YwContractBill ywContractBill = ywContractBillMapper.selectJoinOne(YwContractBill.class,
new MPJLambdaWrapper<YwContractBill>().selectAll(YwContractBill.class)
- .select(" ( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
+ //.select(" ( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
+ .select(" ( select ifnull( sum( CASE WHEN t.bill_type = 0 and yw.REVENUE_TYPE = 0 THEN yw.ACT_RECEIVABLE_FEE when t.bill_type = 0 and yw.REVENUE_TYPE = 1 then -yw.ACT_RECEIVABLE_FEE when t.bill_type = 1 and yw.REVENUE_TYPE = 0 then -yw.ACT_RECEIVABLE_FEE else yw.ACT_RECEIVABLE_FEE END),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
.selectAs(YwContract::getCode,YwContractBill::getContractCode)
.selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
.selectAs(Company::getName,YwContractBill::getCompanyName)
@@ -276,7 +280,8 @@
YwContractBill model = pageWrap.getModel();
IPage<YwContractBill> iPage = ywContractBillMapper.selectJoinPage(page,YwContractBill.class,
queryWrapper.selectAll(YwContractBill.class)
- .select(" ( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
+// .select(" ( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
+ .select(" ( select ifnull( sum( CASE WHEN t.bill_type = 0 and yw.REVENUE_TYPE = 0 THEN yw.ACT_RECEIVABLE_FEE when t.bill_type = 0 and yw.REVENUE_TYPE = 1 then -yw.ACT_RECEIVABLE_FEE when t.bill_type = 1 and yw.REVENUE_TYPE = 0 then -yw.ACT_RECEIVABLE_FEE else yw.ACT_RECEIVABLE_FEE END),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
.selectAs(YwContract::getCode,YwContractBill::getContractCode)
.selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
.leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
@@ -297,8 +302,9 @@
.like(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getContractCode()),
YwContract::getCode,model.getContractCode())
.ge(Objects.nonNull(model)&&Objects.nonNull(model.getPlanPayDateStart()),YwContractBill::getPlanPayDate, Utils.Date.getStart(model.getPlanPayDateStart()))
- .le(Objects.nonNull(model)&&Objects.nonNull(model.getPlanPayDateEnd()),YwContractBill::getPlanPayDate, Utils.Date.getEnd(model.getPlanPayDateEnd())) )
- ;
+ .le(Objects.nonNull(model)&&Objects.nonNull(model.getPlanPayDateEnd()),YwContractBill::getPlanPayDate, Utils.Date.getEnd(model.getPlanPayDateEnd()))
+ .orderByDesc(YwContractBill::getId));
+
this.dealRoomDetail(iPage.getRecords());
for (YwContractBill ywContractBill:iPage.getRecords()) {
//闇�鏀堕噾棰�
@@ -457,7 +463,8 @@
public List<YwContractBill> getCanBackBill(YwContractBill model) {
List<YwContractBill> list = ywContractBillMapper.selectJoinList(YwContractBill.class,
new MPJLambdaWrapper<YwContractBill>().selectAll(YwContractBill.class)
- .select(" ( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
+// .select(" ( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
+ .select(" ( select ifnull( sum( CASE WHEN t.bill_type = 0 and yw.REVENUE_TYPE = 0 THEN yw.ACT_RECEIVABLE_FEE when t.bill_type = 0 and yw.REVENUE_TYPE = 1 then -yw.ACT_RECEIVABLE_FEE when t.bill_type = 1 and yw.REVENUE_TYPE = 0 then -yw.ACT_RECEIVABLE_FEE else yw.ACT_RECEIVABLE_FEE END),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
.selectAs(YwContract::getCode,YwContractBill::getContractCode)
.selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
.leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
@@ -466,7 +473,9 @@
.in(YwContractBill::getCostType,Constants.ZERO,Constants.ONE,Constants.FOUR,Constants.FIVE,7)
.eq(Objects.nonNull(model)&&Objects.nonNull(model.getContractId()),
YwContractBill::getContractId,model.getContractId())
- .le(Objects.nonNull(model)&&Objects.nonNull(model.getPlanPayDateEnd()),YwContractBill::getStartDate, Utils.Date.getEnd(model.getPlanPayDateEnd())) )
+ .and(Objects.nonNull(model)&&Objects.nonNull(model.getPlanPayDateEnd()),
+ i->i.le(YwContractBill::getStartDate, Utils.Date.getEnd(model.getPlanPayDateEnd())).or()
+ .in(YwContractBill::getPayStatus,Constants.ONE,Constants.TWO) ))
;
for (YwContractBill ywContractBill:list) {
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java
index cdfdf12..e2e4461 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java
@@ -24,6 +24,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -125,7 +126,7 @@
BigDecimal waitPayTotal = BigDecimal.ZERO;
//鏃犱粯娆捐褰� 鍒欎负鍒濇鏀粯 鏍规嵁璐﹀崟绫诲瀷 鍒ゆ柇鏄敮鍑� / 鏀跺叆
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(ywContractRevenueList)){
- ywContractRevenue.setRevenueType(ywContractBill.getType());
+ ywContractRevenue.setRevenueType(ywContractBill.getBillType());
if(ywContractRevenue.getActReceivableFee().compareTo(ywContractBill.getReceivableFee())>Constants.ZERO){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇疯緭鍏ユ纭殑閲戦锛�");
}else if(ywContractRevenue.getActReceivableFee().compareTo(ywContractBill.getReceivableFee())==Constants.ZERO){
@@ -135,19 +136,39 @@
}
}else{
//鑾峰彇宸叉敮浠樼殑鎬婚噾棰� 锛堝彲鑳芥湁鏀跺叆 鏈夋敮鍑猴級
- payTotal = ywContractRevenueList.stream().map(i->i.getActReceivableFee().multiply(
- BigDecimal.valueOf(Constants.equalsInteger(ywContractRevenue.getRevenueType(),Constants.ZERO)?Constants.ONE:-Constants.ONE))
- ).reduce(BigDecimal.ZERO,BigDecimal::add);
- //鑾峰彇寰呮敮浠樻閲戦 濡傛灉璐﹀崟绫诲瀷涓烘敮鍑� 鎴� 锛堣处鍗曠被鍨嬩负鏀跺叆 涓� 寰呮敮浠橀噾棰� 灏忎簬 0锛� 鍒欎负鏀粯
- waitPayTotal = ywContractBill.getReceivableFee().subtract(payTotal);
- //濡傛灉寰呮敮浠橀噾棰� 澶т簬 0 鍒欐槸 鏀跺叆 鍚﹀垯鏄敮鍑� 鍏朵粬鐘舵�� 涓哄紓甯革紒
- if(waitPayTotal.compareTo(BigDecimal.ZERO)>Constants.ZERO){
- ywContractRevenue.setRevenueType(Constants.ZERO);
- }else if(waitPayTotal.compareTo(BigDecimal.ZERO)<Constants.ZERO){
- ywContractRevenue.setRevenueType(Constants.ONE);
+ if(Constants.equalsInteger(ywContractBill.getBillType(),Constants.ZERO)){
+ payTotal = ywContractRevenueList.stream().map(i->
+ i.getActReceivableFee().multiply(
+ BigDecimal.valueOf(Constants.equalsInteger(i.getRevenueType(),Constants.ZERO)?Constants.ONE:-Constants.ONE))
+ ).reduce(BigDecimal.ZERO,BigDecimal::add);
+ //鑾峰彇寰呮敮浠樻閲戦 濡傛灉璐﹀崟绫诲瀷涓烘敮鍑� 鎴� 锛堣处鍗曠被鍨嬩负鏀跺叆 涓� 寰呮敮浠橀噾棰� 灏忎簬 0锛� 鍒欎负鏀粯
+ waitPayTotal = ywContractBill.getReceivableFee().subtract(payTotal);
+ //濡傛灉寰呮敮浠橀噾棰� 澶т簬 0 鍒欐槸 鏀跺叆 鍚﹀垯鏄敮鍑� 鍏朵粬鐘舵�� 涓哄紓甯革紒
+ if(waitPayTotal.compareTo(BigDecimal.ZERO)>Constants.ZERO){
+ ywContractRevenue.setRevenueType(Constants.ZERO);
+ }else if(waitPayTotal.compareTo(BigDecimal.ZERO)<Constants.ZERO){
+ ywContractRevenue.setRevenueType(Constants.ONE);
+ }else{
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏀舵敮閲戦寮傚父!璇疯仈绯荤鐞嗗憳");
+ }
}else{
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏀舵敮閲戦寮傚父!璇疯仈绯荤鐞嗗憳");
+ payTotal = ywContractRevenueList.stream().map(i->
+ i.getActReceivableFee().multiply(
+ BigDecimal.valueOf(Constants.equalsInteger(i.getRevenueType(),Constants.ZERO)?-Constants.ONE:Constants.ONE))
+ ).reduce(BigDecimal.ZERO,BigDecimal::add);
+ //鑾峰彇寰呮敮浠樻閲戦 濡傛灉璐﹀崟绫诲瀷涓烘敮鍑� 鎴� 锛堣处鍗曠被鍨嬩负鏀跺叆 涓� 寰呮敮浠橀噾棰� 灏忎簬 0锛� 鍒欎负鏀粯
+ waitPayTotal = ywContractBill.getReceivableFee().subtract(payTotal);
+ //濡傛灉寰呮敮浠橀噾棰� 澶т簬 0 鍒欐槸 鏀跺叆 鍚﹀垯鏄敮鍑� 鍏朵粬鐘舵�� 涓哄紓甯革紒
+ if(waitPayTotal.compareTo(BigDecimal.ZERO)>Constants.ZERO){
+ ywContractRevenue.setRevenueType(Constants.ONE);
+ }else if(waitPayTotal.compareTo(BigDecimal.ZERO)<Constants.ZERO){
+ ywContractRevenue.setRevenueType(Constants.ZERO);
+ }else{
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏀舵敮閲戦寮傚父!璇疯仈绯荤鐞嗗憳");
+ }
}
+
+
//寰呮敮浠樼殑娴佹按 濡傛灉涓烘敹鍏� 鍒欐瘮瀵� 閲戦鍊� 濡傛灉鏄敮鍑� 鍒欒幏鍙栫粷瀵瑰�� 杩涜瀵规瘮
if(Constants.equalsInteger(ywContractRevenue.getRevenueType(),Constants.ZERO)){
//濡傛灉鏀粯閲戦 澶т簬 寰呮敮浠橀噾棰� 鍒欐彁绀哄紓甯� 濡傛灉鏀粯閲戦灏忎簬 寰呮敮浠橀噾棰� 鍒欑姸鎬佷笉鍙樺寲 鍏朵粬鐘舵�� 寮傚父
@@ -167,6 +188,21 @@
}
ywContractRevenueMapper.insert(ywContractRevenue);
ywContractBillMapper.updateById(ywContractBill);
+ //濡傛灉璐﹀崟瀹岀粨锛屽垯鏌ヨ鍚堝悓涓嬪紑鍚腑鐨勮处鍗曟槸鍚﹀瓨鍦ㄩ��娆句腑 濡傛灉涓嶅瓨鍦ㄥ垯鏍囪鍚堝悓宸查��娆�
+ if(Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.ONE)){
+ if( ywContractBillMapper
+ .selectCount(new QueryWrapper<YwContractBill>().lambda().eq(YwContractBill::getContractId,ywContractBill.getContractId())
+ .ne(YwContractBill::getId,ywContractBill.getId())
+ .eq(YwContractBill::getStatus,Constants.ZERO)
+ .in(YwContractBill::getPayStatus,Constants.ZERO,Constants.FOUR, Constants.TWO,Constants.THREE)
+ ) == Constants.ZERO){
+ ywContractMapper.update(new UpdateWrapper<YwContract>().lambda()
+ .set(YwContract::getStatus,Constants.FOUR)
+ .set(YwContract::getEditDate,DateUtil.getCurrDateTime())
+ .eq(YwContract::getId,ywContractBill.getContractId())
+ );
+ }
+ }
//瀛樺偍闄勪欢淇℃伅
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRevenue.getMultifileList())){
for (Multifile multifile:ywContractRevenue.getMultifileList()) {
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
index 4683542..f9be5d2 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
@@ -91,6 +91,7 @@
}
private void dealRoomsForContract(YwContract model) {
+ this.dealRoomsValid(model);
List<YwContractRoom> list = new ArrayList<>();
for(YwRoom room :model.getRoomList()){
YwContractRoom t = new YwContractRoom();
@@ -106,6 +107,46 @@
}
ywContractRoomMapper.insert(list);
}
+
+ private void dealRoomsValid(YwContract model){
+ List<Integer> roomIds = model.getRoomList().stream().map(i->i.getId()).collect(Collectors.toList());
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(roomIds)){
+ if(ywContractMapper.selectJoinCount(new MPJLambdaWrapper<YwContract>()
+ .leftJoin(YwContractRoom.class,YwContractRoom::getContractId,YwContract::getId)
+ .eq(YwContractRoom::getType,Constants.ZERO)
+ .in(YwContractRoom::getRoomId,roomIds)
+ .in(YwContract::getStatus,Constants.ZERO,Constants.ONE,Constants.TWO)
+ .apply(" (" +
+ " ( t.START_DATE < '"+DateUtil.getFomartDate(model.getEndDate(),"yyyy-MM-dd HH:mm:ss")+"' and t.END_DATE > '"+DateUtil.getFomartDate(model.getStartDate(),"yyyy-MM-dd HH:mm:ss")+"' ) " +
+ "or " +
+ " ( t.START_DATE < '"+DateUtil.getFomartDate(model.getEndDate(),"yyyy-MM-dd HH:mm:ss")+"' and t.END_DATE > '"+DateUtil.getFomartDate(model.getStartDate(),"yyyy-MM-dd HH:mm:ss")+"' ) " +
+ " ) ")
+
+ )>Constants.ZERO){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎴挎簮宸茶鍗犵敤璇峰埛鏂伴噸璇�");
+ };
+
+ if(ywContractMapper.selectJoinCount(new MPJLambdaWrapper<YwContract>()
+ .leftJoin(YwContractRoom.class,YwContractRoom::getContractId,YwContract::getId)
+ .eq(YwContractRoom::getType,Constants.ZERO)
+ .in(YwContractRoom::getRoomId,roomIds)
+ .in(YwContract::getStatus,Constants.THREE)
+ .apply(" ( t.START_DATE < '"+DateUtil.getFomartDate(model.getEndDate(),"yyyy-MM-dd HH:mm:ss")+"' " +
+ " and t.BT_DATE > '"+DateUtil.getFomartDate(model.getStartDate(),"yyyy-MM-dd HH:mm:ss")+"' ) " )
+ )>Constants.ZERO){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎴挎簮宸茶鍗犵敤璇峰埛鏂伴噸璇�");
+ };
+
+
+
+ }
+
+
+
+
+
+ }
+
@Override
public List<YwContractBill> getBillList(YwContract model){
@@ -1228,6 +1269,8 @@
,Constants.YwLogType.CONTRACT_UPDATE.getKey())
.orderByAsc(YwWorkorderLog::getCreateDate)));
+ //鏌ヨ璐﹀崟闆嗗悎
+
queryBillListByModel(model,new Date());
}
return model;
@@ -1242,7 +1285,8 @@
//鏌ヨ璐﹀崟闆嗗悎
model.setBillList(ywContractBillMapper.selectJoinList(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>()
.selectAll(YwContractBill.class )
- .select(" ( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
+ //.select(" ( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
+ .select(" ( select ifnull( sum( CASE WHEN t.bill_type = 0 and yw.REVENUE_TYPE = 0 THEN yw.ACT_RECEIVABLE_FEE when t.bill_type = 0 and yw.REVENUE_TYPE = 1 then -yw.ACT_RECEIVABLE_FEE when t.bill_type = 1 and yw.REVENUE_TYPE = 0 then -yw.ACT_RECEIVABLE_FEE else yw.ACT_RECEIVABLE_FEE END),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
.eq( YwContractBill::getContractId,model.getId())
.eq(YwContractBill::getIsdeleted,Constants.ZERO)
.orderByAsc(YwContractBill::getSortnum,YwContractBill::getCreateDate)));
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java
index 1fc2a89..f36d94a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java
@@ -61,9 +61,6 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
LoginUserInfo loginUserInfo = ywCustomer.getLoginUserInfo();
- if(StringUtils.isNotBlank(ywCustomer.getEmail())&&!Constants.validEmail(ywCustomer.getEmail())){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇峰~鍐欐纭殑email");
- }
ywCustomer.setStatus(Constants.ZERO);
ywCustomer.setIsdeleted(Constants.ZERO);
ywCustomer.setCreator(loginUserInfo.getId());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java
index 7d19c2c..9118073 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java
@@ -180,6 +180,7 @@
.ge(Objects.nonNull(model.getStartDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()))
.le(Objects.nonNull(model.getEndDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()))
.eq(YwDeviceRecord::getIsdeleted,Constants.ZERO)
+ .orderByDesc(YwDeviceRecord::getCreateDate)
);
return PageData.from(iPage);
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java
index 217d7c4..a40d68f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java
@@ -106,6 +106,7 @@
}
@Override
+ @Transactional(rollbackFor = {Exception.class,BusinessException.class})
public void updateById(YwPatrolLine ywPatrolLine) {
if(Objects.isNull(ywPatrolLine)
|| StringUtils.isBlank(ywPatrolLine.getName())
@@ -123,7 +124,7 @@
//寰幆澶勭悊 瀛愰泦鏁版嵁
List<YwLinePoint> ywLinePointList = ywPatrolLine.getLinePointList();
//鏄惁瀛樺湪鐩稿悓鏁版嵁
- Set<Integer> setIds = new HashSet<Integer>(ywLinePointList.stream().map(i->i.getLineId()).collect(Collectors.toList()));
+ Set<Integer> setIds = new HashSet<Integer>(ywLinePointList.stream().map(i->i.getPointId()).collect(Collectors.toList()));
if(setIds.size()!=ywLinePointList.size()){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鐩稿悓宸℃鐐�!");
}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java
index 651d6f1..8267901 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java
@@ -146,6 +146,7 @@
.leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId)
.eq(YwPatrolTask::getIsdeleted, Constants.ZERO)
.eq(Objects.nonNull(model.getStatus()) && !Constants.equalsInteger(model.getStatus(),Constants.TWO),YwPatrolTask::getStatus, model.getStatus())
+ .eq(Objects.nonNull(model.getDealUserId()),YwPatrolTask::getDealUserId, model.getDealUserId())
.apply(Objects.nonNull(model.getStatus()) && Constants.equalsInteger(model.getStatus(),Constants.TWO)," t.status = 1 and t.END_DATE > now() ")
.apply(StringUtils.isNotBlank(model.getQueryStatus())," find_in_set(t.status ,'"+model.getQueryStatus()+"') ")
.like(StringUtils.isNotBlank(model.getPlanTitle()),YwPatrolScheme::getTitle,model.getPlanTitle())
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java
index b5dfdb8..2e2061a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java
@@ -6,11 +6,13 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwBuildingMapper;
import com.doumee.dao.business.YwFloorMapper;
import com.doumee.dao.business.YwProjectMapper;
import com.doumee.dao.business.YwRoomMapper;
+import com.doumee.dao.business.dto.DataDTO;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.CompanyTree;
import com.doumee.dao.business.vo.ProjectDataVO;
@@ -28,6 +30,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -230,11 +233,12 @@
@Override
- public List<ProjectDataVO> projectTree(){
+ public List<ProjectDataVO> projectTree(DataDTO dataDTO){
List<ProjectDataVO> projectDataVOList = new ArrayList<>();
List<YwProject> ywProjectList = ywProjectMapper.selectList(new QueryWrapper<YwProject>().lambda()
.eq(YwProject::getIsdeleted,Constants.ZERO)
.eq(YwProject::getStatus,Constants.ZERO)
+ .eq(Objects.nonNull(dataDTO.getProjectId()),YwProject::getId,dataDTO.getProjectId())
.orderByAsc(YwProject::getSortnum)
);
for (YwProject ywProject:ywProjectList) {
@@ -247,6 +251,7 @@
List<YwBuilding> ywBuildingList = ywBuildingMapper.selectList(new QueryWrapper<YwBuilding>().lambda()
.eq(YwBuilding::getIsdeleted,Constants.ZERO)
.eq(YwBuilding::getStatus,Constants.ZERO)
+ .eq(Objects.nonNull(dataDTO.getProjectId()),YwBuilding::getProjectId,dataDTO.getProjectId())
.orderByAsc(YwBuilding::getSortnum)
);
@@ -262,6 +267,7 @@
List<YwFloor> ywFloorList = ywFloorMapper.selectList(new QueryWrapper<YwFloor>().lambda()
.eq(YwFloor::getIsdeleted,Constants.ZERO)
.eq(YwFloor::getStatus,Constants.ZERO)
+ .eq(Objects.nonNull(dataDTO.getProjectId()),YwFloor::getProjectId,dataDTO.getProjectId())
.orderByAsc(YwFloor::getSortnum)
);
@@ -273,19 +279,26 @@
projectDataVOList.add(projectDataVO);
}
-
-
List<YwRoom> ywRoomList = ywRoomMapper.selectList(new QueryWrapper<YwRoom>().lambda()
.eq(YwRoom::getIsdeleted,Constants.ZERO)
.eq(YwRoom::getStatus,Constants.ZERO)
+ .eq(Objects.nonNull(dataDTO.getProjectId()),YwRoom::getProjectId,dataDTO.getProjectId())
+ .apply(Objects.nonNull(dataDTO)&&Objects.nonNull(dataDTO.getStartDate())&&Objects.nonNull(dataDTO.getEndDate())," id not in (" +
+ " SELECT y2.room_id FROM yw_contract y1 left join yw_contract_room y2 on y1.id = y2.contract_id where 1 = 1 and y1.`STATUS` in( 0,1,2) " +
+ " and y1.START_DATE < '"+dataDTO.getEndDate()+" 00:00:00' and y1.END_DATE > '"+ dataDTO.getStartDate() +" 00:00:00' " +
+ " ) ")
+ .apply(Objects.nonNull(dataDTO)&&Objects.nonNull(dataDTO.getStartDate())&&Objects.nonNull(dataDTO.getEndDate())," id not in (" +
+ " SELECT y2.room_id FROM yw_contract y1 left join yw_contract_room y2 on y1.id = y2.contract_id where 1 = 1 and y1.`STATUS` = 3 " +
+ " and y1.START_DATE < '"+dataDTO.getEndDate()+" 00:00:00' and y1.BT_DATE > '"+ dataDTO.getStartDate() +" 00:00:00' " +
+ " ) ")
.orderByAsc(YwRoom::getSortnum)
);
-
for (YwRoom data:ywRoomList) {
ProjectDataVO projectDataVO = new ProjectDataVO();
BeanUtils.copyProperties(data,projectDataVO);
- projectDataVO.setName(data.getCode());
+ projectDataVO.setName(data.getRoomNum());
+ projectDataVO.setArea(data.getRentArea().setScale(2, BigDecimal.ROUND_HALF_UP));
projectDataVO.setPId(data.getFloor());
projectDataVO.setLv(Constants.THREE);
projectDataVOList.add(projectDataVO);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java
index 8cf6dd7..87d1ec9 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java
@@ -150,9 +150,9 @@
.selectAs(YwProject::getName,YwRoom::getProjectName)
.selectAs(YwFloor::getName,YwRoom::getFloorName)
.selectAs(YwBuilding::getName,YwRoom::getBuildingName)
- .select(" select case when y1.status = 3 then now() BETWEEN y1.START_DATE and y1.BT_DATE else now() BETWEEN y1.START_DATE and y1.END_DATE END " +
+ .select(" ifnull( ( select case when y1.status = 3 then now() BETWEEN y1.START_DATE and y1.BT_DATE else now() BETWEEN y1.START_DATE and y1.END_DATE END " +
"from yw_contract y1 left join yw_contract_room y2 on y1.id = y2.CONTRACT_ID and y2.TYPE = 0 " +
- "where y1.`STATUS` <> 4 and y2.room_id = t.id order by y1.create_date desc limit 1 ",YwRoom::getLeaseStatus)
+ "where y1.`STATUS` <> 4 and y2.room_id = t.id order by y1.create_date desc limit 1 ) ,0) ",YwRoom::getLeaseStatus)
.leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
.leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId)
.leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor);
--
Gitblit v1.9.3