Browse Source

修改评论上传+修改余额支付按钮+修改评论详情+修改评论图片展示

master
liutong 1 year ago
parent
commit
8e5f1f5303
  1. 4
      pages/order/evaluate_detail.vue
  2. 21
      pages/order/index.vue
  3. 38
      pages/order_details.vue
  4. 416
      pc/components/uploadImageOss.vue

4
pages/order/evaluate_detail.vue

@ -16,7 +16,9 @@
</div>
</div>
<div class="content_goods">
<img :src="imgUrl+item.evaluate_info.images" alt />
<div v-for="(img_v, img_k) in item.evaluate_info.images_arr" :key="img_k">
<img :src="img_v" alt />
</div>
<div>
<p class="goods_title">{{item.evaluate_info.sku_name}}</p>
<p class="goods_Specifications">

21
pages/order/index.vue

@ -379,7 +379,21 @@
></el-input>
</el-form-item>
<el-form-item label="添加图片" class="evaluateUpload">
<UploadImage1
<!-- <UploadImage1-->
<!-- @input="uploadSccess($event, 'images')"-->
<!-- :limit="9"-->
<!-- :value="evaluateForm.images"-->
<!-- >-->
<!-- <template v-slot:upload>-->
<!-- <div class="upload_BOX">-->
<!-- <div class="upload">-->
<!-- <img src="~assets/images/downloadIMG.png" />-->
<!-- <span>上传照片</span>-->
<!-- </div>-->
<!-- </div>-->
<!-- </template>-->
<!-- </UploadImage1>-->
<upload-image-oss
@input="uploadSccess($event, 'images')"
:limit="9"
:value="evaluateForm.images"
@ -392,7 +406,7 @@
</div>
</div>
</template>
</UploadImage1>
</upload-image-oss>
</el-form-item>
</el-form>
</template>
@ -418,9 +432,10 @@
<script>
import Setting from "~/setting";
import EvaluateDetail from "./evaluate_detail.vue";
import UploadImageOss from "../../pc/components/uploadImageOss";
export default {
auth: false,
components: { EvaluateDetail },
components: {UploadImageOss, EvaluateDetail },
data() {
return {
userInfo: JSON.parse(localStorage.getItem("userInfo")),

38
pages/order_details.vue

@ -171,6 +171,23 @@
<div class="l">总计金额</div>
<div class="r red">¥{{ orderData.order_money }}</div>
</div>
<div
class="item"
v-if="(orderData.pay_type_name || false)"
>
<div class="l">支付方式</div>
<div class="r ">{{orderData.pay_type_name}}</div>
</div>
<div
class="item"
v-if="(orderData.delivery_type_name || false)"
>
<div class="l">配送方式</div>
<div class="r ">{{orderData.delivery_type_name}}</div>
</div>
<div class="item" v-if="orderType == 3">
<div class="l">等待付款</div>
<div class="r qx">
@ -226,11 +243,18 @@
<div class="hs" v-if="orderType == 1 && integralGoods == 0" @click="clickSpsh">申请售后</div>
<div class="gl" v-if="orderType == 1" @click="clickQrsh">确定收货</div>
<!-- <div class="hs" v-if="orderType == 2" @click="clickGhdz">更换地址</div> -->
<div class="gl" v-if="orderType == 2" @click="clickTxfh">提醒发货</div>
<!--根据要求暂时去掉提醒发货按钮-->
<!-- <div class="gl" v-if="orderType == 2" @click="clickTxfh">提醒发货</div>-->
<!-- <div class="hs" v-if="orderType == 3 && integralGoods == 0" @click="clickDdqx">取消订单</div> -->
<div class="gl" v-if="orderType == 3 && integralGoods == 0" @click="clickJxfk">
<!--展示该按钮的情况[pay.pay_status=0],不展示按钮的情况[订单锁定的is_lock=1,order.order_status=-1] -->
<div class="gl" v-if="orderData.pay.pay_status == 0 && orderData.pay.pay_money > 0 && orderData.order_status != -1" @click="clickJxfk">
继续付款
</div>
<div class="gl" v-if="orderType == 4 && integralGoods == 0" @click="clickScdd">
删除订单
</div>
@ -392,10 +416,10 @@
v-if="payState == 1"
>
<el-radio-group v-model="isBalance" class="czText" @change="paidChange">
<el-radio :label="false">待支付金额{{ orderData.pay_money }}</el-radio>
<el-radio :label="false">待支付金额{{ orderData.pay.pay_money }}</el-radio>
<el-radio :label="true"
>预存款支付当前余额{{ userInfo.balance }}本次抵扣{{
orderData.pay_money
orderData.pay.pay_money
}}</el-radio
>
</el-radio-group>
@ -404,7 +428,7 @@
<el-input
v-model="paymentForm.payment_money"
size="small"
:placeholder="Tobepaid ? orderData.pay_money : Tobepaid"
:placeholder="Tobepaid ? orderData.pay.pay_money : Tobepaid"
disabled
></el-input>
</el-form-item>
@ -692,7 +716,7 @@ export default {
this.$axios
.post(`/order/package`, obj)
.then((res) => {
console.log(res);
console.log('xx2',res);
this.logisticsData = res.data[0];
})
.catch((err) => {
@ -762,7 +786,7 @@ export default {
this.paymentForm.is_balance = false;
this.Tobepaid = Number(this.orderData.pay_money);
} else if (val) {
let num = Number(this.userInfo.balance) - Number(this.orderData.pay_money);
let num = Number(this.userInfo.balance) - Number(this.orderData.pay.pay_money);
this.paymentForm.is_balance = true;
if (num < Number(this.userInfo.balance)) {
this.Tobepaid = 0;

416
pc/components/uploadImageOss.vue

@ -0,0 +1,416 @@
<template ref="UploadImageOss">
<div class="finish_room">
<div class="finish_room2">
<div :images="photo" v-if="show" class="finish_room_photo">
<div :key="index" v-for="(item, index) in photo" class="room_img">
<img :src="imgUrl + item" />
<div v-if="!disabled" @click="deleteImg(index)" class="im-button">
<div class="im-close"></div>
<div class="im-close1"></div>
</div>
</div>
</div>
<div v-if="photo.length < limit" v-loading="loading" class="room_add_img">
<slot name="upload"></slot>
<input :disabled="disabled" @change="add_img" type="file" />
</div>
</div>
</div>
</template>
<script>
import axios from "axios";
import Setting from "~/setting";
export default {
props: {
UploadImageOssUrl: {
type: String,
default: "/upload/image",
},
show: {
type: Boolean,
default: () => true,
},
limit: {
type: Number,
default() {
return 1;
},
},
disabled: {
type: Boolean,
default() {
return false;
},
},
isCompress: {
type: Boolean,
default() {
return false;
},
},
value: {
type: [String, Array, File, Blob],
default() {
return [];
},
},
},
data: function () {
return {
photo: [],
previewList: [],
loading: false,
upLoadImgUrl: this.UploadImageOssUrl,
imgUrl: Setting.uplodBaseURL,
};
},
watch: {
photo() {
if (this.photo.length > 0) {
if (this.limit == 1) {
this.$emit("input", this.photo[0]);
} else {
this.$emit("input", this.photo);
}
}
},
UploadImageOssUrl(val) {
this.upLoadImgUrl = val;
},
value: {
immediate: true,
handler: function () {
if (typeof this.value == "string") {
if (this.value == "") {
this.photo = [];
} else {
this.photo = [this.value];
}
} else if (this.value instanceof Array) {
this.photo = this.value;
} else {
try {
let fileReader = new FileReader();
fileReader.readAsDataURL(this.value);
fileReader.onload = (e) => {
this.photo = [e.target.result];
};
} catch (e) {
console.log(e.message);
}
}
},
},
},
methods: {
deleteImg(index) {
this.photo.splice(index, 1);
if (this.limit == 1) {
this.$emit("input", "");
} else {
this.$emit("input", this.photo);
}
this.$emit("update:value", null);
},
compress(img) {
var url = null;
var canvas = document.createElement("canvas");
var scale = img.height / img.width;
canvas.width = 720;
canvas.height = 720 * scale;
var ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
url = canvas.toDataURL("image/jpeg");
return url;
},
dataURItoBlob(dataURI) {
let byteString = window.atob(dataURI.split(",")[1]);
let mimeString = dataURI.split(",")[0].split(":")[1].split(";")[0];
let ab = new ArrayBuffer(byteString.length);
let ia = new Uint8Array(ab);
for (let i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new window.Blob([ab], { type: mimeString });
},
add_img(event) {
let file = event.target.files[0];
// /\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/
if (/\.(jpg|jpeg|png|JPG|PNG|JPEG)$/.test(event.target.value)) {
let MAXSIZE = 10 * 1024 * 1024;
let size = file.size;
if (size > MAXSIZE) {
event.target.value = "";
this.$notify.error({
title: "上传图片错误",
message: "上传图片不能超过10M",
});
return;
}
this.loading = true;
let reader = new FileReader();
let self = this;
reader.readAsDataURL(file);
let img = new Image();
reader.onload = function (e) {
img.src = this.result;
img.onload = function () {
let base = e.target.result;
let fileItem = file;
if (self.isCompress) {
base = self.compress(img);
fileItem = self.dataURItoBlob(base);
}
let formdata = new window.FormData();
formdata.append("file", fileItem);
formdata.append("app_type", "pc");
formdata.append("app_type_name", "PC");
// formdata.append("path", "storeRegister");
// console.log(self.$store.state, "---");
axios({
method: "POST",
url: Setting.apiBaseURL + self.upLoadImgUrl,
data: formdata,
timeout: 1000000,
headers: {
"Content-Type": "multipart/form-data",
},
})
.then((res) => {
event.target.value = "";
let data = JSON.parse(res.data);
let url = data.data.pic_path;
self.photo.push(url);
self.previewList.push(Setting.uplodBaseURL + url);
self.loading = false;
})
.catch((e) => {
event.target.value = "";
self.loading = false;
this.$message.error(e);
});
};
};
} else {
event.target.value = "";
this.$notify.error({
title: "上传图片错误",
message: "请上传gif|jpg|jpeg|png|GIF|JPG|PNG格式图片",
});
}
},
},
};
</script>
<style>
.finish_room {
/*width: 140px;*/
/*height: 165px;*/
}
img {
height: 100%;
}
.finish_room2 {
width: 100%;
height: 100%;
display: flex;
align-items: center;
flex-flow: wrap;
}
.finish_room2 > div {
display: flex;
flex-wrap: wrap;
}
.finish_room2 .margeImg {
margin-left: 10px;
}
.finish_room2 .room_img {
width: 152px;
height: 152px;
cursor: pointer;
overflow: hidden;
position: relative;
text-align: center;
background-color: rgba(0, 0, 0, 0.5);
margin-right: 10px;
/* margin-left: 10px; */
margin-bottom: 10px;
}
.finish_room2 .room_img:before {
/*content: "";*/
/*width: 0;*/
/*height: 100%;*/
/*!*background: #000;*!*/
/*padding: 14px 18px;*/
/*position: absolute;*/
/*top: 0;*/
/*left: 50%;*/
/*opacity: 0;*/
}
.finish_room2 .room_img:hover:before {
width: 100%;
left: 0;
opacity: 0.5;
}
.finish_room2 .room_img .box-content {
width: 100%;
padding: 14px 18px;
color: #fff;
position: absolute;
top: 38%;
left: 0;
}
.finish_room2 .room_img .icon {
padding: 0;
margin: 0;
list-style: none;
margin-top: -20px;
}
.finish_room2 .room_img .icon li {
display: inline-block;
}
.finish_room2 .room_img .icon li i {
display: block;
width: 40px;
height: 40px;
line-height: 40px;
border-radius: 50%;
font-size: 20px;
font-weight: 700;
color: #fff;
margin-right: 25px;
opacity: 0;
transform: translateY(50px);
transition: all 0.5s ease 0s;
}
@media only screen and (max-width: 990px) {
.finish_room2 .room_img {
}
}
.finish_room2 .deleteImg {
color: red;
position: absolute;
top: 0px;
left: 80px;
cursor: pointer;
}
.finish_room2 .room_img img {
cursor: pointer;
width: 152px;
height: 152px;
}
.finish_room2 > .room_img span {
position: absolute;
width: auto;
height: auto;
right: 5px;
bottom: 3px;
}
.finish_room2 .im-button {
position: absolute;
top: -14px;
right: -18px;
width: 40px;
height: 40px;
cursor: pointer;
border-radius: 50%;
background-color: rgba(0, 0, 0, 0.5);
opacity: 0;
}
.finish_room2 .room_img:hover .icon li i {
opacity: 0.5;
}
.finish_room2 .room_img:hover img {
opacity: 0.5;
}
.finish_room2 .room_img:hover .im-button {
opacity: 1;
}
.finish_room2 .im-close {
transform: rotate(-45deg);
line-height: 0px;
left: 6px;
bottom: 13px;
display: inline-block;
width: 15px;
height: 2px;
background: #fff;
position: absolute;
}
.finish_room2 .im-close1 {
left: 5px;
bottom: 13px;
display: inline-block;
width: 15px;
height: 2px;
background: #fff;
position: absolute;
transform: rotate(45deg);
}
.room_add_img {
/* margin-top: 10px;
width: 100px;
height: 100px;
cursor: pointer;
border: 1px solid #e1e1e1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between; */
position: relative;
z-index: 10;
cursor: pointer;
margin-bottom: 10px;
}
/* .room_add_img > span:nth-child(1) {
width: 30px;
height: 30px;
overflow: hidden;
}
.room_add_img > span:nth-child(2) {
margin-bottom: 10px;
} */
.room_add_img input {
cursor: pointer;
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
z-index: 99999;
opacity: 0;
}
</style>
Loading…
Cancel
Save