Commit 96361cb7bf801efc0b631749831f31ee42114165

Authored by wuxw
1 parent 35184bf6

完成业主认证功能

src/api/owner/auditAuthOwnerUndoApi.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +import { getCommunityId } from '@/api/community/communityApi'
  3 +
  4 +// 获取房间信息
  5 +export function getRoomInfo(params) {
  6 + return new Promise((resolve, reject) => {
  7 + request({
  8 + url: '/room.queryRooms',
  9 + method: 'get',
  10 + params: {
  11 + ...params,
  12 + communityId: getCommunityId()
  13 + }
  14 + }).then(response => {
  15 + const res = response.data
  16 + resolve(res)
  17 + }).catch(error => {
  18 + reject(error)
  19 + })
  20 + })
  21 +}
  22 +
  23 +// 获取业主列表
  24 +export function getOwnerList(params) {
  25 + return new Promise((resolve, reject) => {
  26 + request({
  27 + url: '/owner.queryOwners',
  28 + method: 'get',
  29 + params: {
  30 + ...params,
  31 + communityId: getCommunityId()
  32 + }
  33 + }).then(response => {
  34 + const res = response.data
  35 + resolve(res)
  36 + }).catch(error => {
  37 + reject(error)
  38 + })
  39 + })
  40 +}
  41 +
  42 +// 提交审核
  43 +export function auditAuthOwner(data) {
  44 + return new Promise((resolve, reject) => {
  45 + request({
  46 + url: '/owner.auditAuthOwner',
  47 + method: 'post',
  48 + data: {
  49 + ...data,
  50 + communityId: getCommunityId()
  51 + }
  52 + }).then(response => {
  53 + const res = response.data
  54 + resolve(res)
  55 + }).catch(error => {
  56 + reject(error)
  57 + })
  58 + })
  59 +}
0 60 \ No newline at end of file
... ...
src/components/owner/ResetStaffPwd.vue
... ... @@ -36,7 +36,7 @@ export default {
36 36 if (!this.currentStaff) return
37 37  
38 38 const params = {
39   - userId: this.currentStaff.userId
  39 + staffId: this.currentStaff.userId
40 40 }
41 41  
42 42 const res = await resetStaffPwd(params)
... ...
src/i18n/userI18n.js
... ... @@ -9,6 +9,7 @@ import { messages as scheduleClassesPageMessages } from '../views/org/scheduleCl
9 9 import { messages as workflowManageMessages } from '../views/system/workflowManageLang'
10 10 import { messages as workflowSettingManageMessages } from '../views/system/workflowSettingManageLang'
11 11 import { messages as ownerDetailMessages } from '../views/owner/ownerDetailLang'
  12 +import { messages as auditAuthOwnerUndoMessages } from '../views/owner/auditAuthOwnerUndoLang'
12 13  
13 14 export const messages = {
14 15 en: {
... ... @@ -23,6 +24,7 @@ export const messages = {
23 24 ...workflowManageMessages.en,
24 25 ...workflowSettingManageMessages.en,
25 26 ...ownerDetailMessages.en,
  27 + ...auditAuthOwnerUndoMessages.en,
26 28 },
27 29 zh: {
28 30 ...staffCommunityMessages.zh,
... ... @@ -36,5 +38,6 @@ export const messages = {
36 38 ...workflowManageMessages.zh,
37 39 ...workflowSettingManageMessages.zh,
38 40 ...ownerDetailMessages.zh,
  41 + ...auditAuthOwnerUndoMessages.zh,
39 42 }
40 43 }
41 44 \ No newline at end of file
... ...
src/lang/owner/auditAuthOwnerUndoLang.js 0 → 100644
  1 +export const messages = {
  2 + en: {
  3 + auditAuthOwnerUndo: {
  4 + title: 'Authentication Review',
  5 + back: 'Back',
  6 + roomNumber: 'Room Number:',
  7 + roomArea: 'Room Area:',
  8 + roomType: 'Room Type:',
  9 + roomStatus: 'Room Status:',
  10 + owner: 'Owner:',
  11 + ownerPhone: 'Owner Phone:',
  12 + authPerson: 'Authenticator:',
  13 + housePersonnel: 'House Personnel',
  14 + ownerFace: 'Owner Face',
  15 + name: 'Name',
  16 + contact: 'Contact',
  17 + address: 'Address',
  18 + idCard: 'ID Card',
  19 + audit: 'Audit',
  20 + action: 'Action',
  21 + selectAudit: 'Please Audit',
  22 + agree: 'Agree',
  23 + reject: 'Reject',
  24 + auditRemark: 'Audit Remark',
  25 + requiredRemark: 'Required, please fill in the work order description',
  26 + submit: 'Submit',
  27 + submitSuccess: 'Submitted successfully',
  28 + submitFailed: 'Submission failed:'
  29 + }
  30 + },
  31 + zh: {
  32 + auditAuthOwnerUndo: {
  33 + title: '认证审核',
  34 + back: '返回',
  35 + roomNumber: '房屋编号:',
  36 + roomArea: '房屋面积:',
  37 + roomType: '房屋类型:',
  38 + roomStatus: '房屋状态:',
  39 + owner: '业主:',
  40 + ownerPhone: '业主电话:',
  41 + authPerson: '认证人员:',
  42 + housePersonnel: '房屋人员',
  43 + ownerFace: '业主人脸',
  44 + name: '姓名',
  45 + contact: '联系方式',
  46 + address: '家庭住址',
  47 + idCard: '身份证',
  48 + audit: '审核',
  49 + action: '动作',
  50 + selectAudit: '请审核',
  51 + agree: '同意',
  52 + reject: '拒绝',
  53 + auditRemark: '审核说明',
  54 + requiredRemark: '必填,请填写工单说明',
  55 + submit: '提交',
  56 + submitSuccess: '提交成功',
  57 + submitFailed: '提交失败:'
  58 + }
  59 + }
  60 +}
0 61 \ No newline at end of file
... ...
src/router/userRouter.js
... ... @@ -44,4 +44,9 @@ export default [
44 44 name: '/views/owner/ownerDetail',
45 45 component: () => import('@/views/owner/ownerDetail.vue')
46 46 },
  47 + {
  48 + path:'/views/owner/auditAuthOwnerUndo',
  49 + name:'/views/owner/auditAuthOwnerUndo',
  50 + component: () => import('@/views/owner/auditAuthOwnerUndoList.vue')
  51 + },
47 52 ]
48 53 \ No newline at end of file
... ...
src/views/owner/auditAuthOwnerList.vue
... ... @@ -179,7 +179,7 @@ export default {
179 179 },
180 180 _openAuditAuthOwnerModel(appUser) {
181 181 this.$router.push({
182   - path: '/owner/auditAuthOwnerUndo',
  182 + path: '/views/owner/auditAuthOwnerUndo',
183 183 query: {
184 184 appUserId: appUser.appUserId,
185 185 roomId: appUser.roomId,
... ...
src/views/owner/auditAuthOwnerUndoLang.js 0 → 100644
  1 +export const messages = {
  2 + en: {
  3 + auditAuthOwnerUndo: {
  4 + title: 'Authentication Review',
  5 + back: 'Back',
  6 + roomNumber: 'Room Number:',
  7 + roomArea: 'Room Area:',
  8 + roomType: 'Room Type:',
  9 + roomStatus: 'Room Status:',
  10 + owner: 'Owner:',
  11 + ownerPhone: 'Owner Phone:',
  12 + authPerson: 'Authenticator:',
  13 + housePersonnel: 'House Personnel',
  14 + ownerFace: 'Owner Face',
  15 + name: 'Name',
  16 + contact: 'Contact',
  17 + address: 'Address',
  18 + idCard: 'ID Card',
  19 + audit: 'Audit',
  20 + action: 'Action',
  21 + selectAudit: 'Please Audit',
  22 + agree: 'Agree',
  23 + reject: 'Reject',
  24 + auditRemark: 'Audit Remark',
  25 + requiredRemark: 'Required, please fill in the work order description',
  26 + submit: 'Submit',
  27 + submitSuccess: 'Submitted successfully',
  28 + submitFailed: 'Submission failed:'
  29 + }
  30 + },
  31 + zh: {
  32 + auditAuthOwnerUndo: {
  33 + title: '认证审核',
  34 + back: '返回',
  35 + roomNumber: '房屋编号:',
  36 + roomArea: '房屋面积:',
  37 + roomType: '房屋类型:',
  38 + roomStatus: '房屋状态:',
  39 + owner: '业主:',
  40 + ownerPhone: '业主电话:',
  41 + authPerson: '认证人员:',
  42 + housePersonnel: '房屋人员',
  43 + ownerFace: '业主人脸',
  44 + name: '姓名',
  45 + contact: '联系方式',
  46 + address: '家庭住址',
  47 + idCard: '身份证',
  48 + audit: '审核',
  49 + action: '动作',
  50 + selectAudit: '请审核',
  51 + agree: '同意',
  52 + reject: '拒绝',
  53 + auditRemark: '审核说明',
  54 + requiredRemark: '必填,请填写工单说明',
  55 + submit: '提交',
  56 + submitSuccess: '提交成功',
  57 + submitFailed: '提交失败:'
  58 + }
  59 + }
  60 + }
0 61 \ No newline at end of file
... ...
src/views/owner/auditAuthOwnerUndoList.vue 0 → 100644
  1 +<template>
  2 + <div class="audit-auth-owner-undo-container">
  3 + <el-card class="box-card">
  4 + <div slot="header" class="flex justify-between">
  5 + <span>{{ $t('auditAuthOwnerUndo.title') }}</span>
  6 + <el-button style="float: right; padding: 3px 0" type="text" @click="goBack">
  7 + {{ $t('auditAuthOwnerUndo.back') }}
  8 + </el-button>
  9 + </div>
  10 + <el-row :gutter="20" v-if="auditAuthOwnerUndoInfo.room">
  11 + <el-col :span="6">
  12 + <div class="form-item">
  13 + <label class="form-label">{{ $t('auditAuthOwnerUndo.roomNumber') }}</label>
  14 + <div class="form-content">{{ auditAuthOwnerUndoInfo.room.roomName }}</div>
  15 + </div>
  16 + </el-col>
  17 + <el-col :span="6">
  18 + <div class="form-item">
  19 + <label class="form-label">{{ $t('auditAuthOwnerUndo.roomArea') }}</label>
  20 + <div class="form-content">{{ auditAuthOwnerUndoInfo.room.builtUpArea }}</div>
  21 + </div>
  22 + </el-col>
  23 + <el-col :span="6">
  24 + <div class="form-item">
  25 + <label class="form-label">{{ $t('auditAuthOwnerUndo.roomType') }}</label>
  26 + <div class="form-content">{{ auditAuthOwnerUndoInfo.room.roomSubTypeName }}</div>
  27 + </div>
  28 + </el-col>
  29 + <el-col :span="6">
  30 + <div class="form-item">
  31 + <label class="form-label">{{ $t('auditAuthOwnerUndo.roomStatus') }}</label>
  32 + <div class="form-content">{{ auditAuthOwnerUndoInfo.room.stateName }}</div>
  33 + </div>
  34 + </el-col>
  35 + <el-col :span="6">
  36 + <div class="form-item">
  37 + <label class="form-label">{{ $t('auditAuthOwnerUndo.owner') }}</label>
  38 + <div class="form-content">{{ auditAuthOwnerUndoInfo.room.ownerName }}</div>
  39 + </div>
  40 + </el-col>
  41 + <el-col :span="6">
  42 + <div class="form-item">
  43 + <label class="form-label">{{ $t('auditAuthOwnerUndo.ownerPhone') }}</label>
  44 + <div class="form-content">{{ auditAuthOwnerUndoInfo.room.link }}</div>
  45 + </div>
  46 + </el-col>
  47 + <el-col :span="6">
  48 + <div class="form-item">
  49 + <label class="form-label">{{ $t('auditAuthOwnerUndo.authPerson') }}</label>
  50 + <div class="form-content">{{ auditAuthOwnerUndoInfo.appUserName }}</div>
  51 + </div>
  52 + </el-col>
  53 + <el-col :span="6">
  54 + <div class="form-item">
  55 + <label class="form-label">{{ $t('auditAuthOwnerUndo.ownerPhone') }}</label>
  56 + <div class="form-content">{{ auditAuthOwnerUndoInfo.link }}</div>
  57 + </div>
  58 + </el-col>
  59 + </el-row>
  60 + </el-card>
  61 +
  62 + <el-card class="box-card">
  63 + <div slot="header" class="flex justify-between">
  64 + <span>{{ $t('auditAuthOwnerUndo.housePersonnel') }}</span>
  65 + </div>
  66 + <el-table :data="auditAuthOwnerUndoInfo.owners" border style="width: 100%">
  67 + <el-table-column prop="url" :label="$t('auditAuthOwnerUndo.ownerFace')" align="center">
  68 + <template slot-scope="scope">
  69 + <el-image
  70 + style="width: 60px; height: 60px;"
  71 + :src="scope.row.url || '/img/noPhoto.jpg'"
  72 + :preview-src-list="[scope.row.url]"
  73 + fit="cover"
  74 + class="border-radius"
  75 + @click="viewOwnerFace(scope.row.url)"
  76 + ></el-image>
  77 + </template>
  78 + </el-table-column>
  79 + <el-table-column prop="name" :label="$t('auditAuthOwnerUndo.name')" align="center"></el-table-column>
  80 + <el-table-column prop="link" :label="$t('auditAuthOwnerUndo.contact')" align="center"></el-table-column>
  81 + <el-table-column prop="address" :label="$t('auditAuthOwnerUndo.address')" align="center">
  82 + <template slot-scope="scope">
  83 + {{ scope.row.address || '-' }}
  84 + </template>
  85 + </el-table-column>
  86 + <el-table-column prop="idCard" :label="$t('auditAuthOwnerUndo.idCard')" align="center">
  87 + <template slot-scope="scope">
  88 + {{ scope.row.idCard || '-' }}
  89 + </template>
  90 + </el-table-column>
  91 + </el-table>
  92 + </el-card>
  93 +
  94 + <el-card class="box-card">
  95 + <div slot="header" class="flex justify-between">
  96 + <span>{{ $t('auditAuthOwnerUndo.audit') }}</span>
  97 + </div>
  98 + <el-form label-width="120px">
  99 + <el-form-item :label="$t('auditAuthOwnerUndo.action')">
  100 + <el-select v-model="auditAuthOwnerUndoInfo.audit.state" style="width: 100%">
  101 + <el-option disabled :value="''" :label="$t('auditAuthOwnerUndo.selectAudit')"></el-option>
  102 + <el-option value="1100" :label="$t('auditAuthOwnerUndo.agree')"></el-option>
  103 + <el-option value="1200" :label="$t('auditAuthOwnerUndo.reject')"></el-option>
  104 + </el-select>
  105 + </el-form-item>
  106 + <el-form-item :label="$t('auditAuthOwnerUndo.auditRemark')">
  107 + <el-input
  108 + type="textarea"
  109 + :placeholder="$t('auditAuthOwnerUndo.requiredRemark')"
  110 + v-model="auditAuthOwnerUndoInfo.audit.remark"
  111 + :rows="4"
  112 + ></el-input>
  113 + </el-form-item>
  114 + <el-form-item>
  115 + <el-button type="primary" @click="auditSubmit">{{ $t('auditAuthOwnerUndo.submit') }}</el-button>
  116 + </el-form-item>
  117 + </el-form>
  118 + </el-card>
  119 + </div>
  120 +</template>
  121 +
  122 +<script>
  123 +import { getCommunityId } from '@/api/community/communityApi'
  124 +import { getRoomInfo, getOwnerList, auditAuthOwner } from '@/api/owner/auditAuthOwnerUndoApi'
  125 +
  126 +export default {
  127 + name: 'AuditAuthOwnerUndoList',
  128 + data() {
  129 + return {
  130 + auditAuthOwnerUndoInfo: {
  131 + room: {},
  132 + roomId: '',
  133 + owners: [],
  134 + appUserName: '',
  135 + link: '',
  136 + audit: {
  137 + state: '',
  138 + remark: '',
  139 + appUserId: ''
  140 + }
  141 + }
  142 + }
  143 + },
  144 + created() {
  145 + this.initData()
  146 + },
  147 + methods: {
  148 + initData() {
  149 + this.auditAuthOwnerUndoInfo.audit.appUserId = this.$route.query.appUserId
  150 + this.auditAuthOwnerUndoInfo.roomId = this.$route.query.roomId
  151 + this.auditAuthOwnerUndoInfo.appUserName = this.$route.query.appUserName
  152 + this.auditAuthOwnerUndoInfo.link = this.$route.query.link
  153 + this.loadRoom()
  154 + this.loadOwners()
  155 + },
  156 + async loadRoom() {
  157 + try {
  158 + const params = {
  159 + page: 1,
  160 + row: 1,
  161 + roomId: this.auditAuthOwnerUndoInfo.roomId,
  162 + communityId: getCommunityId()
  163 + }
  164 + const res = await getRoomInfo(params)
  165 + this.auditAuthOwnerUndoInfo.room = res.rooms[0]
  166 + } catch (error) {
  167 + console.error('Failed to load room info:', error)
  168 + }
  169 + },
  170 + async loadOwners() {
  171 + try {
  172 + const params = {
  173 + page: 1,
  174 + row: 100,
  175 + roomId: this.auditAuthOwnerUndoInfo.roomId,
  176 + communityId: getCommunityId()
  177 + }
  178 + const res = await getOwnerList(params)
  179 + this.auditAuthOwnerUndoInfo.owners = res.data
  180 + } catch (error) {
  181 + console.error('Failed to load owners:', error)
  182 + }
  183 + },
  184 + viewOwnerFace(url) {
  185 + if (url) {
  186 + // 预览图片逻辑
  187 + }
  188 + },
  189 + async auditSubmit() {
  190 + try {
  191 + const auditInfo = {
  192 + ...this.auditAuthOwnerUndoInfo.audit,
  193 + communityId: getCommunityId()
  194 + }
  195 + const res = await auditAuthOwner(auditInfo)
  196 + if (res.code !== 0) {
  197 + this.$message.error(res.msg)
  198 + return
  199 + }
  200 + this.$message.success(this.$t('auditAuthOwnerUndo.submitSuccess'))
  201 + this.$router.go(-1)
  202 + } catch (error) {
  203 + this.$message.error(this.$t('auditAuthOwnerUndo.submitFailed') + error)
  204 + }
  205 + },
  206 + goBack() {
  207 + this.$router.go(-1)
  208 + }
  209 + }
  210 +}
  211 +</script>
  212 +
  213 +<style lang="scss" scoped>
  214 +.audit-auth-owner-undo-container {
  215 + padding: 20px;
  216 +
  217 + .box-card {
  218 + margin-bottom: 20px;
  219 + }
  220 +
  221 + .form-item {
  222 + margin-bottom: 18px;
  223 +
  224 + .form-label {
  225 + color: #606266;
  226 + margin-right: 10px;
  227 + }
  228 +
  229 + .form-content {
  230 + display: inline-block;
  231 + }
  232 + }
  233 +
  234 + .border-radius {
  235 + border-radius: 4px;
  236 + }
  237 +}
  238 +</style>
0 239 \ No newline at end of file
... ...