소스 검색

Merge branch 'master' of http://git.ycjcjy.com/ershoufang/mp-agent into master

zlisen 4 년 전
부모
커밋
a2d615fa78

+ 32
- 0
src/components/GSection/index.vue 파일 보기

1
+<template>
2
+  <div class="g-section">
3
+    <h2 class="g-section-title">{{title}}</h2>
4
+    <slot></slot>
5
+  </div>
6
+</template>
7
+
8
+<script>
9
+export default {
10
+  props: {
11
+    title: String,
12
+  },
13
+  setup() {
14
+    
15
+  }
16
+}
17
+</script>
18
+
19
+<style lang="less">
20
+.g-section {
21
+  width: 100%;
22
+
23
+  &-title {
24
+    margin: 0;
25
+    padding: 1.5em 1em 1em;
26
+    color: rgba(69, 90, 100, 0.6);
27
+    font-size: 1em;
28
+    font-weight: 500;
29
+    line-height: 1.2em;
30
+  }
31
+}
32
+</style>

+ 2
- 0
src/main.js 파일 보기

6
 import 'vant/lib/index.css';
6
 import 'vant/lib/index.css';
7
 
7
 
8
 import { Notify, Dialog } from 'vant'
8
 import { Notify, Dialog } from 'vant'
9
+import GSection from './components/GSection'
9
 import Shiro from './components/Shiro'
10
 import Shiro from './components/Shiro'
10
 import XLoading from './components/XLoading'
11
 import XLoading from './components/XLoading'
11
 import XField from './components/XField'
12
 import XField from './components/XField'
18
 
19
 
19
 app.component(Notify.Component.name, Notify.Component)
20
 app.component(Notify.Component.name, Notify.Component)
20
 app.component(Dialog.Component.name, Dialog.Component)
21
 app.component(Dialog.Component.name, Dialog.Component)
22
+app.component('g-section', GSection)
21
 app.component('x-loading', XLoading)
23
 app.component('x-loading', XLoading)
22
 app.component('x-field', XField)
24
 app.component('x-field', XField)
23
 app.component('shiro', Shiro)
25
 app.component('shiro', Shiro)

+ 22
- 0
src/store/models/room.js 파일 보기

151
     })
151
     })
152
   }
152
   }
153
 
153
 
154
+  // 房源编辑
155
+  const houseEdit = data => {
156
+    return request({
157
+      url: '/room/save',
158
+      data,
159
+      toast: '请稍候...',
160
+    }).then(() => {
161
+      return
162
+    })
163
+  }
164
+
165
+  // 实勘列表
166
+  const getRescList = roomId => {
167
+    return request({
168
+      url: '/room/resc/list',
169
+      params: { roomId },
170
+      loadingId: 'room.resc.list',
171
+    })
172
+  }
173
+
154
 
174
 
155
   return {
175
   return {
156
     list,
176
     list,
169
     addOwnerTel,
189
     addOwnerTel,
170
     getBuilding,
190
     getBuilding,
171
     closeHouse,
191
     closeHouse,
192
+    houseEdit,
193
+    getRescList,
172
   }
194
   }
173
 }
195
 }

+ 12
- 1
src/utils/index.js 파일 보기

1
 
1
 
2
-import { Notify } from 'vant'
2
+import { Notify, Dialog } from 'vant'
3
 
3
 
4
 export function showDanger(message) {
4
 export function showDanger(message) {
5
   return Notify({ type: 'danger', message })
5
   return Notify({ type: 'danger', message })
6
 }
6
 }
7
 
7
 
8
+export function showWarn(message) {
9
+  return Notify({ type: 'warning', message })
10
+}
11
+
12
+export function alert(message, opts) {
13
+  return Dialog({
14
+    ...(opts || {}),
15
+    message
16
+  })
17
+}
18
+
8
 export function isEmpty (o) {
19
 export function isEmpty (o) {
9
   if (o === undefined || o === null || o === '') {
20
   if (o === undefined || o === null || o === '') {
10
     return true
21
     return true

+ 1
- 0
src/utils/request/index.js 파일 보기

17
     config.toastInst = Toast.loading({
17
     config.toastInst = Toast.loading({
18
       message: config.toast,
18
       message: config.toast,
19
       forbidClick: true,
19
       forbidClick: true,
20
+      overlay: true,
20
       duration: 0,
21
       duration: 0,
21
     })
22
     })
22
   }
23
   }

+ 90
- 65
src/view/resc/index.vue 파일 보기

1
 <template>
1
 <template>
2
-  <div class="resc ">
3
-    <div class="resc-top van-hairline--bottom">
4
-      <van-row>
5
-        <van-col span="12">
6
-          <p>门牌</p>
7
-          <van-uploader
8
-            v-model="houseNumberImg"
9
-            max-count="1"
10
-            :after-read="afterRead"
11
-          />
12
-        </van-col>
13
-        <van-col span="12">
14
-          <p>户型</p>
15
-          <van-uploader
16
-            v-model="houseNumberImg"
17
-            max-count="1"
18
-            :after-read="afterRead"
19
-          />
20
-        </van-col>
21
-      </van-row>
22
-    </div>
23
-    <div class="resc-top van-hairline--bottom">
24
-      <p>客厅</p>
25
-      <van-uploader v-model="houseNumberImg" :after-read="afterRead" />
26
-    </div>
27
-    <div class="resc-top van-hairline--bottom">
28
-      <p>卧室</p>
29
-      <van-uploader v-model="houseNumberImg" :after-read="afterRead" />
30
-    </div>
31
-    <div class="resc-top van-hairline--bottom">
32
-      <p>厨房</p>
33
-      <van-uploader v-model="houseNumberImg" :after-read="afterRead" />
34
-    </div>
35
-    <div class="resc-top van-hairline--bottom">
36
-      <p>卫生间</p>
37
-      <van-uploader v-model="houseNumberImg" :after-read="afterRead" />
38
-    </div>
39
-    <div class=" resc-top van-hairline--bottom">
40
-      <p>其他</p>
41
-      <van-uploader v-model="houseNumberImg" :after-read="afterRead" />
42
-    </div>
43
-    <div class=" resc-top van-hairline--bottom">
44
-      <van-button color="rgb(215, 105, 58)" round type="primary"
45
-      style="border-radius:5px"
46
-        >保存审核并提交</van-button
47
-      >
2
+  <x-loading x-id="room.resc.list">
3
+    <div class="resc">
4
+      <div class="mgtp" v-if="initData.limitFlag === 'rescLimit' && initData.rescStatus === '9'">
5
+        <p>房源录入后4小时内仅允许房源录入人上传图片,目前尚无权限上传实勘图</p>
6
+      </div>
7
+      <div class="mgtp" v-if="initData.rescStatus === '1'">
8
+        <p>当前实勘图正在审核中</p>
9
+      </div>
10
+      <div class="mgtp" v-if="initData.rescStatus === '0'">
11
+        <x-field label="实勘人">{{initData.rescUser}}</x-field>
12
+        <x-field label="达成时间">{{initData.rescTime}}</x-field>
13
+      </div>
14
+
15
+      <g-section title="门牌">
16
+        <van-uploader
17
+          v-model="houseNumberImg"
18
+          max-count="1"
19
+          :after-read="afterRead"
20
+        />
21
+      </g-section>
22
+
23
+      <g-section title="户型">
24
+        <van-uploader
25
+          v-model="houseNumberImg"
26
+          max-count="1"
27
+          :after-read="afterRead"
28
+        />
29
+      </g-section>
30
+
31
+      <g-section title="客厅">
32
+        <van-uploader
33
+          v-model="houseNumberImg"
34
+          :after-read="afterRead"
35
+        />
36
+      </g-section>
37
+
38
+      <g-section title="卧室">
39
+        <van-uploader
40
+          v-model="houseNumberImg"
41
+          :after-read="afterRead"
42
+        />
43
+      </g-section>
44
+
45
+      <g-section title="厨房">
46
+        <van-uploader
47
+          v-model="houseNumberImg"
48
+          :after-read="afterRead"
49
+        />
50
+      </g-section>
51
+
52
+      <g-section title="卫生间">
53
+        <van-uploader
54
+          v-model="houseNumberImg"
55
+          :after-read="afterRead"
56
+        />
57
+      </g-section>
58
+
59
+      <g-section title="其他">
60
+        <van-uploader
61
+          v-model="houseNumberImg"
62
+          :after-read="afterRead"
63
+        />
64
+      </g-section>
65
+
66
+      <div style="margin-top: 2em">
67
+        <van-button block type="warning">
68
+          保存审核并提交
69
+        </van-button>
70
+      </div>
48
     </div>
71
     </div>
49
-  </div>
72
+  </x-loading>
50
 </template>
73
 </template>
51
 
74
 
52
 <script>
75
 <script>
53
 import { ref } from "vue";
76
 import { ref } from "vue";
77
+import { useRoute } from 'vue-router'
78
+import { useModel } from '@zjxpcyc/vue-tiny-store'
54
 //
79
 //
55
 import {
80
 import {
56
   Uploader,
81
   Uploader,
57
-  Row,
58
-  Col,
59
   Button,
82
   Button,
60
-
61
-  //   Dialog,
62
-} from "vant";
63
-
64
-// import { router } from "../../../router";
83
+} from "vant"
84
+import { showDanger } from '@/utils';
65
 
85
 
66
 export default {
86
 export default {
67
-  name: "secondhanddetail",
68
   components: {
87
   components: {
69
-    [Row.name]: Row,
70
-    [Col.name]: Col,
71
-
72
     [Uploader.name]: Uploader,
88
     [Uploader.name]: Uploader,
73
     [Button.name]: Button,
89
     [Button.name]: Button,
74
   },
90
   },
75
-  data() {
76
-    return {};
77
-  },
78
 
91
 
79
   setup() {
92
   setup() {
80
-    const houseNumberImg = ref([]);
93
+    const initData = ref({})
94
+    const route = useRoute()
95
+
96
+    const { getRescList } = useModel('room')
97
+
98
+    getRescList(route.query.roomId).then(res => {
99
+      initData.value = res
100
+    }).catch(e => {
101
+      showDanger(e.message)
102
+    })
81
 
103
 
82
     const fileList = ref([
104
     const fileList = ref([
83
       { url: "https://img.yzcdn.cn/vant/leaf.jpg" },
105
       { url: "https://img.yzcdn.cn/vant/leaf.jpg" },
92
     };
114
     };
93
 
115
 
94
     return {
116
     return {
95
-      houseNumberImg,
117
+      initData,
96
       fileList,
118
       fileList,
97
       afterRead,
119
       afterRead,
98
     };
120
     };
103
 <!-- Add "scoped" attribute to limit CSS to this component only -->
125
 <!-- Add "scoped" attribute to limit CSS to this component only -->
104
 <style lang="less" scoped>
126
 <style lang="less" scoped>
105
 .resc {
127
 .resc {
106
-  &-top {
107
-    padding: 20px;
128
+  background: #fff;
129
+  padding: 1em;
130
+
131
+  .mgtp {
132
+    margin-top: 1em;
108
   }
133
   }
109
 }
134
 }
110
 </style>
135
 </style>

+ 1
- 1
src/view/secondhand/detail/components/Main.vue 파일 보기

5
     </x-field>
5
     </x-field>
6
     
6
     
7
     <x-field label="所属楼盘">
7
     <x-field label="所属楼盘">
8
-      {{roomInfo.buildingName}}
8
+      {{otherData.building.buildingName}}
9
     </x-field>
9
     </x-field>
10
     
10
     
11
     <x-field label="所属区县">
11
     <x-field label="所属区县">

+ 7
- 0
src/view/secondhand/detail/components/MoreActions.vue 파일 보기

46
           @click="$router.push({name: 'secondhand.edit', query: {roomId: roomInfo.id}})"
46
           @click="$router.push({name: 'secondhand.edit', query: {roomId: roomInfo.id}})"
47
         />
47
         />
48
 
48
 
49
+        <van-cell
50
+          v-shiro="'room:info'"
51
+          title="房源实勘"
52
+          icon="photograph"
53
+          @click="$router.push({name: 'resc', query: {roomId: roomInfo.id}})"
54
+        />
55
+        
49
         <van-cell
56
         <van-cell
50
           v-shiro="'room:info:share'"
57
           v-shiro="'room:info:share'"
51
           title="分享房源"
58
           title="分享房源"

+ 3
- 3
src/view/secondhand/detail/index.vue 파일 보기

168
     const {
168
     const {
169
       detail,
169
       detail,
170
       getDetail,
170
       getDetail,
171
-      updateProtection,
172
     } = useModel("room")
171
     } = useModel("room")
173
 
172
 
174
     onMounted(() => {
173
     onMounted(() => {
236
     const roomOtherData = computed(() => {
235
     const roomOtherData = computed(() => {
237
       return {
236
       return {
238
         leftSecurityNum: detail.leftSecurityNum,
237
         leftSecurityNum: detail.leftSecurityNum,
239
-        roomCity: {},
240
-        roomBusi: {}
238
+        roomCity: detail.roomCity || {},
239
+        roomBusi: detail.roomBusiness || {},
240
+        building: detail.building || {},
241
       }
241
       }
242
     })
242
     })
243
 
243
 

+ 59
- 20
src/view/secondhand/edithouse/components/Form.vue 파일 보기

44
       name="proportion"
44
       name="proportion"
45
       label="楼户比例"
45
       label="楼户比例"
46
       placeholder="请输入"
46
       placeholder="请输入"
47
-      required
48
     >
47
     >
49
       <template #input>
48
       <template #input>
50
         <Proportion v-model="formData.proportion" />
49
         <Proportion v-model="formData.proportion" />
57
       required
56
       required
58
     >
57
     >
59
       <template #input>
58
       <template #input>
60
-        <Picker :options="decorationOptions" v-model="formData.decoration" />
59
+        <Picker :options="decorationOptions" v-model="formData.decoration" placeholder="请选择" />
61
       </template>
60
       </template>
62
     </van-field>
61
     </van-field>
63
     
62
     
81
       required
80
       required
82
     >
81
     >
83
       <template #input>
82
       <template #input>
84
-        <Picker :options="aspectOptions" v-model="formData.aspect" />
83
+        <Picker :options="aspectOptions" v-model="formData.aspect" placeholder="请选择" />
85
       </template>
84
       </template>
86
     </van-field>
85
     </van-field>
87
     
86
     
88
     <van-field
87
     <van-field
89
       name="sourceFrom"
88
       name="sourceFrom"
90
-      label="房来源"
89
+      label="房来源"
91
       required
90
       required
92
     >
91
     >
93
       <template #input>
92
       <template #input>
94
-        <Picker :options="sourceFromOptions" v-model="formData.sourceFrom" />
93
+        <Picker :options="sourceFromOptions" v-model="formData.sourceFrom" placeholder="请选择" />
95
       </template>
94
       </template>
96
     </van-field>
95
     </van-field>
97
     
96
     
98
     <van-field
97
     <van-field
99
       name="buildType"
98
       name="buildType"
100
       label="建筑类型"
99
       label="建筑类型"
101
-      required
102
     >
100
     >
103
       <template #input>
101
       <template #input>
104
-        <Picker :options="buildTypeOptions" v-model="formData.buildType" />
102
+        <Picker :options="buildTypeOptions" v-model="formData.buildType" placeholder="请选择" />
105
       </template>
103
       </template>
106
     </van-field>
104
     </van-field>
107
     
105
     
108
     <van-field
106
     <van-field
109
       name="elevator"
107
       name="elevator"
110
       label="电梯"
108
       label="电梯"
111
-      required
112
     >
109
     >
113
       <template #input>
110
       <template #input>
114
-        <Picker :options="elevatorOptions" v-model="formData.elevator" />
111
+        <Picker :options="elevatorOptions" v-model="formData.elevator" placeholder="请选择" />
115
       </template>
112
       </template>
116
     </van-field>
113
     </van-field>
117
     
114
     
118
     <van-field
115
     <van-field
119
       name="nature"
116
       name="nature"
120
       label="交易属性"
117
       label="交易属性"
121
-      required
122
     >
118
     >
123
       <template #input>
119
       <template #input>
124
-        <Picker :options="natureOptions" v-model="formData.nature" />
120
+        <Picker :options="natureOptions" v-model="formData.nature" placeholder="请选择" />
125
       </template>
121
       </template>
126
     </van-field>
122
     </van-field>
127
     
123
     
128
     <van-field
124
     <van-field
129
       name="purpose"
125
       name="purpose"
130
       label="房屋用途"
126
       label="房屋用途"
131
-      required
132
     >
127
     >
133
       <template #input>
128
       <template #input>
134
-        <Picker :options="purposeOptions" v-model="formData.purpose" />
129
+        <Picker :options="purposeOptions" v-model="formData.purpose" placeholder="请选择" />
135
       </template>
130
       </template>
136
     </van-field>
131
     </van-field>
137
 
132
 
145
     <van-field
140
     <van-field
146
       name="mortgage"
141
       name="mortgage"
147
       label="抵押信息"
142
       label="抵押信息"
148
-      required
149
     >
143
     >
150
       <template #input>
144
       <template #input>
151
-        <Picker :options="mortgageOptions" v-model="formData.isMortgage" />
145
+        <Picker :options="mortgageOptions" v-model="formData.isMortgage" placeholder="请选择" />
152
       </template>
146
       </template>
153
     </van-field>
147
     </van-field>
154
     
148
     
155
     <van-field
149
     <van-field
156
       name="buildTime"
150
       name="buildTime"
157
       label="税 费"
151
       label="税 费"
158
-      required
159
     >
152
     >
160
       <template #input>
153
       <template #input>
161
-        <Picker :options="buildTimeOptions" v-model="formData.buildTime" />
154
+        <Picker :options="buildTimeOptions" v-model="formData.buildTime" placeholder="请选择" />
162
       </template>
155
       </template>
163
     </van-field>
156
     </van-field>
164
 
157
 
158
+    <div style="margin: 1em">
159
+      <van-button block type="warning" native-type="submit">
160
+        提交
161
+      </van-button>
162
+    </div>
163
+
165
   </van-form>
164
   </van-form>
166
 </template>
165
 </template>
167
 
166
 
168
 <script>
167
 <script>
169
-import { reactive } from 'vue'
168
+import { reactive, computed, watch } from 'vue'
170
 import {
169
 import {
171
   Form,
170
   Form,
172
   Field,
171
   Field,
172
+  Button,
173
 } from 'vant'
173
 } from 'vant'
174
 import { useModel } from '@zjxpcyc/vue-tiny-store'
174
 import { useModel } from '@zjxpcyc/vue-tiny-store'
175
 import Picker from '@/components/Picker'
175
 import Picker from '@/components/Picker'
176
+import { showWarn } from '@/utils'
176
 import RoomType from './RoomType'
177
 import RoomType from './RoomType'
177
 import Proportion from './Proportion'
178
 import Proportion from './Proportion'
178
 
179
 
180
   components: {
181
   components: {
181
     [Form.name]: Form,
182
     [Form.name]: Form,
182
     [Field.name]: Field,
183
     [Field.name]: Field,
184
+    [Button.name]: Button,
183
     RoomType,
185
     RoomType,
184
     Proportion,
186
     Proportion,
185
     Picker,
187
     Picker,
186
   },
188
   },
187
-  setup(props) {
189
+  emits: ['submit'],
190
+  setup(props, {emit}) {
188
     const formData = reactive({})
191
     const formData = reactive({})
189
     const { dicts, getDict } = useModel('dicts')
192
     const { dicts, getDict } = useModel('dicts')
193
+    const { detail } = useModel('room')
190
     
194
     
191
     // 装修
195
     // 装修
192
     const decorationOptions = computed(() => {
196
     const decorationOptions = computed(() => {
271
       return buildTimeDict
275
       return buildTimeDict
272
     })
276
     })
273
 
277
 
274
-    const handleSumbit = () => {}
278
+    const validManually = () => {
279
+      if (!formData.roomType || formData.roomType.split(',').filter(Boolean).length != 5) {
280
+        showWarn('请正确设置户型')
281
+        return false
282
+      }
283
+      if (!formData.decoration) {
284
+        showWarn('请选择装修')
285
+        return false
286
+      }
287
+      if (!formData.aspect) {
288
+        showWarn('请选择朝向')
289
+        return false
290
+      }
291
+      if (!formData.sourceFrom) {
292
+        showWarn('请选择房源来源')
293
+        return false
294
+      }
295
+
296
+      return true
297
+    }
298
+
299
+    // 提交
300
+    const handleSumbit = () => {
301
+      if (!validManually()) {
302
+        return
303
+      }
304
+
305
+      emit('submit', formData)
306
+    }
307
+
308
+    //
309
+    watch(() => detail.roomInfo, (nw, od) => {
310
+      if (nw && !od) {
311
+        Object.assign(formData, {...nw})
312
+      }
313
+    }, {immediate: true})
275
 
314
 
276
     return {
315
     return {
277
       formData,
316
       formData,

+ 16
- 14
src/view/secondhand/edithouse/components/Proportion.vue 파일 보기

1
 <template>
1
 <template>
2
-  <div class="proportion-box">
3
-    <div class="proportion-item">
4
-      <input type="number" v-model="proportion.elevator" /> 梯
5
-    </div>
6
-    <div class="proportion-item">
7
-      <input type="number" v-model="proportion.family" /> 户
8
-    </div>
2
+  <div style="width: 100%">
3
+    <van-field type="number" v-model="proportion.elevator" placeholder="请输入">
4
+      <template #extra>梯</template>
5
+    </van-field>
6
+    <van-field type="number" v-model="proportion.family" placeholder="请输入">
7
+      <template #extra>户</template>
8
+    </van-field>
9
   </div>
9
   </div>
10
 </template>
10
 </template>
11
 
11
 
12
 <script>
12
 <script>
13
 import { reactive, watch } from 'vue'
13
 import { reactive, watch } from 'vue'
14
+import { Field } from 'vant'
14
 
15
 
15
 export default {
16
 export default {
17
+  components: {
18
+    [Field.name]: Field,
19
+  },
20
+
16
   props: {
21
   props: {
17
     modelValue: undefined,
22
     modelValue: undefined,
18
   },
23
   },
38
     watch(proportion, () => {
43
     watch(proportion, () => {
39
       const vals = [proportion.elevator, proportion.family]
44
       const vals = [proportion.elevator, proportion.family]
40
       emit('update:modelValue', vals.join(','))
45
       emit('update:modelValue', vals.join(','))
41
-    }, {immediate: true, deep: true})
46
+    }, {deep: true})
42
 
47
 
43
     return {
48
     return {
44
       proportion
49
       proportion
48
 </script>
53
 </script>
49
 
54
 
50
 <style lang="less" scoped>
55
 <style lang="less" scoped>
51
-.proportion-box {
52
-  display: flex;
53
-
54
-  .proportion-item {
55
-    flex: auto;
56
-  }
56
+:deep(.van-cell) {
57
+  padding-left: 0;
58
+  padding-right: 0;
57
 }
59
 }
58
 </style>
60
 </style>

+ 25
- 23
src/view/secondhand/edithouse/components/RoomType.vue 파일 보기

1
 <template>
1
 <template>
2
-  <div class="room-type-box">
3
-    <div class="room-type-item">
4
-      <input type="number" v-model="roomType.room" /> 室
5
-    </div>
6
-    <div class="room-type-item">
7
-      <input type="number" v-model="roomType.hall" /> 厅
8
-    </div>
9
-    <div class="room-type-item">
10
-      <input type="number" v-model="roomType.kitchen" /> 厨
11
-    </div>
12
-    <div class="room-type-item">
13
-      <input type="number" v-model="roomType.toilet" /> 卫
14
-    </div>
15
-    <div class="room-type-item">
16
-      <input type="number" v-model="roomType.balcony" /> 阳台
17
-    </div>
2
+  <div style="width: 100%">
3
+    <van-field type="number" v-model="roomType.room" placeholder="请输入">
4
+      <template #extra>室</template>
5
+    </van-field>
6
+    <van-field type="number" v-model="roomType.hall" placeholder="请输入">
7
+      <template #extra>厅</template>
8
+    </van-field>
9
+    <van-field type="number" v-model="roomType.kitchen" placeholder="请输入">
10
+      <template #extra>厨</template>
11
+    </van-field>
12
+    <van-field type="number" v-model="roomType.toilet" placeholder="请输入">
13
+      <template #extra>卫</template>
14
+    </van-field>
15
+    <van-field type="number" v-model="roomType.balcony" placeholder="请输入">
16
+      <template #extra>阳台</template>
17
+    </van-field>
18
   </div>
18
   </div>
19
 </template>
19
 </template>
20
 
20
 
21
 <script>
21
 <script>
22
 import { reactive, watch } from 'vue'
22
 import { reactive, watch } from 'vue'
23
+import { Field } from 'vant'
23
 
24
 
24
 export default {
25
 export default {
26
+  components: {
27
+    [Field.name]: Field,
28
+  },
29
+
25
   props: {
30
   props: {
26
     modelValue: undefined,
31
     modelValue: undefined,
27
   },
32
   },
53
     watch(roomType, () => {
58
     watch(roomType, () => {
54
       const vals = [roomType.room, roomType.hall, roomType.kitchen, roomType.toilet, roomType.balcony]
59
       const vals = [roomType.room, roomType.hall, roomType.kitchen, roomType.toilet, roomType.balcony]
55
       emit('update:modelValue', vals.join(','))
60
       emit('update:modelValue', vals.join(','))
56
-    }, {immediate: true, deep: true})
61
+    }, {deep: true})
57
 
62
 
58
     return {
63
     return {
59
       roomType
64
       roomType
63
 </script>
68
 </script>
64
 
69
 
65
 <style lang="less" scoped>
70
 <style lang="less" scoped>
66
-.room-type-box {
67
-  display: flex;
68
-
69
-  .room-type-item {
70
-    flex: auto;
71
-  }
71
+:deep(.van-cell) {
72
+  padding-left: 0;
73
+  padding-right: 0;
72
 }
74
 }
73
 </style>
75
 </style>

+ 19
- 128
src/view/secondhand/edithouse/index.vue 파일 보기

2
   <x-loading x-id="room.view">
2
   <x-loading x-id="room.view">
3
     <div class="secondhanddetail ">
3
     <div class="secondhanddetail ">
4
       <RoomBasic :room-info="detail.roomInfo" :building="detail.building" />
4
       <RoomBasic :room-info="detail.roomInfo" :building="detail.building" />
5
-<!-- 
6
-      <div>
7
-        <van-form @submit="onSubmit">
8
-          <van-field
9
-            v-model="state.username"
10
-            name="title"
11
-            label="标题"
12
-            placeholder="请输入"
13
-            required
14
-            :rules="[{ required: true, message: '请填写标题' }]"
15
-          />
16
-          <van-field
17
-            v-model="state.username"
18
-            name="aaaa"
19
-            label="面积"
20
-            placeholder="请输入"
21
-            required
22
-            type="number"
23
-            :rules="[{ required: true, message: '请填写面积' }]"
24
-          >
25
-            <template #extra>
26
-              ㎡
27
-            </template>
28
-          </van-field>
29
-          <van-field
30
-            v-model="state.username"
31
-            name="3333"
32
-            label="套内面积"
33
-            placeholder="请输入"
34
-          />
35
-          <van-field
36
-            v-model="state.username"
37
-            name="title"
38
-            label="户型"
39
-            placeholder="请输入"
40
-            required
41
-            :rules="[{ required: true, message: '请填写楼户比例' }]"
42
-          />
43
-
44
-          <van-field
45
-            v-model="state.username"
46
-            name="title"
47
-            label="楼户比例"
48
-            placeholder="请输入"
49
-            required
50
-            :rules="[{ required: true, message: '请填写楼户比例' }]"
51
-          />
52
-          <Pickerc
53
-            v-model="state.username"
54
-            name="title"
55
-            label="装修"
56
-            required
57
-          ></Pickerc>
58
-          <van-field
59
-            v-model="state.username"
60
-            name="title"
61
-            label="总价"
62
-            placeholder="请输入"
63
-            type="number"
64
-            required
65
-            :rules="[{ required: true, message: '请填写楼户比例' }]"
66
-          >
67
-            <template #extra>
68
-              万元
69
-            </template></van-field
70
-          >
71
-          <Pickerc
72
-            v-model="state.username"
73
-            name="title"
74
-            label="朝向"
75
-            required
76
-          ></Pickerc>
77
-          <Pickerc
78
-            v-model="state.username"
79
-            name="title"
80
-            label="房源来源"
81
-            required
82
-          ></Pickerc>
83
-
84
-          <Pickerc
85
-            v-model="state.username"
86
-            name="title"
87
-            label="建筑类型"
88
-          ></Pickerc>
89
-
90
-          <Pickerc v-model="state.username" name="title" label="电梯"></Pickerc>
91
-
92
-          <Pickerc
93
-            v-model="state.username"
94
-            name="title"
95
-            label="交易属性"
96
-          ></Pickerc>
97
-
98
-          <Pickerc
99
-            v-model="state.username"
100
-            name="title"
101
-            label="房屋用途"
102
-          ></Pickerc>
103
-          <van-field
104
-            v-model="state.username"
105
-            name="title"
106
-            label="建成年代"
107
-            placeholder="请输入"
108
-            :rules="[{ required: true, message: '请填写楼户比例' }]"
109
-          />
110
-          <Pickerc
111
-            v-model="state.username"
112
-            name="title"
113
-            label="抵押信息"
114
-          ></Pickerc>
115
-
116
-          <Pickerc v-model="state.username" name="title" label="税费"></Pickerc>
117
-
118
-          <div style="margin: 16px;">
119
-            <van-button round block type="primary" native-type="submit">
120
-              提交
121
-            </van-button>
122
-          </div>
123
-        </van-form>
124
-      </div> -->
5
+      
6
+      <div style="margin-top: 1em">
7
+        <RoomForm @submit="handleSumbit"/>
8
+      </div>
125
     </div>
9
     </div>
126
   </x-loading>
10
   </x-loading>
127
 </template>
11
 </template>
129
 <script>
13
 <script>
130
 import { watch } from "vue"
14
 import { watch } from "vue"
131
 import { useModel } from '@zjxpcyc/vue-tiny-store'
15
 import { useModel } from '@zjxpcyc/vue-tiny-store'
132
-import { useRoute } from 'vue-router'
16
+import { useRoute, useRouter } from 'vue-router'
17
+import { alert, showDanger } from '@/utils'
133
 import RoomBasic from './components/Basic'
18
 import RoomBasic from './components/Basic'
134
-
135
-// import { router } from "../../../router";
19
+import RoomForm from './components/Form'
136
 
20
 
137
 export default {
21
 export default {
138
   name: "secondhanddetail",
22
   name: "secondhanddetail",
139
   components: {
23
   components: {
140
     RoomBasic,
24
     RoomBasic,
25
+    RoomForm,
141
   },
26
   },
142
 
27
 
143
   setup() {
28
   setup() {
144
     const route = useRoute()
29
     const route = useRoute()
145
-    const { detail, getDetail } = useModel('room')
30
+    const router = useRouter()
31
+    const { detail, getDetail, houseEdit } = useModel('room')
146
     
32
     
147
     watch(() => route.query.roomId, (nw, od) => {
33
     watch(() => route.query.roomId, (nw, od) => {
148
       if (nw != od && nw) {
34
       if (nw != od && nw) {
150
       }
36
       }
151
     }, {immediate: true})
37
     }, {immediate: true})
152
 
38
 
153
-
154
-    const onSubmit = (values) => {
155
-      console.log("submit", values);
39
+    const handleSumbit = (values) => {
40
+      houseEdit(values).then(() => {
41
+        alert('编辑成功').then(() => {
42
+          router.go(-1)
43
+        })
44
+      }).catch(e => {
45
+        showDanger(e.message)
46
+      })
156
     };
47
     };
157
 
48
 
158
     return {
49
     return {
159
-      onSubmit,
50
+      handleSumbit,
160
       detail,
51
       detail,
161
     };
52
     };
162
   },
53
   },