From 62e8b7d51ecb749c3f38452af88c703ac86db9cd Mon Sep 17 00:00:00 2001
From: renkang <8417338+k94314517@user.noreply.gitee.com>
Date: 星期四, 09 一月 2025 09:08:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0.1' into 2.0.1
---
admin/src/views/contract/components/pendingBills.vue | 137 ++
admin/src/views/project/components/houseDetails.vue | 741 +++++++++++++++
admin/src/views/finance/collectionSettings.vue | 10
admin/src/views/workorder/components/problemReportingDetails.vue | 139 ++
admin/src/views/contract/components/contractDetail.vue | 16
admin/src/views/finance/components/call.vue | 60 +
admin/src/views/workorder/components/handleProblem.vue | 184 +++
admin/src/views/workorder/problemReporting.vue | 105 ++
admin/src/views/project/housingList.vue | 8
admin/src/views/roomStatus/index.vue | 1101 ++++++++++++++++++++++
admin/.env.test | 4
admin/src/views/finance/overdueBills.vue | 233 ++++
admin/src/views/contract/components/terminationAgreement.vue | 118 ++
13 files changed, 2,850 insertions(+), 6 deletions(-)
diff --git a/admin/.env.test b/admin/.env.test
index 4da080a..074e999 100644
--- a/admin/.env.test
+++ b/admin/.env.test
@@ -4,10 +4,10 @@
# VUE_APP_API_URL = 'http://192.168.5.13/gateway_interface'
# 浠诲悍
-VUE_APP_API_URL = 'http://192.168.0.137:10010/'
+# VUE_APP_API_URL = 'http://192.168.0.137:10010/'
# 钀嶅
# VUE_APP_API_URL = 'http://192.168.0.108:10010/'
# 娴嬭瘯鏈嶅姟
-# VUE_APP_API_URL = 'https://dmtest.ahapp.net/gateway_interface'
+VUE_APP_API_URL = 'https://dmtest.ahapp.net/gateway_interface'
diff --git a/admin/src/views/contract/components/contractDetail.vue b/admin/src/views/contract/components/contractDetail.vue
index 3b49554..64cb0d9 100644
--- a/admin/src/views/contract/components/contractDetail.vue
+++ b/admin/src/views/contract/components/contractDetail.vue
@@ -16,7 +16,11 @@
<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 type="primary" @click="$refs.pendingBills.open('寰呭鐞嗚处鍗�')">鏌ョ湅寰呭鐞嗚处鍗�</el-button>
+ <el-button @click="$refs.terminationAgreement.open('閫�绉熷崗璁�')">鏌ョ湅閫�绉熷崗璁�</el-button>
+ <el-button plain type="danger" v-if="[0, 1, 2].includes(info.status)" @click="refund">閫�绉�</el-button>
+ </div>
</div>
<div class="remark" v-if="info">{{info.remark}}</div>
<div class="remark" v-if="info && info.status === 3">{{info.btRemark}}</div>
@@ -319,6 +323,10 @@
</div>
<!-- 閫�绉� -->
<TerminateLease ref="terminateLease" @success="getData" />
+ <!-- 寰呭鐞嗚处鍗� -->
+ <PendingBills ref="pendingBills" />
+ <!-- 閫�绉熷崗璁� -->
+ <TerminationAgreement ref="terminationAgreement" />
</GlobalWindow>
</template>
@@ -326,12 +334,16 @@
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
import TerminateLease from './terminateLease'
+import PendingBills from './pendingBills'
+import TerminationAgreement from './terminationAgreement'
import { getById } from '@/api/contract'
import { fetchList } from '@/api/bill'
export default {
components: {
GlobalWindow,
- TerminateLease
+ TerminateLease,
+ PendingBills,
+ TerminationAgreement
},
extends: BaseOpera,
data() {
diff --git a/admin/src/views/contract/components/pendingBills.vue b/admin/src/views/contract/components/pendingBills.vue
new file mode 100644
index 0000000..1ecd98f
--- /dev/null
+++ b/admin/src/views/contract/components/pendingBills.vue
@@ -0,0 +1,137 @@
+<template>
+ <GlobalWindow
+ width="100%"
+ :title="title"
+ :withFooter="false"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ @confirm="confirm">
+ <div class="zd">
+ <div class="zd_list">
+ <div class="zd_list_row">
+ <span>寰呮敹娆捐处鍗曟暟</span>
+ <span>2</span>
+ </div>
+ <div class="zd_list_row">
+ <span>寰呮敹娆鹃噾棰�</span>
+ <span>锟�247.00</span>
+ </div>
+ <div class="zd_list_row">
+ <span>寰呬粯娆捐处鍗曟暟</span>
+ <span>3</span>
+ </div>
+ <div class="zd_list_row">
+ <span>寰呬粯娆鹃噾棰�</span>
+ <span>锟�247.00</span>
+ </div>
+ </div>
+ <div class="zd_content">
+ <div class="zd_content_label">
+ <span>璐﹀崟</span>
+ </div>
+ <el-table
+ :data="tableData"
+ border
+ style="width: 100%">
+ <el-table-column
+ prop="date"
+ label="璐﹀崟缂栧彿">
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="璐圭敤绫诲瀷">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="璁¤垂鍛ㄦ湡">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="搴旀敹浠橀噾棰�/鍘熷搴旀敹浠�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="瀹炴敹/浠橀噾棰�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="闇�鏀�/浠橀噾棰�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="搴旀敹/浠樻棩鏈�">
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ import BaseOpera from '@/components/base/BaseOpera'
+ export default {
+ name: 'pendingBills',
+ components: {
+ GlobalWindow
+ },
+ extends: BaseOpera,
+ data () {
+ return {
+ tableData: []
+ }
+ },
+ methods: {
+
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .zd {
+ width: 100%;
+ .zd_list {
+ width: 100%;
+ background: #f2f2f2;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-top: 20px;
+ padding: 20px;
+ box-sizing: border-box;
+ border-radius: 10px;
+ .zd_list_row {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ span {
+ &:nth-child(1) {
+ font-size: 14px;
+ color: #333333;
+ }
+ &:nth-child(2) {
+ font-size: 20px;
+ color: #333333;
+ margin-top: 10px;
+ }
+ }
+ }
+ }
+ .zd_content {
+ width: 100%;
+ margin-top: 20px;
+ .zd_content_label {
+ display: flex;
+ align-items: center;
+ margin-bottom: 20px;
+ span {
+ font-weight: 500;
+ font-size: 18px;
+ color: #2080f7;
+ }
+ }
+ }
+ }
+</style>
diff --git a/admin/src/views/contract/components/terminationAgreement.vue b/admin/src/views/contract/components/terminationAgreement.vue
new file mode 100644
index 0000000..9b02d5c
--- /dev/null
+++ b/admin/src/views/contract/components/terminationAgreement.vue
@@ -0,0 +1,118 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ :visible.sync="visible"
+ :withFooter="false"
+ :confirm-working="isWorking"
+ @close="close"
+ @confirm="confirm">
+ <div class="main">
+ <div class="main_head">
+ <span>绉熷锛氫箳涔撶悆淇变箰閮�</span>
+ <span>鍚堝悓缂栧彿锛� 2024-04-001-202405-0019</span>
+ </div>
+ <div class="title">閫�绉熶俊鎭�</div>
+ <div class="list">
+ <div class="item">
+ <div class="la">閫�绉熺被鍨�</div>
+ <div class="val">{{ info.code }}</div>
+ </div>
+ <div class="item">
+ <div class="la">閫�绉熸棩鏈�</div>
+ <div class="val">{{ info.userName }}</div>
+ </div>
+ <div class="item">
+ <div class="la">缁忓姙浜�</div>
+ <div class="val">{{ info.creatorName }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鍗忚绛捐鏃ユ湡</div>
+ <div class="val">{{ info.totalArea }}銕�</div>
+ </div>
+ <div class="item">
+ <div class="la">閫�绉熷師鍥�</div>
+ <div class="val">{{ info.companyName }}</div>
+ </div>
+ </div>
+ <div class="title">鎴挎簮淇℃伅</div>
+ <div class="list">
+ <el-table :data="roomList" stripe>
+ <el-table-column prop="projectName" label="椤圭洰鍚嶇О" show-overflow-tooltip />
+ <el-table-column prop="buildingName" label="妤煎畤鍚嶇О" show-overflow-tooltip />
+ <el-table-column prop="buildingName" label="妤煎眰/鎴垮彿" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="area" label="闈㈢Н" show-overflow-tooltip></el-table-column>
+ </el-table>
+ </div>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ import BaseOpera from '@/components/base/BaseOpera'
+ export default {
+ name: "terminationAgreement",
+ components: {
+ GlobalWindow
+ },
+ extends: BaseOpera,
+ data() {
+ return {
+ roomList: [],
+ info: {}
+ }
+ },
+ methods: {
+
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import '@/assets/style/variables.scss';
+
+ .main {
+ .main_head {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ padding: 0 0 30px 0;
+ box-sizing: border-box;
+ span {
+ font-size: 15px;
+ color: #333333;
+ font-weight: 700;
+ margin-bottom: 10px;
+ &:last-child {
+ margin: 0 !important;
+ }
+ }
+ }
+
+ .title {
+ font-weight: 500;
+ font-size: 18px;
+ color: $primary-color;
+ margin-bottom: 15px;
+ }
+
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+ /*background: #F7F7F7;*/
+ border-radius: 2px;
+ /*padding: 15px 20px;*/
+ margin-bottom: 20px;
+
+ .item {
+ width: 25%;
+ margin-bottom: 16px;
+
+ .la {
+ color: #7f7f7f;
+ margin-bottom: 10px;
+ }
+ }
+ }
+ }
+</style>
diff --git a/admin/src/views/finance/collectionSettings.vue b/admin/src/views/finance/collectionSettings.vue
new file mode 100644
index 0000000..891f73a
--- /dev/null
+++ b/admin/src/views/finance/collectionSettings.vue
@@ -0,0 +1,10 @@
+<template>
+
+</template>
+
+<script>
+ export default {
+ name: 'collectionSettings'
+ }
+</script>
+
diff --git a/admin/src/views/finance/components/call.vue b/admin/src/views/finance/components/call.vue
new file mode 100644
index 0000000..7bf84c1
--- /dev/null
+++ b/admin/src/views/finance/components/call.vue
@@ -0,0 +1,60 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ :visible.sync="visible"
+ width="100%">
+ <el-form :model="form" label-position="top" ref="paramRef" :rules="rules">
+ <el-form-item label="閫氱煡鏂瑰紡" prop="title">
+ <el-checkbox-group v-model="form.title">
+ <el-checkbox label="缇庨/椁愬巺绾夸笂娲诲姩" name="1"></el-checkbox>
+ <el-checkbox label="鍦版帹娲诲姩" name="2"></el-checkbox>
+ <el-checkbox label="绾夸笅涓婚娲诲姩" name="3"></el-checkbox>
+ <el-checkbox label="鍗曠函鍝佺墝鏇濆厜" name="4"></el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+ <el-form-item label="閫氱煡鎺ユ敹浜�" prop="companyId">
+ <div style="display: flex; flex-direction: column;">
+ <div style="display: flex; align-items: center; margin-bottom: 20px;">
+ <span style="font-size: 14px; color: black; margin-right: 10px;">寮犱笁</span>
+ <el-select v-model="form.companyId" placeholder="璇烽�夋嫨">
+ <el-option label="鍖哄煙涓�" value="0"></el-option>
+ <el-option label="鍖哄煙浜�" value="1"></el-option>
+ </el-select>
+ </div>
+ <div style="display: flex; align-items: center;">
+ <span style="font-size: 14px; color: black; margin-right: 10px;">XXXX鍏徃</span>
+ <el-select v-model="form.companyId" placeholder="璇烽�夋嫨">
+ <el-option label="鍖哄煙涓�" value="0"></el-option>
+ <el-option label="鍖哄煙浜�" value="1"></el-option>
+ </el-select>
+ </div>
+ </div>
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ import BaseOpera from '@/components/base/BaseOpera'
+ export default {
+ name: "call",
+ components: { GlobalWindow },
+ extends: BaseOpera,
+ data() {
+ return {
+ form: {
+ title: '1',
+ companyId: '0'
+ },
+ rules: {
+ title: [{ required: true, message: '璇疯緭鍏�' }],
+ companyId: [{ required: true, message: '璇烽�夋嫨' }],
+ }
+ }
+ },
+ methods: {
+
+ }
+ }
+</script>
diff --git a/admin/src/views/finance/overdueBills.vue b/admin/src/views/finance/overdueBills.vue
new file mode 100644
index 0000000..8d64cc1
--- /dev/null
+++ b/admin/src/views/finance/overdueBills.vue
@@ -0,0 +1,233 @@
+<template>
+ <div class="main_app">
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
+ <div class="df_sb mt20">
+ <div class="tabs">
+ <div class="tab" :class="{ active: billType === 0 }" @click="tabsClick(0)">閫炬湡鏀舵璐﹀崟</div>
+ <div class="tab" :class="{ active: billType === 1 }" @click="tabsClick(1)">閫炬湡浠樻璐﹀崟</div>
+ </div>
+ <div class="btns">
+ <el-button @click="$refs.call.open('鎵归噺鍌即')">鎵归噺鍌即</el-button>
+ </div>
+ </div>
+ <el-table v-loading="loading" :data="list" stripe>
+ <el-table-column prop="customerName" label="瀹㈡埛鍚嶇О" min-width="100" show-overflow-tooltip />
+ <el-table-column label="鎴块棿" min-width="170" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ <div style="display: flex; flex-direction: column;" v-if="row.roomPathName">
+ <span v-for="(item, index) in row.roomPathName.split(';')" :key="index">{{item}}</span>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="contractCode" label="鍚堝悓缂栧彿" min-width="100" show-overflow-tooltip />
+ <el-table-column label="缁撴竻鐘舵��" min-width="100" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ <span v-if="row.payStatus === 0">寰呮敹娆�</span>
+ <span v-if="row.payStatus === 1">宸茬粨娓�</span>
+ <span v-if="row.payStatus === 2">閮ㄥ垎缁撴竻</span>
+ <span v-if="row.payStatus === 3">寰呬粯娆�</span>
+ <span v-if="row.payStatus === 4">寰呴��娆�</span>
+ <span v-if="row.payStatus === 5">宸插叧闂�</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="totleFee" 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>
+ <span v-if="row.costType === 1">鐗╀笟璐�</span>
+ <span v-if="row.costType === 2">绉熻祦鎶奸噾</span>
+ <span v-if="row.costType === 3">鐗╀笟鎶奸噾</span>
+ <span v-if="row.costType === 4">姘寸數璐�</span>
+ <span v-if="row.costType === 5">鏉傞」璐�</span>
+ <span v-if="row.costType === 6">鍏跺畠</span>
+ <span v-if="row.costType === 7">淇濊瘉閲�</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="璁¤垂鍛ㄦ湡" min-width="200" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ {{ row.startDate }} ~ {{ row.endDate }}
+ </template>
+ </el-table-column>
+ <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>
+ <span v-if="row.type === 1">鑷缓璐﹀崟</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鐭俊鍙戦�佺姸鎬�" min-width="100" fixed="right" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ <span v-if="row.status === 0">寮�鍚�</span>
+ <span v-if="row.status === 1" style="color: red;">鍏抽棴</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="閭欢鍙戦�佺姸鎬�" min-width="100" fixed="right" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ <span v-if="row.status === 0">寮�鍚�</span>
+ <span v-if="row.status === 1" style="color: red;">鍏抽棴</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="handleDetail(row)" icon="el-icon-edit" v-permissions="['business:category:update']">鏌ョ湅璇︽儏</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="mt20">
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+ <Edit ref="EditRef" @success="getList" />
+ <Detail ref="DetailRef" @success="getList" />
+ <BullEditFu ref="BullEditFu" @success="getList" />
+ <Call ref="call" @success="getList" />
+ </div>
+</template>
+
+<script>
+ import Pagination from '@/components/common/Pagination'
+ import QueryForm from '@/components/common/QueryForm'
+ import Edit from './components/bullEdit.vue'
+ import BullEditFu from './components/bullEditFu.vue'
+ import Detail from './components/bullDetail.vue'
+ import Call from './components/call.vue'
+ import { fetchList } from '@/api/bill'
+ export default {
+ components: {
+ Pagination,
+ QueryForm,
+ Edit,
+ Detail,
+ BullEditFu,
+ Call
+ },
+ data () {
+ return {
+ loading: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0
+ },
+ billType: 0,
+ filters: {
+ status: 0
+ },
+ list: [],
+ total: 0,
+ queryFormConfig: {
+ formItems: [
+ {
+ filed: 'customerName',
+ type: 'input',
+ label: '瀹㈡埛鍚嶇О'
+ },
+ {
+ filed: 'payStatus',
+ type: 'select',
+ label: '缁撴竻鐘舵��',
+ options: [
+ { value: 0, label: '寰呮敹娆�' },
+ { value: 1, label: '宸茬粨娓�' },
+ { value: 2, label: '閮ㄥ垎缁撴竻' },
+ { value: 3, label: '寰呬粯娆�' },
+ { value: 4, label: '寰呴��娆�' }
+ ]
+ },
+ {
+ filed: 'selDate',
+ type: 'daterange',
+ label: '搴旀敹/浠樻棩鏈�'
+ }
+ ]
+ }
+ }
+ },
+ created () {
+ this.getList()
+ },
+ methods: {
+ addOpen () {
+ if (this.billType === 0) {
+ this.$refs.EditRef.open('鍒涘缓鏀舵璐﹀崟')
+ } else {
+ this.$refs.BullEditFu.open('鍒涘缓浠樻璐﹀崟')
+ }
+ },
+ getList (page) {
+ const { pagination, filters } = this
+ let form = JSON.parse(JSON.stringify(filters))
+ if (form && form.selDate && form.selDate.length > 0) {
+ form.planPayDateStart = form.payDate[0]
+ form.planPayDateEnd = form.payDate[1]
+ }
+ this.loading = true
+ fetchList({
+ model: {
+ ...filters,
+ billType: this.billType
+ },
+ capacity: pagination.pageSize,
+ page: page || pagination.page
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.list.forEach(item => {
+ item.statusName = item.status === 1 ? '鎹熷潖' : item.status === 2 ? '鎶ュ簾' : '姝e父'
+ })
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ tabsClick (val) {
+ this.billType = val
+ this.getList()
+ },
+ handleDetail (row) {
+ this.$refs.DetailRef.open('璐﹀崟璇︽儏', row.id)
+ },
+ clear () {
+ this.filters = {}
+ this.pagination.pageSize = 10
+ this.pagination.page = 1
+ this.getList()
+ },
+ handleSizeChange (capacity) {
+ this.pagination.pageSize = capacity
+ this.getList()
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import '@/assets/style/variables.scss';
+
+ .tabs {
+ display: flex;
+ margin-bottom: 20px;
+ justify-content: center;
+
+ .tab {
+ height: 58px;
+ line-height: 58px;
+ font-size: 16px;
+ color: #666666;
+ margin: 0 30px;
+ cursor: pointer;
+ }
+
+ .active {
+ font-weight: 500;
+ color: $primary-color;
+ border-bottom: 2px solid $primary-color;
+ }
+ }
+</style>
diff --git a/admin/src/views/project/components/houseDetails.vue b/admin/src/views/project/components/houseDetails.vue
new file mode 100644
index 0000000..5e61c5c
--- /dev/null
+++ b/admin/src/views/project/components/houseDetails.vue
@@ -0,0 +1,741 @@
+<template>
+ <GlobalWindow
+ title="妤煎畤璇︽儏"
+ :showConfirm="false"
+ :visible.sync="visible"
+ width="800px">
+ <div class="right">
+ <div class="right_head">椤圭洰鍚嶇О</div>
+ <div class="right_cate">
+ <el-tabs v-model="activeName" @tab-click="handleClick">
+ <el-tab-pane label="鎴挎簮淇℃伅" name="houseinfo">
+ <div class="xm">
+ <el-card style="margin-top: 20px;">
+ <div slot="header" class="clearfix">
+ <span>鎴挎簮淇℃伅</span>
+ </div>
+ <div class="xm_info">
+ <div class="xm_info_row" style="width: 25%;">
+ <span>鎵�灞為」鐩�</span>
+ <span>XXXXXXXXXX</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%;">
+ <span>妤煎畤</span>
+ <span>缁煎悎妤�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%;">
+ <span>妤煎眰</span>
+ <span>1</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%;">
+ <span>鎴垮彿</span>
+ <span>101娲诲姩瀹�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>鎴块棿缂栧彿</span>
+ <span>101</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>鏄惁鎷涘晢</span>
+ <span>鍚�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>寤虹瓚闈㈢Н</span>
+ <span>50銕�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>璁$闈㈢Н</span>
+ <span>50銕�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>璁¤垂闈㈢Н</span>
+ <span>45銕�</span>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="绉熷鍚堝悓" name="project">
+ <div class="xm">
+ <el-card style="margin-top: 20px;">
+ <div slot="header" class="clearfix">
+ <span>褰撳墠鍦ㄧ鍚堝悓</span>
+ </div>
+ <div class="xm_table">
+ <el-input v-model="input" style="width: 300px; margin-bottom: 15px;" placeholder="璇疯緭鍏ュ悎鍚岀紪鍙�"></el-input>
+ <el-table
+ :data="tableData"
+ border
+ style="width: 100%">
+ <el-table-column
+ prop="date"
+ label="鍚堝悓缂栧彿">
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="瀹㈡埛鍚嶇О">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="寮�濮嬫棩鏈�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="缁撴潫鏃ユ湡">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绉熻祦鍗曚环">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绉熻祦闈㈢Н锛堛帯锛�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绛捐鏃�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鍚堝悓鏉ユ簮">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鍚堝悓鐘舵��">
+ </el-table-column>
+ </el-table>
+ <div class="xm_table_f">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="pageTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="宸ュ崟璁板綍" name="second">
+ <div class="xm">
+ <el-card>
+ <div class="xm_one1">
+ <div class="xm_one_row">
+ <span>寰呮寚娲炬暟閲�</span>
+ <span>15</span>
+ </div>
+ <div class="xm_one_row">
+ <span>寰呭鐞嗘暟閲�</span>
+ <span>15</span>
+ </div>
+ <div class="xm_one_row">
+ <span>鏈湀宸ュ崟鏁�</span>
+ <span>15</span>
+ </div>
+ <div class="xm_one_row">
+ <span>绱宸ュ崟鏁�</span>
+ <span>15</span>
+ </div>
+ </div>
+ </el-card>
+ <el-card style="margin-top: 20px;">
+ <div class="xm_table">
+ <div class="xm_table_search">
+ <el-select v-model="value" style="width: 300px; margin-right: 15px;" placeholder="浣嶇疆绫诲瀷">
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ <el-select v-model="value" style="width: 300px;" placeholder="宸ュ崟鍒嗙被">
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </div>
+ <el-table
+ :data="tableData"
+ border
+ style="width: 100%">
+ <el-table-column
+ prop="date"
+ label="宸ュ崟鍒嗙被">
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="鎶ヤ慨鍖哄煙">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="涓婃姤浜�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="涓婃姤鏃堕棿">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="澶勭悊浜�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="宸ュ崟鐘舵��">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鎿嶄綔">
+ </el-table-column>
+ </el-table>
+ <div class="xm_table_f">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="pageTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="璁惧淇℃伅" name="third">
+ <div class="xm">
+ <div class="xm_chat">
+ <el-card class="xm_chat_row">
+ <div id="chat1"></div>
+ </el-card>
+ <el-card class="xm_chat_row">
+ <div id="chat2"></div>
+ </el-card>
+ </div>
+ <el-card style="margin-top: 20px;">
+ <div class="xm_table">
+ <div class="xm_table_search">
+ <div class="xm_table_search_left">
+ <el-input v-model="input" placeholder="璇疯緭鍏ヨ澶囧悕绉�/缂栫爜" style="width: 200px; margin-right: 15px;"></el-input>
+ <el-select v-model="value" style="width: 200px; margin-right: 15px;" placeholder="璁惧鐘舵��">
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ <el-button type="primary">鏌ヨ</el-button>
+ <el-button>娓呯┖</el-button>
+ </div>
+ <el-button type="primary">鏂板</el-button>
+ </div>
+ <el-table
+ :data="tableData"
+ border
+ style="width: 100%">
+ <el-table-column
+ prop="date"
+ label="宸ュ崟鍒嗙被">
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="鎶ヤ慨鍖哄煙">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="涓婃姤浜�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="涓婃姤鏃堕棿">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="澶勭悊浜�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="宸ュ崟鐘舵��">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鎿嶄綔">
+ </el-table-column>
+ </el-table>
+ <div class="xm_table_f">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="pageTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="璧勪骇淇℃伅" name="fourth">
+ <div class="xm">
+ <el-card>
+ <div slot="header" class="clearfix">
+ <span>璧勪骇娓呭崟</span>
+ </div>
+ <div class="xm_table">
+ <div class="xm_table_search">
+ <div class="xm_table_search_left">
+ <el-input v-model="input" placeholder="璇疯緭鍏ヨ祫浜у悕绉�/缂栫爜" style="width: 200px; margin-right: 15px;"></el-input>
+ <el-select v-model="value" style="width: 200px; margin-right: 15px;" placeholder="璧勪骇鍒嗙被">
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ <el-button type="primary">鏌ヨ</el-button>
+ <el-button>娓呯┖</el-button>
+ </div>
+ <el-button type="primary">鏂板</el-button>
+ </div>
+ <el-table
+ :data="tableData"
+ border
+ style="width: 100%">
+ <el-table-column
+ prop="date"
+ label="璧勪骇缂栫爜">
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="璧勪骇鍚嶇О">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鏉$爜">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鍝佺墝">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="瑙勬牸鍨嬪彿">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鍗曚綅">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="搴撳瓨鏁伴噺">
+ </el-table-column>
+ </el-table>
+ <div class="xm_table_f">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="pageTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+ import BaseOpera from '@/components/base/BaseOpera'
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ import * as echarts from 'echarts';
+ export default {
+ name: "houseDetails",
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ return {
+ info: {},
+ activeName: 'houseinfo',
+ total: 0,
+ pageTotal: 10,
+ page: 1,
+ tableData: []
+ }
+ },
+ methods: {
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ this.$nextTick(() => {
+ this.reand()
+ this.reand1()
+ })
+ },
+ reand() {
+ var chartDom = document.getElementById('chat1');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ tooltip: {
+ trigger: 'item'
+ },
+ legend: {
+ top: '5%',
+ left: 'center'
+ },
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: ['40%', '80%'],
+ avoidLabelOverlap: false,
+ label: {
+ show: false,
+ position: 'center'
+ },
+ emphasis: {
+ label: {
+ show: true,
+ fontSize: 40,
+ fontWeight: 'bold'
+ }
+ },
+ labelLine: {
+ show: false
+ },
+ data: [
+ { value: 1048, name: '姝e父' },
+ { value: 735, name: '寮傚父' },
+ { value: 580, name: '鎶ュ簾' }
+ ]
+ }
+ ]
+ };
+ option && myChart.setOption(option);
+ },
+ reand1() {
+ var chartDom = document.getElementById('chat2');
+ var myChart = echarts.init(chartDom);
+ var option;
+ // There should not be negative values in rawData
+ const rawData = [
+ [100, 302, 301, 334, 390, 330, 320],
+ [320, 132, 101, 134, 90, 230, 210],
+ [220, 182, 191, 234, 290, 330, 310],
+ [150, 212, 201, 154, 190, 330, 410],
+ [820, 832, 901, 934, 1290, 1330, 1320]
+ ];
+ const totalData = [];
+ for (let i = 0; i < rawData[0].length; ++i) {
+ let sum = 0;
+ for (let j = 0; j < rawData.length; ++j) {
+ sum += rawData[j][i];
+ }
+ totalData.push(sum);
+ }
+ const grid = {
+ left: 100,
+ right: 100,
+ top: 50,
+ bottom: 50
+ };
+ const series = [
+ 'Direct',
+ 'Mail Ad',
+ 'Affiliate Ad',
+ 'Video Ad',
+ 'Search Engine'
+ ].map((name, sid) => {
+ return {
+ name,
+ type: 'bar',
+ stack: 'total',
+ barWidth: '60%',
+ label: {
+ show: true,
+ formatter: (params) => Math.round(params.value * 1000) / 10 + '%'
+ },
+ data: rawData[sid].map((d, did) =>
+ totalData[did] <= 0 ? 0 : d / totalData[did]
+ )
+ };
+ });
+ option = {
+ legend: {
+ selectedMode: false
+ },
+ grid,
+ yAxis: {
+ type: 'value'
+ },
+ xAxis: {
+ type: 'category',
+ data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+ },
+ series
+ };
+
+ option && myChart.setOption(option);
+ },
+ handleClick(tab, event) {
+ console.log(tab, event);
+ },
+ handleCurrentChange(page) {
+ this.page = page
+ },
+ handleSizeChange(pageTotal) {
+ this.pageTotal = pageTotal
+ },
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .right {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ .right_head {
+ width: 100%;
+ padding: 20px;
+ box-sizing: border-box;
+ font-size: 16px;
+ font-weight: bold;
+ color: black;
+ background: #ffffff;
+ }
+ .right_cate {
+ width: 100%;
+ padding: 0 20px 20px 20px;
+ box-sizing: border-box;
+ background: #ffffff;
+ .xm {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ .xm_house {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: self-end;
+ .xm_house_list {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ margin-top: 10px;
+ .xm_house_list_left {
+ flex-shrink: 0;
+ width: 100px;
+ display: flex;
+ margin-right: 20px;
+ flex-direction: column;
+ .xm_house_list_left_row {
+ width: 100px;
+ height: 100px;
+ background: rgba(242, 242, 242, 1);
+ padding: 20px 0;
+ box-sizing: border-box;
+ margin-bottom: 20px;
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ justify-content: space-between;
+ &:last-child {
+ margin-bottom: 0;
+ }
+ span {
+ &:nth-child(1) {
+ font-size: 18px;
+ color: #333333;
+ font-weight: 400;
+ }
+ &:nth-child(2) {
+ font-size: 12px;
+ color: #929292;
+ }
+ }
+ }
+ }
+ .xm_house_list_right {
+ width: calc(100% - 130px);
+ display: flex;
+ flex-direction: column;
+ .item {
+ width: calc(100% - 130px);
+ display: flex;
+ align-items: center;
+ margin-bottom: 20px;
+ &:last-child {
+ margin-bottom: 0;
+ }
+ .xm_house_list_right_row {
+ height: 100px;
+ width: 300px;
+ background: rgba(198, 224, 167, 0.34509803921568627);
+ padding: 10px 0;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ justify-content: space-between;
+ span {
+ font-size: 14px;
+ color: #000000;
+ }
+ .xm_house_list_right_row_info {
+ display: flex;
+ flex-direction: column;
+ span {
+ &:nth-child(1) {
+ color: #000000;
+ font-size: 14px;
+ }
+ &:nth-child(2) {
+ color: #A5A5A5;
+ font-size: 12px;
+ margin-top: 3px;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ .xm_house_tips {
+ display: flex;
+ align-items: center;
+ .xm_house_tips_row {
+ margin-left: 30px;
+ display: flex;
+ align-items: center;
+ .xm_house_tips_row_d {
+ width: 10px;
+ height: 10px;
+ background: orange;
+ margin-right: 5px;
+ }
+ span {
+ font-size: 16px;
+ color: black;
+ }
+ }
+ }
+ }
+ .xm_chat {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .xm_chat_row {
+ width: 49%;
+ height: 300px;
+ #chat1 {
+ width: 100%;
+ height: 260px;
+ }
+ #chat2 {
+ width: 100%;
+ height: 260px;
+ }
+ }
+ }
+ .xm_one {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .xm_one_row {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ span {
+ font-size: 16px;
+ color: black;
+ &:nth-child(2) {
+ font-weight: bold;
+ margin: 15px 0;
+ }
+ &:nth-child(3) {
+ color: #666666;
+ }
+ }
+ }
+ }
+ .xm_one1 {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .xm_one_row {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ span {
+ font-size: 16px;
+ color: black;
+ &:nth-child(2) {
+ font-size: 18px;
+ font-weight: bold;
+ margin-top: 15px;
+ }
+ }
+ }
+ }
+ .xm_table {
+ width: 100%;
+ .xm_table_search {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 15px;
+ }
+ .xm_table_f {
+ width: 100%;
+ text-align: right;
+ }
+ }
+ .xm_info {
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ .xm_info_row {
+ display: flex;
+ flex-direction: column;
+ span {
+ font-size: 16px;
+ &:nth-child(1) {
+ color: #666666;
+ }
+ &:nth-child(2) {
+ color: #000000;
+ margin-top: 15px;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+</style>
diff --git a/admin/src/views/project/housingList.vue b/admin/src/views/project/housingList.vue
index 898b009..fabf9e7 100644
--- a/admin/src/views/project/housingList.vue
+++ b/admin/src/views/project/housingList.vue
@@ -52,8 +52,9 @@
</template>
</el-table-column>
<el-table-column v-if="containPermissions(['business:ywroom:update', 'business:ywroom:delete'])" label="鎿嶄綔"
- min-width="100" fixed="right">
+ min-width="140" fixed="right">
<template slot-scope="{row}">
+ <el-button type="text" @click="$refs.houseDetails.open('鎴挎簮璇︽儏')">鏌ョ湅璇︽儏</el-button>
<el-button type="text" @click="editClick(row)" icon="el-icon-edit"
v-permissions="['business:ywroom:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
@@ -66,6 +67,8 @@
</template>
<!-- 鏂板缓/淇敼 -->
<OperaYwRoomWindow ref="operaYwRoomWindow" @success="handlePageChange" />
+ <!-- 璇︽儏 -->
+ <houseDetails ref="houseDetails" />
</TableLayout>
</template>
@@ -74,12 +77,13 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaYwRoomWindow from './components/OperaYwRoomWindow'
+import houseDetails from './components/houseDetails'
import { getProjectList } from '@/api/project/ywProject'
import { getBuildList } from '@/api/project/ywBuilding'
export default {
name: 'YwRoom',
extends: BaseTable,
- components: { TableLayout, Pagination, OperaYwRoomWindow },
+ components: { TableLayout, Pagination, OperaYwRoomWindow, houseDetails },
data() {
return {
// 鎼滅储
diff --git a/admin/src/views/roomStatus/index.vue b/admin/src/views/roomStatus/index.vue
new file mode 100644
index 0000000..bff1757
--- /dev/null
+++ b/admin/src/views/roomStatus/index.vue
@@ -0,0 +1,1101 @@
+<template>
+ <div class="box">
+ <div class="box_content">
+ <div class="left">
+ <el-input v-model="input" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
+ <div style="width: 100%; height: 20px;"></div>
+ <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
+ </div>
+ <div class="right">
+ <div class="right_head">椤圭洰鍚嶇О</div>
+ <div class="right_cate">
+ <el-tabs v-model="activeName" @tab-click="handleClick">
+ <el-tab-pane label="椤圭洰姒傚喌" name="first">
+ <div class="xm">
+ <el-card>
+ <div class="xm_one">
+ <div class="xm_one_row">
+ <span>鍦ㄧ鍚堝悓鏁�</span>
+ <span>4</span>
+ <span>鍦ㄧ鎴挎簮鏁帮細5</span>
+ </div>
+ <div class="xm_one_row">
+ <span>鍙嫑鍟嗛潰绉�</span>
+ <span>50000銕�</span>
+ <span>鍙嫑鍟嗘埧婧愭暟锛�15</span>
+ </div>
+ <div class="xm_one_row">
+ <span>鍦ㄧ瀹炴椂鍧囦环</span>
+ <span>145.75鍏�/m虏路澶�</span>
+ <span>鍦ㄧ闈㈢Н锛�900.00m虏</span>
+ </div>
+ <div class="xm_one_row">
+ <span>鍑虹鐜�</span>
+ <span>50.00%</span>
+ <span>寰呯闈㈢Н锛�700.00m虏</span>
+ </div>
+ </div>
+ </el-card>
+ <el-card style="margin-top: 20px;">
+ <div slot="header" class="clearfix">
+ <span>椤圭洰淇℃伅</span>
+ </div>
+ <div class="xm_info">
+ <div class="xm_info_row" style="width: 25%;">
+ <span>椤圭洰鍚嶇О</span>
+ <span>XXXXXXXXXX</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%;">
+ <span>鎵�灞炲湴鍖�</span>
+ <span>瀹夊窘鐪�-鍚堣偉甯�-铚�灞卞尯</span>
+ </div>
+ <div class="xm_info_row" style="width: 50%;">
+ <span>璇︾粏鍦板潃</span>
+ <span>Lorem ipsum dolor sit amet, consectetur</span>
+ </div>
+ <div class="xm_info_row" style="width: 100%; margin-top: 15px;">
+ <span>椤圭洰绠�浠�</span>
+ <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum</span>
+ </div>
+ </div>
+ </el-card>
+ <el-card style="margin-top: 20px;">
+ <div slot="header" class="clearfix">
+ <span>褰撳墠鍦ㄧ鍚堝悓</span>
+ </div>
+ <div class="xm_table">
+ <el-input v-model="input" style="width: 300px; margin-bottom: 15px;" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
+ <el-table
+ :data="tableData"
+ border
+ style="width: 100%">
+ <el-table-column
+ prop="date"
+ label="鍚堝悓缂栧彿">
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="绉熷">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绉熻祦鍗曚环">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绉熻祦澶╂暟">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绉熻祦闈㈢Н">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鎴挎簮">
+ </el-table-column>
+ </el-table>
+ <div class="xm_table_f">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="pageTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="鎴挎簮淇℃伅" name="houseinfo">
+ <div class="xm">
+ <el-card style="margin-top: 20px;">
+ <div slot="header" class="clearfix">
+ <span>鎴挎簮淇℃伅</span>
+ </div>
+ <div class="xm_info">
+ <div class="xm_info_row" style="width: 25%;">
+ <span>鎵�灞為」鐩�</span>
+ <span>XXXXXXXXXX</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%;">
+ <span>妤煎畤</span>
+ <span>缁煎悎妤�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%;">
+ <span>妤煎眰</span>
+ <span>1</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%;">
+ <span>鎴垮彿</span>
+ <span>101娲诲姩瀹�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>鎴块棿缂栧彿</span>
+ <span>101</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>鏄惁鎷涘晢</span>
+ <span>鍚�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>寤虹瓚闈㈢Н</span>
+ <span>50銕�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>璁$闈㈢Н</span>
+ <span>50銕�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>璁¤垂闈㈢Н</span>
+ <span>45銕�</span>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="绉熷鍚堝悓" name="project">
+ <div class="xm">
+ <el-card style="margin-top: 20px;">
+ <div slot="header" class="clearfix">
+ <span>褰撳墠鍦ㄧ鍚堝悓</span>
+ </div>
+ <div class="xm_table">
+ <el-input v-model="input" style="width: 300px; margin-bottom: 15px;" placeholder="璇疯緭鍏ュ悎鍚岀紪鍙�"></el-input>
+ <el-table
+ :data="tableData"
+ border
+ style="width: 100%">
+ <el-table-column
+ prop="date"
+ label="鍚堝悓缂栧彿">
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="瀹㈡埛鍚嶇О">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="寮�濮嬫棩鏈�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="缁撴潫鏃ユ湡">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绉熻祦鍗曚环">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绉熻祦闈㈢Н锛堛帯锛�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绛捐鏃�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鍚堝悓鏉ユ簮">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鍚堝悓鐘舵��">
+ </el-table-column>
+ </el-table>
+ <div class="xm_table_f">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="pageTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="妤煎畤姒傚喌" name="louyu">
+ <div class="xm">
+ <el-card>
+ <div class="xm_one">
+ <div class="xm_one_row">
+ <span>鍦ㄧ鍚堝悓鏁�</span>
+ <span>4</span>
+ <span>鍦ㄧ鎴挎簮鏁帮細5</span>
+ </div>
+ <div class="xm_one_row">
+ <span>鍙嫑鍟嗛潰绉�</span>
+ <span>50000銕�</span>
+ <span>鍙嫑鍟嗘埧婧愭暟锛�15</span>
+ </div>
+ <div class="xm_one_row">
+ <span>鍦ㄧ瀹炴椂鍧囦环</span>
+ <span>145.75鍏�/m虏路澶�</span>
+ <span>鍦ㄧ闈㈢Н锛�900.00m虏</span>
+ </div>
+ <div class="xm_one_row">
+ <span>鍑虹鐜�</span>
+ <span>50.00%</span>
+ <span>寰呯闈㈢Н锛�700.00m虏</span>
+ </div>
+ </div>
+ </el-card>
+ <el-card style="margin-top: 20px;">
+ <div slot="header" class="clearfix">
+ <span>妤煎畤淇℃伅</span>
+ </div>
+ <div class="xm_info">
+ <div class="xm_info_row" style="width: 25%;">
+ <span>鎵�灞為」鐩�</span>
+ <span>闃滃畞鏂囦綋涓績</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%;">
+ <span>妤煎畤鍚嶇О</span>
+ <span>A搴�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%;">
+ <span>妤煎畤缂栫爜</span>
+ <span>A-</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%;">
+ <span>璇︾粏鍦板潃</span>
+ <span>闃滃畞鏂囦綋涓績瑗垮崡瑙�</span>
+ </div>
+ <div class="xm_info_row" style="width: 100%; margin-top: 15px;">
+ <span>璇︾粏鍦板潃</span>
+ <span>闃滃畞鏂囦綋涓績瑗垮崡瑙�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>寤虹瓚闈㈢Н</span>
+ <span>1000銕�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>璁$闈㈢Н</span>
+ <span>1000銕�</span>
+ </div>
+ <div class="xm_info_row" style="width: 50%; margin-top: 15px;">
+ <span>璁¤垂闈㈢Н</span>
+ <span>1000銕�</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>鍦颁笂灞傛暟</span>
+ <span>5</span>
+ </div>
+ <div class="xm_info_row" style="width: 25%; margin-top: 15px;">
+ <span>鍦颁笅灞傛暟</span>
+ <span>2</span>
+ </div>
+ </div>
+ </el-card>
+ <el-card style="margin-top: 20px;">
+ <div slot="header" class="clearfix">
+ <span>褰撳墠鍦ㄧ鍚堝悓</span>
+ </div>
+ <div class="xm_table">
+ <el-input v-model="input" style="width: 300px; margin-bottom: 15px;" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
+ <el-table
+ :data="tableData"
+ border
+ style="width: 100%">
+ <el-table-column
+ prop="date"
+ label="鍚堝悓缂栧彿">
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="绉熷">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绉熻祦鍗曚环">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绉熻祦澶╂暟">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="绉熻祦闈㈢Н">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鎴挎簮">
+ </el-table-column>
+ </el-table>
+ <div class="xm_table_f">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="pageTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="鎴挎�佺鐞�" name="house">
+ <div class="xm">
+ <div class="xm_house">
+ <div class="xm_house_tips">
+ <div class="xm_house_tips_row">
+ <div class="xm_house_tips_row_d"></div>
+ <span>宸插嚭绉�</span>
+ </div>
+ <div class="xm_house_tips_row">
+ <div class="xm_house_tips_row_d"></div>
+ <span>鏈嚭绉�</span>
+ </div>
+ <div class="xm_house_tips_row">
+ <div class="xm_house_tips_row_d"></div>
+ <span>90鏃ュ唴鍒版湡</span>
+ </div>
+ </div>
+ <div class="xm_house_list">
+ <div class="xm_house_list_left">
+ <div class="xm_house_list_left_row">
+ <span>1F</span>
+ <span>600銕�</span>
+ </div>
+ </div>
+ <div class="xm_house_list_right">
+ <div class="item">
+ <div class="xm_house_list_right_row">
+ <span>101锛�600銕★級</span>
+ <div class="xm_house_list_right_row_info">
+ <span>绉熷鍚嶇О</span>
+ <span>2024-08-16鍒版湡</span>
+ </div>
+ </div>
+ <div class="xm_house_list_right_row">
+ <span>101锛�600銕★級</span>
+ <div class="xm_house_list_right_row_info">
+ <span>绉熷鍚嶇О</span>
+ <span>2024-08-16鍒版湡</span>
+ </div>
+ </div>
+ <div class="xm_house_list_right_row">
+ <span>101锛�600銕★級</span>
+ <div class="xm_house_list_right_row_info">
+ <span>绉熷鍚嶇О</span>
+ <span>2024-08-16鍒版湡</span>
+ </div>
+ </div>
+ <div class="xm_house_list_right_row">
+ <span>101锛�600銕★級</span>
+ <div class="xm_house_list_right_row_info">
+ <span>绉熷鍚嶇О</span>
+ <span>2024-08-16鍒版湡</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="宸ュ崟璁板綍" name="second">
+ <div class="xm">
+ <el-card>
+ <div class="xm_one1">
+ <div class="xm_one_row">
+ <span>寰呮寚娲炬暟閲�</span>
+ <span>15</span>
+ </div>
+ <div class="xm_one_row">
+ <span>寰呭鐞嗘暟閲�</span>
+ <span>15</span>
+ </div>
+ <div class="xm_one_row">
+ <span>鏈湀宸ュ崟鏁�</span>
+ <span>15</span>
+ </div>
+ <div class="xm_one_row">
+ <span>绱宸ュ崟鏁�</span>
+ <span>15</span>
+ </div>
+ </div>
+ </el-card>
+ <el-card style="margin-top: 20px;">
+ <div class="xm_table">
+ <div class="xm_table_search">
+ <el-select v-model="value" style="width: 300px; margin-right: 15px;" placeholder="浣嶇疆绫诲瀷">
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ <el-select v-model="value" style="width: 300px;" placeholder="宸ュ崟鍒嗙被">
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </div>
+ <el-table
+ :data="tableData"
+ border
+ style="width: 100%">
+ <el-table-column
+ prop="date"
+ label="宸ュ崟鍒嗙被">
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="鎶ヤ慨鍖哄煙">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="涓婃姤浜�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="涓婃姤鏃堕棿">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="澶勭悊浜�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="宸ュ崟鐘舵��">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鎿嶄綔">
+ </el-table-column>
+ </el-table>
+ <div class="xm_table_f">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="pageTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="璁惧淇℃伅" name="third">
+ <div class="xm">
+ <div class="xm_chat">
+ <el-card class="xm_chat_row">
+ <div id="chat1"></div>
+ </el-card>
+ <el-card class="xm_chat_row">
+ <div id="chat2"></div>
+ </el-card>
+ </div>
+ <el-card style="margin-top: 20px;">
+ <div class="xm_table">
+ <div class="xm_table_search">
+ <div class="xm_table_search_left">
+ <el-input v-model="input" placeholder="璇疯緭鍏ヨ澶囧悕绉�/缂栫爜" style="width: 200px; margin-right: 15px;"></el-input>
+ <el-select v-model="value" style="width: 200px; margin-right: 15px;" placeholder="璁惧鐘舵��">
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ <el-button type="primary">鏌ヨ</el-button>
+ <el-button>娓呯┖</el-button>
+ </div>
+ <el-button type="primary">鏂板</el-button>
+ </div>
+ <el-table
+ :data="tableData"
+ border
+ style="width: 100%">
+ <el-table-column
+ prop="date"
+ label="宸ュ崟鍒嗙被">
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="鎶ヤ慨鍖哄煙">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="涓婃姤浜�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="涓婃姤鏃堕棿">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="澶勭悊浜�">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="宸ュ崟鐘舵��">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鎿嶄綔">
+ </el-table-column>
+ </el-table>
+ <div class="xm_table_f">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="pageTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane label="璧勪骇淇℃伅" name="fourth">
+ <div class="xm">
+ <el-card>
+ <div slot="header" class="clearfix">
+ <span>璧勪骇娓呭崟</span>
+ </div>
+ <div class="xm_table">
+ <div class="xm_table_search">
+ <div class="xm_table_search_left">
+ <el-input v-model="input" placeholder="璇疯緭鍏ヨ祫浜у悕绉�/缂栫爜" style="width: 200px; margin-right: 15px;"></el-input>
+ <el-select v-model="value" style="width: 200px; margin-right: 15px;" placeholder="璧勪骇鍒嗙被">
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ <el-button type="primary">鏌ヨ</el-button>
+ <el-button>娓呯┖</el-button>
+ </div>
+ <el-button type="primary">鏂板</el-button>
+ </div>
+ <el-table
+ :data="tableData"
+ border
+ style="width: 100%">
+ <el-table-column
+ prop="date"
+ label="璧勪骇缂栫爜">
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="璧勪骇鍚嶇О">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鏉$爜">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鍝佺墝">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="瑙勬牸鍨嬪彿">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="鍗曚綅">
+ </el-table-column>
+ <el-table-column
+ prop="address"
+ label="搴撳瓨鏁伴噺">
+ </el-table-column>
+ </el-table>
+ <div class="xm_table_f">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 20, 30, 40]"
+ :page-size="pageTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+ import * as echarts from 'echarts';
+ export default {
+ name: 'index',
+ data() {
+ return {
+ input: '',
+ tableData: [],
+ data: [{
+ label: '涓�绾� 1',
+ children: [{
+ label: '浜岀骇 1-1',
+ children: [{
+ label: '涓夌骇 1-1-1'
+ }]
+ }]
+ }, {
+ label: '涓�绾� 2',
+ children: [{
+ label: '浜岀骇 2-1',
+ children: [{
+ label: '涓夌骇 2-1-1'
+ }]
+ }, {
+ label: '浜岀骇 2-2',
+ children: [{
+ label: '涓夌骇 2-2-1'
+ }]
+ }]
+ }, {
+ label: '涓�绾� 3',
+ children: [{
+ label: '浜岀骇 3-1',
+ children: [{
+ label: '涓夌骇 3-1-1'
+ }]
+ }, {
+ label: '浜岀骇 3-2',
+ children: [{
+ label: '涓夌骇 3-2-1'
+ }]
+ }]
+ }],
+ defaultProps: {
+ children: 'children',
+ label: 'label'
+ },
+ activeName: 'first',
+ total: 0,
+ pageTotal: 10,
+ page: 1,
+ options: [{
+ value: '閫夐」1',
+ label: '榛勯噾绯�'
+ }, {
+ value: '閫夐」2',
+ label: '鍙岀毊濂�'
+ }, {
+ value: '閫夐」3',
+ label: '铓典粩鐓�'
+ }, {
+ value: '閫夐」4',
+ label: '榫欓』闈�'
+ }, {
+ value: '閫夐」5',
+ label: '鍖椾含鐑ら腑'
+ }],
+ value: ''
+ }
+ },
+ created () {
+ this.$nextTick(() => {
+ this.reand()
+ this.reand1()
+ })
+ },
+ methods: {
+ reand() {
+ var chartDom = document.getElementById('chat1');
+ var myChart = echarts.init(chartDom);
+ var option;
+ option = {
+ tooltip: {
+ trigger: 'item'
+ },
+ legend: {
+ top: '5%',
+ left: 'center'
+ },
+ series: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: ['40%', '80%'],
+ avoidLabelOverlap: false,
+ label: {
+ show: false,
+ position: 'center'
+ },
+ emphasis: {
+ label: {
+ show: true,
+ fontSize: 40,
+ fontWeight: 'bold'
+ }
+ },
+ labelLine: {
+ show: false
+ },
+ data: [
+ { value: 1048, name: '姝e父' },
+ { value: 735, name: '寮傚父' },
+ { value: 580, name: '鎶ュ簾' }
+ ]
+ }
+ ]
+ };
+ option && myChart.setOption(option);
+ },
+ reand1() {
+ var chartDom = document.getElementById('chat2');
+ var myChart = echarts.init(chartDom);
+ var option;
+ // There should not be negative values in rawData
+ const rawData = [
+ [100, 302, 301, 334, 390, 330, 320],
+ [320, 132, 101, 134, 90, 230, 210],
+ [220, 182, 191, 234, 290, 330, 310],
+ [150, 212, 201, 154, 190, 330, 410],
+ [820, 832, 901, 934, 1290, 1330, 1320]
+ ];
+ const totalData = [];
+ for (let i = 0; i < rawData[0].length; ++i) {
+ let sum = 0;
+ for (let j = 0; j < rawData.length; ++j) {
+ sum += rawData[j][i];
+ }
+ totalData.push(sum);
+ }
+ const grid = {
+ left: 100,
+ right: 100,
+ top: 50,
+ bottom: 50
+ };
+ const series = [
+ 'Direct',
+ 'Mail Ad',
+ 'Affiliate Ad',
+ 'Video Ad',
+ 'Search Engine'
+ ].map((name, sid) => {
+ return {
+ name,
+ type: 'bar',
+ stack: 'total',
+ barWidth: '60%',
+ label: {
+ show: true,
+ formatter: (params) => Math.round(params.value * 1000) / 10 + '%'
+ },
+ data: rawData[sid].map((d, did) =>
+ totalData[did] <= 0 ? 0 : d / totalData[did]
+ )
+ };
+ });
+ option = {
+ legend: {
+ selectedMode: false
+ },
+ grid,
+ yAxis: {
+ type: 'value'
+ },
+ xAxis: {
+ type: 'category',
+ data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+ },
+ series
+ };
+
+ option && myChart.setOption(option);
+ },
+ handleCurrentChange(page) {
+ this.page = page
+ },
+ handleSizeChange(pageTotal) {
+ this.pageTotal = pageTotal
+ },
+ handleNodeClick(data) {
+ console.log(data);
+ },
+ handleClick(tab, event) {
+ console.log(tab, event);
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .box {
+ width: 100%;
+ height: 100%;
+ padding: 16px;
+ box-sizing: border-box;
+ .box_content {
+ width: 100%;
+ display: flex;
+ align-items: start;
+ justify-content: space-between;
+ .left {
+ width: 300px;
+ padding: 20px;
+ box-sizing: border-box;
+ flex-shrink: 0;
+ margin-right: 20px;
+ display: flex;
+ flex-direction: column;
+ background: #ffffff;
+ }
+ .right {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ .right_head {
+ width: 100%;
+ padding: 20px;
+ box-sizing: border-box;
+ font-size: 16px;
+ font-weight: bold;
+ color: black;
+ background: #ffffff;
+ }
+ .right_cate {
+ width: 100%;
+ padding: 0 20px 20px 20px;
+ box-sizing: border-box;
+ background: #ffffff;
+ .xm {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ .xm_house {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: self-end;
+ .xm_house_list {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ margin-top: 10px;
+ .xm_house_list_left {
+ flex-shrink: 0;
+ width: 100px;
+ display: flex;
+ margin-right: 20px;
+ flex-direction: column;
+ .xm_house_list_left_row {
+ width: 100px;
+ height: 100px;
+ background: rgba(242, 242, 242, 1);
+ padding: 20px 0;
+ box-sizing: border-box;
+ margin-bottom: 20px;
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ justify-content: space-between;
+ &:last-child {
+ margin-bottom: 0;
+ }
+ span {
+ &:nth-child(1) {
+ font-size: 18px;
+ color: #333333;
+ font-weight: 400;
+ }
+ &:nth-child(2) {
+ font-size: 12px;
+ color: #929292;
+ }
+ }
+ }
+ }
+ .xm_house_list_right {
+ width: calc(100% - 130px);
+ display: flex;
+ flex-direction: column;
+ .item {
+ width: calc(100% - 130px);
+ display: flex;
+ align-items: center;
+ margin-bottom: 20px;
+ &:last-child {
+ margin-bottom: 0;
+ }
+ .xm_house_list_right_row {
+ height: 100px;
+ width: 300px;
+ background: rgba(198, 224, 167, 0.34509803921568627);
+ padding: 10px 0;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ justify-content: space-between;
+ span {
+ font-size: 14px;
+ color: #000000;
+ }
+ .xm_house_list_right_row_info {
+ display: flex;
+ flex-direction: column;
+ span {
+ &:nth-child(1) {
+ color: #000000;
+ font-size: 14px;
+ }
+ &:nth-child(2) {
+ color: #A5A5A5;
+ font-size: 12px;
+ margin-top: 3px;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ .xm_house_tips {
+ display: flex;
+ align-items: center;
+ .xm_house_tips_row {
+ margin-left: 30px;
+ display: flex;
+ align-items: center;
+ .xm_house_tips_row_d {
+ width: 10px;
+ height: 10px;
+ background: orange;
+ margin-right: 5px;
+ }
+ span {
+ font-size: 16px;
+ color: black;
+ }
+ }
+ }
+ }
+ .xm_chat {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .xm_chat_row {
+ width: 49%;
+ height: 300px;
+ #chat1 {
+ width: 100%;
+ height: 260px;
+ }
+ #chat2 {
+ width: 100%;
+ height: 260px;
+ }
+ }
+ }
+ .xm_one {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .xm_one_row {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ span {
+ font-size: 16px;
+ color: black;
+ &:nth-child(2) {
+ font-weight: bold;
+ margin: 15px 0;
+ }
+ &:nth-child(3) {
+ color: #666666;
+ }
+ }
+ }
+ }
+ .xm_one1 {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .xm_one_row {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ span {
+ font-size: 16px;
+ color: black;
+ &:nth-child(2) {
+ font-size: 18px;
+ font-weight: bold;
+ margin-top: 15px;
+ }
+ }
+ }
+ }
+ .xm_table {
+ width: 100%;
+ .xm_table_search {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 15px;
+ }
+ .xm_table_f {
+ width: 100%;
+ text-align: right;
+ }
+ }
+ .xm_info {
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ .xm_info_row {
+ display: flex;
+ flex-direction: column;
+ span {
+ font-size: 16px;
+ &:nth-child(1) {
+ color: #666666;
+ }
+ &:nth-child(2) {
+ color: #000000;
+ margin-top: 15px;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+</style>
diff --git a/admin/src/views/workorder/components/handleProblem.vue b/admin/src/views/workorder/components/handleProblem.vue
new file mode 100644
index 0000000..47a1896
--- /dev/null
+++ b/admin/src/views/workorder/components/handleProblem.vue
@@ -0,0 +1,184 @@
+<template>
+ <GlobalWindow
+ title="闂涓婃姤"
+ :showConfirm="false"
+ :visible.sync="visible"
+ width="100%">
+ <div class="wt">
+ <div class="wt_head">
+ <div class="wt_head_title">
+ 闂璇︽儏
+ <el-tag style="margin-left: 10px;">杞伐鍗�</el-tag>
+ </div>
+ <el-button>鏌ョ湅宸ュ崟</el-button>
+ </div>
+ <div class="wt_content">
+ <div class="wt_content_row" style="width: 25%;">
+ 浣嶇疆锛�-
+ </div>
+ <div class="wt_content_row" style="width: 25%;">
+ 涓婃姤浜猴細寮犱笁涓�
+ </div>
+ <div class="wt_content_row" style="width: 50%;">
+ 涓婃姤浜虹數璇濓細180553847234
+ </div>
+ <div class="wt_content_row" style="width: 100%; margin-top: 15px;">
+ 涓婃姤鏃堕棿锛�2024-11-21 12:00:23
+ </div>
+ <div class="wt_content_row" style="width: 100%; margin-top: 15px;">
+ 闂鎻忚堪锛氳繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩�
+ </div>
+ <div class="wt_content_row" style="width: 100%; margin-top: 15px;">
+ <div class="wt_content_row_label">闂鍥剧墖锛�</div>
+ <div class="wt_content_row_list">
+ <div class="wt_content_row_list_img">
+ <img src="" alt="" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <el-form :model="form" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+ <el-form-item label="澶勭悊鏂瑰紡" prop="resource">
+ <el-radio-group v-model="form.resource">
+ <el-radio :label="0">杞伐鍗�</el-radio>
+ <el-radio :label="1">鍏抽棴闂</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <div style="display: flex; align-items: center;">
+ <el-form-item label="浣嶇疆绫诲瀷" prop="region">
+ <el-select v-model="form.resource" placeholder="璇烽�夋嫨浣嶇疆绫诲瀷">
+ <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
+ <el-option label="鍖哄煙浜�" value="beijing"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎶ヤ慨鍖哄煙" prop="resource">
+ <el-select v-model="form.resource" placeholder="璇烽�夋嫨鎶ヤ慨鍖哄煙">
+ <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
+ <el-option label="鍖哄煙浜�" value="beijing"></el-option>
+ </el-select>
+ </el-form-item>
+ </div>
+ <div style="display: flex; align-items: center;">
+ <el-form-item label="宸ュ崟鍒嗙被" prop="resource">
+ <el-select v-model="form.resource" placeholder="璇烽�夋嫨宸ュ崟鍒嗙被">
+ <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
+ <el-option label="鍖哄煙浜�" value="beijing"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="涓婇棬鏃堕棿" prop="resource">
+ <el-date-picker v-model="form.resource" type="date" placeholder="閫夋嫨涓婇棬鏃堕棿"></el-date-picker>
+ </el-form-item>
+ </div>
+ <el-form-item label="鎻忚堪" prop="resource">
+ <el-input
+ type="textarea"
+ :rows="5"
+ placeholder="璇疯緭鍏ユ弿杩�"
+ v-model="form.resource">
+ </el-input>
+ </el-form-item>
+ <el-form-item label="闂鍥剧墖" prop="resource">
+ <el-upload
+ action="https://jsonplaceholder.typicode.com/posts/"
+ list-type="picture-card">
+ <i class="el-icon-plus"></i>
+ </el-upload>
+ </el-form-item>
+ <el-form-item label="鍏抽棴闂" prop="resource">
+ <el-input
+ type="textarea"
+ :rows="5"
+ placeholder="璇疯緭鍏ュ叧闂棶棰�"
+ v-model="form.resource">
+ </el-input>
+ </el-form-item>
+ </el-form>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+ import BaseOpera from '@/components/base/BaseOpera'
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ export default {
+ name: "handleProblem",
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ return {
+ info: {},
+ form: {
+ resource: 0
+ },
+ rules: {
+ resource: [
+ { required: true, message: '璇烽�夋嫨', trigger: 'change' }
+ ]
+ }
+ }
+ },
+ methods: {
+
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .wt {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ .wt_head {
+ width: 100%;
+ padding: 20px 0;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .wt_head_title {
+ display: flex;
+ align-items: center;
+ font-size: 16px;
+ color: black;
+ margin-right: 10px;
+ }
+ }
+ .wt_content {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ .wt_content_row {
+ font-size: 14px;
+ color: rgb(51, 51, 51);
+ display: flex;
+ align-items: self-start;
+ .wt_content_row_label {
+ flex-shrink: 0;
+ font-size: 14px;
+ color: rgb(51, 51, 51);
+ }
+ .wt_content_row_list {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ .wt_content_row_list_img {
+ width: 106px;
+ height: 93px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow-x: hidden;
+ margin-right: 15px;
+ &:last-child {
+ margin: 0 !important;
+ }
+ img {
+ width: 100%;
+ }
+ }
+ }
+ }
+ }
+ }
+</style>
diff --git a/admin/src/views/workorder/components/problemReportingDetails.vue b/admin/src/views/workorder/components/problemReportingDetails.vue
new file mode 100644
index 0000000..213c8d9
--- /dev/null
+++ b/admin/src/views/workorder/components/problemReportingDetails.vue
@@ -0,0 +1,139 @@
+<template>
+ <GlobalWindow
+ title="闂涓婃姤璇︽儏"
+ :showConfirm="false"
+ :visible.sync="visible"
+ width="100%">
+ <div class="wt">
+ <div class="wt_head">
+ <div class="wt_head_title">
+ 闂璇︽儏
+ <el-tag style="margin-left: 10px;">杞伐鍗�</el-tag>
+ </div>
+ <el-button>鏌ョ湅宸ュ崟</el-button>
+ </div>
+ <div class="wt_content">
+ <div class="wt_content_row" style="width: 25%;">
+ 浣嶇疆锛�-
+ </div>
+ <div class="wt_content_row" style="width: 25%;">
+ 涓婃姤浜猴細寮犱笁涓�
+ </div>
+ <div class="wt_content_row" style="width: 50%;">
+ 涓婃姤浜虹數璇濓細180553847234
+ </div>
+ <div class="wt_content_row" style="width: 100%; margin-top: 15px;">
+ 涓婃姤鏃堕棿锛�2024-11-21 12:00:23
+ </div>
+ <div class="wt_content_row" style="width: 100%; margin-top: 15px;">
+ 闂鎻忚堪锛氳繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩拌繖鏄棶棰樻弿杩�
+ </div>
+ <div class="wt_content_row" style="width: 100%; margin-top: 15px;">
+ <div class="wt_content_row_label">闂鍥剧墖锛�</div>
+ <div class="wt_content_row_list">
+ <div class="wt_content_row_list_img">
+ <img src="" alt="" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="wt_head">
+ <div class="wt_head_title">
+ 澶勭悊缁撴灉
+ </div>
+ </div>
+ <div class="wt_content">
+ <div class="wt_content_row" style="width: 100%;">
+ 澶勭悊浜猴細寮犱笁-琛屾斂閮�
+ </div>
+ <div class="wt_content_row" style="width: 100%; margin-top: 15px;">
+ 澶勭悊鏃堕棿锛�2024-11-21 12:00:23
+ </div>
+ <div class="wt_content_row" style="width: 100%; margin-top: 15px;">
+ 澶勭悊缁撴灉锛氳浆宸ュ崟
+ </div>
+ <div class="wt_content_row" style="width: 100%; margin-top: 15px;">
+ 鍏抽棴璇存槑锛氳鏄庤鏄庤鏄庤鏄庤鏄庤鏄庤鏄庤鏄庤鏄庤鏄庤鏄庤鏄庤鏄庤鏄庤鏄庤鏄庤鏄�
+ </div>
+ </div>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+ import BaseOpera from '@/components/base/BaseOpera'
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ export default {
+ name: "problemReportingDetails",
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ return {
+ info: {}
+ }
+ },
+ methods: {
+
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .wt {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ .wt_head {
+ width: 100%;
+ padding: 20px 0;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .wt_head_title {
+ display: flex;
+ align-items: center;
+ font-size: 16px;
+ color: black;
+ margin-right: 10px;
+ }
+ }
+ .wt_content {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ .wt_content_row {
+ font-size: 14px;
+ color: rgb(51, 51, 51);
+ display: flex;
+ align-items: self-start;
+ .wt_content_row_label {
+ flex-shrink: 0;
+ font-size: 14px;
+ color: rgb(51, 51, 51);
+ }
+ .wt_content_row_list {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ .wt_content_row_list_img {
+ width: 106px;
+ height: 93px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow-x: hidden;
+ margin-right: 15px;
+ &:last-child {
+ margin: 0 !important;
+ }
+ img {
+ width: 100%;
+ }
+ }
+ }
+ }
+ }
+ }
+</style>
diff --git a/admin/src/views/workorder/problemReporting.vue b/admin/src/views/workorder/problemReporting.vue
new file mode 100644
index 0000000..98a65ed
--- /dev/null
+++ b/admin/src/views/workorder/problemReporting.vue
@@ -0,0 +1,105 @@
+<template>
+ <TableLayout :permissions="['business:ywworkorder:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="鎻忚堪" prop="roomNum">
+ <el-input v-model="searchForm.roomNum" placeholder="璇疯緭鍏ユ弿杩�" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item prop="areaType" label="澶勭悊鐘舵��">
+ <el-select v-model="searchForm.areaType">
+ <el-option label="鏈鐞�" value="0"></el-option>
+ <el-option label="鐢熸垚宸ュ崟" value="1"></el-option>
+ <el-option label="鍏抽棴淇濅慨" value="1"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="涓婃姤鏃堕棿">
+ <el-date-picker
+ v-model="searchForm.selDate"
+ @change="changeSelDate"
+ format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd"
+ type="daterange"></el-date-picker>
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <el-table v-loading="isWorking.search" :data="tableData.list" stripe>
+ <el-table-column prop="areaType" label="鎻忚堪" min-width="70px"></el-table-column>
+ <el-table-column prop="areaType" label="浣嶇疆" min-width="100px"></el-table-column>
+ <el-table-column prop="categoryName" label="鐜板満鍥剧墖" min-width="100px"></el-table-column>
+ <el-table-column prop="creatorName" label="涓婃姤浜�" min-width="80px"></el-table-column>
+ <el-table-column prop="createDate" label="涓婃姤浜虹數璇�" min-width="100px"></el-table-column>
+ <el-table-column prop="dealUserName" label="涓婃姤鏃堕棿" min-width="80px"></el-table-column>
+ <el-table-column label="澶勭悊鐘舵��" min-width="70px">
+ <template slot-scope="{row}">
+ <span v-if="row.dealStatus == 0">寰呮寚娲�</span>
+ <span v-if="row.dealStatus == 1">宸叉寚娲�</span>
+ <span v-if="row.dealStatus == 2">宸插鐞�</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="creatorName" label="澶勭悊浜�" min-width="80px"></el-table-column>
+ <el-table-column
+ v-if="containPermissions(['business:ywworkorder:update'])"
+ label="鎿嶄綔"
+ width="130"
+ fixed="right">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="$refs.handleProblem.open()">澶勭悊</el-button>
+ <el-button type="text" @click="$refs.problemReportingDetails.open()">鏌ョ湅璇︽儏</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+ </pagination>
+ </template>
+ <!-- 璇︽儏 -->
+ <problemReportingDetails ref="problemReportingDetails" />
+ <!-- 澶勭悊 -->
+ <handleProblem ref="handleProblem" @success="handlePageChange" />
+ </TableLayout>
+</template>
+
+<script>
+ import BaseTable from '@/components/base/BaseTable'
+ import TableLayout from '@/layouts/TableLayout'
+ import Pagination from '@/components/common/Pagination'
+ import problemReportingDetails from './components/problemReportingDetails'
+ import handleProblem from './components/handleProblem'
+ export default {
+ name: 'problemReporting',
+ extends: BaseTable,
+ components: { TableLayout, Pagination, problemReportingDetails, handleProblem },
+ data() {
+ return {
+ // 鎼滅储
+ showDetail: false,
+ searchForm: {
+ selDate: [],
+ areaIds: '',
+ projectId: '',
+ buildingId: '',
+ cateId: '',
+ },
+ projectList: [],
+ buildList: [],
+ cateList: [],
+ }
+ },
+ created() {
+ this.config({
+ module: '杩愮淮宸ュ崟淇℃伅琛�',
+ api: '/workorder/ywWorkorder',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.search()
+ },
+ methods: {
+
+ }
+ }
+</script>
--
Gitblit v1.9.3