From f6186d8c2411f8d1d2619be202428db58ec8310a Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 24 一月 2025 13:50:50 +0800
Subject: [PATCH] 1
---
admin/src/views/contract/components/contractEdit.vue | 97 ++++++++++--
admin/src/views/index.vue | 138 ++++++++++++++--
admin/.env.test | 2
admin/src/api/ywWorkDesk.js | 11 +
admin/package-lock.json | 114 ++++++++++---
admin/src/components/business/commonFunctions.vue | 109 +++++++++++++
admin/src/views/contract/components/terminationAgreement.vue | 6
admin/package.json | 2
8 files changed, 410 insertions(+), 69 deletions(-)
diff --git a/admin/.env.test b/admin/.env.test
index 335b876..da78780 100644
--- a/admin/.env.test
+++ b/admin/.env.test
@@ -4,7 +4,7 @@
# VUE_APP_API_URL = 'http://192.168.5.13/gateway_interface'
# 浠诲悍
-VUE_APP_API_URL = 'http://192.168.0.146:10010'
+VUE_APP_API_URL = 'http://192.168.0.133:10010'
# 钀嶅
# VUE_APP_API_URL = 'http://192.168.0.108:10010/'
diff --git a/admin/package-lock.json b/admin/package-lock.json
index 51ea93f..9561c6b 100644
--- a/admin/package-lock.json
+++ b/admin/package-lock.json
@@ -410,8 +410,7 @@
"@babel/helper-string-parser": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
- "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
- "dev": true
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA=="
},
"@babel/helper-validator-identifier": {
"version": "7.14.0",
@@ -2046,8 +2045,7 @@
"@jridgewell/sourcemap-codec": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
- "dev": true
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
},
"@jridgewell/trace-mapping": {
"version": "0.3.25",
@@ -3029,7 +3027,6 @@
"version": "3.5.13",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz",
"integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
- "dev": true,
"requires": {
"@babel/parser": "^7.25.3",
"@vue/shared": "3.5.13",
@@ -3041,14 +3038,12 @@
"@babel/helper-validator-identifier": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
- "dev": true
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="
},
"@babel/parser": {
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
"integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
- "dev": true,
"requires": {
"@babel/types": "^7.26.0"
}
@@ -3057,7 +3052,6 @@
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
"integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
- "dev": true,
"requires": {
"@babel/helper-string-parser": "^7.25.9",
"@babel/helper-validator-identifier": "^7.25.9"
@@ -3066,8 +3060,7 @@
"entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
}
}
},
@@ -3075,7 +3068,6 @@
"version": "3.5.13",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",
"integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
- "dev": true,
"requires": {
"@vue/compiler-core": "3.5.13",
"@vue/shared": "3.5.13"
@@ -3085,7 +3077,6 @@
"version": "3.5.13",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz",
"integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",
- "dev": true,
"requires": {
"@babel/parser": "^7.25.3",
"@vue/compiler-core": "3.5.13",
@@ -3101,14 +3092,12 @@
"@babel/helper-validator-identifier": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
- "dev": true
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="
},
"@babel/parser": {
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
"integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
- "dev": true,
"requires": {
"@babel/types": "^7.26.0"
}
@@ -3117,7 +3106,6 @@
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
"integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
- "dev": true,
"requires": {
"@babel/helper-string-parser": "^7.25.9",
"@babel/helper-validator-identifier": "^7.25.9"
@@ -3127,7 +3115,6 @@
"version": "8.4.49",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
"integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
- "dev": true,
"requires": {
"nanoid": "^3.3.7",
"picocolors": "^1.1.1",
@@ -3140,7 +3127,6 @@
"version": "3.5.13",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz",
"integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",
- "dev": true,
"requires": {
"@vue/compiler-dom": "3.5.13",
"@vue/shared": "3.5.13"
@@ -3210,11 +3196,47 @@
"integrity": "sha1-zrkktOyzucQ4ccekKaAvhCPmIas=",
"dev": true
},
+ "@vue/reactivity": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.13.tgz",
+ "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==",
+ "requires": {
+ "@vue/shared": "3.5.13"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz",
+ "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==",
+ "requires": {
+ "@vue/reactivity": "3.5.13",
+ "@vue/shared": "3.5.13"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz",
+ "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==",
+ "requires": {
+ "@vue/reactivity": "3.5.13",
+ "@vue/runtime-core": "3.5.13",
+ "@vue/shared": "3.5.13",
+ "csstype": "^3.1.3"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz",
+ "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==",
+ "requires": {
+ "@vue/compiler-ssr": "3.5.13",
+ "@vue/shared": "3.5.13"
+ }
+ },
"@vue/shared": {
"version": "3.5.13",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz",
- "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==",
- "dev": true
+ "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ=="
},
"@vue/web-component-wrapper": {
"version": "1.3.0",
@@ -5880,6 +5902,11 @@
}
}
},
+ "csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
"currently-unhandled": {
"version": "0.4.1",
"resolved": "https://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz",
@@ -7354,8 +7381,7 @@
"estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"esutils": {
"version": "2.0.3",
@@ -10448,7 +10474,6 @@
"version": "0.30.13",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.13.tgz",
"integrity": "sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==",
- "dev": true,
"requires": {
"@jridgewell/sourcemap-codec": "^1.5.0"
}
@@ -11865,8 +11890,7 @@
"picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
},
"picomatch": {
"version": "2.2.3",
@@ -14398,6 +14422,11 @@
}
}
},
+ "sortablejs": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.10.2.tgz",
+ "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
+ },
"source-list-map": {
"version": "2.0.1",
"resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz",
@@ -14413,8 +14442,7 @@
"source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
- "dev": true
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
},
"source-map-resolve": {
"version": "0.5.3",
@@ -15834,6 +15862,28 @@
"resolved": "https://registry.nlark.com/vue-router/download/vue-router-3.5.1.tgz?cache=0&sync_timestamp=1620899536020&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-router%2Fdownload%2Fvue-router-3.5.1.tgz",
"integrity": "sha1-7fPPSQeVLR4Fg+B5I3Igxf9utsk="
},
+ "vue-simple-calendar": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/vue-simple-calendar/-/vue-simple-calendar-7.1.0.tgz",
+ "integrity": "sha512-WNbvRVGQQJlStaLPvvpe2ZsB/E1n8eFgUh4hD931ljp2czPA8xT81i4jGD5+jKZT1OHDFpON5mNn0KwO2QC9rA==",
+ "requires": {
+ "vue": "^3.4.15"
+ },
+ "dependencies": {
+ "vue": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz",
+ "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",
+ "requires": {
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/compiler-sfc": "3.5.13",
+ "@vue/runtime-dom": "3.5.13",
+ "@vue/server-renderer": "3.5.13",
+ "@vue/shared": "3.5.13"
+ }
+ }
+ }
+ },
"vue-style-loader": {
"version": "4.1.3",
"resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.3.tgz",
@@ -15868,6 +15918,14 @@
"integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=",
"dev": true
},
+ "vuedraggable": {
+ "version": "2.24.3",
+ "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-2.24.3.tgz",
+ "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==",
+ "requires": {
+ "sortablejs": "1.10.2"
+ }
+ },
"vuescroll": {
"version": "4.17.3",
"resolved": "https://registry.npm.taobao.org/vuescroll/download/vuescroll-4.17.3.tgz",
diff --git a/admin/package.json b/admin/package.json
index 0efce43..2de3805 100644
--- a/admin/package.json
+++ b/admin/package.json
@@ -33,6 +33,8 @@
"vue-cropper": "^0.6.5",
"vue-json-viewer": "^2.2.22",
"vue-router": "^3.5.1",
+ "vue-simple-calendar": "^7.1.0",
+ "vuedraggable": "^2.24.3",
"vuescroll": "^4.17.3",
"vuex": "^3.4.0"
},
diff --git a/admin/src/api/ywWorkDesk.js b/admin/src/api/ywWorkDesk.js
new file mode 100644
index 0000000..b80e640
--- /dev/null
+++ b/admin/src/api/ywWorkDesk.js
@@ -0,0 +1,11 @@
+import request from '@/utils/request'
+
+// 鑾峰彇蹇嵎鑿滃崟妯″潡淇℃伅
+export function getYwQuickList () {
+ return request.get('/visitsAdmin/cloudService/business/ywWorkDesk/getYwQuickList')
+}
+
+// 鏇存柊蹇嵎妯″潡鏁版嵁
+export function updMyYwQuickModel () {
+ return request.get('/visitsAdmin/cloudService/business/ywWorkDesk/updMyYwQuickModel')
+}
diff --git a/admin/src/components/business/commonFunctions.vue b/admin/src/components/business/commonFunctions.vue
new file mode 100644
index 0000000..084f81f
--- /dev/null
+++ b/admin/src/components/business/commonFunctions.vue
@@ -0,0 +1,109 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ width="60%"
+ :visible.sync="visible"
+ @confirm="confirm"
+ >
+ <div class="Analysis">
+ <span>璇锋牴鎹娇鐢ㄤ範鎯嚜瀹氫箟甯哥敤鍔熻兘锛屾敮鎸佹嫋鍔ㄦ帓</span>
+ <draggable v-model="filterList" chosenClass="chosen" forceFallback="true" group="people" animation="1000">
+ <transition-group class="dra">
+ <div class="list" v-for="(item, index) in filterList" :key="index">
+ <div class="list_checkbox">
+ <el-checkbox v-model="item.checked"> </el-checkbox>
+ </div>
+ <img :src="item.path" />
+ <div class="list_title">{{ item.name }}</div>
+ </div>
+ </transition-group>
+ </draggable>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+ import BaseOpera from '@/components/base/BaseOpera'
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ import { updMyYwQuickModel } from '@/api/ywWorkDesk'
+ import draggable from 'vuedraggable'
+ export default {
+ name: 'commonFunctions',
+ extends: BaseOpera,
+ components: { GlobalWindow, draggable },
+ data () {
+ return {
+ filterList: []
+ }
+ },
+ methods: {
+ open (title, target) {
+ this.title = title
+ this.filterList = target
+ this.visible = true
+ },
+ confirm () {
+ this.isWorking = true
+ updMyYwQuickModel(this.form)
+ .then(() => {
+ this.visible = false
+ this.$tip.apiSuccess('淇敼鎴愬姛')
+ this.$emit('success')
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .Analysis {
+ width: 100%;
+ margin-top: 20px;
+ display: flex;
+ flex-direction: column;
+ span {
+ font-weight: 400;
+ font-size: 14px;
+ color: #333333;
+ margin-bottom: 20px;
+ }
+ .dra {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ }
+ .list {
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ width: 24%;
+ height: 80px;
+ background: #FFFFFF;
+ border-radius: 8px;
+ border: 1px solid #DFE2E8;
+ margin-bottom: 10px;
+ padding: 0 20px;
+ box-sizing: border-box;
+ position: relative;
+ .list_checkbox {
+ position: absolute;
+ right: 10px;
+ top: 10px;
+ }
+ img {
+ width: 40px;
+ height: 40px;
+ user-select: none;
+ margin-right: 10px;
+ }
+ .list_title {
+ width: 130px;
+ font-size: 11px;
+ user-select: none;
+ }
+ }
+ }
+</style>
diff --git a/admin/src/views/contract/components/contractEdit.vue b/admin/src/views/contract/components/contractEdit.vue
index 84a9fe8..6867919 100644
--- a/admin/src/views/contract/components/contractEdit.vue
+++ b/admin/src/views/contract/components/contractEdit.vue
@@ -178,8 +178,15 @@
</div>
</div>
<el-button style="width: 100%;height: 48px;" type="primary" plain @click="generateZL">鐢熸垚璐﹀崟鏄庣粏</el-button>
+ <div style="width: 100%; text-align: right; margin-bottom: 10px; margin-top: 15px;" v-if="zlList.length > 0">
+ <el-button icon="el-icon-edit" v-if="!isShow" @click="changeEdit(1)">缂栬緫</el-button>
+ <el-popconfirm v-if="isShow" title="鏄惁鏀惧純鎵嬪姩淇敼鎵�濉殑鏁版嵁锛�" @confirm="isShow = false">
+ <el-button slot="reference" style="margin-right: 15px;">鍙栨秷</el-button>
+ </el-popconfirm>
+ <el-button type="primary" v-if="isShow" @click="changeNum(1)">淇濆瓨</el-button>
+ </div>
<el-table :data="zlList" class="mt20" stripe>
- <el-table-column label="璐圭敤绫诲瀷" align="center" show-overflow-tooltip>
+ <el-table-column label="璐圭敤绫诲瀷" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
<span v-if="row.costType === 0">绉熻祦璐�</span>
<span v-if="row.costType === 1">鐗╀笟璐�</span>
@@ -191,20 +198,26 @@
<span v-if="row.costType === 7">淇濊瘉閲�</span>
</template>
</el-table-column>
- <el-table-column label="鏈熸暟" align="center" show-overflow-tooltip>
+ <el-table-column label="鏈熸暟" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
<el-tag type="success" v-if="row.sortnum > 0">{{ row.sortnum }}</el-tag>
</template>
</el-table-column>
- <el-table-column label="鍖洪棿" align="center" show-overflow-tooltip>
+ <el-table-column label="鍖洪棿" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
{{ row.startDate }} ~ {{ row.endDate }}
</template>
</el-table-column>
- <el-table-column prop="planPayDate" label="浠樻鏃�" align="center" show-overflow-tooltip />
- <el-table-column label="搴旀敹" align="center" show-overflow-tooltip>
+ <el-table-column prop="planPayDate" label="浠樻鏃�" align="center" :key="Date.now()" show-overflow-tooltip />
+ <el-table-column label="搴旀敹" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
- {{ row.receivableFee }}鍏�
+ <span v-if="[2,3].includes(row.costType)">{{ row.totleFee }}鍏�</span>
+ <template v-else>
+ <span v-if="!isShow">{{ row.totleFee }}鍏�</span>
+ <div style="display: flex; align-items: center;" v-if="isShow">
+ <el-input v-model="row.totleFeeCopy" placeholder="璇疯緭鍏�"></el-input>鍏�
+ </div>
+ </template>
</template>
</el-table-column>
</el-table>
@@ -273,8 +286,15 @@
</div>
</div>
<el-button style="width: 100%;height: 48px;" type="primary" plain @click="generateWY">鐢熸垚璐﹀崟鏄庣粏</el-button>
+ <div style="width: 100%; text-align: right; margin-bottom: 10px; margin-top: 15px;">
+ <el-button icon="el-icon-edit" v-if="!isShow" @click="changeEdit(1)">缂栬緫</el-button>
+ <el-popconfirm v-if="isShow" title="鏄惁鏀惧純鎵嬪姩淇敼鎵�濉殑鏁版嵁锛�" @confirm="isShow = false">
+ <el-button slot="reference" style="margin-right: 15px;">鍙栨秷</el-button>
+ </el-popconfirm>
+ <el-button type="primary" v-if="isShow" @click="changeNum(2)">淇濆瓨</el-button>
+ </div>
<el-table :data="wyList" class="mt20" stripe>
- <el-table-column label="璐圭敤绫诲瀷" align="center" show-overflow-tooltip>
+ <el-table-column label="璐圭敤绫诲瀷" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
<span v-if="row.costType === 0">绉熻祦璐�</span>
<span v-if="row.costType === 1">鐗╀笟璐�</span>
@@ -286,20 +306,26 @@
<span v-if="row.costType === 7">淇濊瘉閲�</span>
</template>
</el-table-column>
- <el-table-column label="鏈熸暟" align="center" show-overflow-tooltip>
+ <el-table-column label="鏈熸暟" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
<el-tag type="success" v-if="row.sortnum > 0">{{ row.sortnum }}</el-tag>
</template>
</el-table-column>
- <el-table-column label="鍖洪棿" align="center" show-overflow-tooltip>
+ <el-table-column label="鍖洪棿" align="center" :key="Date.now()" show-overflow-tooltip>
<template slot-scope="{row}">
{{ row.startDate }} ~ {{ row.endDate }}
</template>
</el-table-column>
- <el-table-column prop="planPayDate" label="浠樻鏃�" align="center" show-overflow-tooltip />
- <el-table-column prop="receivableFee" label="搴旀敹" align="center" show-overflow-tooltip>
+ <el-table-column prop="planPayDate" label="浠樻鏃�" :key="Date.now()" align="center" show-overflow-tooltip />
+ <el-table-column label="搴旀敹" :key="Date.now()" align="center" show-overflow-tooltip>
<template slot-scope="{row}">
- {{ row.receivableFee }}鍏�
+ <span v-if="[2,3].includes(row.costType)">{{ row.totleFee }}鍏�</span>
+ <template v-else>
+ <span v-if="!isShow">{{ row.totleFee }}鍏�</span>
+ <div style="display: flex; align-items: center;" v-if="isShow">
+ <el-input v-model="row.totleFeeCopy" placeholder="璇疯緭鍏�"></el-input>鍏�
+ </div>
+ </template>
</template>
</el-table-column>
</el-table>
@@ -309,6 +335,7 @@
</div>
</div>
</div>
+ <div style="width: 100%; height: 50px;"></div>
<div class="window__footer">
<slot name="footer">
<el-button @click="confirm" :loading="confirmWorking" type="primary">{{ activeTabs === 0 ? '涓嬩竴姝�' :
@@ -378,7 +405,6 @@
advanceDays: ''
}
],
-
wyDeposit: '',
wyPayType: '',
@@ -450,7 +476,8 @@
],
- houseLvThree: []
+ houseLvThree: [],
+ isShow: false
}
},
methods: {
@@ -502,6 +529,39 @@
this.form.roundedUp = 0
// this.getHouseTree()
})
+ },
+ changeEdit(type) {
+ if (type === 1) {
+ this.zlList.forEach(item => {
+ item.totleFeeCopy = JSON.parse(JSON.stringify(item.totleFee))
+ })
+ this.isShow = true
+ } else if (type === 2) {
+ this.isShow = false
+ }
+ },
+ changeNum(type) {
+ // 绉熻祦璁$畻
+ if (type === 1) {
+ let num = 0
+ this.zlList.forEach(item => {
+ if (item.costType !== 2) {
+ num += Number(item.totleFeeCopy)
+ item.totleFee = JSON.parse(JSON.stringify(item.totleFeeCopy))
+ }
+ })
+ this.zlPrice = num
+ } else if (type === 2) {
+ let num = 0
+ this.wyList.forEach(item => {
+ if (item.costType !== 3) {
+ num += Number(item.totleFeeCopy)
+ item.totleFee = JSON.parse(JSON.stringify(item.totleFeeCopy))
+ }
+ })
+ this.wyPrice = num
+ }
+ this.isShow = false
},
changePayType(e) {
if (e === 0) {
@@ -653,7 +713,7 @@
submit() {
// 璋冪敤鏂板缓鎺ュ彛
this.isWorking = true
- create({ ...this.form })
+ create({ ...this.form, ywContractBillDTOList: [...this.wyList, ...this.zlList] })
.then(res => {
this.visible = false
this.$tip.apiSuccess('鍒涘缓鎴愬姛')
@@ -711,8 +771,9 @@
let zlPrice = 0
let arr = []
res.forEach(item => {
+ item.totleFeeCopy = JSON.parse(JSON.stringify(item.totleFee))
if (item.costType === 0) {
- zlPrice += item.receivableFee
+ zlPrice += item.totleFee
}
arr.push(item)
})
@@ -728,7 +789,8 @@
let arr = []
res.forEach(item => {
if (item.costType === 1) {
- zlPrice += item.receivableFee
+ zlPrice += item.totleFee
+ item.totleFeeCopy = JSON.parse(JSON.stringify(item.totleFee))
}
arr.push(item)
})
@@ -817,6 +879,7 @@
this.activeTabs = val
},
ctabsClick(val) {
+ this.isShow = false
this.cactiveTabs = val
},
handleRent() {
diff --git a/admin/src/views/contract/components/terminationAgreement.vue b/admin/src/views/contract/components/terminationAgreement.vue
index d9d9280..835fe12 100644
--- a/admin/src/views/contract/components/terminationAgreement.vue
+++ b/admin/src/views/contract/components/terminationAgreement.vue
@@ -16,7 +16,11 @@
<el-table :data="info.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 label="妤煎眰/鎴垮彿" show-overflow-tooltip>
+ <template slot-scope="{row}">
+ {{row.floorName}}{{row.roomNum}}
+ </template>
+ </el-table-column>
<el-table-column prop="area" label="闈㈢Н" show-overflow-tooltip></el-table-column>
</el-table>
</div>
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 3ac4dda..999bd92 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -30,15 +30,15 @@
<div class="main_left_menu">
<div class="main_left_menu_title">
<span>甯哥敤鍔熻兘</span>
- <div class="main_left_menu_title_edit">
+ <div class="main_left_menu_title_edit" @click="$refs.commonFunctions.open('甯哥敤鍔熻兘绠$悊', list)">
<img src="@/assets/indexIcon/ic_daibangongdan@2x.png" />
<span>鑷畾涔夊姛鑳�</span>
</div>
</div>
<div class="main_left_menu_list">
- <div class="list_item" v-for="(item, index) in menu" :key="index">
+ <div class="list_item" v-for="(item, index) in list" :key="index">
<div class="list_item_left">
- <img :src="item.icon" />
+ <img :src="item.path" />
<span>{{item.name}}</span>
</div>
<i class="el-icon-arrow-right"></i>
@@ -67,13 +67,33 @@
</el-select>
</div>
<div class="main_right_date">
- <el-calendar v-model="value" :mark-data="markData"></el-calendar>
+ <el-calendar v-model="value"></el-calendar>
+ </div>
+ <div class="main_right_rc">
+ <div class="main_right_rc_title">褰撴棩鏃ョ▼锛�3锛�</div>
+ <div class="main_right_rc_list">
+ <div class="main_right_rc_list_row" v-for="(item, index) in 5" :key="index">
+ <div class="top">
+ <div class="top_left">
+ <div class="top_left_dian"></div>
+ <div class="top_left_title">鐩樼偣閫氱煡</div>
+ </div>
+ <div class="top_date">2024-12-13 12:53:12</div>
+ </div>
+ <div class="bottom">
+ 銆愮洏鐐硅鍒掑悕绉般�戝皢鍦ㄣ��2024-12-1
+ </div>
+ </div>
+ </div>
</div>
</div>
+ <CommonFunctions ref="commonFunctions" />
</div>
</template>
<script>
+import CommonFunctions from '@/components/business/commonFunctions'
+import { getYwQuickList } from '@/api/ywWorkDesk'
export default {
data() {
return {
@@ -89,25 +109,24 @@
{ name: '璐﹀崟鍒楄〃', icon: require('@/assets/indexIcon/ic_zhangdanliebiao@2x.png') },
{ name: '鏂板鍏ュ簱鍗�', icon: require('@/assets/indexIcon/ic_xinzengruku@2x.png') },
{ name: '鏂板鍑哄簱鍗�', icon: require('@/assets/indexIcon/ic_xinzengchuku@2x.png') },
- { name: '璧勪骇娓呭崟', icon: require('@/assets/indexIcon/ic_zichan@2x.png') },
+ { name: '鐗╂枡娓呭崟', icon: require('@/assets/indexIcon/ic_zichan@2x.png') },
],
- options: [],
- value: '',
- markData: [
- {
- date: '2025-01-22', // 鏍囪鐨勬棩鏈�
- // 鑷畾涔夋爣璁板唴瀹�
- content: '<div style="color: red;">閲嶈浜嬩欢</div>'
- },
- {
- date: '2025-01-19',
- content: '鐢熸棩'
- }
- ]
+ list: [],
+ value: new Date()
}
},
+ components: { CommonFunctions },
+ created () {
+ this.getYwQuickLists()
+ },
methods: {
-
+ getYwQuickLists() {
+ getYwQuickList({})
+ .then(res => {
+ console.log(res)
+ this.list = res
+ })
+ }
}
}
</script>
@@ -115,12 +134,12 @@
<style lang="scss" scoped>
.main {
width: 100%;
- height: calc(100vh - 48px - 56px - 35px);
+ /*height: calc(100vh - 48px - 56px - 35px);*/
padding: 15px;
box-sizing: border-box;
background: #F4F7FC;
display: flex;
- align-items: center;
+ align-items: self-start;
justify-content: space-between;
.main_left {
flex: 1;
@@ -199,6 +218,7 @@
color: #222222;
}
.main_left_menu_title_edit {
+ cursor: pointer;
display: flex;
align-items: center;
img {
@@ -266,9 +286,68 @@
color: #222222;
margin-bottom: 12px;
}
+ .main_right_rc {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ .main_right_rc_title {
+ font-weight: 500;
+ font-size: 16px;
+ color: #222222;
+ margin-bottom: 15px;
+ }
+ .main_right_rc_list {
+ width: 100%;
+ height: 300px;
+ overflow-y: scroll;
+ .main_right_rc_list_row {
+ width: 100%;
+ padding: 15px;
+ box-sizing: border-box;
+ background: #F4F7FC;
+ border-radius: 2px;
+ margin-bottom: 10px;
+ .top {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .top_left {
+ display: flex;
+ align-items: center;
+ .top_left_dian {
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ background: #FF9E00;
+ margin-right: 10px;
+ }
+ .top_left_title {
+ font-weight: 500;
+ font-size: 15px;
+ color: #222222;
+ }
+ }
+ .top_date {
+ font-weight: 400;
+ font-size: 12px;
+ color: #999999;
+ }
+ }
+ .bottom {
+ font-weight: 400;
+ font-size: 13px;
+ color: #666666;
+ margin-top: 8px;
+ }
+ }
+ }
+ }
.main_right_date {
width: 100%;
- height: 300px;
+ ::v-deep .el-calendar__header {
+ display: none;
+ }
::v-deep .el-calendar-table tr td:first-child{
border: none;
}
@@ -283,6 +362,21 @@
align-items: center;
justify-content: center;
}
+ ::v-deep thead th {
+ height: 20px;
+ border-bottom: 1px solid #DFE2E8;
+ }
+ ::v-deep.el-calendar-table .el-calendar-day{
+ width: 100%;
+ height: 50px;
+ text-align: center;
+ }
+ ::v-deep .el-calendar-table td.is-selected {
+ background: #3E80EF;
+ }
+ ::v-deep .el-calendar-table .el-calendar-day:hover {
+ background: none;
+ }
}
}
}
--
Gitblit v1.9.3