Commit a561a5a8195629441ff876d1ff09209828716a50
1 parent
cc9fdf14
报修订单加图片
Showing
2 changed files
with
53 additions
and
13 deletions
src/components/Photowall/index.vue
| @@ -67,7 +67,7 @@ const uploadSettings = reactive({ | @@ -67,7 +67,7 @@ const uploadSettings = reactive({ | ||
| 67 | * @param {UploadFile} file 文件对象 | 67 | * @param {UploadFile} file 文件对象 |
| 68 | */ | 68 | */ |
| 69 | const handlePictureCardPreview = (file: UploadFile) => { | 69 | const handlePictureCardPreview = (file: UploadFile) => { |
| 70 | - dialogImageUrl.value = file?.response?.data; | 70 | + dialogImageUrl.value = file?.url; |
| 71 | dialogVisible.value = true; | 71 | dialogVisible.value = true; |
| 72 | }; | 72 | }; |
| 73 | /** | 73 | /** |
src/views/repair/edit.vue
| @@ -2,11 +2,11 @@ | @@ -2,11 +2,11 @@ | ||
| 2 | import { reactive, ref, getCurrentInstance, onMounted } from "vue"; | 2 | import { reactive, ref, getCurrentInstance, onMounted } from "vue"; |
| 3 | import { useRoute } from "vue-router"; | 3 | import { useRoute } from "vue-router"; |
| 4 | import { getTableList } from "@/api/community/residence"; | 4 | import { getTableList } from "@/api/community/residence"; |
| 5 | -import { getTableList as getProject } from '@/api/notify/maintain'; | 5 | +import { getTableList as getProject } from "@/api/notify/maintain"; |
| 6 | import { repairAdd, repairDetail } from "@/api/notify/repair"; | 6 | import { repairAdd, repairDetail } from "@/api/notify/repair"; |
| 7 | import { back } from "@/utils/tool"; | 7 | import { back } from "@/utils/tool"; |
| 8 | -// import * as store from "@/pinia/index"; | ||
| 9 | -import { useLoginStore } from '@/pinia/login'; | 8 | +import Photowall from "@/components/Photowall/index.vue"; |
| 9 | +import { useLoginStore } from "@/pinia/login"; | ||
| 10 | import type { ElForm } from "element-plus"; | 10 | import type { ElForm } from "element-plus"; |
| 11 | let instance: ComponentInternalInstance | null = getCurrentInstance(); | 11 | let instance: ComponentInternalInstance | null = getCurrentInstance(); |
| 12 | let form = reactive({ | 12 | let form = reactive({ |
| @@ -20,7 +20,9 @@ let form = reactive({ | @@ -20,7 +20,9 @@ let form = reactive({ | ||
| 20 | intentEndTime: "", | 20 | intentEndTime: "", |
| 21 | remark: "", | 21 | remark: "", |
| 22 | id: null, | 22 | id: null, |
| 23 | + img: "", | ||
| 23 | }, | 24 | }, |
| 25 | + publicityPic: [], | ||
| 24 | neighborhoods: [], | 26 | neighborhoods: [], |
| 25 | projects: [], | 27 | projects: [], |
| 26 | loading: false, | 28 | loading: false, |
| @@ -31,12 +33,14 @@ const ruleFormRef = ref<InstanceType<typeof ElForm>>(); | @@ -31,12 +33,14 @@ const ruleFormRef = ref<InstanceType<typeof ElForm>>(); | ||
| 31 | * 结束时间要在开始时间之后 | 33 | * 结束时间要在开始时间之后 |
| 32 | */ | 34 | */ |
| 33 | const checkTime = (rules, value, callback) => { | 35 | const checkTime = (rules, value, callback) => { |
| 34 | - if(new Date(value).getTime() >= new Date(form.data.intentBeginTime).getTime()) { | ||
| 35 | - callback() | 36 | + if ( |
| 37 | + new Date(value).getTime() >= new Date(form.data.intentBeginTime).getTime() | ||
| 38 | + ) { | ||
| 39 | + callback(); | ||
| 36 | } else { | 40 | } else { |
| 37 | - callback(new Error('结束时间要在开始时间之后')) | 41 | + callback(new Error("结束时间要在开始时间之后")); |
| 38 | } | 42 | } |
| 39 | -} | 43 | +}; |
| 40 | /** | 44 | /** |
| 41 | * 表单验证规则 | 45 | * 表单验证规则 |
| 42 | */ | 46 | */ |
| @@ -88,7 +92,7 @@ const rules = reactive({ | @@ -88,7 +92,7 @@ const rules = reactive({ | ||
| 88 | required: true, | 92 | required: true, |
| 89 | message: "请选择晚于开始时间的意向上门结束时间", | 93 | message: "请选择晚于开始时间的意向上门结束时间", |
| 90 | trigger: "blur", | 94 | trigger: "blur", |
| 91 | - validator: checkTime | 95 | + validator: checkTime, |
| 92 | }, | 96 | }, |
| 93 | ], | 97 | ], |
| 94 | }); | 98 | }); |
| @@ -97,6 +101,7 @@ const rules = reactive({ | @@ -97,6 +101,7 @@ const rules = reactive({ | ||
| 97 | */ | 101 | */ |
| 98 | const resetForm = (formEl: InstanceType<typeof ElForm> | undefined) => { | 102 | const resetForm = (formEl: InstanceType<typeof ElForm> | undefined) => { |
| 99 | if (!formEl) return; | 103 | if (!formEl) return; |
| 104 | + form.publicityPic = []; | ||
| 100 | formEl.resetFields(); | 105 | formEl.resetFields(); |
| 101 | }; | 106 | }; |
| 102 | /** | 107 | /** |
| @@ -105,9 +110,9 @@ const resetForm = (formEl: InstanceType<typeof ElForm> | undefined) => { | @@ -105,9 +110,9 @@ const resetForm = (formEl: InstanceType<typeof ElForm> | undefined) => { | ||
| 105 | const submitForm = (formEl: InstanceType<typeof ElForm> | undefined) => { | 110 | const submitForm = (formEl: InstanceType<typeof ElForm> | undefined) => { |
| 106 | form.loading = true; | 111 | form.loading = true; |
| 107 | if (!formEl) return; | 112 | if (!formEl) return; |
| 113 | + form.data.img = form.publicityPic.map((item) => item.url).join(","); | ||
| 108 | formEl.validate((valid) => { | 114 | formEl.validate((valid) => { |
| 109 | if (valid) { | 115 | if (valid) { |
| 110 | - console.log(form.data); | ||
| 111 | repairAdd(form.data) | 116 | repairAdd(form.data) |
| 112 | .then((res) => { | 117 | .then((res) => { |
| 113 | if (res) { | 118 | if (res) { |
| @@ -156,7 +161,6 @@ const getProjects = async (pageSize: number = 20) => { | @@ -156,7 +161,6 @@ const getProjects = async (pageSize: number = 20) => { | ||
| 156 | const res = await getProject({ | 161 | const res = await getProject({ |
| 157 | page: 1, | 162 | page: 1, |
| 158 | pageSize: pageSize, | 163 | pageSize: pageSize, |
| 159 | - // oid:store?.family?.loginStore()?.organizationId??0 | ||
| 160 | oid: useLoginStore()?.getOid ?? 0, | 164 | oid: useLoginStore()?.getOid ?? 0, |
| 161 | }); | 165 | }); |
| 162 | form.projects = res?.data?.data?.list; | 166 | form.projects = res?.data?.data?.list; |
| @@ -166,7 +170,22 @@ const getProjects = async (pageSize: number = 20) => { | @@ -166,7 +170,22 @@ const getProjects = async (pageSize: number = 20) => { | ||
| 166 | } catch (e) { | 170 | } catch (e) { |
| 167 | console.log(e); | 171 | console.log(e); |
| 168 | } | 172 | } |
| 169 | -} | 173 | +}; |
| 174 | +/** | ||
| 175 | + * 多图上传组件回调 | ||
| 176 | + * @param {string} images 回调的图片urls | ||
| 177 | + * @param {string} tagName 标签 | ||
| 178 | + */ | ||
| 179 | +const handleFinish = (images) => { | ||
| 180 | + form.publicityPic = []; | ||
| 181 | + setTimeout(() => { | ||
| 182 | + images.map((item) => { | ||
| 183 | + form.publicityPic.push({ | ||
| 184 | + url: item, | ||
| 185 | + }); | ||
| 186 | + }); | ||
| 187 | + }, 500); | ||
| 188 | +}; | ||
| 170 | onMounted(() => { | 189 | onMounted(() => { |
| 171 | getNeighborhoods(); | 190 | getNeighborhoods(); |
| 172 | getProjects(); | 191 | getProjects(); |
| @@ -177,6 +196,15 @@ onMounted(() => { | @@ -177,6 +196,15 @@ onMounted(() => { | ||
| 177 | form.dataType = "edit"; | 196 | form.dataType = "edit"; |
| 178 | form.data.neighboorHoodId = ~~useRoute().query.neighboorHoodId; | 197 | form.data.neighboorHoodId = ~~useRoute().query.neighboorHoodId; |
| 179 | form.data.repairProject = ~~useRoute().query.repairProject; | 198 | form.data.repairProject = ~~useRoute().query.repairProject; |
| 199 | + if (useRoute().query.img) { | ||
| 200 | + useRoute() | ||
| 201 | + .query.img.split(",") | ||
| 202 | + .map((item) => { | ||
| 203 | + form.publicityPic.push({ | ||
| 204 | + url: item, | ||
| 205 | + }); | ||
| 206 | + }); | ||
| 207 | + } | ||
| 180 | } | 208 | } |
| 181 | }); | 209 | }); |
| 182 | </script> | 210 | </script> |
| @@ -235,7 +263,10 @@ onMounted(() => { | @@ -235,7 +263,10 @@ onMounted(() => { | ||
| 235 | </el-form-item> | 263 | </el-form-item> |
| 236 | <el-form-item label="报修项目" prop="repairProject" style="width: 100%"> | 264 | <el-form-item label="报修项目" prop="repairProject" style="width: 100%"> |
| 237 | <!-- 启用状态的报修项目可选 --> | 265 | <!-- 启用状态的报修项目可选 --> |
| 238 | - <el-select v-model="form.data.repairProject" placeholder="请选择报修项目"> | 266 | + <el-select |
| 267 | + v-model="form.data.repairProject" | ||
| 268 | + placeholder="请选择报修项目" | ||
| 269 | + > | ||
| 239 | <el-option | 270 | <el-option |
| 240 | v-for="(item, index) in form.projects" | 271 | v-for="(item, index) in form.projects" |
| 241 | :key="index" | 272 | :key="index" |
| @@ -270,6 +301,15 @@ onMounted(() => { | @@ -270,6 +301,15 @@ onMounted(() => { | ||
| 270 | placeholder="请选择意向上门结束时间" | 301 | placeholder="请选择意向上门结束时间" |
| 271 | ></el-date-picker> | 302 | ></el-date-picker> |
| 272 | </el-form-item> | 303 | </el-form-item> |
| 304 | + <el-form-item label="报修图片" prop="img" style="width: 100%"> | ||
| 305 | + <Photowall | ||
| 306 | + @finish="handleFinish" | ||
| 307 | + moduleName="repair" | ||
| 308 | + :limit="3" | ||
| 309 | + tip="最多可以上传3张图片,单张图片大小不可超过1MB" | ||
| 310 | + :fileList="form.publicityPic" | ||
| 311 | + ></Photowall> | ||
| 312 | + </el-form-item> | ||
| 273 | <el-form-item label="备注" prop="remark" style="width: 100%"> | 313 | <el-form-item label="备注" prop="remark" style="width: 100%"> |
| 274 | <el-input | 314 | <el-input |
| 275 | v-model.trim="form.data.remark" | 315 | v-model.trim="form.data.remark" |