From 3a1a4f95f3d07f669139ab1158d1e304be6d6a26 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期六, 23 十一月 2024 17:32:50 +0800
Subject: [PATCH] ll
---
admin/src/views/contract/components/contractEdit.vue | 71 +
admin/src/views/finance/components/paymentsEdit.vue | 204 +++++
admin/src/api/project/ywRoom.js | 6
admin/src/views/finance/payments.vue | 38
admin/src/views/client/category.vue | 107 +++
admin/src/views/client/staffList.vue | 77 +-
admin/src/views/finance/components/config.js | 3
admin/src/views/client/components/OperaYwCustomerWindow.vue | 227 ++++-
admin/src/components/common/CommonHeader.vue | 4
admin/src/views/finance/components/bullEdit.vue | 370 ++++++++++
admin/src/views/finance/bull.vue | 23
admin/src/views/project/components/floorLevel.vue | 63 +
admin/src/views/login.vue | 4
admin/src/views/client/components/OperaCategoryWindow.vue | 63 +
admin/src/views/client/clientList.vue | 20
admin/src/views/client/components/config.js | 10
/dev/null | 137 ---
admin/src/views/index.vue | 10
admin/src/api/client/staff.js | 43 +
admin/src/api/client/ywCustomer.js | 3
admin/src/views/workorder/components/config.js | 9
admin/src/views/project/components/OperaYwBuildingWindow.vue | 2
admin/src/views/finance/components/bullDetail.vue | 231 ++++++
admin/src/views/project/buildingList.vue | 7
admin/src/views/client/components/staffEdit.vue | 177 +++++
admin/src/views/workorder/components/OperaYwWorkorderWindow.vue | 149 +++
26 files changed, 1,732 insertions(+), 326 deletions(-)
diff --git a/admin/src/api/client/staff.js b/admin/src/api/client/staff.js
new file mode 100644
index 0000000..80f0d53
--- /dev/null
+++ b/admin/src/api/client/staff.js
@@ -0,0 +1,43 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/visitsAdmin/cloudService/business/member/ywFindPage', data, {
+ trim: true
+ })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+ return request.post('/visitsAdmin/cloudService/business/member/exportExcel', data, {
+ trim: true,
+ download: true
+ })
+}
+
+// 鍒涘缓
+export function create (data) {
+ return request.post('/visitsAdmin/cloudService/business/member/ywCreate', data)
+}
+
+// 淇敼
+export function updateById (data) {
+ return request.post('/visitsAdmin/cloudService/business/member/ywUpdateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+ return request.get(`/visitsAdmin/cloudService/business/member/delete/${id}`)
+}
+
+export function detailById (id) {
+ return request.get(`/visitsAdmin/cloudService/business/member/${id}`)
+}
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+ return request.get('/visitsAdmin/cloudService/business/member/delete/batch', {
+ params: {
+ ids
+ }
+ })
+}
diff --git a/admin/src/api/client/ywCustomer.js b/admin/src/api/client/ywCustomer.js
index 324a53e..f1eaef9 100644
--- a/admin/src/api/client/ywCustomer.js
+++ b/admin/src/api/client/ywCustomer.js
@@ -30,6 +30,9 @@
return request.get(`/visitsAdmin/cloudService/business/ywCustomer/delete/${id}`)
}
+export function detailById (id) {
+ return request.get(`/visitsAdmin/cloudService/business/ywCustomer/${id}`)
+}
// 鎵归噺鍒犻櫎
export function deleteByIdInBatch (ids) {
return request.get('/visitsAdmin/cloudService/business/ywCustomer/delete/batch', {
diff --git a/admin/src/api/project/ywRoom.js b/admin/src/api/project/ywRoom.js
index 8a7dd61..1c5ac5d 100644
--- a/admin/src/api/project/ywRoom.js
+++ b/admin/src/api/project/ywRoom.js
@@ -6,7 +6,11 @@
trim: true
})
}
-
+export function getRoomList (data) {
+ return request.post('/visitsAdmin/cloudService/business/ywRoom/list', data, {
+ trim: true
+ })
+}
// 瀵煎嚭Excel
export function exportExcel (data) {
return request.post('/visitsAdmin/cloudService/business/ywRoom/exportExcel', data, {
diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index b4ee24b..d1eff86 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -3,7 +3,7 @@
<div class="header">
<div class="logo">
<div class="title">{{ title }}</div>
- <div class="list">
+ <!-- <div class="list">
<div class="item active">
<div>鏈嶅姟涓績</div>
<div class="linellae"></div>
@@ -12,7 +12,7 @@
<div class="item" @click="getHeaderNav('1')">娑堟帶涓績</div>
<div class="item" @click="getHeaderNav('2')">鑳界涓績</div>
<div class="item" @click="getHeaderNav('3')">椹鹃┒鑸�</div>
- </div>
+ </div> -->
<!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> -->
</div>
<div class="user">
diff --git a/admin/src/views/client/category.vue b/admin/src/views/client/category.vue
new file mode 100644
index 0000000..5999ff0
--- /dev/null
+++ b/admin/src/views/client/category.vue
@@ -0,0 +1,107 @@
+<template>
+ <TableLayout>
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
+ <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
+ v-permissions="['business:category:create']">鏂板缓</el-button></li>
+ <li v-permissions="['business:category:exportExcel']"><el-button type="primary"
+ @click="exportExcel">瀵煎嚭</el-button></li>
+ </ul>
+ <el-table v-loading="isWorking.search"
+ :data="dataList" stripe @selection-change="handleSelectionChange">
+ <el-table-column prop="name" label="琛屼笟鍚嶇О" min-width="100px"></el-table-column>
+ <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="80px"></el-table-column>
+ <el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])" label="鎿嶄綔"
+ min-width="120" fixed="right">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
+ v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+ v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="tableData.pagination">
+ </pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaCategoryWindow v-if="isShowEdit" @close="isShowEdit = false" ref="operaCategoryWindow" @success="getList" />
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaCategoryWindow from './components/OperaCategoryWindow'
+import { fetchList, deleteById } from '@/api/business/category.js'
+export default {
+ name: 'Category',
+ extends: BaseTable,
+ components: { TableLayout, Pagination, OperaCategoryWindow },
+ data() {
+ return {
+ // 鎼滅储
+ filters: {
+ parentId: ''
+ },
+ isShowEdit: false,
+ loading: false,
+ pagination: {
+ pageSize: 10,
+ page: 1,
+ total: 0,
+ },
+ dataList: []
+ }
+ },
+ created() {
+ this.config({
+ module: '杞﹁締淇℃伅琛�',
+ api: '/business/category',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.getList()
+ },
+ methods: {
+ handleEdit(row) {
+ this.isShowEdit = true
+ let str = row && row.id ? '缂栬緫琛屼笟' : '鏂板缓琛屼笟'
+ this.$nextTick(() => {
+ this.$refs.operaCategoryWindow.open(str)
+ if (row && row.id) {
+ this.$refs.operaCategoryWindow.getDetail(row.id)
+ }
+ })
+ },
+ deleteById(row) {
+ this.$confirm(`鎮ㄧ‘璁よ鍒犻櫎璇ヨ涓氬悧`, '娓╅Θ鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ deleteById(row.id).then(res => {
+ this.getList()
+ })
+ })
+
+ },
+ getList() {
+ const { pagination, filters } = this
+ this.loading = true
+ fetchList({
+ model: { ...filters, type: 6 },
+ capacity: pagination.pageSize,
+ page: pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.dataList = res.records || []
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ }
+}
+</script>
diff --git a/admin/src/views/client/clientList.vue b/admin/src/views/client/clientList.vue
index c54c0d1..d6c97b7 100644
--- a/admin/src/views/client/clientList.vue
+++ b/admin/src/views/client/clientList.vue
@@ -22,12 +22,26 @@
</ul>
<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="type" label="绫诲瀷 0涓汉 1浼佷笟" min-width="100px"></el-table-column>
+ <el-table-column prop="type" label="瀹㈡埛绫诲瀷" min-width="80px">
+ <template slot-scope="{row}">
+ <span>{{ row.type == '0' ? '涓汉' : '浼佷笟' }}</span>
+ </template>
+ </el-table-column>
<el-table-column prop="name" label="瀹㈡埛鍚嶇О" min-width="100px"></el-table-column>
<el-table-column prop="memberName" label="鑱旂郴浜�" min-width="100px"></el-table-column>
- <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
- <el-table-column prop="idcardNo" label="韬唤璇佸彿锛堝姞瀵嗭級" min-width="100px"></el-table-column>
+ <el-table-column prop="memberPhone" label="鑱旂郴鐢佃瘽" min-width="100px"></el-table-column>
+ <!-- <el-table-column prop="idcardNo" label="韬唤璇佸彿" min-width="100px"></el-table-column> -->
<el-table-column prop="creditCard" label="缁熶竴淇$敤浠g爜" min-width="100px"></el-table-column>
+ <el-table-column prop="validity" label="钀ヤ笟鏈熼檺" min-width="100px">
+ <template slot-scope="{row}">
+ <span>{{ row.validity == '2099-12-31' ? '闀挎湡' : row.validity }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="榛樿鍙戠エ绫诲瀷" min-width="100px">
+ <template slot-scope="{row}">
+ <span>{{ row.fpType == '0' ? '澧炲�肩◣鏅�氬彂绁�' : row.fpType == '1' ? '澧炲�肩◣涓撶敤鍙戠エ' : '-' }}</span>
+ </template>
+ </el-table-column>
<el-table-column v-if="containPermissions(['business:ywcustomer:update', 'business:ywcustomer:delete'])"
label="鎿嶄綔" min-width="120" fixed="right">
<template slot-scope="{row}">
diff --git a/admin/src/views/client/components/OperaCategoryWindow.vue b/admin/src/views/client/components/OperaCategoryWindow.vue
new file mode 100644
index 0000000..a47dc6d
--- /dev/null
+++ b/admin/src/views/client/components/OperaCategoryWindow.vue
@@ -0,0 +1,63 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @confirm="confirm">
+ <el-form :model="form" ref="form" :rules="rules">
+ <el-form-item label="琛屼笟鍚嶇О" prop="name">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ヨ涓氬悕绉�" v-trim />
+ </el-form-item>
+ <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+ <el-input v-model="form.sortnum" oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 6)" v-trim />
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { create, fetchCateList, getInfoById } from '@/api/business/category.js'
+export default {
+ name: 'OperaCategoryWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ parentId: null,
+ name: '',
+ remark: '',
+ status: '',
+ sortnum: '',
+ type: 6
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ name: [
+ { required: true, message: '璇疯緭鍏ヤ簩绾у垎绫诲悕绉�', trigger: 'blur' }
+ ],
+ status: [
+ { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' }
+ ]
+ },
+ dataList: []
+ }
+ },
+ created() {
+ this.config({
+ api: '/business/category',
+ 'field.id': 'id'
+ })
+ },
+ methods: {
+ close() {
+ this.visible = false
+ this.$emit('close')
+ },
+ getDetail(id) {
+ getInfoById(id).then(res => {
+ this.form = res
+ })
+ },
+ }
+}
+</script>
diff --git a/admin/src/views/client/components/OperaYwCustomerWindow.vue b/admin/src/views/client/components/OperaYwCustomerWindow.vue
index 9776dda..a7b8bf9 100644
--- a/admin/src/views/client/components/OperaYwCustomerWindow.vue
+++ b/admin/src/views/client/components/OperaYwCustomerWindow.vue
@@ -1,65 +1,80 @@
<template>
- <GlobalWindow
- :title="title"
- :visible.sync="visible"
- :confirm-working="isWorking"
- @confirm="confirm"
- >
+ <GlobalWindow :title="title" width="900px" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
<el-form :model="form" ref="form" :rules="rules">
- <el-form-item label="绫诲瀷 0涓汉 1浼佷笟" prop="type">
- <el-input v-model="form.type" placeholder="璇疯緭鍏ョ被鍨� 0涓汉 1浼佷笟" v-trim/>
- </el-form-item>
- <el-form-item label="瀹㈡埛" prop="name">
- <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鎴�" v-trim/>
- </el-form-item>
- <el-form-item label="鎵嬫満鍙�" prop="phone">
- <el-input v-model="form.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" v-trim/>
- </el-form-item>
- <el-form-item label="韬唤璇佸彿锛堝姞瀵嗭級" prop="idcardNo">
- <el-input v-model="form.idcardNo" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙凤紙鍔犲瘑锛�" v-trim/>
- </el-form-item>
- <el-form-item label="璇佷欢鏄剧ず淇℃伅" prop="idcardDecode">
- <el-input v-model="form.idcardDecode" placeholder="璇疯緭鍏ヨ瘉浠舵樉绀轰俊鎭�" v-trim/>
- </el-form-item>
- <el-form-item label="瀹㈡埛缂栫爜" prop="code">
- <el-input v-model="form.code" placeholder="璇疯緭鍏ュ鎴风紪鐮�" v-trim/>
- </el-form-item>
- <el-form-item label="鐘舵�� 0姝e父 1绂佺敤" prop="status">
- <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0姝e父 1绂佺敤" v-trim/>
- </el-form-item>
- <el-form-item label="韬唤 0鑰佹澘 1瓒呯骇绠$悊鍛�" prop="highCheckor">
- <el-input v-model="form.highCheckor" placeholder="璇疯緭鍏ヨ韩浠� 0鑰佹澘 1瓒呯骇绠$悊鍛�" v-trim/>
- </el-form-item>
- <el-form-item label="璇佷欢绫诲瀷 0韬唤璇� 1娓境璇佷欢 2鎶ょ収" prop="idcardType">
- <el-input v-model="form.idcardType" placeholder="璇疯緭鍏ヨ瘉浠剁被鍨� 0韬唤璇� 1娓境璇佷欢 2鎶ょ収" v-trim/>
- </el-form-item>
- <el-form-item label="寮�鎴烽摱琛�" prop="accountBank">
- <el-input v-model="form.accountBank" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" v-trim/>
- </el-form-item>
- <el-form-item label="璐﹀彿" prop="accountNo">
- <el-input v-model="form.accountNo" placeholder="璇疯緭鍏ヨ处鍙�" v-trim/>
- </el-form-item>
- <el-form-item label="璐︽埛鐢佃瘽" prop="accountPhone">
- <el-input v-model="form.accountPhone" placeholder="璇疯緭鍏ヨ处鎴风數璇�" v-trim/>
- </el-form-item>
- <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCard">
- <el-input v-model="form.creditCard" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" v-trim/>
- </el-form-item>
- <el-form-item label="榛樿鍙戠エ绫诲瀷 0澧炲�肩◣鏅�氬彂绁� 1澧炲�肩◣涓撶敤鍙戠エ" prop="fpType">
- <el-input v-model="form.fpType" placeholder="璇疯緭鍏ラ粯璁ゅ彂绁ㄧ被鍨� 0澧炲�肩◣鏅�氬彂绁� 1澧炲�肩◣涓撶敤鍙戠エ" v-trim/>
- </el-form-item>
- <el-form-item label="璐﹀彿娉ㄥ唽鍦板潃" prop="accountAddr">
- <el-input v-model="form.accountAddr" placeholder="璇疯緭鍏ヨ处鍙锋敞鍐屽湴鍧�" v-trim/>
- </el-form-item>
- <el-form-item label="韬唤绫诲瀷0鑰佹澘瓒呯骇绠$悊鍛�;1=浜轰簨绠$悊鍛�;2=鍛樺伐" prop="identityType">
- <el-input v-model="form.identityType" placeholder="璇疯緭鍏ヨ韩浠界被鍨�0鑰佹澘瓒呯骇绠$悊鍛�;1=浜轰簨绠$悊鍛�;2=鍛樺伐" v-trim/>
- </el-form-item>
- <el-form-item label="閭" prop="email">
- <el-input v-model="form.email" placeholder="璇疯緭鍏ラ偖绠�" v-trim/>
- </el-form-item>
- <el-form-item label="鑱旂郴浜虹紪鐮侊紙鍏宠仈member锛�" prop="memberId">
- <el-input v-model="form.memberId" placeholder="璇疯緭鍏ヨ仈绯讳汉缂栫爜锛堝叧鑱攎ember锛�" v-trim/>
- </el-form-item>
+ <div class="list">
+ <div class="title">鍩虹淇℃伅</div>
+ <el-form-item label="瀹㈡埛" prop="name">
+ <div class="df">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鎴�" v-trim />
+ <el-checkbox v-model="form.type" class="ml10" true-label="0" false-label="1">涓汉</el-checkbox>
+ </div>
+ </el-form-item>
+ <el-form-item label="琛屼笟鍒嗙被" prop="industryId">
+ <el-select v-model="form.industryId" clearable filterable>
+ <el-option v-for="item in cateList" :value="item.id" :label="item.name" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="瀹㈡埛缂栧彿" prop="code">
+ <el-input v-model="form.code" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <div class="title">榛樿鑱旂郴浜�</div>
+ <el-form-item label="濮撳悕" prop="member.name">
+ <el-input v-model="form.member.name" placeholder="璇疯緭鍏�" v-trim />
+ </el-form-item>
+ <el-form-item label="鎵嬫満鍙�" prop="member.phone">
+ <el-input v-model="form.member.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" v-trim />
+ </el-form-item>
+ <el-form-item label="韬唤">
+ <el-select v-model="form.member.highCheckor" filterable>
+ <el-option :value="0" label="鑰佹澘/瓒呯骇绠$悊鍛�" />
+ <el-option :value="1" label="浜轰簨/绠$悊鍛�" />
+ <el-option :value="2" label="鍛樺伐/鏅�氬憳宸�" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璇佷欢绫诲瀷">
+ <el-select v-model="form.member.idcardType" filterable>
+ <el-option :value="0" label="韬唤璇�" />
+ <el-option :value="1" label="娓境璇佷欢" />
+ <el-option :value="2" label="鎶ょ収" />
+ </el-select>
+ </el-form-item>
+ <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-input v-model="form.member.email" placeholder="璇疯緭鍏ラ偖绠�" v-trim />
+ </el-form-item>
+
+ <div class="title">璐︽埛淇℃伅</div>
+ <el-form-item label="寮�鎴烽摱琛�" prop="accountBank">
+ <el-input v-model="form.accountBank" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" v-trim />
+ </el-form-item>
+ <el-form-item label="璐﹀彿" prop="accountNo">
+ <el-input v-model="form.accountNo" placeholder="璇疯緭鍏ヨ处鍙�" v-trim />
+ </el-form-item>
+ <el-form-item label="鐢佃瘽" prop="accountPhone">
+ <el-input v-model="form.accountPhone" placeholder="璇疯緭鍏ヨ处鎴风數璇�" v-trim />
+ </el-form-item>
+ <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCard">
+ <el-input v-model="form.creditCard" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" v-trim />
+ </el-form-item>
+ <el-form-item label="榛樿鍙戠エ绫诲瀷" prop="fpType">
+ <el-select v-model="form.fpType" clearable filterable>
+ <el-option :value="0" label="澧炲�肩◣鏅�氬彂绁�" />
+ <el-option :value="1" label="澧炲�肩◣涓撶敤鍙戠エ" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="娉ㄥ唽鍦板潃" prop="accountAddr">
+ <el-input v-model="form.accountAddr" placeholder="璇疯緭鍏ヨ处鍙锋敞鍐屽湴鍧�" v-trim />
+ </el-form-item>
+ <el-form-item label="钀ヤ笟鏈熼檺">
+ <div class="df">
+ <el-date-picker type="date" v-model="form.validity" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ <el-checkbox v-model="form.selLangTime" @change="changeValid" class="ml10">闀挎湡</el-checkbox>
+ </div>
+ </el-form-item>
+
+ </div>
</el-form>
</GlobalWindow>
</template>
@@ -67,15 +82,19 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import { fetchCateList } from '@/api/business/category'
+import { rules } from './config'
+import { detailById } from '@/api/client/ywCustomer'
export default {
name: 'OperaYwCustomerWindow',
extends: BaseOpera,
components: { GlobalWindow },
- data () {
+ data() {
return {
// 琛ㄥ崟鏁版嵁
form: {
id: null,
+ validity: '',
creator: '',
createDate: '',
editor: '',
@@ -83,38 +102,108 @@
isdeleted: '',
remark: '',
industryId: '',
- type: '',
+ type: '1',
name: '',
phone: '',
idcardNo: '',
idcardDecode: '',
code: '',
status: '',
- highCheckor: '',
+ memberName: '',
+
lastLoginDate: '',
loginNum: '',
userId: '',
- idcardType: '',
+
accountBank: '',
accountNo: '',
accountPhone: '',
creditCard: '',
fpType: '',
accountAddr: '',
- identityType: '',
+ // identityType: '0',
email: '',
- memberId: ''
+ memberId: '',
+ member: {
+ name: "",
+ phone: "",
+ highCheckor: 0,
+ idcardType: 0,
+ idcardNo: '',
+ email: '',
+ }
},
+ cateList: [],
// 楠岃瘉瑙勫垯
- rules: {
- }
+ rules
}
},
- created () {
+ created() {
this.config({
api: '/client/ywCustomer',
'field.id': 'id'
})
+ },
+ methods: {
+ initData() {
+ fetchCateList({ type: 6 }).then(res => {
+ this.cateList = res
+ })
+ },
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ this.initData()
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ if(title == '缂栬緫瀹㈡埛'){
+ detailById(target.id).then(res => {
+ this.form = res
+ })
+ }
+ })
+ },
+ changeValid(e) {
+ this.$set(this.form, 'validity', e ? '2099-12-31' : '')
+ },
}
}
</script>
+<style lang='scss' scoped>
+@import '@/assets/style/variables.scss';
+
+div {
+ box-sizing: border-box;
+}
+
+.title {
+ width: 100%;
+ font-weight: 500;
+ font-size: 15px;
+ margin-top: 16px;
+}
+
+.list {
+ /* padding-top: 14px; */
+ display: flex;
+ flex-wrap: wrap;
+
+ .el-form-item {
+ width: 33.33%;
+ margin-bottom: 12px;
+ padding: 0 12px;
+
+ .la {
+ color: #7f7f7f;
+ margin-top: 2px;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/client/components/config.js b/admin/src/views/client/components/config.js
new file mode 100644
index 0000000..3b5b937
--- /dev/null
+++ b/admin/src/views/client/components/config.js
@@ -0,0 +1,10 @@
+export const rules = {
+ name: [{ required: true, message: '璇疯緭鍏�' }],
+ 'member.name': [{ required: true, message: '璇疯緭鍏�' }],
+ 'member.phone': [{ required: true, message: '璇疯緭鍏�' }],
+}
+export const staffRules = {
+ name: [{ required: true, message: '璇疯緭鍏�' }],
+ 'member.name': [{ required: true, message: '璇疯緭鍏�' }],
+ phone: [{ required: true, message: '璇疯緭鍏�' }],
+}
\ No newline at end of file
diff --git a/admin/src/views/client/components/staffEdit.vue b/admin/src/views/client/components/staffEdit.vue
new file mode 100644
index 0000000..f74bff5
--- /dev/null
+++ b/admin/src/views/client/components/staffEdit.vue
@@ -0,0 +1,177 @@
+<template>
+ <GlobalWindow :title="title" width="900px" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+ <el-form :model="form" ref="form" :rules="rules">
+ <div class="list">
+ <el-form-item label="瀹㈡埛鍚嶇О" prop="customerId">
+ <el-select v-model="form.customerId" clearable filterable>
+ <el-option v-for="item in clientList" :value="item.id" :label="item.name" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="濮撳悕" prop="name">
+ <div class="df">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏�" v-trim />
+ </div>
+ </el-form-item>
+ <el-form-item label="鎵嬫満鍙�" prop="phone">
+ <el-input v-model="form.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" v-trim />
+ </el-form-item>
+ <el-form-item label="韬唤">
+ <el-select v-model="form.highCheckor" filterable>
+ <el-option :value="0" label="鑰佹澘/瓒呯骇绠$悊鍛�" />
+ <el-option :value="1" label="浜轰簨/绠$悊鍛�" />
+ <el-option :value="2" label="鍛樺伐/鏅�氬憳宸�" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璇佷欢绫诲瀷">
+ <el-select v-model="form.idcardType" filterable>
+ <el-option :value="0" label="韬唤璇�" />
+ <el-option :value="1" label="娓境璇佷欢" />
+ <el-option :value="2" label="鎶ょ収" />
+ </el-select>
+ </el-form-item>
+ <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-input v-model="form.email" placeholder="璇疯緭鍏ラ偖绠�" v-trim />
+ </el-form-item>
+ <el-form-item label="鎬у埆">
+ <el-select v-model="form.sex" filterable>
+ <el-option :value="1" label="鐢�" />
+ <el-option :value="2" label="濂�" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍑虹敓鏃ユ湡">
+ <el-date-picker type="date" v-model="form.birthday" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ </el-form-item>
+
+ </div>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { fetchCateList } from '@/api/business/category'
+import { staffRules } from './config'
+import { detailById } from '@/api/client/ywCustomer'
+import { fetchList } from '@/api/client/ywCustomer'
+export default {
+ name: 'OperaYwCustomerWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ id: null,
+ customerId: '',
+ creator: '',
+ createDate: '',
+ editor: '',
+ editDate: '',
+ isdeleted: '',
+ birthday: '',
+ industryId: '',
+ type: '1',
+ idcardDecode: '',
+ sex: '',
+ status: '',
+ memberName: '',
+
+ lastLoginDate: '',
+ loginNum: '',
+ userId: '',
+
+ accountBank: '',
+ accountNo: '',
+ accountPhone: '',
+ creditCard: '',
+ fpType: '',
+ accountAddr: '',
+ // identityType: '0',
+ name: "",
+ phone: "",
+ highCheckor: 0,
+ idcardType: 0,
+ idcardNo: '',
+ email: '',
+ },
+ clientList: [],
+ // 楠岃瘉瑙勫垯
+ rules: staffRules
+ }
+ },
+ created() {
+ this.config({
+ api: '/client/staff',
+ 'field.id': 'id'
+ })
+ },
+
+ methods: {
+ initData() {
+ fetchList({
+ capacity: 9000,
+ model: {},
+ page: 1
+ }).then(res => {
+ this.clientList = res.records || []
+ })
+ },
+ open(title, target) {
+ this.title = title
+ this.visible = true
+ this.initData()
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ })
+ },
+ changeValid(e) {
+ this.$set(this.form, 'validity', e ? '2099-12-31' : '')
+ },
+ }
+}
+</script>
+<style lang='scss' scoped>
+@import '@/assets/style/variables.scss';
+
+div {
+ box-sizing: border-box;
+}
+
+.title {
+ width: 100%;
+ font-weight: 500;
+ font-size: 15px;
+ margin-top: 16px;
+}
+
+.list {
+ /* padding-top: 14px; */
+ display: flex;
+ flex-wrap: wrap;
+
+ .el-form-item {
+ width: 33.33%;
+ margin-bottom: 12px;
+ padding: 0 12px;
+
+ .la {
+ color: #7f7f7f;
+ margin-top: 2px;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/client/staffList.vue b/admin/src/views/client/staffList.vue
index 3012931..6117255 100644
--- a/admin/src/views/client/staffList.vue
+++ b/admin/src/views/client/staffList.vue
@@ -2,8 +2,10 @@
<TableLayout :permissions="['business:ywcustomer:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="瀹㈡埛鍚嶇О" prop="name">
- <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ鎴峰悕绉�" @keypress.enter.native="search"></el-input>
+ <el-form-item label="瀹㈡埛鍚嶇О" prop="customerId">
+ <el-select v-model="searchForm.customerId" clearable filterable>
+ <el-option v-for="item in clientList" :value="item.id" :label="item.name" />
+ </el-select>
</el-form-item>
<el-form-item prop="name">
<el-input v-model="searchForm.name" placeholder="璇疯緭鍏ヤ汉鍛樺鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
@@ -18,21 +20,31 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:ywcustomer:create', 'business:ywcustomer:delete']">
- <li><el-button type="primary" @click="$refs.operaYwCustomerWindow.open('鏂板缓瀹㈡埛')" icon="el-icon-plus"
+ <li><el-button type="primary" @click="$refs.operaYwCustomerWindow.open('鏂板缓浜哄憳')" icon="el-icon-plus"
v-permissions="['business:ywcustomer:create']">鏂板缓</el-button></li>
<li><el-button @click="deleteByIdInBatch" icon="el-icon-delete"
v-permissions="['business:ywcustomer:delete']">鍒犻櫎</el-button></li>
</ul>
<el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
- <el-table-column prop="name" label="瀹㈡埛鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="memberName" label="鑱旂郴浜�" min-width="100px"></el-table-column>
+ <el-table-column prop="customerName" label="瀹㈡埛鍚嶇О" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="鑱旂郴浜�" min-width="100px"></el-table-column>
<el-table-column prop="phone" label="鑱旂郴鐢佃瘽" min-width="100px"></el-table-column>
- <el-table-column prop="" label="韬唤" min-width="100px"></el-table-column>
- <el-table-column prop="" label="鐘舵��" min-width="100px"></el-table-column>
+ <el-table-column prop="" label="韬唤" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.highCheckor == 0">鑰佹澘/瓒呯骇绠$悊鍛�</span>
+ <span v-if="row.highCheckor == 1">浜轰簨/绠$悊鍛�</span>
+ <span v-if="row.highCheckor == 2">鍛樺伐/鏅�氬憳宸�</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="status" label="鐘舵��" min-width="100px">
+ <template slot-scope="{row}">
+ <span :class="{ red: row.status == 1 }">{{ row.status == '0' ? '姝e父' : '绂佺敤' }}</span>
+ </template>
+ </el-table-column>
<el-table-column v-if="containPermissions(['business:ywcustomer:update', 'business:ywcustomer:delete'])"
label="鎿嶄綔" min-width="120" fixed="right">
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaYwCustomerWindow.open('缂栬緫瀹㈡埛', row)" icon="el-icon-edit"
+ <el-button type="text" @click="$refs.operaYwCustomerWindow.open('缂栬緫浜哄憳', row)" icon="el-icon-edit"
v-permissions="['business:ywcustomer:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
v-permissions="['business:ywcustomer:delete']">鍒犻櫎</el-button>
@@ -51,7 +63,8 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
-import OperaYwCustomerWindow from './components/OperaYwCustomerWindow'
+import OperaYwCustomerWindow from './components/staffEdit.vue'
+import { fetchList } from '@/api/client/ywCustomer'
export default {
name: 'YwCustomer',
extends: BaseTable,
@@ -60,46 +73,32 @@
return {
// 鎼滅储
searchForm: {
- id: '',
- creator: '',
- createDate: '',
- editor: '',
- editDate: '',
- isdeleted: '',
- remark: '',
- industryId: '',
- type: '',
+ customerId: '',
name: '',
- phone: '',
- idcardNo: '',
- idcardDecode: '',
- code: '',
- status: '',
- highCheckor: '',
- lastLoginDate: '',
- loginNum: '',
- userId: '',
- idcardType: '',
- accountBank: '',
- accountNo: '',
- accountPhone: '',
- creditCard: '',
- fpType: '',
- accountAddr: '',
- identityType: '',
- email: '',
- memberId: ''
- }
+ },
+ clientList: []
}
},
created() {
this.config({
module: '杩愮淮瀹㈡埛淇℃伅琛�',
- api: '/client/ywCustomer',
+ api: '/client/staff',
'field.id': 'id',
'field.main': 'id'
})
this.search()
+ this.initData()
+ },
+ methods: {
+ initData() {
+ fetchList({
+ capacity: 9000,
+ model: {},
+ page: 1
+ }).then(res => {
+ this.clientList = res.records || []
+ })
+ },
}
}
</script>
diff --git a/admin/src/views/contract/components/contractEdit.vue b/admin/src/views/contract/components/contractEdit.vue
index 8e79bce..13e6378 100644
--- a/admin/src/views/contract/components/contractEdit.vue
+++ b/admin/src/views/contract/components/contractEdit.vue
@@ -1,5 +1,6 @@
<template>
- <GlobalWindow width="1000px" :title="title" :visible.sync="showModal" :confirm-working="isWorking" @close="close" @confirm="confirm">
+ <GlobalWindow width="1000px" :title="title" :visible.sync="showModal" :confirm-working="isWorking" @close="close"
+ @confirm="confirm">
<div class="tabs">
<div class="tab" :class="{ active: activeTabs == 0 }" @click="tabsClick(0)">1銆佸熀鏈俊鎭�</div>
<div class="tab" :class="{ active: activeTabs == 1 }" @click="tabsClick(1)">2銆佽垂鐢ㄦ潯娆�</div>
@@ -74,7 +75,10 @@
<div class="file_wrap">
<div class="head">
<div>鍚堝悓闄勪欢</div>
- <el-button icon="el-icon-plus" plain>娣诲姞闄勪欢</el-button>
+ <el-upload class="upload-demo" :show-file-list="false" :data="uploadData" :action="uploadImgUrl"
+ :on-success="uploadAvatarSuccess" :before-upload="beforeUpload" :on-error="uploadError">
+ <el-button icon="el-icon-plus" plain>娣诲姞闄勪欢</el-button>
+ </el-upload>
</div>
<el-table :data="param.list" stripe>
<el-table-column prop="" label="闄勪欢鍚嶇О" align="center" min-width="100" show-overflow-tooltip />
@@ -133,7 +137,7 @@
<el-button style="width: 100%;height: 48px;" type="primary" plain>鐢熸垚璐﹀崟鏄庣粏</el-button>
<el-table :data="paramCost.list" class="mt20" stripe>
<el-table-column prop="" label="璐圭敤绫诲瀷" align="center" width="160px" show-overflow-tooltip />
- <el-table-column prop="" label="鎸囨暟"align="center" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鎸囨暟" align="center" min-width="100" show-overflow-tooltip />
<el-table-column prop="" label="鍖洪棿" align="center" min-width="100" show-overflow-tooltip />
<el-table-column prop="" label="浠樻鏃�" align="center" min-width="100" show-overflow-tooltip />
<el-table-column prop="" label="搴旀敹" align="center" min-width="100" show-overflow-tooltip />
@@ -153,6 +157,7 @@
import BaseOpera from '@/components/base/BaseOpera'
import MemberSearch from '@/components/common/MemberSearch'
import { rules } from './config'
+import { Message, Loading } from 'element-ui'
export default {
components: {
GlobalWindow,
@@ -166,6 +171,13 @@
activeTabs: '0',
param: {},
rules,
+
+ loadingInstance: null,
+ uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
+ fileList: [],
+ uploadData: {
+ folder: 'HIDDEN_DANGER_FILE'
+ },
types: [
{ name: '鐗╀笟+绉熻祦鍚堝悓', value: 0 },
@@ -265,6 +277,50 @@
console.log(this.value)
},
+ beforeUpload(file) {
+ // if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg', 'image/jpg', 'image/png', 'image/gif'].indexOf(file.type) == -1) {
+ // this.$message.error('璇蜂笂浼犳纭殑瑙嗛/鍥剧墖鏍煎紡')
+ // return false
+ // }
+ this.loadingInstance = Loading.service({
+ lock: true,
+ text: 'Loading',
+ spinner: 'el-icon-loading',
+ background: 'rgba(0, 0, 0, 0.7)'
+ })
+ },
+ uploadError() {
+ this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
+ if (this.loadingInstance) {
+ this.loadingInstance.close()
+ }
+ })
+ },
+ uploadAvatarSuccess(file) {
+ this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
+ if (this.loadingInstance) {
+ this.loadingInstance.close()
+ }
+ })
+ console.log('file', file)
+ const item = file.data[0]
+ if (['.mp4', '.avi', '.flv', '.wmv'].some(char => item.imgaddr.includes(char))) {
+ this.fileList.push({
+ type: 1,
+ fileurl: item.imgaddr,
+ fileurlFull: item.url
+ })
+ } else {
+ this.fileList.push({
+ type: 0,
+ fileurl: item.imgaddr,
+ fileurlFull: item.url
+ })
+ }
+ console.log('file', this.fileList)
+ // this.$set(this.param, 'faceImg', file.imgurl)
+ // this.$set(this.param, 'faceImgUrl', file.imgurlfull)
+ },
close() {
this.showModal = false
this.$emit('close')
@@ -331,7 +387,7 @@
}
.main_house {
- width: 420px;
+ width: 320px;
padding: 24px 12px;
border: 1px solid #c3c6cd;
border-radius: 2px;
@@ -344,17 +400,20 @@
}
}
-.total{
+
+.total {
display: flex;
justify-content: space-between;
align-items: center;
height: 32px;
background-color: #e7e9f5;
- span{
+
+ span {
width: 160px;
text-align: center;
}
}
+
.file_wrap {
padding: 20px 16px;
border: 1px solid #c3c6cd;
diff --git a/admin/src/views/finance/bull.vue b/admin/src/views/finance/bull.vue
index fef662a..c0aea32 100644
--- a/admin/src/views/finance/bull.vue
+++ b/admin/src/views/finance/bull.vue
@@ -13,16 +13,18 @@
</div>
</div>
<el-table v-loading="loading" :data="list" stripe>
- <el-table-column prop="" label="杩愮淮浜�" min-width="100" show-overflow-tooltip />
- <el-table-column prop="code" label="璁惧缂栧彿" min-width="100" show-overflow-tooltip />
- <el-table-column prop="name" label="璁惧鍚嶇О" min-width="100" show-overflow-tooltip />
- <el-table-column prop="stautsName" label="璁惧鐘舵��" min-width="100" show-overflow-tooltip />
- <el-table-column prop="remark" label="杩愮淮澶囨敞" min-width="100" show-overflow-tooltip />
- <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="瀹㈡埛鍚嶇О" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="code" label="妤煎畤鍚嶇О" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="name" label="鎴块棿鍙�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="stautsName" label="鍚堝悓缂栧彿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="remark" label="缁撴竻鐘舵��" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="createTime" label="璐﹀崟閲戦" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="createTime" label="搴旀敹閲戦" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="createTime" label="鍚堝悓鐘舵��" min-width="100" show-overflow-tooltip />
<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>
+ v-permissions="['business:category:update']">鏌ョ湅璇︽儏</el-button>
</template>
</el-table-column>
</el-table>
@@ -30,19 +32,22 @@
<Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
</div>
<Edit v-if="showEdit" ref="EditRef" @success="getList" @close="showEdit = false" />
+ <Detail ref="DetailRef" @success="getList" @close="showEdit = false" />
</div>
</template>
<script>
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
-import Edit from './components/deviceEdit.vue'
+import Edit from './components/bullEdit.vue'
+import Detail from './components/bullDetail.vue'
import { fetchList, deleteById } from '@/api/Inspection/device'
export default {
components: {
Pagination,
QueryForm,
- Edit
+ Edit,
+ Detail
},
data() {
return {
diff --git a/admin/src/views/finance/components/bullDetail.vue b/admin/src/views/finance/components/bullDetail.vue
new file mode 100644
index 0000000..8eec8dd
--- /dev/null
+++ b/admin/src/views/finance/components/bullDetail.vue
@@ -0,0 +1,231 @@
+<template>
+ <GlobalWindow :title="'璐﹀崟璇︽儏'" :visible.sync="visible" :confirm-working="isWorking" @close="close"
+ @confirm="confirm">
+ <div class="home_title">
+ <div class="left">
+ <span class="mr10">浠樻鏂癸細xxx</span>
+ <span class="status">status</span>
+ </div>
+ <el-button plain type="primary">鏂板缓鏀舵敮娴佹按</el-button>
+ </div>
+ <div class="remark">
+ <div class="item">
+ <div class="la">璐﹀崟鐘舵��</div>
+ <div class="val">宸茬粨娓�</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>
+ <div class="main">
+ <div class="title">鍩虹淇℃伅</div>
+ <div class="list">
+ <div class="item">
+ <div class="la">璐﹀崟绫诲瀷</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">璁¤垂鍛ㄦ湡</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">璐﹀崟閲戦(鍏�)</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">璐﹀崟缂栧彿</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鍚堝悓缂栧彿</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鍒涘缓鏃堕棿</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">浠樻鏂�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">缁忓姙浜�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鎵�灞炲叕鍙�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">璐﹀崟澶囨敞</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ </div>
+ <div class="title">鎴挎簮淇℃伅</div>
+ <div class="list">
+ <div class="item">
+ <div class="la">椤圭洰鍚嶇О</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">妤煎畤鍚嶇О</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">妤煎眰/鎴垮彿</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">闈㈢Н</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ </div>
+ <div class="title">绉熷淇℃伅</div>
+ <div class="list">
+ <div class="item">
+ <div class="la">绉熷</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">缁忓姙浜�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ </div>
+ <div class="title">绉熻祦鏉℃</div>
+ <div class="list">
+ <div class="item">
+ <div class="la">鎶奸噾閲戦</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">浠樻鏂瑰紡</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鍏嶇鏈�</div>
+ <div class="val">{{ info.aaa }}</div>
+ </div>
+ </div>
+ <el-table :data="info.list" stripe>
+ <el-table-column prop="" label="寮�濮嬫棩鏈�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="缁撴潫鏃ユ湡" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鍚堝悓鍗曚环" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="浠樻鎻愬墠澶╂暟" min-width="100" show-overflow-tooltip />
+ </el-table>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BaseOpera from '@/components/base/BaseOpera'
+export default {
+ components: {
+ GlobalWindow
+ },
+ extends: BaseOpera,
+ data() {
+ return {
+ id: '',
+ visible: true,
+ activeTabs: '',
+ info: {}
+ }
+ },
+ methods: {
+ tabsClick(val) {
+ this.activeTabs = val
+ },
+ getDetail() {
+
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '@/assets/style/variables.scss';
+.home_title {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ .left {
+ font-weight: 500;
+ font-size: 16px;
+ margin-right: 10px;
+ display: flex;
+ align-items: center;
+
+ .status {
+ padding: 0 6px;
+ height: 22px;
+ line-height: 22px;
+ border-radius: 2px;
+ border: 1px solid #00BA92;
+ color: #00BA92;
+ font-weight: 400;
+ font-size: 12px;
+ color: #00BA92;
+ }
+ }
+}
+
+.remark {
+ background: #E8EBF7;
+ border-radius: 2px;
+ padding: 10px 20px;
+ font-size: 16px;
+ margin: 20px 0
+}
+
+.tabs {
+ border-bottom: 1px solid #DFE2E8;
+ display: flex;
+ margin-bottom: 20px;
+ .tab {
+ height: 58px;
+ line-height: 58px;
+ font-size: 16px;
+ color: #666666;
+ margin-right: 30px;
+ cursor: pointer;
+ }
+
+ .active {
+ font-weight: 500;
+ color: $primary-color;
+ border-bottom: 2px solid $primary-color;
+ }
+}
+
+.main {
+ .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-top: 2px;
+ }
+ }
+ }
+}
+</style>
diff --git a/admin/src/views/finance/components/bullEdit.vue b/admin/src/views/finance/components/bullEdit.vue
new file mode 100644
index 0000000..80a4067
--- /dev/null
+++ b/admin/src/views/finance/components/bullEdit.vue
@@ -0,0 +1,370 @@
+<template>
+ <GlobalWindow width="1100px" :title="title" :visible.sync="isShowModal" :confirm-working="isWorking" @close="close"
+ @confirm="confirm">
+ <template v-if="activeTabs == 0">
+ <div class="main">
+ <div class="main_content">
+ <el-form :model="param" label-position="top" ref="paramRef" :rules="rules">
+ <div class="head">
+ <div class="m_title">鍩虹淇℃伅</div>
+ <div class="tabs">
+ <div class="tab" :class="{ active: timeTab == 0 }" @click="timeTabClick('0')">鍛ㄦ湡璐圭敤</div>
+ <div class="tab" :class="{ active: timeTab == 1 }" @click="timeTabClick('1')">涓�娆℃�ц垂鐢�</div>
+ </div>
+ </div>
+ <div class="list">
+ <el-form-item label="鍏宠仈鍚堝悓" prop="type">
+ <el-select v-model="param.type" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in types" :value="item.value" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="浠樻鏂�" prop="code">
+ <el-input v-model="param.code" placeholder="璇疯緭鍏ュ悎鍚岀紪鍙�" v-trim />
+ </el-form-item>
+ <el-form-item label="璐圭敤绫诲瀷" prop="aaa">
+ <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in agentList" :value="item.id" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璁¤垂鍛ㄦ湡" prop="">
+ <el-date-picker type="date" v-model="param.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ </el-form-item>
+ <el-form-item label="搴旀敹閲戦" prop="">
+ <el-date-picker type="date" v-model="param.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ </el-form-item>
+ <el-form-item label="搴旀敹鏃ユ湡" prop="">
+ <el-date-picker type="date" v-model="param.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ </el-form-item>
+ <el-form-item label="鎵�灞炲叕鍙�" prop="">
+ <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in comparyList" :value="item.id" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item style="width: 100%;" label="璐﹀崟澶囨敞" prop="">
+ <el-input type="textarea" :rows="4" v-model="param.content" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ </div>
+ </el-form>
+ </div>
+ <div class="main_house">
+ <div class="title">璇烽�夋嫨鎴挎簮</div>
+ <el-cascader style="width: 300px" v-model="value" @change="houseChange" :options="options"
+ :props="{ multiple: true }" collapse-tags clearable />
+ </div>
+ </div>
+ <div class="file_wrap">
+ <div class="head">
+ <div>璐﹀崟闄勪欢</div>
+ <el-upload class="upload-demo" :show-file-list="false" :data="uploadData" :action="uploadImgUrl"
+ :on-success="uploadAvatarSuccess" :before-upload="beforeUpload" :on-error="uploadError">
+ <el-button icon="el-icon-plus" plain>娣诲姞闄勪欢</el-button>
+ </el-upload>
+ </div>
+ <el-table :data="param.list" stripe>
+ <el-table-column prop="" label="闄勪欢鍚嶇О" align="center" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鎿嶄綔浜�" align="center" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鎿嶄綔鏃堕棿" align="center" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鎿嶄綔" align="center" min-width="100">
+ <template v-slot="scope">
+ <span class="cu red">鍒犻櫎</span>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </template>
+ <!-- -->
+ <MemberSearch ref="MemberSearchRef" />
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BaseOpera from '@/components/base/BaseOpera'
+import MemberSearch from '@/components/common/MemberSearch'
+import { rules } from './config'
+import { Message, Loading } from 'element-ui'
+export default {
+ components: {
+ GlobalWindow,
+ MemberSearch
+ },
+ extends: BaseOpera,
+ data() {
+ return {
+ isShowModal: false,
+ title: '',
+ activeTabs: '0',
+ param: {},
+ rules,
+ timeTab: '0',
+
+ loadingInstance: null,
+ uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
+ fileList: [],
+ uploadData: {
+ folder: 'HIDDEN_DANGER_FILE'
+ },
+
+ types: [
+ { name: '鐗╀笟+绉熻祦鍚堝悓', value: 0 },
+ { name: '绉熻祦鍚堝悓', value: 1 },
+ { name: '鐗╀笟鍚堝悓', value: 2 },
+ ],
+ agentList: [], //缁忓姙浜�
+ projectList: [],
+ comparyList: [], // 鍏徃
+ renterList: [], // 绉熷
+ contacts: [], // 鑱旂郴浜�
+ value: [],
+ options: [
+ {
+ value: 1,
+ label: '涓滃崡',
+ children: [{
+ value: 2,
+ label: '涓婃捣',
+ children: [
+ { value: 3, label: '鏅檧' },
+ { value: 4, label: '榛勫煍' },
+ { value: 5, label: '寰愭眹' }
+ ]
+ }, {
+ value: 7,
+ label: '姹熻嫃',
+ children: [
+ { value: 8, label: '鍗椾含' },
+ { value: 9, label: '鑻忓窞' },
+ { value: 10, label: '鏃犻敗' }
+ ]
+ }, {
+ value: 12,
+ label: '娴欐睙',
+ children: [
+ { value: 13, label: '鏉窞' },
+ { value: 14, label: '瀹佹尝' },
+ { value: 15, label: '鍢夊叴' }
+ ]
+ }]
+ },
+ {
+ value: 17,
+ label: '瑗垮寳',
+ children: [{
+ value: 18,
+ label: '闄曡タ',
+ children: [
+ { value: 19, label: '瑗垮畨' },
+ { value: 20, label: '寤跺畨' }
+ ]
+ }, {
+ value: 21,
+ label: '鏂扮枂缁村惥灏旀棌鑷不鍖�',
+ children: [
+ { value: 22, label: '涔岄瞾鏈ㄩ綈' },
+ { value: 23, label: '鍏嬫媺鐜涗緷' }
+ ]
+ }]
+ }
+ ],
+ cactiveTabs: 0,
+ paramCost: {},
+ payMethods: [
+ { name: '涓�娆℃�т粯娆�', value: 0 },
+ { name: '3涓湀涓�浠�', value: 1 },
+ { name: '6涓湀涓�浠�', value: 2 },
+ { name: '1骞翠竴浠�', value: 2 },
+ ],
+ unitOps: [
+ { name: '鍏�/m虏路澶�', value: 0 },
+ { name: '鍏�/m虏路鏈�', value: 1 },
+ { name: '鍏�/澶�', value: 2 },
+ { name: '鍏�/鏈�', value: 3 },
+ { name: '鍏�/骞�', value: 4 },
+ { name: '鍏�/m虏路骞�', value: 5 },
+ { name: '鍏�/鍦�', value: 6 },
+ ],
+ }
+ },
+ created() {
+ const { param } = this
+ this.title = param.id ? '缂栬緫鏀舵璐﹀崟' : '鍒涘缓鏀舵璐﹀崟'
+ },
+ methods: {
+ tabsClick(val) {
+ this.activeTabs = val
+ },
+ timeTabClick(val) {
+ this.timeTab = val
+ },
+ getDetail() {
+
+ },
+ handleRent() {
+ this.$refs.MemberSearchRef.openModal()
+ },
+ houseChange(e) {
+ console.log(e)
+ console.log(this.value)
+
+ },
+ beforeUpload(file) {
+ // if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg', 'image/jpg', 'image/png', 'image/gif'].indexOf(file.type) == -1) {
+ // this.$message.error('璇蜂笂浼犳纭殑瑙嗛/鍥剧墖鏍煎紡')
+ // return false
+ // }
+ this.loadingInstance = Loading.service({
+ lock: true,
+ text: 'Loading',
+ spinner: 'el-icon-loading',
+ background: 'rgba(0, 0, 0, 0.7)'
+ })
+ },
+ uploadError() {
+ this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
+ if (this.loadingInstance) {
+ this.loadingInstance.close()
+ }
+ })
+ },
+ uploadAvatarSuccess(file) {
+ this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
+ if (this.loadingInstance) {
+ this.loadingInstance.close()
+ }
+ })
+ console.log('file', file)
+ const item = file.data[0]
+ if (['.mp4', '.avi', '.flv', '.wmv'].some(char => item.imgaddr.includes(char))) {
+ this.fileList.push({
+ type: 1,
+ fileurl: item.imgaddr,
+ fileurlFull: item.url
+ })
+ } else {
+ this.fileList.push({
+ type: 0,
+ fileurl: item.imgaddr,
+ fileurlFull: item.url
+ })
+ }
+ console.log('file', this.fileList)
+ // this.$set(this.param, 'faceImg', file.imgurl)
+ // this.$set(this.param, 'faceImgUrl', file.imgurlfull)
+ },
+ close() {
+ this.isShowModal = false
+ this.$emit('close')
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '@/assets/style/variables.scss';
+
+
+.cost_tabs {
+ justify-content: flex-start;
+ border: none;
+
+ .tab {
+ height: 36px;
+ line-height: 36px;
+ font-size: 14px;
+ }
+}
+
+.main {
+ display: flex;
+ margin-bottom: 20px;
+
+ .main_content {
+ flex: 1;
+ margin-right: 20px;
+
+ .head {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .tabs {
+ display: flex;
+ margin-bottom: 20px;
+ display: flex;
+ justify-content: center;
+
+ .tab {
+ height: 14px;
+ line-height: 14px;
+ cursor: pointer;
+ border: 1px solid #ebebeb;
+ padding: 12px 24px;
+ }
+
+ .active {
+ font-weight: 500;
+ color: $primary-color;
+ border: 1px solid $primary-color;
+ }
+ }
+ }
+
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+
+ .el-form-item {
+ width: 33.33%;
+ box-sizing: border-box;
+ padding: 0 12px;
+ }
+ }
+ }
+
+ .main_house {
+ width: 320px;
+ padding: 24px 12px;
+ border: 1px solid #c3c6cd;
+ border-radius: 2px;
+
+ .title {
+ font-size: 16px;
+ font-weight: 500;
+ margin-bottom: 30px;
+ }
+ }
+
+}
+
+.total {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: 32px;
+ background-color: #e7e9f5;
+
+ span {
+ width: 160px;
+ text-align: center;
+ }
+}
+
+.file_wrap {
+ padding: 20px 16px;
+ border: 1px solid #c3c6cd;
+ border-radius: 2px;
+
+ .head {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+}
+
+.m_title {
+ font-weight: 500;
+ font-size: 14px;
+ margin-bottom: 15px;
+ margin-top: 10px;
+}
+</style>
diff --git a/admin/src/views/finance/components/config.js b/admin/src/views/finance/components/config.js
new file mode 100644
index 0000000..7d3be5d
--- /dev/null
+++ b/admin/src/views/finance/components/config.js
@@ -0,0 +1,3 @@
+export const rules = {
+ name: [{ required: true, message: '璇疯緭鍏�' }]
+}
\ No newline at end of file
diff --git a/admin/src/views/finance/components/deviceEdit.vue b/admin/src/views/finance/components/deviceEdit.vue
deleted file mode 100644
index 185fbdc..0000000
--- a/admin/src/views/finance/components/deviceEdit.vue
+++ /dev/null
@@ -1,137 +0,0 @@
-<template>
- <GlobalWindow :title="param.id ? '缂栬緫璁惧' : '鏂板缓璁惧'" :confirmWorking="subLoading" :visible.sync="isShowModal" width="600px" @close="close"
- @confirm="handleSub">
- <el-form :model="param" ref="paramRef" :rules="rules">
- <el-form-item label="璁惧缂栫爜" prop="code">
- <el-input v-model="param.code" placeholder="璇疯緭鍏�" v-trim />
- </el-form-item>
- <el-form-item label="璁惧鍚嶇О" prop="name">
- <el-input v-model="param.name" placeholder="璇疯緭鍏�" v-trim />
- </el-form-item>
- <el-form-item label="璁惧鍨嬪彿" prop="">
- <el-input v-model="param.modelNo" placeholder="璇疯緭鍏�" v-trim />
- </el-form-item>
- <el-form-item label="璁惧鍒嗙被" prop="">
- <el-cascader v-model="param.areaIds" @change="changeSel" placeholder="璇烽�夋嫨宸℃鍖哄煙" clearable :options="cateList"
- :props="{
- label: 'name',
- value: 'id',
- children: 'childCategoryList',
- checkStrictly: true
- }"></el-cascader>
- </el-form-item>
- <el-form-item label="璁惧绠$悊鍛�" prop="">
- <el-select v-model="param.realName" filterable clearable>
- <el-option value="0" label="xxx"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="鎵�鍦ㄤ綅缃�" prop="">
- <el-input v-model="param.addr" placeholder="璇疯緭鍏�" v-trim />
-
- </el-form-item>
- <el-form-item label="渚涘簲鍟�" prop="">
- <el-input v-model="param.company" placeholder="璇疯緭鍏�" v-trim />
-
- </el-form-item>
- <el-form-item label="杩愮淮鍐呭" prop="">
- <el-input type="textarea" :rows="4" v-model="param.content" placeholder="璇疯緭鍏�" />
- </el-form-item>
- <el-form-item label="璁惧鐘舵��" prop="">
- <el-select v-model="param.status" filterable clearable>
- <el-option value="0" label="姝e父"></el-option>
- <el-option value="1" label="鎹熷潖"></el-option>
- <el-option value="2" label="鎶ュ簾"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="鐓х墖" prop="">
- <UploadAvatarImage :file="{ 'imgurlfull': param.imgurlfull, 'imgurl': param.imgurl }"
- :uploadData="{ folder: 'projects' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false"
- @uploadBegin="isUploading = true" />
- </el-form-item>
-
-
-
- </el-form>
- </GlobalWindow>
-</template>
-
-<script>
-import GlobalWindow from '@/components/common/GlobalWindow'
-import UploadAvatarImage from '@/components/common/UploadAvatarImage'
-import { fetchList } from '@/api/business/category'
-import { create, updateById } from '@/api/Inspection/device'
-import { Message } from 'element-ui'
-export default {
- components: { GlobalWindow, UploadAvatarImage },
- data() {
- return {
- isShowModal: false,
- subLoading: false,
- param: {},
- cateList: [],
- rules: {
- name: [{ required: true, message: '璇疯緭鍏�' }],
- code: [{ required: true, message: '璇疯緭鍏�' }]
- },
-
- }
- },
- created() {
- this.initData()
- },
- methods: {
- handleSub() {
- const { param, subLoading } = this
- this.$refs['paramRef'].validate((valid) => {
- if (valid) {
- let fn = param.id ? updateById : create
- this.subLoading = true
- fn(param).then(res => {
- if (res.code == 200) {
- this.subLoading = false
- this.$emit('success')
- Message.success('淇濆瓨鎴愬姛')
- this.close()
- }
- }).catch(() => {
- this.subLoading = false
- })
- }
- })
- },
- initData() {
- fetchList({
- model: { type: 5 },
- capacity: 1000,
- page: 1,
- }).then(res => {
- this.cateList = res.records || []
- })
-
- },
- changeSel(e) {
- if (e && e.length == 1) {
- this.$set(this.param, 'catePId', e[0])
- this.$set(this.param, 'cateId', '')
- } else if (e && e.length == 2) {
- this.$set(this.param, 'catePId', e[0])
- this.$set(this.param, 'cateId', e[1])
- } else {
- this.$set(this.param, 'catePId', '')
- this.$set(this.param, 'cateId', '')
- }
- this.search()
- },
- uploadAvatarSuccess(file) {
- this.$set(this.param, 'imgurl', file.imgurl)
- this.$set(this.param, 'imgurlfull', file.imgurlfull)
- },
- close() {
- this.isShowModal = false
- this.$emit('close')
- }
- }
-}
-</script>
-
-<style lang="scss" scoped></style>
\ No newline at end of file
diff --git a/admin/src/views/finance/components/paymentsEdit.vue b/admin/src/views/finance/components/paymentsEdit.vue
new file mode 100644
index 0000000..816f170
--- /dev/null
+++ b/admin/src/views/finance/components/paymentsEdit.vue
@@ -0,0 +1,204 @@
+<template>
+ <GlobalWindow :title="param.id ? '缂栬緫鍏徃' : '鏂板缓鍏徃'" :confirmWorking="subLoading" :visible.sync="isShowModal"
+ width="600px" @close="close" @confirm="handleSub">
+ <div class="main">
+ <div class="main_content">
+ <el-form :model="param" ref="paramRef" :rules="rules">
+ <div class="m_title">娴佹按淇℃伅</div>
+ <div class="list">
+ <el-form-item label="鍏宠仈鍚堝悓" prop="type">
+ <el-select v-model="param.type" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in types" :value="item.value" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璐圭敤绫诲瀷" prop="code">
+ <el-select v-model="param.type" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in types" :value="item.value" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璐圭敤鍛ㄦ湡" prop="aaa">
+ <el-date-picker type="daterange" v-model="param.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ </el-form-item>
+ <el-form-item label="璐﹀崟缂栧彿" prop="">
+ <el-input type="text" v-model="param.content" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ <el-form-item label="搴旀敹閲戦" prop="">
+ <el-input type="text" v-model="param.content" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ <el-form-item label="瀹炴敹閲戦" prop="">
+ <el-input type="text" v-model="param.content" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ <el-form-item label="鎵�灞炲叕鍙�" prop="">
+ <el-select v-model="param.type" placeholder="璇烽�夋嫨" clearable>
+ <el-option v-for="item in types" :value="item.value" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鏀舵敮璐︽埛" prop="">
+ <el-select v-model="param.aaa" placeholder="璇烽�夋嫨" clearable>
+ <el-option :value="0" label="鍚�"></el-option>
+ <el-option :value="1" label="鏄�"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍏ヨ处鏃ユ湡" prop="">
+ <el-date-picker type="date" v-model="param.aaa" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+ </el-form-item>
+ <el-form-item label="澶囨敞" prop="">
+ <el-input type="textarea" :rows="4" class="w400" v-model="param.content" placeholder="璇疯緭鍏�" />
+ </el-form-item>
+ </div>
+ </el-form>
+ </div>
+ </div>
+ <!-- -->
+ <div class="table_wrap">
+ <div class="head">
+ <div class="title">璐﹀崟闄勪欢</div>
+ <el-button type="primary">娣诲姞闄勪欢</el-button>
+ </div>
+ <el-table :data="list" stripe>
+ <el-table-column prop="code" label="闄勪欢鍚嶇О" min-width="100px"></el-table-column>
+ <el-table-column prop="pointName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="鎿嶄綔鏃堕棿" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="鎿嶄綔" min-width="100px">
+ <template v-slot="scope">
+ <span class="red cu" @click="handleDel(scope)">鍒犻櫎</span>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadAvatarImage from '@/components/common/UploadAvatarImage'
+import { create, updateById } from '@/api/business/company'
+import { Message } from 'element-ui'
+export default {
+ components: { GlobalWindow, UploadAvatarImage },
+ data() {
+ return {
+ isShowModal: false,
+ subLoading: false,
+ param: {
+ type: 2,
+ status: '0'
+ },
+ cateList: [],
+ list: [],
+ rules: {
+ name: [{ required: true, message: '璇疯緭鍏�' }],
+ desc: [{ required: true, message: '璇疯緭鍏�' }]
+ },
+ types: []
+
+ }
+ },
+ created() {
+ },
+ methods: {
+ handleSub() {
+ const { param, subLoading } = this
+ this.$refs['paramRef'].validate((valid) => {
+ if (valid) {
+ let fn = param.id ? updateById : create
+ this.subLoading = true
+ fn(param).then(res => {
+ this.subLoading = false
+ this.$emit('success')
+ Message.success('淇濆瓨鎴愬姛')
+ this.close()
+ }).catch(() => {
+ this.subLoading = false
+ })
+ }
+ })
+ },
+ changeSel(e) {
+ if (e && e.length == 1) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', '')
+ } else if (e && e.length == 2) {
+ this.$set(this.param, 'catePId', e[0])
+ this.$set(this.param, 'cateId', e[1])
+ } else {
+ this.$set(this.param, 'catePId', '')
+ this.$set(this.param, 'cateId', '')
+ }
+ this.search()
+ },
+ uploadAvatarSuccess(file) {
+ this.$set(this.param, 'imgurl', file.imgurl)
+ this.$set(this.param, 'imgurlfull', file.imgurlfull)
+ },
+ handleDel(row) {
+ this.list.splice(row.$index, 1)
+
+ },
+ close() {
+ this.isShowModal = false
+ this.$emit('close')
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.main {
+ display: flex;
+ margin-bottom: 20px;
+ padding-top: 20px;
+
+ .main_content {
+ flex: 1;
+ margin-right: 20px;
+
+ .m_title {
+ font-weight: 500;
+ margin-bottom: 12px;
+ margin-top: 10px;
+ }
+
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+
+ .el-form-item {
+ width: 33.33%;
+ box-sizing: border-box;
+ padding: 0 12px;
+ }
+ }
+ }
+
+ .main_house {
+ width: 420px;
+ padding: 24px 12px;
+ border: 1px solid #c3c6cd;
+ border-radius: 2px;
+
+ .title {
+ font-size: 16px;
+ font-weight: 500;
+ margin-bottom: 30px;
+ }
+ }
+
+}
+
+.head {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 20px;
+
+ div {
+ font-weight: 500;
+ }
+}
+.table_wrap{
+ border: 1px solid #e2e2e2;
+ border-radius: 2px;
+ padding: 12px;
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/finance/payments.vue b/admin/src/views/finance/payments.vue
index 107c3a5..3334854 100644
--- a/admin/src/views/finance/payments.vue
+++ b/admin/src/views/finance/payments.vue
@@ -4,14 +4,18 @@
<div class="mt20">
<el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
v-permissions="['business:ywpatrolline:create']">鏂板缓</el-button>
+ <el-button @click="handleEdit()" v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>
</div>
<el-table v-loading="loading" :data="list" stripe>
- <el-table-column prop="code" label="shou" min-width="100" show-overflow-tooltip />
- <el-table-column prop="name" label="鍏徃绠�浠�" min-width="100" show-overflow-tooltip />
- <el-table-column prop="" label="绾崇◣璇嗗埆鍙�" min-width="100" show-overflow-tooltip />
- <el-table-column prop="modelNo" label="鍏徃鍦板潃" min-width="100" show-overflow-tooltip />
- <el-table-column prop="realName" label="鏀舵敮璐︽埛鏁伴噺" min-width="100" show-overflow-tooltip />
- <el-table-column prop="status" label="鐘舵��" min-width="100" show-overflow-tooltip>
+ <el-table-column prop="" label="瀹㈡埛鍚嶇О" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鍚堝悓缂栧彿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="搴忓彿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="璐﹀彿缂栧彿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鏀舵敮绫诲瀷" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鍙戠敓閲戦" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鏀舵鏂瑰紡" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鍏ヨ处鏃ユ湡" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="" label="鐘舵��" min-width="100" show-overflow-tooltip>
<template v-slot="scope">
<el-switch v-model="scope.row.status" active-value="0" inactive-value="1">
</el-switch>
@@ -19,10 +23,10 @@
</el-table-column>
<el-table-column label="鎿嶄綔" min-width="120" fixed="right">
<template slot-scope="{row}">
- <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
- v-permissions="['business:category:update']">缂栬緫</el-button>
+ <!-- <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
+ v-permissions="['business:category:update']">缂栬緫</el-button> -->
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
- v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+ v-permissions="['business:category:delete']">閫�娆�</el-button>
</template>
</el-table-column>
</el-table>
@@ -36,7 +40,7 @@
<script>
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
-import Edit from './components/companyEdit.vue'
+import Edit from './components/paymentsEdit.vue'
import { companyGetList, deleteById } from '@/api/business/company'
export default {
components: {
@@ -61,12 +65,22 @@
{
filed: 'name',
type: 'input',
- label: '鏀舵敮鏉$洰'
+ label: '瀹㈡埛鍚嶇О'
},
{
filed: 'name',
type: 'select',
- label: '鏀舵鍏徃'
+ label: '鏀舵敮绫诲瀷'
+ },
+ {
+ filed: 'name',
+ type: 'select',
+ label: '鏀舵鏂瑰紡'
+ },
+ {
+ filed: 'name',
+ type: 'daterange',
+ label: '鍏ヨ处鏃ユ湡'
},
],
online: true
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 6fa6e1d..2ae93cc 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -227,13 +227,13 @@
}
},
created() {
- this.updateDate()
- setInterval(() => {
- this.updateDate()
- }, 1000 * 60 * 60)
+ // this.updateDate()
+ // setInterval(() => {
+ // this.updateDate()
+ // }, 1000 * 60 * 60)
},
mounted() {
- this.initData()
+ // this.initData()
},
methods: {
SubSuccess(str) {
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index 0569816..ff79acb 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -3,8 +3,8 @@
<img src="@/assets/images/bg@2x.png" class="main_bg" alt="">
<div class="login_wrap">
<div class="login_img">
- <div class="h2">闃滃畞鏂囦綋涓績</div>
- <div class="h3">鏅烘収鐗╂祦鍥尯瀹夋秷涓�浣撳寲绯荤粺</div>
+ <!-- <div class="h2">闃滃畞鏂囦綋涓績</div> -->
+ <div class="h3">鏅烘収鍦洪杩愮淮绠$悊绯荤粺</div>
</div>
<div class="form_wrap">
<div class="tabs">
diff --git a/admin/src/views/project/buildingList.vue b/admin/src/views/project/buildingList.vue
index b3dd1ec..ad86ed4 100644
--- a/admin/src/views/project/buildingList.vue
+++ b/admin/src/views/project/buildingList.vue
@@ -36,8 +36,8 @@
<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="" label="鎴块棿鎬绘暟(闂�)" min-width="80px"></el-table-column>
- <el-table-column prop="" label="鍙嫑鍟嗘埧婧愭暟閲�(闂�)" min-width="100px"></el-table-column>
+ <el-table-column prop="roomNum" label="鎴块棿鎬绘暟(闂�)" min-width="80px"></el-table-column>
+ <el-table-column prop="roomeRentNum" label="鍙嫑鍟嗘埧婧愭暟閲�(闂�)" min-width="100px"></el-table-column>
<el-table-column v-if="containPermissions(['business:ywbuilding:update', 'business:ywbuilding:delete'])"
label="鎿嶄綔" min-width="120" fixed="right">
<template slot-scope="{row}">
@@ -107,7 +107,8 @@
this.$refs.operaYwBuildingWindow.getProject()
},
editFloor(row) {
- this.$refs.FloorLevelRef.getList(row.id)
+ this.$refs.FloorLevelRef.id = row.id
+ this.$refs.FloorLevelRef.getList()
this.$refs.FloorLevelRef.visible = true
},
handleDetail(row) {
diff --git a/admin/src/views/project/components/OperaYwBuildingWindow.vue b/admin/src/views/project/components/OperaYwBuildingWindow.vue
index d095dc0..746d3c6 100644
--- a/admin/src/views/project/components/OperaYwBuildingWindow.vue
+++ b/admin/src/views/project/components/OperaYwBuildingWindow.vue
@@ -1,5 +1,5 @@
<template>
- <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+ <GlobalWindow width="900px" :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
<el-form :model="form" ref="form" :rules="rules">
<el-form-item label="鎵�灞為」鐩�" prop="projectId" clearable placeholder="璇烽�夋嫨椤圭洰">
<el-select v-model="form.projectId" filterable clearable>
diff --git a/admin/src/views/project/components/floorLevel.vue b/admin/src/views/project/components/floorLevel.vue
index 4e5d94c..edc027b 100644
--- a/admin/src/views/project/components/floorLevel.vue
+++ b/admin/src/views/project/components/floorLevel.vue
@@ -1,21 +1,20 @@
<template>
- <GlobalWindow title="妤煎眰绠$悊" :showConfirm="false" :visible.sync="visible" width="800px">
+ <GlobalWindow title="妤煎眰绠$悊" @close="close" :showConfirm="false" :visible.sync="visible" width="800px">
<div class="head">
<div class="title">妤煎眰鍒楄〃</div>
<el-button type="primary" @click="editClick()">鏂板缓妤煎眰</el-button>
</div>
<el-table :data="list" stripe>
- <el-table-column prop="id" label="妤煎眰缂栫爜" min-width="100px"></el-table-column>
+ <el-table-column prop="code" label="妤煎眰缂栫爜" min-width="100px"></el-table-column>
<el-table-column prop="name" label="妤煎眰鍚嶇О" min-width="100px"></el-table-column>
<el-table-column label="鎿嶄綔" min-width="100px">
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaYwBuildingWindow.open('缂栬緫妤煎畤', row)" icon="el-icon-edit"
+ <el-button type="text" @click="editClick(row)" icon="el-icon-edit"
v-permissions="['business:ywbuilding:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
+ <el-button type="text" @click="handleDel(row)" icon="el-icon-delete"
v-permissions="['business:ywbuilding:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
- <el-table-column prop="projectName" label="鎵�灞為」鐩�" min-width="100px"></el-table-column>
</el-table>
<div class="mt20">
<Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
@@ -33,7 +32,7 @@
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="showModal = false">鍙� 娑�</el-button>
- <el-button type="primary" @click="showModal = false">纭� 瀹�</el-button>
+ <el-button type="primary" :loading="subLoading" @click="onSubmit">纭� 瀹�</el-button>
</span>
</el-dialog>
</GlobalWindow>
@@ -42,8 +41,9 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
-import { fetchList, detailById, deleteById, create } from '@/api/project/yeFloor'
+import { fetchList, detailById, deleteById, create, updateById } from '@/api/project/yeFloor'
import Pagination from '@/components/common/Pagination'
+import { Message } from 'element-ui'
export default {
extends: BaseOpera,
components: { GlobalWindow, Pagination },
@@ -54,6 +54,7 @@
id: '',
visible: false,
showModal: false,
+ subLoading: false,
list: [],
pagination: {
pageSize: 10,
@@ -65,29 +66,63 @@
param: {},
rules: {
name: [{ required: true, message: '璇疯緭鍏ユゼ灞傚悕绉�' }],
- area: [{ required: true, message: '璇疯緭鍏ユゼ灞傜紪鐮�' }],
+ code: [{ required: true, message: '璇疯緭鍏ユゼ灞傜紪鐮�' }],
},
}
},
created() {
},
methods: {
+ onSubmit() {
+ this.$refs['form'].validate((valid) => {
+ if (valid) {
+ const { param, id } = this
+ this.subLoading = true
+ let fn = param.id ? updateById : create
+ fn({ ...param, buildingId: id }).then(res => {
+ this.showModal = false
+ this.subLoading = false
+ Message.success('鎻愪氦鎴愬姛')
+ this.getList()
+ }, () => {
+ this.subLoading = false
+ })
+ }
+ })
+ },
getList(buildingId) {
- const { pagination } = this
+ const { pagination, id } = this
+ // this.buildingId =
let capacity = pagination.pageSize
let page = pagination.page
- fetchList({ capacity, page, model: { buildingId } }).then(res => {
- this.list = res
+ fetchList({ capacity, page, model: { buildingId: id } }).then(res => {
+ this.list = res.records
})
},
editClick(row) {
- if(row && row.id){
+ if (row && row.id) {
this.title = '缂栬緫妤煎眰'
- }else{
+ this.param = { ...row }
+ } else {
this.title = '鏂板缓妤煎眰'
+ this.param = {}
}
this.showModal = true
-
+ },
+ handleDel(row) {
+ this.$confirm('纭畾鍒犻櫎璇ユゼ灞�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ deleteById(row.id).then(res => {
+ Message.success('鍒犻櫎鎴愬姛')
+ this.getList()
+ })
+ })
+ },
+ close() {
+ this.$emit('success')
},
handleSizeChange(capacity) {
this.pagination.pageSize = capacity
diff --git a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
index f292342..9eb7fcf 100644
--- a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
+++ b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
@@ -1,5 +1,5 @@
<template>
- <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+ <GlobalWindow width="800px" :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
<el-form :model="form" ref="form" :rules="rules">
<el-form-item label="浣嶇疆绫诲瀷" prop="areaType">
<el-select v-model="form.areaType">
@@ -7,17 +7,38 @@
<el-option label="鍏叡缁翠慨" value="1"></el-option>
</el-select>
</el-form-item>
- <el-form-item label="鎶ヤ慨鍖哄煙">
-
- </el-form-item>
- <el-form-item label="鍒嗙被" prop="cateId">
- <el-select v-model="form.cateId">
- <el-option label="" value=""></el-option>
+ <el-form-item label="閫夋嫨椤圭洰" prop="projectId">
+ <el-select v-model="form.projectId" clearable filterable @change="getBuild">
+ <el-option v-for="item in projectList" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
- <el-form-item label="涓婇棬鏃堕棿" prop="getDate">
- <el-date-picker type="datetime" v-model="form.getDate" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss"
- placeholder="璇烽�夋嫨涓婇棬鏃堕棿"></el-date-picker>
+ <el-form-item label="閫夋嫨妤煎畤" prop="buildingId">
+ <el-select v-model="form.buildingId" clearable filterable @change="changeBuild">
+ <el-option v-for="item in buildList" :label="item.name" :value="item.id" />
+ </el-select>
+ </el-form-item>
+
+ <el-form-item label="閫夋嫨妤煎眰" prop="floorId">
+ <el-select v-model="form.floorId">
+ <el-option v-for="item in levelList" clearable filterable :label="item.name" :value="item.id" />
+ </el-select>
+ </el-form-item>
+ <el-form-item v-if="form.areaType == 0" label="閫夋嫨鎴块棿" prop="roomId">
+ <el-select v-model="form.roomId" clearable filterable>
+ <el-option v-for="item in roomList" :label="item.name" :value="item.id" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍒嗙被" prop="cateId">
+ <el-cascader v-model="form.areaIds" @change="changeSel" placeholder="璇烽�夋嫨宸℃鍖哄煙" clearable :options="cateList"
+ :props="{
+ label: 'name',
+ value: 'id',
+ children: 'childCategoryList'
+ }"></el-cascader>
+ </el-form-item>
+ <el-form-item label="涓婇棬鏃堕棿" v-if="form.areaType == 0" prop="getDate">
+ <el-date-picker type="datetime" v-model="form.getDate" format="yyyy-MM-dd HH:mm"
+ value-format="yyyy-MM-dd HH:mm:ss" placeholder="璇烽�夋嫨涓婇棬鏃堕棿"></el-date-picker>
</el-form-item>
<el-form-item label="鐜板満鍥剧墖">
<div class="file_list">
@@ -37,8 +58,8 @@
</div>
</div>
</el-form-item>
- <el-form-item label="鎯呭喌璇存槑" prop="content">
- <el-input type="textarea" :rows="4" v-model="form.content" placeholder="璇疯緭鍏ユ儏鍐佃鏄�" v-trim />
+ <el-form-item label="鎻忚堪" prop="content">
+ <el-input type="textarea" :rows="4" v-model="form.content" placeholder="璇疯緭鍏�" :maxlength="300" v-trim />
</el-form-item>
</el-form>
<!-- -->
@@ -49,7 +70,13 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
-import { Loading } from 'element-ui'
+import { Loading, Message } from 'element-ui'
+import { getProjectList } from '@/api/project/ywProject'
+import { getBuildList } from '@/api/project/ywBuilding'
+import { getRoomList } from '@/api/project/ywRoom'
+import { fetchList } from '@/api/project/yeFloor'
+import { fetchList as getCateList } from '@/api/business/category.js'
+import { rules } from './config'
export default {
name: 'OperaYwWorkorderWindow',
extends: BaseOpera,
@@ -63,6 +90,7 @@
createDate: '',
editor: '',
editDate: '',
+ floor: '',
isdeleted: '',
title: '',
remark: '',
@@ -72,6 +100,7 @@
getDate: '',
projectId: '',
buildingId: '',
+ floorId: '',
roomId: '',
userId: '',
phone: '',
@@ -90,8 +119,12 @@
},
loadingInstance: null,
// 楠岃瘉瑙勫垯
- rules: {
- },
+ rules,
+ projectList: [],
+ buildList: [],
+ levelList: [],
+ roomList: [],
+ cateList: [],
uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
fileList: [],
uploadData: {
@@ -106,11 +139,79 @@
})
},
methods: {
- beforeUpload (file) {
- if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg','image/jpg', 'image/png', 'image/gif'].indexOf(file.type) == -1) {
+ open(title, target) {
+ this.title = title
+ this.visible = true
+ this.getProject()
+ this.getCate()
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ })
+ },
+ getProject() {
+ getProjectList({}).then(res => {
+ this.projectList = res
+ })
+ },
+ getBuild(projectId) {
+ this.$set(this.form, 'buildingId', '')
+ this.$set(this.form, 'floorId', '')
+ this.$set(this.form, 'roomId', '')
+ getBuildList({ projectId }).then(res => {
+ this.buildList = res
+ })
+ },
+ changeBuild(e) {
+ this.$set(this.form, 'floorId', '')
+ this.$set(this.form, 'roomId', '')
+ this.getLevel(e)
+ this.getRoom(e)
+ },
+ getLevel(buildingId) {
+ fetchList({ model: { buildingId }, capacity: 9999, page: 1 }).then(res => {
+ this.levelList = res.records
+ })
+ },
+ getRoom(buildingId) {
+ const { form } = this
+ getRoomList({ buildingId }).then(res => {
+ this.roomList = res
+ })
+ },
+ changeSel(e) {
+ if(e && e.length == 2){
+ this.$set(this.form, 'cateId', e[1])
+ }else{
+ this.$set(this.form, 'cateId', '')
+ }
+
+ },
+ getCate() {
+ getCateList({
+ model: { type: 3 },
+ capacity: 1000,
+ page: 1,
+ }).then(res => {
+ this.cateList = res.records || []
+ })
+ },
+ beforeUpload(file) {
+ if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg', 'image/jpg', 'image/png', 'image/gif'].indexOf(file.type) == -1) {
this.$message.error('璇蜂笂浼犳纭殑瑙嗛/鍥剧墖鏍煎紡')
return false
}
+ if (this.fileList.length > 8) return Message.warning('鐜板満鍥剧墖涓嶈兘瓒呰繃9寮�')
this.loadingInstance = Loading.service({
lock: true,
text: 'Loading',
@@ -120,14 +221,14 @@
},
uploadError() {
this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
- if(this.loadingInstance){
+ if (this.loadingInstance) {
this.loadingInstance.close()
}
})
},
- uploadAvatarSuccess (file) {
+ uploadAvatarSuccess(file) {
this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
- if(this.loadingInstance){
+ if (this.loadingInstance) {
this.loadingInstance.close()
}
})
@@ -150,10 +251,10 @@
// this.$set(this.param, 'faceImg', file.imgurl)
// this.$set(this.param, 'faceImgUrl', file.imgurlfull)
},
- handleDelImg (i) {
+ handleDelImg(i) {
this.fileList.splice(i, 1)
},
- close(){
+ close() {
this.isShowModal = false
this.$emit('close')
}
@@ -164,7 +265,8 @@
.file_list {
display: flex;
flex-wrap: wrap;
- .avatar-uploader{
+
+ .avatar-uploader {
width: 92px;
height: 92px;
display: flex;
@@ -172,6 +274,7 @@
align-items: center;
border: 1px dashed #d9d9d9;
}
+
.item {
width: 92px;
max-height: 92px;
diff --git a/admin/src/views/workorder/components/config.js b/admin/src/views/workorder/components/config.js
new file mode 100644
index 0000000..5985048
--- /dev/null
+++ b/admin/src/views/workorder/components/config.js
@@ -0,0 +1,9 @@
+export const rules = {
+ content: [{ required: true, message: '璇疯緭鍏�' }],
+
+ areaType: [{ required: true, message: '璇烽�夋嫨' }],
+ projectId: [{ required: true, message: '璇烽�夋嫨' }],
+ buildingId: [{ required: true, message: '璇烽�夋嫨' }],
+ floorId: [{ required: true, message: '璇烽�夋嫨' }],
+ roomId: [{ required: true, message: '璇烽�夋嫨' }],
+}
\ No newline at end of file
--
Gitblit v1.9.3