Commit 69e184721c0d038ad5b11083b5ee505c5a0789d6

Authored by wuxw
1 parent 084d379c

v1.9 员工头像不对问题

src/components/owner/addOwner.vue
... ... @@ -197,10 +197,10 @@ export default {
197 197 const isLt2M = file.size / 1024 / 1024 < 2
198 198  
199 199 if (!isJPG) {
200   - this.$message.error(this.$t('listOwner.upload.jpgOnly'))
  200 + this.$message.error(this.$t('common.jpgOnly'))
201 201 }
202 202 if (!isLt2M) {
203   - this.$message.error(this.$t('listOwner.upload.sizeLimit'))
  203 + this.$message.error(this.$t('common.sizeLimit'))
204 204 }
205 205 return isJPG && isLt2M
206 206 },
... ...
src/components/owner/editOwner.vue
... ... @@ -208,10 +208,10 @@ export default {
208 208 const isLt2M = file.size / 1024 / 1024 < 2
209 209  
210 210 if (!isJPG) {
211   - this.$message.error(this.$t('listOwner.upload.jpgOnly'))
  211 + this.$message.error(this.$t('common.jpgOnly'))
212 212 }
213 213 if (!isLt2M) {
214   - this.$message.error(this.$t('listOwner.upload.sizeLimit'))
  214 + this.$message.error(this.$t('common.sizeLimit'))
215 215 }
216 216 return isJPG && isLt2M
217 217 },
... ...
src/components/staff/editStaff.vue
... ... @@ -30,16 +30,13 @@
30 30 </el-form-item>
31 31 </el-col>
32 32 <el-col :span="12" style="text-align: center">
33   - <el-image style="width: 200px; height: 200px" :src="editStaffInfo.photoUrl" fit="cover">
34   - <div slot="error" class="image-slot">
35   - <i class="el-icon-picture-outline"></i>
36   - </div>
37   - </el-image>
38   - <div style="margin-top: 20px">
39   - <el-upload action="" :auto-upload="false" :show-file-list="false" :on-change="handlePhotoChange">
40   - <el-button type="primary">{{ $t('staff.uploadPhoto') }}</el-button>
41   - </el-upload>
42   - </div>
  33 + <el-image style="width: 200px; height: 150px; border: 1px dashed #ccc;"
  34 + :src="editStaffInfo.photoUrl || '/img/noPhoto.jpg'" fit="cover" />
  35 + <el-upload class="mt-10" :show-file-list="false" :before-upload="beforeUpload" :http-request="uploadImage" action="">
  36 + <el-button size="small" type="primary">
  37 + {{ $t('common.upload') }}
  38 + </el-button>
  39 + </el-upload>
43 40 </el-col>
44 41 </el-row>
45 42 </el-form>
... ... @@ -53,6 +50,8 @@
53 50 <script>
54 51 import { modifyStaff } from '@/api/staff/staffApi'
55 52 import { getDict } from '../../api/community/communityApi'
  53 +import { uploadImage } from '@/api/owner/ownerApi'
  54 +
56 55  
57 56 export default {
58 57 name: 'EditStaff',
... ... @@ -95,7 +94,6 @@ export default {
95 94 this.editStaffInfo = {
96 95 ...val,
97 96 username: val.name,
98   - photoUrl: val.faceUrl || '/img/noPhoto.jpg'
99 97 }
100 98 }
101 99 }
... ... @@ -103,11 +101,17 @@ export default {
103 101 },
104 102 methods: {
105 103 open(row) {
  104 + let _url = '/img/noPhoto.jpg'
  105 + if(row.urls && row.urls.length > 0){
  106 + _url = row.urls[0]
  107 + }
106 108 this.editStaffInfo = {
107 109 ...row,
108 110 username: row.name,
109   - photoUrl: row.faceUrl || '/img/noPhoto.jpg'
  111 + photo: _url
110 112 }
  113 + this.editStaffInfo.photoUrl = row.photoUrl || '/img/noPhoto.jpg'
  114 + console.log(this.editStaffInfo.photoUrl)
111 115 this.getRelCd()
112 116 this.visible = true
113 117  
... ... @@ -120,21 +124,6 @@ export default {
120 124 handleClose() {
121 125 this.visible = false
122 126 },
123   - handlePhotoChange(file) {
124   - if (file.size > 2 * 1024 * 1024) {
125   - this.$message.error(this.$t('staff.photoSizeLimit'))
126   - return false
127   - }
128   -
129   - const reader = new FileReader()
130   - reader.onload = (e) => {
131   - this.editStaffInfo.photoUrl = e.target.result
132   - // Here you would typically upload the file to server
133   - // and set editStaffInfo.photo to the returned file ID
134   - this.editStaffInfo.photo = file.uid // Temporary, replace with actual file ID
135   - }
136   - reader.readAsDataURL(file.raw)
137   - },
138 127 validateForm() {
139 128 if (!this.editStaffInfo.username) {
140 129 this.$message.error(this.$t('staff.requiredName'))
... ... @@ -175,7 +164,29 @@ export default {
175 164 } finally {
176 165 this.loading = false
177 166 }
178   - }
  167 + },
  168 + beforeUpload(file) {
  169 + const isJPG = file.type === 'image/jpeg'
  170 + const isLt2M = file.size / 1024 / 1024 < 2
  171 +
  172 + if (!isJPG) {
  173 + this.$message.error(this.$t('common.jpgOnly'))
  174 + }
  175 + if (!isLt2M) {
  176 + this.$message.error(this.$t('common.sizeLimit'))
  177 + }
  178 + return isJPG && isLt2M
  179 + },
  180 + async uploadImage({ file }) {
  181 + try {
  182 + const res = await uploadImage({ file })
  183 + this.editStaffInfo.photo = res.fileId
  184 + this.editStaffInfo.photoUrl = res.url
  185 + this.$forceUpdate()
  186 + } catch (error) {
  187 + this.$message.error(this.$t('listOwner.upload.failed'))
  188 + }
  189 + },
179 190 }
180 191 }
181 192 </script>
... ...
src/i18n/commonLang.js
... ... @@ -65,7 +65,8 @@ export const messages = {
65 65 viewDetail:'View Detail',
66 66 yuan:'yuan',
67 67 process:'Process',
68   -
  68 + jpgOnly:'Only JPG files are allowed',
  69 + sizeLimit:'File size must be less than 2MB',
69 70 }
70 71 },
71 72 zh: {
... ... @@ -134,7 +135,8 @@ export const messages = {
134 135 viewDetail:'查看详情',
135 136 yuan:'元',
136 137 process:'处理',
137   -
  138 + jpgOnly:'只允许上传JPG文件',
  139 + sizeLimit:'文件大小必须小于2MB',
138 140 }
139 141 }
140 142 }
141 143 \ No newline at end of file
... ...
src/views/org/orgList.vue
... ... @@ -29,7 +29,7 @@
29 29 <el-table-column prop="address" :label="$t('org.address')" align="center" />
30 30 <el-table-column prop="sex" :label="$t('org.gender')" align="center">
31 31 <template #default="{ row }">
32   - {{ row.sex === 0 ? '男' : '女' }}
  32 + {{ row.sex == 0 ? '男' : '女' }}
33 33 </template>
34 34 </el-table-column>
35 35 <el-table-column :label="$t('org.operation')" align="center">
... ...
src/views/staff/staffDetailList.vue
... ... @@ -12,7 +12,7 @@
12 12 <div class="staff-info">
13 13 <el-row :gutter="20">
14 14 <el-col :span="4">
15   - <el-image style="width: 120px; height: 140px; border-radius: 4px;" :src="staffDetailInfo.photo"
  15 + <el-image style="width: 120px; height: 140px; border-radius: 4px;" :src="staffDetailInfo.photoUrl"
16 16 fit="cover" @error="errorLoadImg">
17 17 </el-image>
18 18 </el-col>
... ... @@ -143,7 +143,7 @@ export default {
143 143 this.$router.go(-1)
144 144 },
145 145 errorLoadImg() {
146   - this.staffDetailInfo.photo = "/img/noPhoto.jpg"
  146 + this.staffDetailInfo.photoUrl = "/img/noPhoto.jpg"
147 147 },
148 148 async loadStaffDetail() {
149 149 try {
... ... @@ -155,7 +155,7 @@ export default {
155 155 const res = await getStaffDetail(params)
156 156 if ( res.staffs.length > 0) {
157 157 Object.assign(this.staffDetailInfo, res.staffs[0])
158   - this.staffDetailInfo.photo = res.staffs[0].faceUrl
  158 + this.staffDetailInfo.photoUrl = res.staffs[0].photoUrl
159 159 }
160 160 } catch (error) {
161 161 this.$message.error(this.$t('staffDetailInfo.fetchError'))
... ...