Commit 84ba01559f03e9337fe232d071fbf64cfbc9e868

Authored by wuxw
1 parent 6db3ce8f

家庭成员测试

src/api/owner/addOwnerMemberApi.js
... ... @@ -8,11 +8,22 @@ export function saveOwnerMember(data) {
8 8 data
9 9 }).then(response => {
10 10 const res = response.data
11   - if (res.code === 0) {
12 11 resolve(res)
13   - } else {
14   - reject(new Error(res.msg || 'Failed to save owner member'))
15   - }
  12 + }).catch(error => {
  13 + reject(error)
  14 + })
  15 + })
  16 +}
  17 +
  18 +export function editOwnerMember(data) {
  19 + return new Promise((resolve, reject) => {
  20 + request({
  21 + url: '/owner.editOwnerMember',
  22 + method: 'post',
  23 + data
  24 + }).then(response => {
  25 + const res = response.data
  26 + resolve(res)
16 27 }).catch(error => {
17 28 reject(error)
18 29 })
... ...
src/components/community/AddPropertyCommunity.vue
1 1 <template>
2   - <el-dialog
3   - :title="$t('propertyCommunity.add.title')"
4   - :visible.sync="visible"
5   - width="50%"
6   - @close="handleClose"
7   - >
8   - <el-form ref="form" :model="form" label-width="120px">
  2 + <el-dialog :title="$t('propertyCommunity.add.title')" :visible.sync="visible" width="50%" @close="handleClose">
  3 + <el-form ref="form" :model="form" label-width="120px" class="text-left">
9 4 <el-form-item :label="$t('propertyCommunity.add.openCommunity')">
10   - <el-select
11   - v-model="form.communityIds"
12   - multiple
13   - filterable
14   - style="width: 100%"
15   - :placeholder="$t('propertyCommunity.add.selectCommunity')"
16   - >
17   - <el-option
18   - v-for="item in communitys"
19   - :key="item.communityId"
20   - :label="item.name"
21   - :value="item.communityId"
22   - />
  5 + <el-select v-model="form.communityIds" multiple filterable style="width: 100%"
  6 + :placeholder="$t('propertyCommunity.add.selectCommunity')">
  7 + <el-option v-for="item in communitys" :key="item.communityId" :label="item.name" :value="item.communityId" />
23 8 </el-select>
24 9 </el-form-item>
25 10  
26   - <el-form-item
27   - v-if="form.communityIds && form.communityIds.length > 0"
28   - :label="$t('propertyCommunity.add.functions')"
29   - >
  11 + <el-form-item v-if="form.communityIds && form.communityIds.length > 0"
  12 + :label="$t('propertyCommunity.add.functions')">
30 13 <el-checkbox v-model="form.isAll" @change="handleAllChange">
31 14 {{ $t('propertyCommunity.add.all') }}
32 15 </el-checkbox>
33   - <el-checkbox
34   - v-for="item in menuGroups"
35   - :key="item.gId"
36   - v-model="form.groupIds"
37   - :label="item.gId"
38   - @change="handleItemChange"
39   - >
  16 + <el-checkbox v-for="item in menuGroups" :key="item.gId" v-model="form.groupIds" :label="item.gId"
  17 + @change="handleItemChange">
40 18 {{ item.name }}
41 19 </el-checkbox>
42 20 </el-form-item>
... ... @@ -99,7 +77,7 @@ export default {
99 77 const params = {
100 78 communityName: ''
101 79 }
102   - const data = await listNoEnterCommunity(params)
  80 + const data = await listNoEnterCommunity(params)
103 81 this.communitys = data
104 82 } catch (error) {
105 83 this.$message.error(this.$t('propertyCommunity.fetchError'))
... ...
src/components/community/addCommunity.vue
1 1 <template>
2   - <el-dialog :title="$t('addCommunity.title')" :visible.sync="visible" width="60%" @close="clearAddCommunityInfo">
3   - <el-form ref="form" :model="addCommunityInfo" label-width="120px">
  2 + <el-dialog :title="$t('addCommunity.title')" :visible.sync="visible" width="40%" @close="clearAddCommunityInfo">
  3 + <el-form ref="form" :model="addCommunityInfo" label-width="120px" class="text-left">
4 4 <el-form-item :label="$t('addCommunity.name')" prop="name" required>
5 5 <el-input v-model="addCommunityInfo.name" :placeholder="$t('addCommunity.namePlaceholder')" />
6 6 </el-form-item>
... ...
src/components/contract/searchRoom.vue deleted
1   -<template>
2   - <el-dialog
3   - :title="$t('searchRoom.title')"
4   - :visible.sync="dialogVisible"
5   - width="80%"
6   - @close="handleClose"
7   - >
8   - <el-form v-if="searchRoomInfo.showSearchCondition" inline>
9   - <el-form-item :label="$t('searchRoom.buildingNo')">
10   - <el-input
11   - v-model="searchRoomInfo._currentFloorNum"
12   - :placeholder="$t('searchRoom.buildingNoPlaceholder')"
13   - :readonly="searchRoomInfo.floorNumInputReadonly"
14   - ></el-input>
15   - </el-form-item>
16   -
17   - <el-form-item :label="$t('searchRoom.roomNo')">
18   - <el-input
19   - v-model="searchRoomInfo._currentRoomNum"
20   - :placeholder="$t('searchRoom.roomNoPlaceholder')"
21   - ></el-input>
22   - </el-form-item>
23   -
24   - <el-form-item>
25   - <el-button type="primary" @click="searchRooms">
26   - <i class="el-icon-search"></i>
27   - {{ $t('common.search') }}
28   - </el-button>
29   - <el-button @click="resetRooms">
30   - <i class="el-icon-refresh"></i>
31   - {{ $t('common.reset') }}
32   - </el-button>
33   - </el-form-item>
34   - </el-form>
35   -
36   - <el-table :data="searchRoomInfo.rooms" border>
37   - <el-table-column
38   - prop="roomId"
39   - :label="$t('searchRoom.roomId')"
40   - align="center"
41   - />
42   -
43   - <el-table-column
44   - prop="floorNum"
45   - :label="$t('searchRoom.buildingNo')"
46   - align="center"
47   - >
48   - <template slot-scope="scope">
49   - {{ scope.row.floorNum }}{{ $t('searchRoom.building') }}
50   - </template>
51   - </el-table-column>
52   -
53   - <el-table-column
54   - prop="unitNum"
55   - :label="$t('searchRoom.unitNo')"
56   - align="center"
57   - >
58   - <template slot-scope="scope">
59   - {{ scope.row.unitNum }}{{ $t('searchRoom.unit') }}
60   - </template>
61   - </el-table-column>
62   -
63   - <el-table-column
64   - prop="roomNum"
65   - :label="$t('searchRoom.roomNo')"
66   - align="center"
67   - >
68   - <template slot-scope="scope">
69   - {{ scope.row.roomNum }}{{ $t('searchRoom.room') }}
70   - </template>
71   - </el-table-column>
72   -
73   - <el-table-column
74   - prop="layer"
75   - :label="$t('searchRoom.floor')"
76   - align="center"
77   - >
78   - <template slot-scope="scope">
79   - {{ scope.row.layer }}{{ $t('searchRoom.floorUnit') }}
80   - </template>
81   - </el-table-column>
82   -
83   - <el-table-column
84   - :label="$t('common.operation')"
85   - align="center"
86   - width="120"
87   - >
88   - <template slot-scope="scope">
89   - <el-button
90   - type="primary"
91   - size="mini"
92   - @click="chooseRoom(scope.row)"
93   - >
94   - {{ $t('common.select') }}
95   - </el-button>
96   - </template>
97   - </el-table-column>
98   - </el-table>
99   -
100   - <div class="pagination-wrapper">
101   - <el-pagination
102   - :current-page="pagination.current"
103   - :page-sizes="[10, 20, 30, 50]"
104   - :page-size="pagination.size"
105   - :total="pagination.total"
106   - layout="total, sizes, prev, pager, next, jumper"
107   - @size-change="handleSizeChange"
108   - @current-change="handleCurrentChange"
109   - />
110   - </div>
111   - </el-dialog>
112   -</template>
113   -
114   -<script>
115   -import { queryRooms } from '@/api/contract/contractChangeDetailApi'
116   -import { getCommunityId } from '@/api/community/communityApi'
117   -
118   -export default {
119   - name: 'SearchRoom',
120   - props: {
121   - emitChooseRoom: {
122   - type: String,
123   - default: ''
124   - },
125   - emitLoadData: {
126   - type: String,
127   - default: ''
128   - },
129   - roomFlag: {
130   - type: String,
131   - default: ''
132   - },
133   - showSearchCondition: {
134   - type: String,
135   - default: 'true'
136   - }
137   - },
138   - data() {
139   - return {
140   - dialogVisible: false,
141   - searchRoomInfo: {
142   - rooms: [],
143   - _currentRoomNum: '',
144   - _currentFloorNum: '',
145   - floorNumInputReadonly: false,
146   - showSearchCondition: this.showSearchCondition === 'true'
147   - },
148   - pagination: {
149   - current: 1,
150   - size: 10,
151   - total: 0
152   - },
153   - communityId: ''
154   - }
155   - },
156   - created() {
157   - this.communityId = getCommunityId()
158   - },
159   - methods: {
160   - open() {
161   - this.dialogVisible = true
162   - this.refreshSearchRoomData()
163   - this.loadAllRoomInfo(1, 10)
164   - },
165   - chooseRoom(room) {
166   - this.$emit(this.emitChooseRoom, 'chooseRoom', room)
167   - this.$emit(this.emitLoadData, 'listRoomData', {
168   - roomId: room.roomId
169   - })
170   - this.dialogVisible = false
171   - },
172   - searchRooms() {
173   - this.loadAllRoomInfo(1, 15, this.searchRoomInfo._currentRoomNum)
174   - },
175   - resetRooms() {
176   - this.searchRoomInfo._currentFloorNum = ''
177   - this.searchRoomInfo._currentRoomNum = ''
178   - this.loadAllRoomInfo(1, 15)
179   - },
180   - handleSizeChange(val) {
181   - this.pagination.size = val
182   - this.loadAllRoomInfo(this.pagination.current, val)
183   - },
184   - handleCurrentChange(val) {
185   - this.pagination.current = val
186   - this.loadAllRoomInfo(val, this.pagination.size)
187   - },
188   - handleClose() {
189   - this.searchRoomInfo._currentRoomNum = ''
190   - },
191   - refreshSearchRoomData() {
192   - this.searchRoomInfo._currentRoomNum = ''
193   - },
194   - loadAllRoomInfo(page, row, roomNum) {
195   - const params = {
196   - page,
197   - row,
198   - communityId: this.communityId,
199   - roomNum,
200   - floorNum: this.searchRoomInfo._currentFloorNum,
201   - roomFlag: this.roomFlag
202   - }
203   -
204   - let url = '/room.queryRooms'
205   - if (this.roomFlag === '1') {
206   - url = '/room.queryRoomsWithSell'
207   - } else if (this.roomFlag === '2') {
208   - url = '/room.queryRoomsWithOutSell'
209   - }
210   -
211   - queryRooms(params, url)
212   - .then(response => {
213   - const roomInfo = response.data
214   - this.searchRoomInfo.rooms = roomInfo.rooms
215   - this.pagination.total = roomInfo.records
216   - })
217   - .catch(error => {
218   - console.error('请求失败:', error)
219   - })
220   - }
221   - }
222   -}
223   -</script>
224   -
225   -<style scoped>
226   -.pagination-wrapper {
227   - margin-top: 20px;
228   - text-align: right;
229   -}
230   -</style>
231 0 \ No newline at end of file
src/components/owner/addOwnerMember.vue
1 1 <template>
2   - <el-dialog
3   - :title="$t('addOwnerMember.title')"
4   - :visible.sync="dialogVisible"
5   - width="80%"
6   - @close="_closeSaveOwnerModal"
7   - >
  2 + <el-dialog :title="$t('addOwnerMember.title')" :visible.sync="dialogVisible" width="80%"
  3 + @close="_closeSaveOwnerModal">
8 4 <el-form :model="addOwnerMemberInfo" :rules="rules" ref="form" label-width="120px">
9 5 <el-row :gutter="20">
10 6 <el-col :span="12">
11 7 <el-form-item :label="$t('addOwnerMember.personRole')" prop="personRole">
12   - <el-select
13   - v-model="addOwnerMemberInfo.personRole"
14   - :placeholder="$t('addOwnerMember.placeholder.personRole')"
15   - class="w100"
16   - >
17   - <el-option
18   - v-for="item in roleOptions"
19   - :key="item.value"
20   - :label="item.label"
21   - :value="item.value"
22   - />
  8 + <el-select v-model="addOwnerMemberInfo.personRole"
  9 + :placeholder="$t('addOwnerMember.placeholder.personRole')" class="w100">
  10 + <el-option v-for="item in roleOptions" :key="item.value" :label="item.label" :value="item.value" />
23 11 </el-select>
24 12 </el-form-item>
25   -
  13 +
26 14 <el-form-item :label="$t('addOwnerMember.name')" prop="name">
27   - <el-input
28   - v-model.trim="addOwnerMemberInfo.name"
29   - :placeholder="$t('addOwnerMember.placeholder.name')"
30   - clearable
31   - />
  15 + <el-input v-model.trim="addOwnerMemberInfo.name" :placeholder="$t('addOwnerMember.placeholder.name')"
  16 + clearable />
32 17 </el-form-item>
33   -
  18 +
34 19 <el-form-item :label="$t('addOwnerMember.link')" prop="link">
35   - <el-input
36   - v-model.trim="addOwnerMemberInfo.link"
37   - :placeholder="$t('addOwnerMember.placeholder.link')"
38   - clearable
39   - />
  20 + <el-input v-model.trim="addOwnerMemberInfo.link" :placeholder="$t('addOwnerMember.placeholder.link')"
  21 + clearable />
40 22 </el-form-item>
41   -
  23 +
42 24 <el-form-item :label="$t('addOwnerMember.sex')" prop="sex">
43   - <el-select
44   - v-model="addOwnerMemberInfo.sex"
45   - :placeholder="$t('addOwnerMember.placeholder.sex')"
46   - class="w100"
47   - >
48   - <el-option
49   - v-for="item in sexOptions"
50   - :key="item.value"
51   - :label="item.label"
52   - :value="item.value"
53   - />
  25 + <el-select v-model="addOwnerMemberInfo.sex" :placeholder="$t('addOwnerMember.placeholder.sex')"
  26 + class="w100">
  27 + <el-option v-for="item in sexOptions" :key="item.value" :label="item.label" :value="item.value" />
54 28 </el-select>
55 29 </el-form-item>
56 30 </el-col>
57   -
  31 +
58 32 <el-col :span="12" class="text-center">
59 33 <div class="avatar-uploader">
60   - <img
61   - v-if="addOwnerMemberInfo.ownerPhotoUrl"
62   - :src="addOwnerMemberInfo.ownerPhotoUrl"
63   - class="avatar"
64   - :alt="$t('addOwnerMember.photo')"
65   - >
66   - <img
67   - v-else
68   - src="/img/noPhoto.jpg"
69   - class="avatar"
70   - :alt="$t('addOwnerMember.photo')"
71   - >
  34 + <img v-if="addOwnerMemberInfo.ownerPhotoUrl" :src="addOwnerMemberInfo.ownerPhotoUrl" class="avatar"
  35 + :alt="$t('addOwnerMember.photo')">
  36 + <img v-else src="/img/noPhoto.jpg" class="avatar" :alt="$t('addOwnerMember.photo')">
72 37 </div>
73   - <el-button
74   - type="primary"
75   - class="mt10"
76   - @click="_uploadPhoto"
77   - >
  38 + <el-button type="primary" class="mt10" @click="_uploadPhoto">
78 39 {{ $t('addOwnerMember.uploadPhoto') }}
79 40 </el-button>
80   - <input
81   - type="file"
82   - ref="fileInput"
83   - accept=".jpg,.jpeg,.png"
84   - @change="_choosePhoto"
85   - style="display: none"
86   - >
  41 + <input type="file" ref="fileInput" accept=".jpg,.jpeg,.png" @change="_choosePhoto" style="display: none">
87 42 </el-col>
88 43 </el-row>
89   -
  44 +
90 45 <el-row :gutter="20">
91 46 <el-col :span="12">
92 47 <el-form-item :label="$t('addOwnerMember.concactLink')">
93   - <el-input
94   - v-model.trim="addOwnerMemberInfo.concactLink"
95   - :placeholder="$t('addOwnerMember.placeholder.concactLink')"
96   - clearable
97   - />
  48 + <el-input v-model.trim="addOwnerMemberInfo.concactLink"
  49 + :placeholder="$t('addOwnerMember.placeholder.concactLink')" clearable />
98 50 </el-form-item>
99   -
  51 +
100 52 <el-form-item :label="$t('addOwnerMember.address')">
101   - <el-input
102   - v-model.trim="addOwnerMemberInfo.address"
103   - :placeholder="$t('addOwnerMember.placeholder.address')"
104   - clearable
105   - />
  53 + <el-input v-model.trim="addOwnerMemberInfo.address" :placeholder="$t('addOwnerMember.placeholder.address')"
  54 + clearable />
106 55 </el-form-item>
107 56 </el-col>
108   -
  57 +
109 58 <el-col :span="12">
110 59 <el-form-item :label="$t('addOwnerMember.idCard')">
111   - <el-input
112   - v-model.trim="addOwnerMemberInfo.idCard"
113   - :placeholder="$t('addOwnerMember.placeholder.idCard')"
114   - clearable
115   - />
  60 + <el-input v-model.trim="addOwnerMemberInfo.idCard" :placeholder="$t('addOwnerMember.placeholder.idCard')"
  61 + clearable />
116 62 </el-form-item>
117   -
  63 +
118 64 <el-form-item :label="$t('addOwnerMember.remark')">
119   - <el-input
120   - v-model.trim="addOwnerMemberInfo.remark"
121   - :placeholder="$t('addOwnerMember.placeholder.remark')"
122   - clearable
123   - />
  65 + <el-input v-model.trim="addOwnerMemberInfo.remark" :placeholder="$t('addOwnerMember.placeholder.remark')"
  66 + clearable />
124 67 </el-form-item>
125 68 </el-col>
126 69 </el-row>
127   -
128   - <template v-for="(item,index) in addOwnerMemberInfo.attrs">
  70 +
  71 + <template v-for="(item, index) in addOwnerMemberInfo.attrs">
129 72 <el-row :gutter="20" v-if="index % 2 === 0" :key="index">
130 73 <el-col :span="12">
131 74 <el-form-item :label="item.specName" v-if="item.specType === '2233'">
132   - <el-input
133   - v-model="item.value"
134   - :placeholder="item.specHoldplace"
135   - clearable
136   - />
  75 + <el-input v-model="item.value" :placeholder="item.specHoldplace" clearable />
137 76 </el-form-item>
138   -
  77 +
139 78 <el-form-item :label="item.specName" v-if="item.specType === '3344'">
140   - <el-select
141   - v-model="item.value"
142   - :placeholder="item.specHoldplace"
143   - class="w100"
144   - >
145   - <el-option
146   - v-for="value in item.values"
147   - :key="value.value"
148   - :label="value.valueName"
149   - :value="value.value"
150   - />
  79 + <el-select v-model="item.value" :placeholder="item.specHoldplace" class="w100">
  80 + <el-option v-for="value in item.values" :key="value.value" :label="value.valueName"
  81 + :value="value.value" />
151 82 </el-select>
152 83 </el-form-item>
153 84 </el-col>
154   -
155   - <el-col :span="12" v-if="index < addOwnerMemberInfo.attrs.length-1">
156   - <el-form-item
157   - :label="addOwnerMemberInfo.attrs[index+1].specName"
158   - v-if="addOwnerMemberInfo.attrs[index+1].specType === '2233'"
159   - >
160   - <el-input
161   - v-model="addOwnerMemberInfo.attrs[index+1].value"
162   - :placeholder="addOwnerMemberInfo.attrs[index+1].specHoldplace"
163   - clearable
164   - />
  85 +
  86 + <el-col :span="12" v-if="index < addOwnerMemberInfo.attrs.length - 1">
  87 + <el-form-item :label="addOwnerMemberInfo.attrs[index + 1].specName"
  88 + v-if="addOwnerMemberInfo.attrs[index + 1].specType === '2233'">
  89 + <el-input v-model="addOwnerMemberInfo.attrs[index + 1].value"
  90 + :placeholder="addOwnerMemberInfo.attrs[index + 1].specHoldplace" clearable />
165 91 </el-form-item>
166   -
167   - <el-form-item
168   - :label="addOwnerMemberInfo.attrs[index+1].specName"
169   - v-if="addOwnerMemberInfo.attrs[index+1].specType === '3344'"
170   - >
171   - <el-select
172   - v-model="addOwnerMemberInfo.attrs[index+1].value"
173   - :placeholder="addOwnerMemberInfo.attrs[index+1].specHoldplace"
174   - class="w100"
175   - >
176   - <el-option
177   - v-for="value in addOwnerMemberInfo.attrs[index+1].values"
178   - :key="value.value"
179   - :label="value.valueName"
180   - :value="value.value"
181   - />
  92 +
  93 + <el-form-item :label="addOwnerMemberInfo.attrs[index + 1].specName"
  94 + v-if="addOwnerMemberInfo.attrs[index + 1].specType === '3344'">
  95 + <el-select v-model="addOwnerMemberInfo.attrs[index + 1].value"
  96 + :placeholder="addOwnerMemberInfo.attrs[index + 1].specHoldplace" class="w100">
  97 + <el-option v-for="value in addOwnerMemberInfo.attrs[index + 1].values" :key="value.value"
  98 + :label="value.valueName" :value="value.value" />
182 99 </el-select>
183 100 </el-form-item>
184 101 </el-col>
185 102 </el-row>
186 103 </template>
187 104 </el-form>
188   -
  105 +
189 106 <div slot="footer" class="dialog-footer">
190 107 <el-button @click="_closeSaveOwnerModal">{{ $t('common.cancel') }}</el-button>
191 108 <el-button type="primary" @click="saveOwnerMemberInfo">{{ $t('common.save') }}</el-button>
... ... @@ -195,8 +112,11 @@
195 112  
196 113 <script>
197 114 import { getCommunityId } from '@/api/community/communityApi'
198   -import { getAttrSpec, getAttrValue } from '@/api/community/communityApi'
  115 +import { getAttrValue } from '@/api/community/communityApi'
199 116 import { uploadFile } from '@/api/staff/addStaffApi'
  117 +import { getAttrSpecList } from '@/api/dev/attrSpecApi'
  118 +import { saveOwnerMember } from '@/api/owner/addOwnerMemberApi'
  119 +
200 120  
201 121 export default {
202 122 name: 'AddOwnerMember',
... ... @@ -253,26 +173,25 @@ export default {
253 173 }
254 174 },
255 175 methods: {
256   - open(ownerId) {
257   - this.addOwnerMemberInfo.ownerId = ownerId
  176 + open(params) {
  177 + this.addOwnerMemberInfo.ownerId = params.ownerId
258 178 this._loadOwnerAttrSpec()
259 179 this.dialogVisible = true
260 180 this.$nextTick(() => {
261 181 this.$refs.form.clearValidate()
262 182 })
263 183 },
264   -
265   - saveOwnerMemberInfo() {
  184 +
  185 + async saveOwnerMemberInfo() {
266 186 this.$refs.form.validate(valid => {
267 187 if (valid) {
268 188 const params = {
269 189 ...this.addOwnerMemberInfo,
270 190 communityId: getCommunityId()
271 191 }
272   -
273   - this.$http.post('/owner.saveOwnerMember', params)
  192 + saveOwnerMember(params)
274 193 .then(res => {
275   - if (res.data.code === 0) {
  194 + if (res.code === 0) {
276 195 this.$message.success(this.$t('common.saveSuccess'))
277 196 this.dialogVisible = false
278 197 this.$emit('save-success')
... ... @@ -287,10 +206,10 @@ export default {
287 206 }
288 207 })
289 208 },
290   -
  209 +
291 210 _loadOwnerAttrSpec() {
292 211 this.addOwnerMemberInfo.attrs = []
293   - getAttrSpec('building_owner_attr').then(data => {
  212 + getAttrSpecList({ page: 1, row: 100, tableName: 'building_owner_attr' }).then(data => {
294 213 data.forEach(item => {
295 214 if (item.specShow === 'Y') {
296 215 item.value = ''
... ... @@ -301,7 +220,7 @@ export default {
301 220 })
302 221 })
303 222 },
304   -
  223 +
305 224 _loadAttrValue(specCd, values) {
306 225 getAttrValue(specCd).then(data => {
307 226 data.forEach(item => {
... ... @@ -311,11 +230,11 @@ export default {
311 230 })
312 231 })
313 232 },
314   -
  233 +
315 234 _uploadPhoto() {
316 235 this.$refs.fileInput.click()
317 236 },
318   -
  237 +
319 238 _choosePhoto(event) {
320 239 const files = event.target.files
321 240 if (files && files.length > 0) {
... ... @@ -324,16 +243,16 @@ export default {
324 243 this.$message.error(this.$t('addOwnerMember.validate.photoSize'))
325 244 return
326 245 }
327   -
  246 +
328 247 this._doUploadImage(file)
329 248 }
330 249 },
331   -
  250 +
332 251 _doUploadImage(file) {
333 252 const formData = new FormData()
334 253 formData.append('uploadFile', file)
335 254 formData.append('communityId', getCommunityId())
336   -
  255 +
337 256 uploadFile(formData).then(res => {
338 257 this.addOwnerMemberInfo.ownerPhoto = res.fileId
339 258 this.addOwnerMemberInfo.ownerPhotoUrl = res.url
... ... @@ -342,7 +261,7 @@ export default {
342 261 this.$message.error(this.$t('addOwnerMember.uploadFailed'))
343 262 })
344 263 },
345   -
  264 +
346 265 _closeSaveOwnerModal() {
347 266 this.dialogVisible = false
348 267 this.$refs.form.resetFields()
... ... @@ -370,18 +289,22 @@ export default {
370 289 .w100 {
371 290 width: 100%;
372 291 }
  292 +
373 293 .mt10 {
374 294 margin-top: 10px;
375 295 }
  296 +
376 297 .text-center {
377 298 text-align: center;
378 299 }
  300 +
379 301 .avatar-uploader {
380 302 width: 100%;
381 303 display: flex;
382 304 justify-content: center;
383 305 margin-bottom: 10px;
384 306 }
  307 +
385 308 .avatar {
386 309 width: 150px;
387 310 height: 150px;
... ...
src/components/owner/deleteOwner.vue
... ... @@ -33,7 +33,8 @@ export default {
33 33 async confirmDelete() {
34 34 try {
35 35 await deleteOwner({
36   - ownerId: this.owner.ownerId
  36 + ownerId: this.owner.ownerId,
  37 + memberId: this.owner.memberId
37 38 })
38 39 this.$message.success(this.$t('listOwner.deleteSuccess'))
39 40 this.visible = false
... ...
src/components/owner/editOwnerMember.vue
1 1 <template>
2   - <el-dialog
3   - :title="$t('editOwnerMember.title')"
4   - :visible.sync="dialogVisible"
5   - width="80%"
6   - @close="_closeEditOwnerMemberModal"
7   - >
  2 + <el-dialog :title="$t('editOwnerMember.title')" :visible.sync="dialogVisible" width="80%"
  3 + @close="_closeEditOwnerMemberModal">
8 4 <el-form :model="editOwnerMemberInfo" :rules="rules" ref="form" label-width="120px">
9 5 <el-row :gutter="20">
10 6 <el-col :span="12">
11 7 <el-form-item :label="$t('editOwnerMember.personRole')" prop="personRole">
12   - <el-select
13   - v-model="editOwnerMemberInfo.personRole"
14   - :placeholder="$t('editOwnerMember.placeholder.personRole')"
15   - class="w100"
16   - >
17   - <el-option
18   - v-for="item in roleOptions"
19   - :key="item.value"
20   - :label="item.label"
21   - :value="item.value"
22   - />
  8 + <el-select v-model="editOwnerMemberInfo.personRole"
  9 + :placeholder="$t('editOwnerMember.placeholder.personRole')" class="w100">
  10 + <el-option v-for="item in roleOptions" :key="item.value" :label="item.label" :value="item.value" />
23 11 </el-select>
24 12 </el-form-item>
25   -
  13 +
26 14 <el-form-item :label="$t('editOwnerMember.name')" prop="name">
27   - <el-input
28   - v-model.trim="editOwnerMemberInfo.name"
29   - :placeholder="$t('editOwnerMember.placeholder.name')"
30   - clearable
31   - />
  15 + <el-input v-model.trim="editOwnerMemberInfo.name" :placeholder="$t('editOwnerMember.placeholder.name')"
  16 + clearable />
32 17 </el-form-item>
33   -
  18 +
34 19 <el-form-item :label="$t('editOwnerMember.link')" prop="link">
35   - <el-input
36   - v-model.trim="editOwnerMemberInfo.link"
37   - :placeholder="$t('editOwnerMember.placeholder.link')"
38   - clearable
39   - maxlength="11"
40   - />
  20 + <el-input v-model.trim="editOwnerMemberInfo.link" :placeholder="$t('editOwnerMember.placeholder.link')"
  21 + clearable maxlength="11" />
41 22 </el-form-item>
42   -
43   - <el-form-item
44   - :label="$t('editOwnerMember.sex')"
45   - prop="sex"
46   - v-if="editOwnerMemberInfo.personType === 'P'"
47   - >
48   - <el-select
49   - v-model="editOwnerMemberInfo.sex"
50   - :placeholder="$t('editOwnerMember.placeholder.sex')"
51   - class="w100"
52   - >
53   - <el-option
54   - v-for="item in sexOptions"
55   - :key="item.value"
56   - :label="item.label"
57   - :value="item.value"
58   - />
  23 +
  24 + <el-form-item :label="$t('editOwnerMember.sex')" prop="sex" v-if="editOwnerMemberInfo.personType === 'P'">
  25 + <el-select v-model="editOwnerMemberInfo.sex" :placeholder="$t('editOwnerMember.placeholder.sex')"
  26 + class="w100">
  27 + <el-option v-for="item in sexOptions" :key="item.value" :label="item.label" :value="item.value" />
59 28 </el-select>
60 29 </el-form-item>
61   -
  30 +
62 31 <el-form-item :label="$t('editOwnerMember.address')">
63   - <el-input
64   - v-model.trim="editOwnerMemberInfo.address"
65   - :placeholder="$t('editOwnerMember.placeholder.address')"
66   - clearable
67   - />
  32 + <el-input v-model.trim="editOwnerMemberInfo.address"
  33 + :placeholder="$t('editOwnerMember.placeholder.address')" clearable />
68 34 </el-form-item>
69 35 </el-col>
70   -
  36 +
71 37 <el-col :span="12" class="text-center">
72 38 <div class="avatar-uploader">
73   - <img
74   - v-if="editOwnerMemberInfo.ownerPhotoUrl"
75   - :src="editOwnerMemberInfo.ownerPhotoUrl"
76   - class="avatar"
77   - :alt="$t('editOwnerMember.photo')"
78   - @error="handleImageError"
79   - >
80   - <img
81   - v-else
82   - src="/img/noPhoto.jpg"
83   - class="avatar"
84   - :alt="$t('editOwnerMember.photo')"
85   - >
  39 + <img v-if="editOwnerMemberInfo.ownerPhotoUrl" :src="editOwnerMemberInfo.ownerPhotoUrl" class="avatar"
  40 + :alt="$t('editOwnerMember.photo')" @error="handleImageError">
  41 + <img v-else src="/img/noPhoto.jpg" class="avatar" :alt="$t('editOwnerMember.photo')">
86 42 </div>
87   - <el-button
88   - type="primary"
89   - class="mt10"
90   - @click="_uploadEditMemberPhoto"
91   - >
  43 + <el-button type="primary" class="mt10" @click="_uploadEditMemberPhoto">
92 44 {{ $t('editOwnerMember.uploadPhoto') }}
93 45 </el-button>
94   - <input
95   - type="file"
96   - ref="fileInput"
97   - accept=".jpg,.jpeg,.png"
98   - @change="_chooseEditMemberPhoto"
99   - style="display: none"
100   - >
  46 + <input type="file" ref="fileInput" accept=".jpg,.jpeg,.png" @change="_chooseEditMemberPhoto"
  47 + style="display: none">
101 48 </el-col>
102 49 </el-row>
103   -
  50 +
104 51 <el-row :gutter="20">
105 52 <el-col :span="12">
106 53 <el-form-item :label="$t('editOwnerMember.concactLink')">
107   - <el-input
108   - v-model.trim="editOwnerMemberInfo.concactLink"
109   - :placeholder="$t('editOwnerMember.placeholder.concactLink')"
110   - clearable
111   - />
  54 + <el-input v-model.trim="editOwnerMemberInfo.concactLink"
  55 + :placeholder="$t('editOwnerMember.placeholder.concactLink')" clearable />
112 56 </el-form-item>
113 57 </el-col>
114   -
  58 +
115 59 <el-col :span="12">
116 60 <el-form-item :label="$t('editOwnerMember.idCard')">
117   - <el-input
118   - v-model.trim="editOwnerMemberInfo.idCard"
119   - :placeholder="$t('editOwnerMember.placeholder.idCard')"
120   - clearable
121   - />
  61 + <el-input v-model.trim="editOwnerMemberInfo.idCard" :placeholder="$t('editOwnerMember.placeholder.idCard')"
  62 + clearable />
122 63 </el-form-item>
123   -
  64 +
124 65 <el-form-item :label="$t('editOwnerMember.remark')">
125   - <el-input
126   - v-model.trim="editOwnerMemberInfo.remark"
127   - :placeholder="$t('editOwnerMember.placeholder.remark')"
128   - clearable
129   - />
  66 + <el-input v-model.trim="editOwnerMemberInfo.remark" :placeholder="$t('editOwnerMember.placeholder.remark')"
  67 + clearable />
130 68 </el-form-item>
131 69 </el-col>
132 70 </el-row>
133   -
134   - <template v-for="(item,index) in editOwnerMemberInfo.attrs">
  71 +
  72 + <template v-for="(item, index) in editOwnerMemberInfo.attrs">
135 73 <el-row :gutter="20" v-if="index % 2 === 0" :key="index">
136 74 <el-col :span="12">
137 75 <el-form-item :label="item.specName" v-if="item.specType === '2233'">
138   - <el-input
139   - v-model="item.value"
140   - :placeholder="item.specHoldplace"
141   - clearable
142   - />
  76 + <el-input v-model="item.value" :placeholder="item.specHoldplace" clearable />
143 77 </el-form-item>
144   -
  78 +
145 79 <el-form-item :label="item.specName" v-if="item.specType === '3344'">
146   - <el-select
147   - v-model="item.value"
148   - :placeholder="item.specHoldplace"
149   - class="w100"
150   - >
151   - <el-option
152   - v-for="value in item.values"
153   - :key="value.value"
154   - :label="value.valueName"
155   - :value="value.value"
156   - />
  80 + <el-select v-model="item.value" :placeholder="item.specHoldplace" class="w100">
  81 + <el-option v-for="value in item.values" :key="value.value" :label="value.valueName"
  82 + :value="value.value" />
157 83 </el-select>
158 84 </el-form-item>
159 85 </el-col>
160   -
161   - <el-col :span="12" v-if="index < editOwnerMemberInfo.attrs.length-1">
162   - <el-form-item
163   - :label="editOwnerMemberInfo.attrs[index+1].specName"
164   - v-if="editOwnerMemberInfo.attrs[index+1].specType === '2233'"
165   - >
166   - <el-input
167   - v-model="editOwnerMemberInfo.attrs[index+1].value"
168   - :placeholder="editOwnerMemberInfo.attrs[index+1].specHoldplace"
169   - clearable
170   - />
  86 +
  87 + <el-col :span="12" v-if="index < editOwnerMemberInfo.attrs.length - 1">
  88 + <el-form-item :label="editOwnerMemberInfo.attrs[index + 1].specName"
  89 + v-if="editOwnerMemberInfo.attrs[index + 1].specType === '2233'">
  90 + <el-input v-model="editOwnerMemberInfo.attrs[index + 1].value"
  91 + :placeholder="editOwnerMemberInfo.attrs[index + 1].specHoldplace" clearable />
171 92 </el-form-item>
172   -
173   - <el-form-item
174   - :label="editOwnerMemberInfo.attrs[index+1].specName"
175   - v-if="editOwnerMemberInfo.attrs[index+1].specType === '3344'"
176   - >
177   - <el-select
178   - v-model="editOwnerMemberInfo.attrs[index+1].value"
179   - :placeholder="editOwnerMemberInfo.attrs[index+1].specHoldplace"
180   - class="w100"
181   - >
182   - <el-option
183   - v-for="value in editOwnerMemberInfo.attrs[index+1].values"
184   - :key="value.value"
185   - :label="value.valueName"
186   - :value="value.value"
187   - />
  93 +
  94 + <el-form-item :label="editOwnerMemberInfo.attrs[index + 1].specName"
  95 + v-if="editOwnerMemberInfo.attrs[index + 1].specType === '3344'">
  96 + <el-select v-model="editOwnerMemberInfo.attrs[index + 1].value"
  97 + :placeholder="editOwnerMemberInfo.attrs[index + 1].specHoldplace" class="w100">
  98 + <el-option v-for="value in editOwnerMemberInfo.attrs[index + 1].values" :key="value.value"
  99 + :label="value.valueName" :value="value.value" />
188 100 </el-select>
189 101 </el-form-item>
190 102 </el-col>
191 103 </el-row>
192 104 </template>
193 105 </el-form>
194   -
  106 +
195 107 <div slot="footer" class="dialog-footer">
196 108 <el-button @click="_closeEditOwnerMemberModal">{{ $t('common.cancel') }}</el-button>
197 109 <el-button type="primary" @click="editOwnerMemberMethod">{{ $t('common.save') }}</el-button>
... ... @@ -201,7 +113,10 @@
201 113  
202 114 <script>
203 115 import { getCommunityId } from '@/api/community/communityApi'
204   -import { getAttrSpec, getAttrValue } from '@/api/community/communityApi'
  116 +import { getAttrSpecList } from '@/api/dev/attrSpecApi'
  117 +import { getAttrValueList } from '@/api/dev/attrValueApi'
  118 +import { editOwnerMember } from '@/api/owner/addOwnerMemberApi'
  119 +
205 120 import { uploadFile } from '@/api/staff/addStaffApi'
206 121  
207 122 export default {
... ... @@ -267,9 +182,9 @@ export default {
267 182 ownerPhotoUrl: member.faceUrl,
268 183 attrs: []
269 184 }
270   -
  185 +
271 186 this._loadEditOwnerMemberAttrSpec().then(() => {
272   - if (Object.prototype.hasOwnProperty.call(member,'ownerAttrDtos')) {
  187 + if (Object.prototype.hasOwnProperty.call(member, 'ownerAttrDtos')) {
273 188 const ownerAttrDtos = member.ownerAttrDtos
274 189 this.editOwnerMemberInfo.attrs.forEach(attrItem => {
275 190 ownerAttrDtos.forEach(item => {
... ... @@ -280,14 +195,14 @@ export default {
280 195 })
281 196 })
282 197 }
283   -
  198 +
284 199 this.dialogVisible = true
285 200 this.$nextTick(() => {
286 201 this.$refs.form.clearValidate()
287 202 })
288 203 })
289 204 },
290   -
  205 +
291 206 editOwnerMemberMethod() {
292 207 this.$refs.form.validate(valid => {
293 208 if (valid) {
... ... @@ -295,15 +210,15 @@ export default {
295 210 ...this.editOwnerMemberInfo,
296 211 communityId: getCommunityId()
297 212 }
298   -
299   - this.$http.post('/owner.editOwnerMember', params)
  213 +
  214 + editOwnerMember(params)
300 215 .then(res => {
301   - if (res.data.code === 0) {
  216 + if (res.code === 0) {
302 217 this.$message.success(this.$t('common.saveSuccess'))
303 218 this.dialogVisible = false
304 219 this.$emit('save-success')
305 220 } else {
306   - this.$message.error(res.data.msg || this.$t('common.saveFailed'))
  221 + this.$message.error(res.msg || this.$t('common.saveFailed'))
307 222 }
308 223 })
309 224 .catch(err => {
... ... @@ -313,12 +228,12 @@ export default {
313 228 }
314 229 })
315 230 },
316   -
  231 +
317 232 _loadEditOwnerMemberAttrSpec() {
318 233 return new Promise(resolve => {
319 234 this.editOwnerMemberInfo.attrs = []
320   - getAttrSpec('building_owner_attr').then(data => {
321   - data.forEach(item => {
  235 + getAttrSpecList({ page: 1, row: 100, tableName: 'building_owner_attr' }).then(data => {
  236 + data.data.forEach(item => {
322 237 if (item.specShow === 'Y') {
323 238 item.value = ''
324 239 item.values = []
... ... @@ -330,21 +245,21 @@ export default {
330 245 })
331 246 })
332 247 },
333   -
  248 +
334 249 _loadEditMemberAttrValue(specCd, values) {
335   - getAttrValue(specCd).then(data => {
336   - data.forEach(item => {
  250 + getAttrValueList({ specCd: specCd, page: 1, row: 100 }).then(data => {
  251 + data.data.forEach(item => {
337 252 if (item.valueShow === 'Y') {
338 253 values.push(item)
339 254 }
340 255 })
341 256 })
342 257 },
343   -
  258 +
344 259 _uploadEditMemberPhoto() {
345 260 this.$refs.fileInput.click()
346 261 },
347   -
  262 +
348 263 _chooseEditMemberPhoto(event) {
349 264 const files = event.target.files
350 265 if (files && files.length > 0) {
... ... @@ -353,16 +268,16 @@ export default {
353 268 this.$message.error(this.$t('editOwnerMember.validate.photoSize'))
354 269 return
355 270 }
356   -
  271 +
357 272 this._doUploadImageEditOwnerMember(file)
358 273 }
359 274 },
360   -
  275 +
361 276 _doUploadImageEditOwnerMember(file) {
362 277 const formData = new FormData()
363 278 formData.append('uploadFile', file)
364 279 formData.append('communityId', getCommunityId())
365   -
  280 +
366 281 uploadFile(formData).then(res => {
367 282 this.editOwnerMemberInfo.ownerPhoto = res.fileId
368 283 this.editOwnerMemberInfo.ownerPhotoUrl = res.url
... ... @@ -371,12 +286,12 @@ export default {
371 286 this.$message.error(this.$t('editOwnerMember.uploadFailed'))
372 287 })
373 288 },
374   -
  289 +
375 290 _closeEditOwnerMemberModal() {
376 291 this.dialogVisible = false
377 292 this.$refs.form.resetFields()
378 293 },
379   -
  294 +
380 295 handleImageError(e) {
381 296 e.target.src = '/img/noPhoto.jpg'
382 297 }
... ... @@ -388,18 +303,22 @@ export default {
388 303 .w100 {
389 304 width: 100%;
390 305 }
  306 +
391 307 .mt10 {
392 308 margin-top: 10px;
393 309 }
  310 +
394 311 .text-center {
395 312 text-align: center;
396 313 }
  314 +
397 315 .avatar-uploader {
398 316 width: 100%;
399 317 display: flex;
400 318 justify-content: center;
401 319 margin-bottom: 10px;
402 320 }
  321 +
403 322 .avatar {
404 323 width: 150px;
405 324 height: 150px;
... ...
src/components/owner/ownerDetailMember.vue
1 1 <template>
2 2 <div class="margin-top">
3   - <el-row class="margin-top-lg">
  3 + <el-row class="">
4 4 <el-col :span="4" class="padding-right-xs padding-left-xl">
5 5 <el-input v-model="ownerDetailMemberInfo.name" type="text"
6 6 :placeholder="$t('ownerDetailMember.placeholder.name')" class="form-control"></el-input>
7 7 </el-col>
8 8 <el-col :span="4" class="padding-right-xs padding-right-xl">
9   - <el-button type="primary" size="small" style="margin-left:10px"
10   - @click="_qureyOwnerDetailMember()">
  9 + <el-button type="primary" size="small" style="margin-left:10px" @click="_qureyOwnerDetailMember()">
11 10 <i class="el-icon-search"></i>{{ $t('common.query') }}
12 11 </el-button>
13 12 </el-col>
14 13 <el-col :span="16" class="text-right">
15   - <el-button type="primary" size="small" style="margin-left:10px"
16   - v-if="hasPrivilege('502023032885101706')" @click="openAddMemberModel()">
  14 + <el-button type="primary" size="small" style="margin-left:10px" v-if="hasPrivilege('502023032885101706')"
  15 + @click="openAddMemberModel()">
17 16 <i class="el-icon-plus"></i>{{ $t('common.add') }}
18 17 </el-button>
19 18 </el-col>
... ... @@ -24,14 +23,13 @@
24 23 <template slot-scope="scope">
25 24 <img style="width: 60px; height: 60px;" class="border-radius" v-if="scope.row.faceUrl"
26 25 :src="scope.row.faceUrl" @click="_viewOwnerFace(scope.row.faceUrl)" />
27   - <img style="width: 60px; height: 60px;" class="border-radius" v-else
28   - src="/img/noPhoto.jpg" />
  26 + <img style="width: 60px; height: 60px;" class="border-radius" v-else src="/img/noPhoto.jpg" />
29 27 </template>
30 28 </el-table-column>
31 29 <el-table-column prop="name" :label="$t('ownerDetailMember.name')" align="center"></el-table-column>
32 30 <el-table-column prop="sex" :label="$t('ownerDetailMember.gender')" align="center">
33 31 <template slot-scope="scope">
34   - {{scope.row.sex == 0 ? $t('common.male') : $t('common.female')}}
  32 + {{ scope.row.sex == 0 ? $t('common.male') : $t('common.female') }}
35 33 </template>
36 34 </el-table-column>
37 35 <el-table-column prop="personRoleName" :label="$t('ownerDetailMember.role')" align="center"></el-table-column>
... ... @@ -41,8 +39,7 @@
41 39 <el-table-column :label="$t('common.operation')" align="center" width="180">
42 40 <template slot-scope="scope">
43 41 <el-button-group>
44   - <el-button size="mini" @click="_openEditOwnerModel(scope.row)"
45   - v-if="hasPrivilege('502023032899781711')">
  42 + <el-button size="mini" @click="_openEditOwnerModel(scope.row)" v-if="hasPrivilege('502023032899781711')">
46 43 {{ $t('common.edit') }}
47 44 </el-button>
48 45 <el-button size="mini" @click="_openDeleteOwnerModel(scope.row)"
... ... @@ -53,18 +50,14 @@
53 50 </template>
54 51 </el-table-column>
55 52 </el-table>
56   - <el-pagination
57   - @current-change="handleCurrentChange"
58   - :current-page="pagination.currentPage"
59   - :page-size="pagination.pageSize"
60   - :total="pagination.total"
61   - layout="total, prev, pager, next, jumper">
  53 + <el-pagination @current-change="handleCurrentChange" :current-page="pagination.currentPage"
  54 + :page-size="pagination.pageSize" :total="pagination.total" layout="total, prev, pager, next, jumper">
62 55 </el-pagination>
63 56 </div>
64 57  
65 58 <add-owner-member ref="addOwnerMember" @refresh="_loadOwnerDetailMemberData"></add-owner-member>
66 59 <edit-owner-member ref="editOwnerMember" @refresh="_loadOwnerDetailMemberData"></edit-owner-member>
67   - <delete-owner ref="deleteOwner" @refresh="_loadOwnerDetailMemberData"></delete-owner>
  60 + <delete-owner ref="deleteOwner" @refresh="_loadOwnerDetailMemberData" @success="_loadOwnerDetailMemberData"></delete-owner>
68 61 </div>
69 62 </template>
70 63  
... ... @@ -123,6 +116,7 @@ export default {
123 116 this._loadOwnerDetailMemberData(1, this.pagination.pageSize)
124 117 },
125 118 openAddMemberModel() {
  119 +
126 120 this.$refs.addOwnerMember.open({ ownerId: this.ownerDetailMemberInfo.ownerId })
127 121 },
128 122 _openDeleteOwnerModel(member) {
... ... @@ -153,18 +147,23 @@ export default {
153 147 .margin-top {
154 148 margin-top: 20px;
155 149 }
  150 +
156 151 .margin-top-lg {
157 152 margin-top: 30px;
158 153 }
  154 +
159 155 .padding-right-xs {
160 156 padding-right: 5px;
161 157 }
  158 +
162 159 .padding-left-xl {
163 160 padding-left: 20px;
164 161 }
  162 +
165 163 .border-radius {
166 164 border-radius: 4px;
167 165 }
  166 +
168 167 .text-right {
169 168 text-align: right;
170 169 }
... ...
src/components/room/addShops.vue
1 1 <template>
2   - <el-dialog :title="$t('shops.addShop')" :visible.sync="dialogVisible" width="50%">
  2 + <el-dialog :title="$t('shops.addShop')" :visible.sync="dialogVisible" width="40%">
3 3 <el-form ref="form" :model="formData" :rules="rules" label-width="120px">
4 4 <el-form-item :label="$t('shops.shopNumber')" prop="roomNum">
5 5 <el-input v-model="formData.roomNum" :placeholder="$t('shops.shopNumberPlaceholder')"></el-input>
... ... @@ -8,8 +8,7 @@
8 8 <el-input v-model="formData.layer" :placeholder="$t('shops.floorRequired')"></el-input>
9 9 </el-form-item>
10 10 <el-form-item :label="$t('shops.building')" prop="floorId">
11   - <el-select v-model="formData.floorId"
12   - :placeholder="$t('shops.building')" style="width: 100%">
  11 + <el-select v-model="formData.floorId" :placeholder="$t('shops.building')" style="width: 100%">
13 12 <el-option v-for="item in floors" :key="item.floorId" :label="item.floorNum + $t('shops.building')"
14 13 :value="item.floorId"></el-option>
15 14 </el-select>
... ... @@ -42,7 +41,7 @@
42 41 <script>
43 42 import { saveShops } from '@/api/room/shopsApi'
44 43 import { getFloors } from '@/api/room/roomApi'
45   -import {getCommunityId} from '@/api/community/communityApi'
  44 +import { getCommunityId } from '@/api/community/communityApi'
46 45  
47 46 export default {
48 47 name: 'AddShops',
... ... @@ -136,13 +135,13 @@ export default {
136 135 this.$message.error(this.$t('common.saveFailed'))
137 136 })
138 137 },
139   - async searchFloors() {
140   - const {apiFloorDataVoList} = await getFloors({
141   - communityId: getCommunityId(),
142   - page:1,
143   - row:100
144   - })
145   - this.floors = apiFloorDataVoList
  138 + async searchFloors() {
  139 + const { apiFloorDataVoList } = await getFloors({
  140 + communityId: getCommunityId(),
  141 + page: 1,
  142 + row: 100
  143 + })
  144 + this.floors = apiFloorDataVoList
146 145 },
147 146 }
148 147 }
... ...
src/components/room/editRoom.vue
... ... @@ -25,29 +25,32 @@
25 25 </el-col>
26 26 <el-col :span="12">
27 27 <el-form-item :label="$t('room.editRoom.roomType')" required>
28   - <el-select v-model="form.roomSubType" :placeholder="$t('room.editRoom.placeholder.roomType')" style="width: 100%;">
  28 + <el-select v-model="form.roomSubType" :placeholder="$t('room.editRoom.placeholder.roomType')"
  29 + style="width: 100%;">
29 30 <el-option v-for="item in roomSubTypes" :key="item.statusCd" :label="item.name" :value="item.statusCd" />
30 31 </el-select>
31 32 </el-form-item>
32 33 </el-col>
33 34 </el-row>
34 35  
35   - <el-row>
  36 + <!-- <el-row>
36 37 <el-col :span="12">
37 38 <el-form-item :label="$t('room.editRoom.apartment1')" required>
38   - <el-select v-model="form.apartment1" :placeholder="$t('room.editRoom.placeholder.apartment')" style="width: 100%;">
  39 + <el-select v-model="form.apartment1" :placeholder="$t('room.editRoom.placeholder.apartment')"
  40 + style="width: 100%;">
39 41 <el-option v-for="item in apartment1Options" :key="item.value" :label="item.label" :value="item.value" />
40 42 </el-select>
41 43 </el-form-item>
42 44 </el-col>
43 45 <el-col :span="12">
44 46 <el-form-item :label="$t('room.editRoom.apartment2')" required>
45   - <el-select v-model="form.apartment2" :placeholder="$t('room.editRoom.placeholder.apartment')" style="width: 100%;">
  47 + <el-select v-model="form.apartment2" :placeholder="$t('room.editRoom.placeholder.apartment')"
  48 + style="width: 100%;">
46 49 <el-option v-for="item in apartment2Options" :key="item.value" :label="item.label" :value="item.value" />
47 50 </el-select>
48 51 </el-form-item>
49 52 </el-col>
50   - </el-row>
  53 + </el-row> -->
51 54  
52 55 <el-row>
53 56 <el-col :span="12">
... ... @@ -79,15 +82,16 @@
79 82 <el-row v-if="form.state !== '2002'">
80 83 <el-col :span="12">
81 84 <el-form-item :label="$t('room.editRoom.roomState')" required>
82   - <el-select v-model="form.state" :placeholder="$t('room.editRoom.placeholder.roomState')" style="width: 100%;">
  85 + <el-select v-model="form.state" :placeholder="$t('room.editRoom.placeholder.roomState')"
  86 + style="width: 100%;">
83 87 <el-option v-for="item in roomStateOptions" :key="item.value" :label="item.label" :value="item.value" />
84 88 </el-select>
85 89 </el-form-item>
86 90 </el-col>
87 91 <el-col :span="12">
88 92 <el-form-item :label="$t('room.editRoom.endTime')" required>
89   - <el-date-picker v-model="form.endTime" type="date" :placeholder="$t('room.editRoom.placeholder.endTime')" style="width: 100%;"
90   - value-format="yyyy-MM-dd" />
  93 + <el-date-picker v-model="form.endTime" type="date" :placeholder="$t('room.editRoom.placeholder.endTime')"
  94 + style="width: 100%;" value-format="yyyy-MM-dd" />
91 95 </el-form-item>
92 96 </el-col>
93 97 </el-row>
... ... @@ -102,7 +106,8 @@
102 106 </div>
103 107  
104 108 <el-form-item :label="$t('room.editRoom.remark')">
105   - <el-input v-model="form.remark" type="textarea" :placeholder="$t('room.editRoom.placeholder.remark')" :rows="3" />
  109 + <el-input v-model="form.remark" type="textarea" :placeholder="$t('room.editRoom.placeholder.remark')"
  110 + :rows="3" />
106 111 </el-form-item>
107 112 </el-form>
108 113  
... ...
src/components/room/searchRoom.vue
... ... @@ -2,11 +2,11 @@
2 2 <el-dialog :title="$t('searchRoom.title')" :visible.sync="dialogVisible" width="70%" @close="handleClose">
3 3 <div class="ibox">
4 4 <el-row v-if="showSearchCondition">
5   - <el-col :span="8">
  5 + <el-col :span="4">
6 6 <el-input :placeholder="$t('searchRoom.floorNumPlaceholder')" :readonly="floorNumInputReadonly"
7 7 v-model.trim="currentFloorNum" clearable />
8 8 </el-col>
9   - <el-col :span="8" :offset="1">
  9 + <el-col :span="4" :offset="1">
10 10 <el-input :placeholder="$t('searchRoom.roomNumPlaceholder')" v-model.trim="currentRoomNum" clearable />
11 11 </el-col>
12 12 <el-col :span="6" :offset="1">
... ... @@ -58,7 +58,7 @@
58 58 </div>
59 59 </el-dialog>
60 60 </template>
61   -
  61 +
62 62 <script>
63 63 import { queryRooms, queryRoomsWithSell, queryRoomsWithOutSell } from '@/api/room/roomApi'
64 64 import { getCommunityId } from '@/api/community/communityApi'
... ... @@ -176,7 +176,7 @@ export default {
176 176 }
177 177 }
178 178 </script>
179   -
  179 +
180 180 <style scoped>
181 181 .el-input {
182 182 width: 100%;
... ...
src/components/store/AddPropertyCompany.vue
1 1 <template>
2   - <el-dialog :title="$t('propertyCompanyManage.add')" :visible="visible" width="70%" @close="handleClose">
3   - <el-form ref="form" :model="formData" label-width="120px">
  2 + <el-dialog :title="$t('propertyCompanyManage.add')" :visible="visible" width="40%" @close="handleClose">
  3 + <el-form ref="form" :model="formData" label-width="120px" class="text-left">
4 4 <el-form-item :label="$t('propertyCompanyManage.name')" prop="name" required>
5 5 <el-input v-model="formData.name" />
6 6 </el-form-item>
... ... @@ -89,7 +89,7 @@ export default {
89 89 },
90 90 async fetchCommunities() {
91 91 try {
92   - const data = await listNoEnterCommunity({
  92 + const data = await listNoEnterCommunity({
93 93 communityName: ''
94 94 })
95 95 this.communities = data
... ...
src/components/store/EditPropertyCompany.vue
1 1 <template>
2   - <el-dialog
3   - :title="$t('propertyCompanyManage.edit')"
4   - :visible.sync="visible"
5   - width="70%"
6   - @close="handleClose"
7   - >
  2 + <el-dialog :title="$t('propertyCompanyManage.edit')" :visible.sync="visible" width="40%" @close="handleClose">
8 3 <el-form ref="form" :model="formData" label-width="120px">
9 4 <el-form-item :label="$t('propertyCompanyManage.name')" prop="name" required>
10 5 <el-input v-model="formData.name" />
... ... @@ -19,12 +14,7 @@
19 14 <el-input v-model="formData.corporation" />
20 15 </el-form-item>
21 16 <el-form-item :label="$t('propertyCompanyManage.foundingTime')" prop="foundingTime" required>
22   - <el-date-picker
23   - v-model="formData.foundingTime"
24   - type="date"
25   - value-format="yyyy-MM-dd"
26   - style="width: 100%"
27   - />
  17 + <el-date-picker v-model="formData.foundingTime" type="date" value-format="yyyy-MM-dd" style="width: 100%" />
28 18 </el-form-item>
29 19 <el-form-item :label="$t('propertyCompanyManage.landmark')" prop="nearbyLandmarks" required>
30 20 <el-input v-model="formData.nearbyLandmarks" />
... ...
src/i18n/commonLang.js
... ... @@ -55,6 +55,8 @@ export const messages = {
55 55 examine:'Examine',
56 56 audit:'Audit',
57 57 choose:'Choose',
  58 + submitSuccess:'Submit successfully',
  59 + saveSuccess:'successfully',
58 60 }
59 61 },
60 62 zh: {
... ... @@ -113,6 +115,8 @@ export const messages = {
113 115 examine:'审核',
114 116 audit:'审核',
115 117 choose:'选择',
  118 + submitSuccess:'提交成功',
  119 + saveSuccess:'成功',
116 120 }
117 121 }
118 122 }
119 123 \ No newline at end of file
... ...
src/views/contract/contractChangeDetailLang.js
... ... @@ -56,18 +56,6 @@ export const messages = {
56 56 squareMeters: 'Square Meters',
57 57 confirmDelete: 'Are you sure to delete this room?'
58 58 },
59   - searchRoom: {
60   - title: 'Select Room',
61   - buildingNo: 'Building No',
62   - buildingNoPlaceholder: 'Input building number',
63   - roomNo: 'Room No',
64   - roomNoPlaceholder: 'Input room number',
65   - roomId: 'Room ID',
66   - building: 'Building',
67   - unit: 'Unit',
68   - room: 'Room',
69   - floorUnit: 'Floor'
70   - },
71 59 purchaseApprovers: {
72 60 title: 'Approver Information',
73 61 orgName: 'Organization',
... ... @@ -152,18 +140,6 @@ export const messages = {
152 140 squareMeters: '平方米',
153 141 confirmDelete: '确定删除该房屋吗?'
154 142 },
155   - searchRoom: {
156   - title: '选择房屋',
157   - buildingNo: '楼栋编号',
158   - buildingNoPlaceholder: '输入楼栋编号',
159   - roomNo: '房屋编号',
160   - roomNoPlaceholder: '输入房屋编号',
161   - roomId: '房屋ID',
162   - building: '号楼',
163   - unit: '单元',
164   - room: '室',
165   - floorUnit: '层'
166   - },
167 143 purchaseApprovers: {
168 144 title: '审批人信息',
169 145 orgName: '所属组织',
... ...
src/views/owner/ownerBindRoom.vue
... ... @@ -58,7 +58,7 @@
58 58 <search-room ref="searchRoomRef" :roomFlag="2" @chooseRoom="handleChooseRoom" />
59 59 </div>
60 60 </template>
61   -
  61 +
62 62 <script>
63 63 import { sellRoom } from '@/api/owner/roomBindOwnerApi'
64 64 import { getCommunityId } from '@/api/community/communityApi'
... ... @@ -174,7 +174,7 @@ export default {
174 174 }
175 175 }
176 176 </script>
177   -
  177 +
178 178 <style scoped>
179 179 .room-bind-owner-container {
180 180 padding: 20px;
... ...
src/views/owner/ownerDetail.vue
... ... @@ -117,7 +117,7 @@
117 117 </el-row>
118 118 </div>
119 119  
120   - <divider/>
  120 + <divider />
121 121  
122 122 <div class="margin-top-sm">
123 123 <el-tabs v-model="ownerDetailInfo._currentTab" @tab-click="changeTab(ownerDetailInfo._currentTab)">
... ...
src/views/owner/ownerDetailLang.js
... ... @@ -223,6 +223,80 @@ export const messages = {
223 223 unused: 'Unused',
224 224 used: 'Used',
225 225 effectiveTime: 'Effective Time'
  226 + },
  227 + addOwnerMember: {
  228 + title: 'Add Member',
  229 + personRole: 'Person Role',
  230 + name: 'Name',
  231 + link: 'Phone',
  232 + sex: 'Gender',
  233 + concactLink: 'Alternate Phone',
  234 + address: 'Address',
  235 + idCard: 'ID Card',
  236 + remark: 'Remark',
  237 + photo: 'Photo',
  238 + uploadPhoto: 'Upload Photo',
  239 + placeholder: {
  240 + personRole: 'Required, please select person role',
  241 + name: 'Required, please enter name',
  242 + link: 'Required, please enter phone number',
  243 + sex: 'Required, please select gender',
  244 + concactLink: 'Optional, please enter alternate phone',
  245 + address: 'Optional, please enter address',
  246 + idCard: 'Optional, please enter ID card',
  247 + remark: 'Optional, please enter remark'
  248 + },
  249 + role: {
  250 + tenant: 'Tenant',
  251 + family: 'Family Member',
  252 + staff: 'Company Staff',
  253 + other: 'Other'
  254 + },
  255 + validate: {
  256 + nameLength: 'Name length must be between 2 and 64 characters',
  257 + phoneFormat: 'Invalid phone number format',
  258 + idCardFormat: 'Invalid ID card format',
  259 + remarkLength: 'Remark length cannot exceed 200 characters',
  260 + photoSize: 'Photo size cannot exceed 2MB'
  261 + },
  262 + uploadFailed: 'Photo upload failed'
  263 + },
  264 + editOwnerMember: {
  265 + title: 'Edit Member',
  266 + personRole: 'Person Role',
  267 + name: 'Name',
  268 + link: 'Phone',
  269 + sex: 'Gender',
  270 + concactLink: 'Alternate Phone',
  271 + address: 'Address',
  272 + idCard: 'ID Card',
  273 + remark: 'Remark',
  274 + photo: 'Photo',
  275 + uploadPhoto: 'Upload Photo',
  276 + placeholder: {
  277 + personRole: 'Required, please select person role',
  278 + name: 'Required, please enter name',
  279 + link: 'Required, please enter phone number',
  280 + sex: 'Required, please select gender',
  281 + concactLink: 'Optional, please enter alternate phone',
  282 + address: 'Optional, please enter address',
  283 + idCard: 'Optional, please enter ID card',
  284 + remark: 'Optional, please enter remark'
  285 + },
  286 + role: {
  287 + tenant: 'Tenant',
  288 + family: 'Family Member',
  289 + staff: 'Company Staff',
  290 + other: 'Other'
  291 + },
  292 + validate: {
  293 + nameLength: 'Name length must be between 2 and 64 characters',
  294 + phoneFormat: 'Invalid phone number format',
  295 + idCardFormat: 'Invalid ID card format',
  296 + remarkLength: 'Remark length cannot exceed 200 characters',
  297 + photoSize: 'Photo size cannot exceed 2MB'
  298 + },
  299 + uploadFailed: 'Photo upload failed'
226 300 }
227 301 },
228 302 zh: {
... ... @@ -449,6 +523,80 @@ export const messages = {
449 523 unused: '未使用',
450 524 used: '已使用',
451 525 effectiveTime: '生效时间'
  526 + },
  527 + addOwnerMember: {
  528 + title: '添加成员',
  529 + personRole: '人员角色',
  530 + name: '客户名称',
  531 + link: '联系手机',
  532 + sex: '性别',
  533 + concactLink: '备用手机',
  534 + address: '地址',
  535 + idCard: '身份证',
  536 + remark: '备注',
  537 + photo: '照片',
  538 + uploadPhoto: '上传照片',
  539 + placeholder: {
  540 + personRole: '必填,请选择人员角色',
  541 + name: '必填,请填写客户名称',
  542 + link: '必填,请填写联系方式',
  543 + sex: '必填,请选择性别',
  544 + concactLink: '可选,请填写备用手机',
  545 + address: '可填,请填写地址',
  546 + idCard: '可选,请填写身份证',
  547 + remark: '可填,请填写备注'
  548 + },
  549 + role: {
  550 + tenant: '租客',
  551 + family: '家庭成员',
  552 + staff: '公司员工',
  553 + other: '其他'
  554 + },
  555 + validate: {
  556 + nameLength: '姓名长度必须在2位至64位',
  557 + phoneFormat: '手机号格式错误',
  558 + idCardFormat: '身份证格式不对',
  559 + remarkLength: '备注长度不能超过200位',
  560 + photoSize: '图片大小不能超过2MB'
  561 + },
  562 + uploadFailed: '照片上传失败'
  563 + },
  564 + editOwnerMember: {
  565 + title: '修改成员',
  566 + personRole: '人员角色',
  567 + name: '客户名称',
  568 + link: '联系手机',
  569 + sex: '性别',
  570 + concactLink: '备用手机',
  571 + address: '地址',
  572 + idCard: '身份证',
  573 + remark: '备注',
  574 + photo: '照片',
  575 + uploadPhoto: '上传照片',
  576 + placeholder: {
  577 + personRole: '必填,请选择人员角色',
  578 + name: '必填,请填写客户名称',
  579 + link: '必填,请填写联系方式',
  580 + sex: '必填,请选择性别',
  581 + concactLink: '可选,请填写备用手机',
  582 + address: '可填,请填写地址',
  583 + idCard: '可选,请填写身份证',
  584 + remark: '可填,请填写备注'
  585 + },
  586 + role: {
  587 + tenant: '租客',
  588 + family: '家庭成员',
  589 + staff: '公司员工',
  590 + other: '其他'
  591 + },
  592 + validate: {
  593 + nameLength: '姓名长度必须在2位至64位',
  594 + phoneFormat: '手机号格式错误',
  595 + idCardFormat: '身份证格式不对',
  596 + remarkLength: '备注长度不能超过200位',
  597 + photoSize: '图片大小不能超过2MB'
  598 + },
  599 + uploadFailed: '照片上传失败'
452 600 }
453 601 }
454 602 }
455 603 \ No newline at end of file
... ...
src/views/room/addRoomViewList.vue
1 1 <template>
2 2 <div class="add-room-view-container">
3 3 <el-card class="box-card">
4   - <div slot="header" class="clearfix">
5   - <h5>{{ $t('addRoomView.title') }}</h5>
  4 + <div slot="header" class="flex justify-between ">
  5 + <div>{{ $t('addRoomView.title') }}</div>
6 6 <div class="ibox-tools">
7 7 <el-button type="primary" size="small" @click="_goBack">
8 8 <i class="el-icon-close"></i>{{ $t('common.back') }}
... ...
src/views/room/shopsList.vue
... ... @@ -129,7 +129,7 @@
129 129 <add-shops ref="addDialog" @success="loadData"></add-shops>
130 130 <bind-owner-shops ref="bindDialog" @success="loadData"></bind-owner-shops>
131 131 <edit-shops ref="editDialog" @success="loadData"></edit-shops>
132   - <delete-room ref="deleteDialog" @success="loadData"></delete-room>
  132 + <delete-room ref="deleteDialog" @handleRefreshRoom="loadData"></delete-room>
133 133 </div>
134 134 </template>
135 135  
... ...
src/views/store/propertyCompanyManageList.vue
... ... @@ -7,25 +7,13 @@
7 7 </div>
8 8 <el-row :gutter="20">
9 9 <el-col :span="6">
10   - <el-input
11   - v-model="searchForm.storeId"
12   - :placeholder="$t('propertyCompanyManage.enterStoreId')"
13   - clearable
14   - />
  10 + <el-input v-model="searchForm.storeId" :placeholder="$t('propertyCompanyManage.enterStoreId')" clearable />
15 11 </el-col>
16 12 <el-col :span="6">
17   - <el-input
18   - v-model="searchForm.name"
19   - :placeholder="$t('propertyCompanyManage.enterName')"
20   - clearable
21   - />
  13 + <el-input v-model="searchForm.name" :placeholder="$t('propertyCompanyManage.enterName')" clearable />
22 14 </el-col>
23 15 <el-col :span="6">
24   - <el-input
25   - v-model="searchForm.tel"
26   - :placeholder="$t('propertyCompanyManage.enterTel')"
27   - clearable
28   - />
  16 + <el-input v-model="searchForm.tel" :placeholder="$t('propertyCompanyManage.enterTel')" clearable />
29 17 </el-col>
30 18 <el-col :span="6">
31 19 <el-button type="primary" @click="handleSearch">
... ... @@ -63,7 +51,7 @@
63 51 <el-button size="mini" @click="handleEdit(scope.row)">
64 52 {{ $t('propertyCompanyManage.edit') }}
65 53 </el-button>
66   - <el-button size="mini" @click="handleDelete(scope.row)">
  54 + <el-button size="mini" @click="handleDelete(scope.row)">
67 55 {{ $t('propertyCompanyManage.delete') }}
68 56 </el-button>
69 57 <el-button size="mini" @click="handleManageCommunity(scope.row)">
... ... @@ -74,18 +62,10 @@
74 62 <el-button size="mini" @click="handleAdminLogin(scope.row)">
75 63 {{ $t('propertyCompanyManage.login') }}
76 64 </el-button>
77   - <el-button
78   - size="mini"
79   - v-if="scope.row.state !== '48002'"
80   - @click="handleUpdateState(scope.row, '48002')"
81   - >
  65 + <el-button size="mini" v-if="scope.row.state !== '48002'" @click="handleUpdateState(scope.row, '48002')">
82 66 {{ $t('propertyCompanyManage.restrictLogin') }}
83 67 </el-button>
84   - <el-button
85   - size="mini"
86   - v-else
87   - @click="handleUpdateState(scope.row, '48001')"
88   - >
  68 + <el-button size="mini" v-else @click="handleUpdateState(scope.row, '48001')">
89 69 {{ $t('propertyCompanyManage.restoreLogin') }}
90 70 </el-button>
91 71 <el-button size="mini" @click="handleResetPwd(scope.row)">
... ... @@ -101,15 +81,9 @@
101 81 <div class="tip">{{ $t('propertyCompanyManage.tip') }}</div>
102 82 </el-col>
103 83 <el-col :span="12">
104   - <el-pagination
105   - :current-page="pagination.current"
106   - :page-sizes="[10, 20, 30, 50]"
107   - :page-size="pagination.size"
108   - :total="pagination.total"
109   - layout="total, sizes, prev, pager, next, jumper"
110   - @size-change="handleSizeChange"
111   - @current-change="handlePageChange"
112   - />
  84 + <el-pagination :current-page="pagination.current" :page-sizes="[10, 20, 30, 50]" :page-size="pagination.size"
  85 + :total="pagination.total" layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
  86 + @current-change="handlePageChange" />
113 87 </el-col>
114 88 </el-row>
115 89 </el-card>
... ...