Commit a561a5a8195629441ff876d1ff09209828716a50

Authored by 杨泽宇
1 parent cc9fdf14

报修订单加图片

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&lt;typeof ElForm&gt; | undefined) =&gt; { @@ -105,9 +110,9 @@ const resetForm = (formEl: InstanceType&lt;typeof ElForm&gt; | undefined) =&gt; {
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) =&gt; { @@ -156,7 +161,6 @@ const getProjects = async (pageSize: number = 20) =&gt; {
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) =&gt; { @@ -166,7 +170,22 @@ const getProjects = async (pageSize: number = 20) =&gt; {
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(() =&gt; { @@ -177,6 +196,15 @@ onMounted(() =&gt; {
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(() =&gt; { @@ -235,7 +263,10 @@ onMounted(() =&gt; {
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(() =&gt; { @@ -270,6 +301,15 @@ onMounted(() =&gt; {
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"