zhao 3 лет назад
Родитель
Сommit
090c150999
7 измененных файлов: 228 добавлений и 125 удалений
  1. +3
    -2
      src/components/house/HouseApplyUploadComp.vue
  2. +2
    -2
      src/components/house/HouseLocationPlanComp.vue
  3. +194
    -0
      src/components/house/MultiImageUploadComp.vue
  4. +0
    -1
      src/views/onlineHome/homestead/homeApplication/houseAnnounce.vue
  5. +6
    -4
      src/views/onlineHome/homestead/utilization/utilizationAdd.vue
  6. +7
    -14
      src/views/onlineHome/homestead/utilization/utilizationDetail.vue
  7. +16
    -102
      src/views/onlineHome/homestead/utilization/utilizationModify.vue

+ 3
- 2
src/components/house/HouseApplyUploadComp.vue Просмотреть файл

@@ -11,13 +11,14 @@
v-model="item.fileList"
:after-read="(file, detail) => { handleUploadSuccess(file, detail, item); }"
:readonly="disabled || !item.current"
:disabled="disabled || !item.current"
:show-upload="!disabled && item.current"
:before-delete="handleRemove"
:deletable="!disabled && item.current"
:before-read="checkFile"
>
<!-- accept=".jpg,.png,.gif,.pdf,.doc,.docx,.xlsx,.xls" 设置了无法拉起相机/下载 -->
<!-- accept=".jpg,.png,.gif,.pdf,.doc,.docx,.xlsx,.xls" 设置了无法拉起相机/下载
:disabled="disabled || !item.current"
-->
</van-uploader>
</van-collapse-item>
</van-collapse>


+ 2
- 2
src/components/house/HouseLocationPlanComp.vue Просмотреть файл

@@ -2,7 +2,7 @@
<div>
<van-uploader
ref="pictureUpload"
:disabled="uploadDisabled"
:disabled="disabled"
:readonly="uploadDisabled"
:deletable="!uploadDisabled"
:show-upload="!uploadDisabled"
@@ -22,7 +22,7 @@ import request from "@/utils/request";

export default {
name: "HouseLocationPlanComp",
props: ["uploadDisabled", 'jsonData', 'proposerId', 'tableName'],
props: ["uploadDisabled", 'jsonData', 'proposerId', 'tableName', 'disabled'],
watch: {
jsonData: {
handler: function (newVal, oldVal) {


+ 194
- 0
src/components/house/MultiImageUploadComp.vue Просмотреть файл

@@ -0,0 +1,194 @@
<template>
<div>
<van-uploader
ref="pictureUpload"
:disabled="disabled"
:readonly="uploadDisabled"
:deletable="!uploadDisabled"
:show-upload="!uploadDisabled"
:data="uploadImg.postData"
:before-delete="handleRemove"
v-model="uploadImg.fileList"
:after-read="onUploadChanged"
>
<!-- :accept="uploadImg.accept"-->
</van-uploader>
</div>
</template>

<script>
import {getToken} from "@/utils/auth";
import request from "@/utils/request";
import {Notify} from "vant";

export default {
name: "MultiImageUploadComp",
props: ["uploadDisabled", 'value', 'tableId', 'tableName', 'bizPath', 'fileType', 'resultType', 'attach', 'disabled'],
watch: {
value: {
handler: function (newVal, oldVal) {
if(newVal == this.internalValue)
return;
this.reset();
this.uploadImg.fileList = this.makeUploadFileList(newVal);
this.internalValue = newVal;
},
immediate: true,
},
},
created() {
},
data() {
return {
uploadImg: {
//上传图片配置
attachImgUrl: "/common/attach",
uploadImgUrl: "/common/upload",
removeImgUrl: "/system/attachment/remove",
uploadImgHeaders: {
Authorization: "Bearer " + getToken(),
},
accept: '.jpg,.png,.gif,.jpeg',
fileList: [],
postData: {
tableId: this.tableId || '',
tableName: this.tableName || '',
bizPath: this.bizPath || 'upload',
fileType: this.fileType || '',
},
},
internalValue: null,
}
},
methods: {
reset() {
},
onUploadChanged(file, detail) {
console.log(file, detail);
this.setFileStatus(file, 'uploading', '文件上传中...');
this.updateFile(file).then((resp) => {
this.setFileStatus(file, 'done', '文件上传成功');
if(this.attach)
{
file.id = resp.id;
file.path = resp.fileUrl;
}
else {
file.path = resp.fileName;
}
file.fileList = this.uploadImg.fileList;
this.$emit('fileChanged', this.uploadImg.fileList);
this.updateValue();
console.log('新增', this.uploadImg.fileList);
}).catch((e) => {
this.setFileStatus(file, 'fail', '文件上传失败');
})
return true;
},
setFileStatus(file, status, message) {
file.status = status;
file.message = message;
},
notify(message, type) {
Notify.clear();
Notify({ type: type || 'primary', message: message });
},
handleRemove(file, detail) {
console.log(file, detail);
if(file.id) // new upload
{
this.setFileStatus(file, 'uploading', '文件删除中...');
this.removeFile(file.id).then((resp) => {
}).finally(() => {
let index = this.uploadImg.fileList.indexOf(file);
console.log(index);
if(index !== -1)
this.uploadImg.fileList.splice(index, 1);
console.log(this.uploadImg.fileList);
this.$emit('fileChanged', this.uploadImg.fileList);
this.updateValue();
console.log('删除', this.uploadImg.fileList);
})
}
else // from server
{
let index = this.uploadImg.fileList.indexOf(file);
if(index !== -1)
this.uploadImg.fileList.splice(index, 1);
this.$emit('fileChanged', this.uploadImg.fileList);
this.updateValue();
}
return true;
},
// 图片上传尺寸大小检验
beforeUpload(file) {
const isLt50M = file.size / 1024 / 1024 < 30;
if (!isLt50M) {
this.$message({
message: "上传文件大小不能超过 30MB!",
type: "error",
});
return false;
} else if (file.name.length > 100) {
// 图片上传文件名长度检验(配合后台上传方法的验证,否则上传不成功但是前台无提示)
this.$message({
message: "上传文件的文件名长度不能超过 100个字符!",
type: "error",
});
return false;
}
return isLt50M;
},
getFileName(path) {
let index = path.lastIndexOf('/');
return index !== -1 && index !== path.length - 1 ? path.substr(index + 1) : path;
},
makeUploadFileList(joinStr) {
if(!joinStr) return [];
const Host = '/api'; //this.$store.getters.baseRoutingUrl;
let fileList = Array.isArray(joinStr) ? joinStr : joinStr.split(',');
let res = [];
fileList.forEach((x) => {
let item = {
name: this.getFileName(x),
url: Host + x,
path: x,
fileList: res,
};
res.push(item);
});
return res;
},
updateFile(file) {
// 自动上传
let formData = new FormData;
formData.append('file', file.file);
return request({
url: this.attach ? this.uploadImg.attachImgUrl : this.uploadImg.uploadImgUrl,
method: "post",
params: this.uploadImg.postData,
data: formData,
});
},
removeFile(id) {
return request({
url: this.uploadImg.removeImgUrl + `/${id}`,
method: "get",
});
},
updateValue() {
let arr = this.uploadImg.fileList.map((x) => x.path);
if(this.resultType === 'array')
this.internalValue = arr;
else
this.internalValue = arr.join(',');
console.log('更新值: ', this.internalValue);
this.$emit('input', this.internalValue);
},
}
}
</script>

<style scoped>

</style>

+ 0
- 1
src/views/onlineHome/homestead/homeApplication/houseAnnounce.vue Просмотреть файл

@@ -231,7 +231,6 @@ export default {
},
openQrCodePreview(id) {
getProposer(id).then((resp) => {
console.log(this.$store.getters.baseRoutingUrl + resp.data.qrCodeUrl);
ImagePreview([this.$store.getters.baseRoutingUrl + resp.data.qrCodeUrl]);
}).catch((e) => {
this.$toast.fail('获取二维码失败!');


+ 6
- 4
src/views/onlineHome/homestead/utilization/utilizationAdd.vue Просмотреть файл

@@ -179,21 +179,21 @@
<van-row>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片东</p>
<van-uploader v-model="findList" multiple />
<MultiImageUploadComp v-model="circulation.xczpd"/>
</van-col>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片南</p>
<van-uploader v-model="findList" multiple />
<MultiImageUploadComp v-model="circulation.xczpn"/>
</van-col>
</van-row>
<van-row>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片西</p>
<van-uploader v-model="findList" multiple />
<MultiImageUploadComp v-model="circulation.xczpx" />
</van-col>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片北</p>
<van-uploader v-model="findList" multiple />
<MultiImageUploadComp v-model="circulation.xczpb" />
</van-col>
</van-row>
</div>
@@ -222,8 +222,10 @@
import { nmfwlyAdd } from "@/api/onlineHome/homestead/utilization";
import { zjdzd } from "@/api/onlineHome/homestead/circulation";
import {Notify} from "vant";
import MultiImageUploadComp from "@/components/house/MultiImageUploadComp"
export default {
name: "circulationAdd",
components: {MultiImageUploadComp},
data() {
return {
currentDate: new Date(),


+ 7
- 14
src/views/onlineHome/homestead/utilization/utilizationDetail.vue Просмотреть файл

@@ -28,21 +28,21 @@
<van-row>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片东</p>
<van-uploader v-model="findListD" readonly :show-upload="false" :deletable="false" max-count="1"/>
<MultiImageUploadComp :value="circulation.xczpd" :uploadDisabled="true"/>
</van-col>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片南</p>
<van-uploader v-model="findListN" readonly :show-upload="false" :deletable="false" max-count="1" />
<MultiImageUploadComp :value="circulation.xczpn" :uploadDisabled="true"/>
</van-col>
</van-row>
<van-row>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片西</p>
<van-uploader v-model="findListX" readonly :show-upload="false" :deletable="false" max-count="1" />
<MultiImageUploadComp :value="circulation.xczpx" :uploadDisabled="true"/>
</van-col>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片北</p>
<van-uploader v-model="findListB" readonly :show-upload="false" :deletable="false" max-count="1" />
<MultiImageUploadComp :value="circulation.xczpb" :uploadDisabled="true"/>
</van-col>
</van-row>
</div>
@@ -56,16 +56,13 @@

<script>
import { getZjdly } from "@/api/onlineHome/homestead/utilization";
import MultiImageUploadComp from "@/components/house/MultiImageUploadComp"
export default {
name: "utilizationDetail",
components: {MultiImageUploadComp},
data() {
return {
findList:[],
circulation:[],
findListD:[],
findListN:[],
findListX:[],
findListB:[],
circulation:{},
};
},
created() {
@@ -91,10 +88,6 @@
this.houseGetDicts("phlyms").then((res) => {
this.circulation.phlyms = this.selectDictLabel(res.data, response.data.phlyms);
});
if(response.data.xczpd != null){this.findListD.push({url:process.env.VUE_APP_BASE_ROUTING_URL + response.data.xczpd, isImage: true});}
if(response.data.xczpx != null){this.findListX.push({url:process.env.VUE_APP_BASE_ROUTING_URL + response.data.xczpx, isImage: true});}
if(response.data.xczpn != null){this.findListN.push({url:process.env.VUE_APP_BASE_ROUTING_URL + response.data.xczpn, isImage: true});}
if(response.data.xczpb != null){this.findListB.push({url:process.env.VUE_APP_BASE_ROUTING_URL + response.data.xczpb, isImage: true});}
this.circulation = response.data;
});
}


+ 16
- 102
src/views/onlineHome/homestead/utilization/utilizationModify.vue Просмотреть файл

@@ -179,21 +179,21 @@
<van-row>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片东</p>
<van-uploader v-model="findListD" max-count="1" :before-delete="deleteFileD"/>
<MultiImageUploadComp v-model="circulation.xczpd"/>
</van-col>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片南</p>
<van-uploader v-model="findListN" max-count="1" :before-delete="deleteFileX" />
<MultiImageUploadComp v-model="circulation.xczpn"/>
</van-col>
</van-row>
<van-row>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片西</p>
<van-uploader v-model="findListX" max-count="1" :before-delete="deleteFileN" />
<MultiImageUploadComp v-model="circulation.xczpx" />
</van-col>
<van-col span="12">
<p style="margin-bottom: 5%;color: #333333;font-size: 14px;">现场照片北</p>
<van-uploader v-model="findListB" max-count="1" :before-delete="deleteFileB" />
<MultiImageUploadComp v-model="circulation.xczpb" />
</van-col>
</van-row>
</div>
@@ -222,15 +222,13 @@
import { zjdzd } from "@/api/onlineHome/homestead/circulation";
import { getZjdly , nmfwlyEdit , upload} from "@/api/onlineHome/homestead/utilization";
import {Notify} from "vant";
import MultiImageUploadComp from "@/components/house/MultiImageUploadComp"
export default {
name: "utilizationModify",
components: {MultiImageUploadComp},
data() {
return {
currentDate: new Date(),
findListD:[],
findListN:[],
findListX:[],
findListB:[],

phlyms : '',
fwsfxz : '',
@@ -302,11 +300,6 @@ export default {
}
});
this.circulation = response.data;
if(response.data.xczpd != null){this.findListD.push({url:process.env.VUE_APP_BASE_ROUTING_URL + response.data.xczpd, isImage: true});}
if(response.data.xczpx != null){this.findListX.push({url:process.env.VUE_APP_BASE_ROUTING_URL + response.data.xczpx, isImage: true});}
if(response.data.xczpn != null){this.findListN.push({url:process.env.VUE_APP_BASE_ROUTING_URL + response.data.xczpn, isImage: true});}
if(response.data.xczpb != null){this.findListB.push({url:process.env.VUE_APP_BASE_ROUTING_URL + response.data.xczpb, isImage: true});}

});
},
onConfirmZjddm(data){
@@ -347,101 +340,22 @@ export default {
this.circulation.dcsj = this.getNowFormatDate(data).substr(0,10);;
this.showdcsj = false;
},
base64toFile(dataurl, filename = "file") {
let arr = dataurl.split(",");
let mime = arr[0].match(/:(.*?);/)[1];
let suffix = mime.split("/")[1];
let bstr = atob(arr[1]);
let n = bstr.length;
let u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], `${filename}.${suffix}`, {
type: mime,
});
},
goSubmit(){
console.log(this.circulation);
this.$refs._Form.validate().then(() => {
if(this.findListD != '' && this.findListD[0].content != undefined){
console.log('1111')
const params = new FormData()
params.append('file', this.base64toFile(this.findListD[0].content))
upload(params).then(res => {
this.circulation.xczpd = res.fileName;
});
}
if(this.findListX != '' && this.findListX[0].content != undefined){
console.log('2222')
const params = new FormData()
params.append('file', this.base64toFile(this.findListX[0].content))
upload(params).then(res => {
this.circulation.xczpx = res.fileName;
});
}
if( this.findListN != '' && this.findListN[0].content != undefined){
console.log('3333')
const params = new FormData()
params.append('file', this.base64toFile(this.findListN[0].content))
upload(params).then(res => {
this.circulation.xczpn = res.fileName;
});
}
if( this.findListB != '' && this.findListB[0].content != undefined){
console.log('4444')
const params = new FormData()
params.append('file', this.base64toFile(this.findListB[0].content))
upload(params).then(res => {
this.circulation.xczpb = res.fileName;
});
}
var that = this ;
setTimeout(function(){
console.log(that.circulation);
nmfwlyEdit(that.circulation).then(response => {
if(response.code = 200){
that.$toast.success('保存成功');
this.$router.back();
}
});
},2000);
nmfwlyEdit(this.circulation).then(response => {
if(response.code = 200){
this.$toast.success('保存成功');
this.back();
}
});
}).catch((e) => {
Notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
deleteFileD(elIndex){
this.circulation.xczpd = null ;
this.findListD = [];
console.log()
return (file, name) => {
let fileIndex = name.index
this.findListD[elIndex].splice(fileIndex, 1)
}
},
deleteFileX(elIndex){
this.circulation.xczpx = null ;
this.findListX = [];
return (file, name) => {
let fileIndex = name.index
this.findListX[elIndex].splice(fileIndex, 1)
}
},
deleteFileN(elIndex){
this.circulation.xczpn = null ;
this.findListN = [];
return (file, name) => {
let fileIndex = name.index
this.findListN[elIndex].splice(fileIndex, 1)
}
},
deleteFileB(elIndex){
this.circulation.xczpb = null ;
this.findListB = [];
return (file, name) => {
let fileIndex = name.index
this.findListB[elIndex].splice(fileIndex, 1)
}
},
back() {
setTimeout(() => this.$router.back(), 1000);
}
},
}
</script>


Загрузка…
Отмена
Сохранить