张延森 4 年前
父节点
当前提交
e72223c23d

+ 8
- 0
src/router.js 查看文件

@@ -122,6 +122,14 @@ const routes = [
122 122
       title: "委托书新增",
123 123
     },
124 124
   },
125
+  {
126
+    path: "/room-key",
127
+    name: "room.key",
128
+    component: () => import("./view/room-key"),
129
+    meta: {
130
+      title: "添加钥匙",
131
+    },
132
+  },
125 133
 ]
126 134
 
127 135
 const router = createRouter({

+ 115
- 0
src/view/room-key/index.vue 查看文件

@@ -0,0 +1,115 @@
1
+<template>
2
+  <div class="room-key">
3
+    <van-form @submit="handleSubmit">
4
+      <van-field
5
+        v-model="formData.keyNo"
6
+        name="keyNo"
7
+        label="钥匙编号"
8
+        placeholder="钥匙编号"
9
+      />
10
+
11
+      <van-field
12
+        v-model="formData.address"
13
+        name="address"
14
+        label="存放地址"
15
+        placeholder="存放地址"
16
+      />
17
+
18
+      <van-field name="url" label="上传图片">
19
+        <template #input>
20
+          <van-uploader
21
+            v-model="imgUrl"
22
+            :after-read="handleUpload"
23
+            :max-count="1"
24
+          />
25
+        </template>
26
+      </van-field>
27
+      <div style="margin: 1em">
28
+        <van-button
29
+          block
30
+          type="warning"
31
+          native-type="submit"
32
+          v-shiro="'room:info:addKey'"
33
+        >
34
+          提交
35
+        </van-button>
36
+      </div>
37
+    </van-form>
38
+  </div>
39
+</template>
40
+
41
+<script>
42
+import { reactive, ref, onMounted } from "vue"
43
+import { Form, Button, Field, Uploader } from "vant"
44
+import { useRoute, useRouter } from "vue-router"
45
+import { useModel } from "@zjxpcyc/vue-tiny-store"
46
+import uploadImage from "@/utils/uploadImage"
47
+import request from "@/utils/request"
48
+import { alert } from "@/utils"
49
+
50
+export default {
51
+  name: "lookrecord",
52
+  components: {
53
+    [Form.name]: Form,
54
+    [Button.name]: Button,
55
+    [Field.name]: Field,
56
+    [Uploader.name]: Uploader,
57
+  },
58
+  setup() {
59
+    const route = useRoute()
60
+    const router = useRouter()
61
+    const roomId = route.query.roomId
62
+    const imgUrl = ref([])
63
+
64
+    const { detail, getDetail } = useModel("room")
65
+    const formData = reactive({
66
+      roomId: roomId,
67
+      keyNo: undefined,
68
+      address: undefined,
69
+      url: undefined, //图片
70
+    })
71
+
72
+    const handleSubmit = () => {
73
+      request({
74
+        url: "/room/key/save",
75
+        data: formData,
76
+        toast: "请稍候...",
77
+      }).then(() => {
78
+        alert("添加成功").then(() => {
79
+          router.go(-1)
80
+        })
81
+      })
82
+    }
83
+
84
+    const handleUpload = (file) => {
85
+      if (file && file.file) {
86
+        uploadImage(file.file, "", 1).then((url) => {
87
+          formData.url = url
88
+          imgUrl.value = [{ url: url }]
89
+        })
90
+      }
91
+    }
92
+
93
+    onMounted(() => {
94
+      if (!detail.roomInfo) {
95
+        getDetail(roomId)
96
+      }
97
+    })
98
+
99
+    return {
100
+      detail,
101
+      handleSubmit,
102
+      formData,
103
+      handleUpload,
104
+      imgUrl,
105
+    }
106
+  },
107
+}
108
+</script>
109
+
110
+<!-- Add "scoped" attribute to limit CSS to this component only -->
111
+<style lang="less" scoped>
112
+.room-key {
113
+  padding-top: 1em;
114
+}
115
+</style>

+ 14
- 12
src/view/secondhand/detail/components/Auth.vue 查看文件

@@ -32,13 +32,14 @@
32 32
           <p>无委托书协议查看权限</p>
33 33
         </template>
34 34
 
35
-        <x-field label=" " v-if="roomAuthBox.isCreate">
36
-          <van-button
37
-            size="small"
38
-            type="danger"
39
-            @click="toggleDialog"
40
-            >删除委托书</van-button
41
-          >
35
+        <x-field
36
+          label=" "
37
+          v-shiro="'room:info:delAuth'"
38
+          v-if="roomAuthBox.isCreate && roomAuth.status === '0'"
39
+        >
40
+          <van-button block size="small" type="danger" @click="toggleDialog">
41
+            删除委托书
42
+          </van-button>
42 43
         </x-field>
43 44
 
44 45
         <x-field label="上传人">
@@ -69,7 +70,8 @@
69 70
     <van-dialog
70 71
       v-model:show="showDialog"
71 72
       title="删除委托书"
72
-      @confirm="handleDeleteAuth"
73
+      @confirm="handleDelete"
74
+      @cancel="toggleDialog"
73 75
     >
74 76
       <van-field
75 77
         v-model="delReason"
@@ -111,11 +113,10 @@ export default {
111 113
     const roomInfo = computed(() => detail.roomInfo)
112 114
 
113 115
     const toggleDialog = () => {
114
-      console.log('-----showDialog.value------>', showDialog.value)
115 116
       showDialog.value = !showDialog.value
116 117
     }
117 118
 
118
-    const handleDeleteAuth = () => {
119
+    const handleDelete = () => {
119 120
       if (!delReason.value) {
120 121
         showWarn("请填写删除原因")
121 122
         return
@@ -128,13 +129,14 @@ export default {
128 129
         reason: delReason.value,
129 130
         roomId: roomInfo.value.id,
130 131
       }
131
-console.log(params,'params')
132
+
132 133
       request({
133 134
         url: "/room/auth/delete",
134 135
         params,
135 136
         toast: "请稍候...",
136 137
       })
137 138
         .then(() => {
139
+          roomAuthBox.roomAuth = undefined
138 140
           showSuccess("删除成功")
139 141
         })
140 142
         .catch((e) => {
@@ -155,7 +157,7 @@ console.log(params,'params')
155 157
       roomInfo,
156 158
       delReason,
157 159
       showDialog,
158
-      handleDeleteAuth,
160
+      handleDelete,
159 161
       toggleDialog,
160 162
     }
161 163
   },

+ 96
- 8
src/view/secondhand/detail/components/Key.vue 查看文件

@@ -1,15 +1,45 @@
1 1
 <template>
2 2
   <x-loading x-id="room.key">
3
-    <p v-if="!roomKey">暂无钥匙信息</p>
4
-    <p v-else-if="roomKey.status === '1'">当前委托书正在审核中</p>
3
+    <div v-if="!roomKey">
4
+      <p>暂无钥匙信息</p>
5
+      <template v-if="roomInfo.status !== '7'">
6
+        <van-button
7
+          block
8
+          size="small"
9
+          type="warning"
10
+          v-shiro="'room:info:addKey'"
11
+          @click="
12
+            $router.push({ name: 'room.key', query: { roomId: roomInfo.id } })
13
+          "
14
+        >
15
+          上传钥匙委托
16
+        </van-button>
17
+      </template>
18
+    </div>
19
+    <p v-else-if="roomKey.status === '1'">当前钥匙协议正在审核中</p>
5 20
     <div v-else>
6 21
       <shiro name="room:info:key">
7 22
         <template #callback>
8
-          <van-empty image="error" description="无钥匙协议查看权限" />
23
+          <div v-if="!roomKeyBox.isCreate">
24
+            <x-field label="上传人">
25
+              {{ roomKey.keyUserName }} ({{ roomKey.keyUserPhone }})
26
+            </x-field>
27
+
28
+            <x-field label="上传时间">
29
+              {{ roomKey.updateTime }}
30
+            </x-field>
31
+          </div>
32
+          <p>无钥匙协议查看权限</p>
9 33
         </template>
10 34
 
11
-        <x-field label=" " v-if="roomKeyBox.isCreate">
12
-          <van-button size="small" type="danger">删除钥匙</van-button>
35
+        <x-field
36
+          label=" "
37
+          v-if="roomKeyBox.isCreate && roomKey.status === '0'"
38
+          v-shiro="'room:info:delKey'"
39
+        >
40
+          <van-button block size="small" type="danger" @click="toggleDialog"
41
+            >删除钥匙</van-button
42
+          >
13 43
         </x-field>
14 44
 
15 45
         <x-field label="上传人">
@@ -31,17 +61,36 @@
31 61
         <van-image width="100" height="100" :src="roomKey.url" />
32 62
       </shiro>
33 63
     </div>
64
+
65
+    <!-- 删除钥匙 -->
66
+    <van-dialog
67
+      v-model:show="showDialog"
68
+      title="删除钥匙"
69
+      @confirm="handleDelete"
70
+      @cancel="toggleDialog"
71
+    >
72
+      <van-field
73
+        v-model="delReason"
74
+        rows="3"
75
+        autosize
76
+        label="留言"
77
+        type="textarea"
78
+        placeholder="请输入留言"
79
+        required
80
+      />
81
+    </van-dialog>
34 82
   </x-loading>
35 83
 </template>
36 84
 
37 85
 <script>
38
-import { Empty, Button, Image } from "vant"
86
+import { Button, Image } from "vant"
39 87
 import { useModel } from "@zjxpcyc/vue-tiny-store"
40
-import { computed, onMounted } from "vue"
88
+import { computed, onMounted, ref } from "vue"
89
+import { showDanger, showSuccess, showWarn } from "@/utils"
90
+import request from "@/utils/request"
41 91
 
42 92
 export default {
43 93
   components: {
44
-    [Empty.name]: Empty,
45 94
     [Button.name]: Button,
46 95
     [Image.name]: Image,
47 96
   },
@@ -52,6 +101,42 @@ export default {
52 101
     const { detail, roomKeyBox, getKey } = useModel("room")
53 102
 
54 103
     const roomKey = computed(() => roomKeyBox.roomKey)
104
+    const roomInfo = computed(() => detail.roomInfo)
105
+
106
+    const delReason = ref()
107
+    const showDialog = ref(false)
108
+
109
+    const toggleDialog = () => {
110
+      showDialog.value = !showDialog.value
111
+    }
112
+
113
+    const handleDelete = () => {
114
+      if (!delReason.value) {
115
+        showWarn("请填写删除原因")
116
+        return
117
+      }
118
+
119
+      showDialog.value = false
120
+
121
+      const params = {
122
+        id: roomKey.value.id,
123
+        reason: delReason.value,
124
+        roomId: roomInfo.value.id,
125
+      }
126
+
127
+      request({
128
+        url: "/room/key/delete",
129
+        params,
130
+        toast: "请稍候...",
131
+      })
132
+        .then(() => {
133
+          roomKeyBox.roomKey = undefined
134
+          showSuccess("删除成功")
135
+        })
136
+        .catch((e) => {
137
+          showDanger(e.message)
138
+        })
139
+    }
55 140
 
56 141
     onMounted(() => {
57 142
       if (!roomKeyBox.roomKey) {
@@ -63,6 +148,9 @@ export default {
63 148
       detail,
64 149
       roomKeyBox,
65 150
       roomKey,
151
+      roomInfo,
152
+      toggleDialog,
153
+      handleDelete,
66 154
     }
67 155
   },
68 156
 }

+ 3
- 1
src/view/secondhand/detail/components/Main.vue 查看文件

@@ -50,6 +50,7 @@
50 50
 
51 51
     <x-field label=" " v-shiro="'room:info:security'">
52 52
       <van-button
53
+        block
53 54
         v-if="!unfollowRoom"
54 55
         size="small"
55 56
         type="warning"
@@ -57,9 +58,10 @@
57 58
         >查看敏感信息(剩余 {{ otherData.leftSecurityNum }} 次)</van-button
58 59
       >
59 60
       <van-button
61
+        block
60 62
         v-else
61 63
         size="small"
62
-        type="primary"
64
+        type="info"
63 65
         v-shiro="'room:info:addFollow'"
64 66
         @click="goToAddFollow"
65 67
         >去跟进</van-button