Kaynağa Gözat

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

zlisen 4 yıl önce
ebeveyn
işleme
a2d615fa78

+ 32
- 0
src/components/GSection/index.vue Dosyayı Görüntüle

@@ -0,0 +1,32 @@
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 Dosyayı Görüntüle

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

+ 22
- 0
src/store/models/room.js Dosyayı Görüntüle

@@ -151,6 +151,26 @@ export default () => {
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 175
   return {
156 176
     list,
@@ -169,5 +189,7 @@ export default () => {
169 189
     addOwnerTel,
170 190
     getBuilding,
171 191
     closeHouse,
192
+    houseEdit,
193
+    getRescList,
172 194
   }
173 195
 }

+ 12
- 1
src/utils/index.js Dosyayı Görüntüle

@@ -1,10 +1,21 @@
1 1
 
2
-import { Notify } from 'vant'
2
+import { Notify, Dialog } from 'vant'
3 3
 
4 4
 export function showDanger(message) {
5 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 19
 export function isEmpty (o) {
9 20
   if (o === undefined || o === null || o === '') {
10 21
     return true

+ 1
- 0
src/utils/request/index.js Dosyayı Görüntüle

@@ -17,6 +17,7 @@ const requestInterceptor = config => {
17 17
     config.toastInst = Toast.loading({
18 18
       message: config.toast,
19 19
       forbidClick: true,
20
+      overlay: true,
20 21
       duration: 0,
21 22
     })
22 23
   }

+ 90
- 65
src/view/resc/index.vue Dosyayı Görüntüle

@@ -1,83 +1,105 @@
1 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 71
     </div>
49
-  </div>
72
+  </x-loading>
50 73
 </template>
51 74
 
52 75
 <script>
53 76
 import { ref } from "vue";
77
+import { useRoute } from 'vue-router'
78
+import { useModel } from '@zjxpcyc/vue-tiny-store'
54 79
 //
55 80
 import {
56 81
   Uploader,
57
-  Row,
58
-  Col,
59 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 86
 export default {
67
-  name: "secondhanddetail",
68 87
   components: {
69
-    [Row.name]: Row,
70
-    [Col.name]: Col,
71
-
72 88
     [Uploader.name]: Uploader,
73 89
     [Button.name]: Button,
74 90
   },
75
-  data() {
76
-    return {};
77
-  },
78 91
 
79 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 104
     const fileList = ref([
83 105
       { url: "https://img.yzcdn.cn/vant/leaf.jpg" },
@@ -92,7 +114,7 @@ export default {
92 114
     };
93 115
 
94 116
     return {
95
-      houseNumberImg,
117
+      initData,
96 118
       fileList,
97 119
       afterRead,
98 120
     };
@@ -103,8 +125,11 @@ export default {
103 125
 <!-- Add "scoped" attribute to limit CSS to this component only -->
104 126
 <style lang="less" scoped>
105 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 135
 </style>

+ 1
- 1
src/view/secondhand/detail/components/Main.vue Dosyayı Görüntüle

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

+ 7
- 0
src/view/secondhand/detail/components/MoreActions.vue Dosyayı Görüntüle

@@ -46,6 +46,13 @@
46 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 56
         <van-cell
50 57
           v-shiro="'room:info:share'"
51 58
           title="分享房源"

+ 3
- 3
src/view/secondhand/detail/index.vue Dosyayı Görüntüle

@@ -168,7 +168,6 @@ export default {
168 168
     const {
169 169
       detail,
170 170
       getDetail,
171
-      updateProtection,
172 171
     } = useModel("room")
173 172
 
174 173
     onMounted(() => {
@@ -236,8 +235,9 @@ export default {
236 235
     const roomOtherData = computed(() => {
237 236
       return {
238 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 Dosyayı Görüntüle

@@ -44,7 +44,6 @@
44 44
       name="proportion"
45 45
       label="楼户比例"
46 46
       placeholder="请输入"
47
-      required
48 47
     >
49 48
       <template #input>
50 49
         <Proportion v-model="formData.proportion" />
@@ -57,7 +56,7 @@
57 56
       required
58 57
     >
59 58
       <template #input>
60
-        <Picker :options="decorationOptions" v-model="formData.decoration" />
59
+        <Picker :options="decorationOptions" v-model="formData.decoration" placeholder="请选择" />
61 60
       </template>
62 61
     </van-field>
63 62
     
@@ -81,57 +80,53 @@
81 80
       required
82 81
     >
83 82
       <template #input>
84
-        <Picker :options="aspectOptions" v-model="formData.aspect" />
83
+        <Picker :options="aspectOptions" v-model="formData.aspect" placeholder="请选择" />
85 84
       </template>
86 85
     </van-field>
87 86
     
88 87
     <van-field
89 88
       name="sourceFrom"
90
-      label="房来源"
89
+      label="房来源"
91 90
       required
92 91
     >
93 92
       <template #input>
94
-        <Picker :options="sourceFromOptions" v-model="formData.sourceFrom" />
93
+        <Picker :options="sourceFromOptions" v-model="formData.sourceFrom" placeholder="请选择" />
95 94
       </template>
96 95
     </van-field>
97 96
     
98 97
     <van-field
99 98
       name="buildType"
100 99
       label="建筑类型"
101
-      required
102 100
     >
103 101
       <template #input>
104
-        <Picker :options="buildTypeOptions" v-model="formData.buildType" />
102
+        <Picker :options="buildTypeOptions" v-model="formData.buildType" placeholder="请选择" />
105 103
       </template>
106 104
     </van-field>
107 105
     
108 106
     <van-field
109 107
       name="elevator"
110 108
       label="电梯"
111
-      required
112 109
     >
113 110
       <template #input>
114
-        <Picker :options="elevatorOptions" v-model="formData.elevator" />
111
+        <Picker :options="elevatorOptions" v-model="formData.elevator" placeholder="请选择" />
115 112
       </template>
116 113
     </van-field>
117 114
     
118 115
     <van-field
119 116
       name="nature"
120 117
       label="交易属性"
121
-      required
122 118
     >
123 119
       <template #input>
124
-        <Picker :options="natureOptions" v-model="formData.nature" />
120
+        <Picker :options="natureOptions" v-model="formData.nature" placeholder="请选择" />
125 121
       </template>
126 122
     </van-field>
127 123
     
128 124
     <van-field
129 125
       name="purpose"
130 126
       label="房屋用途"
131
-      required
132 127
     >
133 128
       <template #input>
134
-        <Picker :options="purposeOptions" v-model="formData.purpose" />
129
+        <Picker :options="purposeOptions" v-model="formData.purpose" placeholder="请选择" />
135 130
       </template>
136 131
     </van-field>
137 132
 
@@ -145,34 +140,40 @@
145 140
     <van-field
146 141
       name="mortgage"
147 142
       label="抵押信息"
148
-      required
149 143
     >
150 144
       <template #input>
151
-        <Picker :options="mortgageOptions" v-model="formData.isMortgage" />
145
+        <Picker :options="mortgageOptions" v-model="formData.isMortgage" placeholder="请选择" />
152 146
       </template>
153 147
     </van-field>
154 148
     
155 149
     <van-field
156 150
       name="buildTime"
157 151
       label="税 费"
158
-      required
159 152
     >
160 153
       <template #input>
161
-        <Picker :options="buildTimeOptions" v-model="formData.buildTime" />
154
+        <Picker :options="buildTimeOptions" v-model="formData.buildTime" placeholder="请选择" />
162 155
       </template>
163 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 164
   </van-form>
166 165
 </template>
167 166
 
168 167
 <script>
169
-import { reactive } from 'vue'
168
+import { reactive, computed, watch } from 'vue'
170 169
 import {
171 170
   Form,
172 171
   Field,
172
+  Button,
173 173
 } from 'vant'
174 174
 import { useModel } from '@zjxpcyc/vue-tiny-store'
175 175
 import Picker from '@/components/Picker'
176
+import { showWarn } from '@/utils'
176 177
 import RoomType from './RoomType'
177 178
 import Proportion from './Proportion'
178 179
 
@@ -180,13 +181,16 @@ export default {
180 181
   components: {
181 182
     [Form.name]: Form,
182 183
     [Field.name]: Field,
184
+    [Button.name]: Button,
183 185
     RoomType,
184 186
     Proportion,
185 187
     Picker,
186 188
   },
187
-  setup(props) {
189
+  emits: ['submit'],
190
+  setup(props, {emit}) {
188 191
     const formData = reactive({})
189 192
     const { dicts, getDict } = useModel('dicts')
193
+    const { detail } = useModel('room')
190 194
     
191 195
     // 装修
192 196
     const decorationOptions = computed(() => {
@@ -271,7 +275,42 @@ export default {
271 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 315
     return {
277 316
       formData,

+ 16
- 14
src/view/secondhand/edithouse/components/Proportion.vue Dosyayı Görüntüle

@@ -1,18 +1,23 @@
1 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 9
   </div>
10 10
 </template>
11 11
 
12 12
 <script>
13 13
 import { reactive, watch } from 'vue'
14
+import { Field } from 'vant'
14 15
 
15 16
 export default {
17
+  components: {
18
+    [Field.name]: Field,
19
+  },
20
+
16 21
   props: {
17 22
     modelValue: undefined,
18 23
   },
@@ -38,7 +43,7 @@ export default {
38 43
     watch(proportion, () => {
39 44
       const vals = [proportion.elevator, proportion.family]
40 45
       emit('update:modelValue', vals.join(','))
41
-    }, {immediate: true, deep: true})
46
+    }, {deep: true})
42 47
 
43 48
     return {
44 49
       proportion
@@ -48,11 +53,8 @@ export default {
48 53
 </script>
49 54
 
50 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 60
 </style>

+ 25
- 23
src/view/secondhand/edithouse/components/RoomType.vue Dosyayı Görüntüle

@@ -1,27 +1,32 @@
1 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 18
   </div>
19 19
 </template>
20 20
 
21 21
 <script>
22 22
 import { reactive, watch } from 'vue'
23
+import { Field } from 'vant'
23 24
 
24 25
 export default {
26
+  components: {
27
+    [Field.name]: Field,
28
+  },
29
+
25 30
   props: {
26 31
     modelValue: undefined,
27 32
   },
@@ -53,7 +58,7 @@ export default {
53 58
     watch(roomType, () => {
54 59
       const vals = [roomType.room, roomType.hall, roomType.kitchen, roomType.toilet, roomType.balcony]
55 60
       emit('update:modelValue', vals.join(','))
56
-    }, {immediate: true, deep: true})
61
+    }, {deep: true})
57 62
 
58 63
     return {
59 64
       roomType
@@ -63,11 +68,8 @@ export default {
63 68
 </script>
64 69
 
65 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 75
 </style>

+ 19
- 128
src/view/secondhand/edithouse/index.vue Dosyayı Görüntüle

@@ -2,126 +2,10 @@
2 2
   <x-loading x-id="room.view">
3 3
     <div class="secondhanddetail ">
4 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 9
     </div>
126 10
   </x-loading>
127 11
 </template>
@@ -129,20 +13,22 @@
129 13
 <script>
130 14
 import { watch } from "vue"
131 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 18
 import RoomBasic from './components/Basic'
134
-
135
-// import { router } from "../../../router";
19
+import RoomForm from './components/Form'
136 20
 
137 21
 export default {
138 22
   name: "secondhanddetail",
139 23
   components: {
140 24
     RoomBasic,
25
+    RoomForm,
141 26
   },
142 27
 
143 28
   setup() {
144 29
     const route = useRoute()
145
-    const { detail, getDetail } = useModel('room')
30
+    const router = useRouter()
31
+    const { detail, getDetail, houseEdit } = useModel('room')
146 32
     
147 33
     watch(() => route.query.roomId, (nw, od) => {
148 34
       if (nw != od && nw) {
@@ -150,13 +36,18 @@ export default {
150 36
       }
151 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 49
     return {
159
-      onSubmit,
50
+      handleSumbit,
160 51
       detail,
161 52
     };
162 53
   },