1536 lines
39 KiB
Vue
1536 lines
39 KiB
Vue
<template>
|
||
<div class="order-details">
|
||
<title-block class="titile-d" title="寄存画作">
|
||
<template #left>
|
||
<div>
|
||
<image
|
||
style="width: 112rpx; height: 52rpx"
|
||
src="https://cdns.fontree.cn/fonchain-main/prod/image/default/artwork/785cf885-c4c9-44b3-8155-4b39988c7ef8.png"
|
||
@click="back"
|
||
></image>
|
||
</div>
|
||
</template>
|
||
</title-block>
|
||
<div class="content-list" v-if="listPaintings.length > 1">
|
||
<div class="wrap1">*请注意确认寄存结束时间</div>
|
||
<div class="wrap2">
|
||
<div class="wrap2_1" :style="{ height: `${listHeight}rpx` }">
|
||
<div
|
||
:class="['item', index === currentIndex ? 'active' : '']"
|
||
@click="itemClick(index)"
|
||
v-for="(item, index) of listPaintings"
|
||
>
|
||
<div class="item_1">{{ index + 1 }}</div>
|
||
<div class="item_2">
|
||
<div class="item_2_1">
|
||
<img :src="listPaintings[index].fileList1[0].url" alt="" />
|
||
</div>
|
||
<div class="item_2_2">{{ listPaintings[index].artworkNum }}</div>
|
||
</div>
|
||
<div class="item_3">{{ listPaintings[index].artworkName }}</div>
|
||
<div class="item_4">
|
||
{{
|
||
listPaintings[index].warehouseID
|
||
? addressList.find(
|
||
(x) => x.ID === listPaintings[index].warehouseID
|
||
).address
|
||
: ""
|
||
}}
|
||
</div>
|
||
<div class="item_5">{{ listPaintings[index].endAt }}</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap2_2" @click="expand">
|
||
<div
|
||
class="wrap2_2_1"
|
||
v-if="listPaintings.length > 2"
|
||
:style="{
|
||
transform: `translate(-50%, -50%) ${
|
||
isExpand ? 'rotate(180deg)' : ''
|
||
}`,
|
||
}"
|
||
></div>
|
||
<div class="wrap2_2_2">共计{{ listPaintings.length }}幅画作</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<scroll-view
|
||
class="content-center"
|
||
:style="{ marginTop: `${contentListHeight + 10}px` }"
|
||
@scroll="scrollDetail"
|
||
:scroll-into-view="scrollId"
|
||
scroll-y="true"
|
||
>
|
||
<div
|
||
class="content-scroll"
|
||
v-for="(item, index) of listPaintings"
|
||
:id="`item-${index}`"
|
||
>
|
||
<div class="painting-name" v-if="listPaintings.length > 1">
|
||
<div class="wrap1">画作{{ index + 1 }}:</div>
|
||
<div class="wrap2" @click="itemDelete(index)">删除</div>
|
||
</div>
|
||
<div class="content2">
|
||
<u-upload
|
||
:fileList="listPaintings[index].fileList1"
|
||
@afterRead="
|
||
(e) => {
|
||
afterRead(e, index);
|
||
}
|
||
"
|
||
@delete="
|
||
(e) => {
|
||
deletePic(e, index);
|
||
}
|
||
"
|
||
name="6"
|
||
multiple
|
||
:maxCount="1"
|
||
width="404rpx"
|
||
height="306rpx"
|
||
>
|
||
<div
|
||
style="
|
||
width: 404rpx;
|
||
height: 306rpx;
|
||
background: #000;
|
||
border-radius: 20rpx;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
"
|
||
>
|
||
<div style="margin-bottom: 14rpx">
|
||
<image
|
||
style="width: 38.32rpx; height: 38.2rpx"
|
||
src="../../static/zu142@3x.png"
|
||
></image>
|
||
</div>
|
||
<div style="font-size: 32rpx; color: #fff">上传画作图片</div>
|
||
</div>
|
||
</u-upload>
|
||
</div>
|
||
<div class="content3">
|
||
<div class="prompt">*扫描自动填入</div>
|
||
<div class="wrap1">
|
||
<div class="wrap1_1">
|
||
<div class="wrap1_1_1">画作编号</div>
|
||
<div class="wrap1_1_2"></div>
|
||
<div class="wrap1_1_3">
|
||
<input
|
||
style="color: #939393; font-size: 24rpx"
|
||
v-model="listPaintings[index].artworkNum"
|
||
placeholder-style="color: #939393;font-size: 24rpx;z-index:0"
|
||
placeholder="请输入画作编号"
|
||
/>
|
||
</div>
|
||
<div class="wrap1_1_4"></div>
|
||
</div>
|
||
<div class="wrap1_1">
|
||
<div class="wrap1_1_1">画作名称</div>
|
||
<div class="wrap1_1_2"></div>
|
||
<div class="wrap1_1_3">
|
||
<input
|
||
style="color: #939393; font-size: 24rpx"
|
||
v-model="listPaintings[index].artworkName"
|
||
placeholder-style="color: #939393;font-size: 24rpx;z-index:0"
|
||
placeholder="请输入画作名称"
|
||
/>
|
||
</div>
|
||
<div class="wrap1_1_4"></div>
|
||
</div>
|
||
<div class="wrap1_1">
|
||
<div class="wrap1_1_1">画家名称</div>
|
||
<div class="wrap1_1_2"></div>
|
||
<div class="wrap1_1_3">
|
||
<input
|
||
style="color: #939393; font-size: 24rpx"
|
||
v-model="listPaintings[index].artistName"
|
||
placeholder-style="color: #939393;font-size: 24rpx;z-index:0"
|
||
placeholder="请输入画家名称"
|
||
/>
|
||
</div>
|
||
<div class="wrap1_1_4"></div>
|
||
</div>
|
||
<div class="wrap1_1">
|
||
<div class="wrap1_1_1">画作平尺数</div>
|
||
<div class="wrap1_1_2"></div>
|
||
<div class="wrap1_1_3">
|
||
<input
|
||
type="number"
|
||
style="color: #939393; font-size: 24rpx"
|
||
v-model="listPaintings[index].artworkSquareSize"
|
||
@input="
|
||
(e) => {
|
||
inputConfirm(e, index);
|
||
}
|
||
"
|
||
placeholder-style="color: #939393;font-size: 24rpx;z-index:0"
|
||
placeholder="请输入画作平尺数"
|
||
/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap2"></div>
|
||
</div>
|
||
<div class="content4">
|
||
<div class="wrap1">
|
||
<div class="wrap1_1" @click="show2Click(index)">
|
||
<div class="wrap1_1_1">寄存地址</div>
|
||
<div class="wrap1_1_2"></div>
|
||
<div class="wrap1_1_3">
|
||
<input
|
||
style="color: #939393; font-size: 24rpx"
|
||
disabled
|
||
:value="
|
||
listPaintings[index].warehouseID
|
||
? addressList.find(
|
||
(x) => x.ID === listPaintings[index].warehouseID
|
||
).address
|
||
: ''
|
||
"
|
||
placeholder-style="color: #939393;font-size: 24rpx;z-index:0"
|
||
placeholder="请选择寄存地址"
|
||
/>
|
||
</div>
|
||
|
||
<div class="wrap1_1_4"></div>
|
||
<div class="wrap1_1_5">
|
||
<image src="../../static/zu611@3x.png"></image>
|
||
</div>
|
||
</div>
|
||
<div class="wrap1_1" @click="openShow1(index)">
|
||
<div class="wrap1_1_1">寄存时长</div>
|
||
<div class="wrap1_1_2"></div>
|
||
<div class="wrap1_1_3">
|
||
<input
|
||
style="color: #939393; font-size: 24rpx"
|
||
:value="listPaintings[index].endAt"
|
||
disabled
|
||
placeholder-style="color: #939393;font-size: 24rpx;z-index:0"
|
||
placeholder="请选择寄存时长"
|
||
/>
|
||
</div>
|
||
<div class="wrap1_1_5">
|
||
<image src="../../static/zu612@3x.png"></image>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap2"></div>
|
||
</div>
|
||
<div
|
||
class="content7"
|
||
v-if="index === listPaintings.length - 1"
|
||
@click="addPainting"
|
||
>
|
||
<div class="wrap1">
|
||
<div class="horizontal"></div>
|
||
<div class="vertical"></div>
|
||
</div>
|
||
<div class="wrap2">添加</div>
|
||
</div>
|
||
</div>
|
||
</scroll-view>
|
||
<div class="content5" @click="expand1">
|
||
<div
|
||
class="wrap4"
|
||
v-show="isExpand1"
|
||
:style="{ top: `-${152 * listPaintings.length}rpx` }"
|
||
>
|
||
<div class="item" v-for="(item, index) in listPaintings">
|
||
<div class="item_1">{{ index + 1 }}</div>
|
||
<div class="item_2">{{ item.artworkNum }}</div>
|
||
<div class="item_3">{{ item.artworkName }}</div>
|
||
<div class="item_4">¥ {{ item.expectedPayment }}</div>
|
||
</div>
|
||
</div>
|
||
<div
|
||
class="wrap3"
|
||
:style="{ transform: `${isExpand1 ? '' : 'rotate(180deg)'}` }"
|
||
>
|
||
<img
|
||
src="https://cdns.fontree.cn/fonchain-main/prod/image/default/approval/13639162-2871-4187-abc5-71c2d9f01ac2.png"
|
||
alt=""
|
||
/>
|
||
</div>
|
||
<div class="wrap1">
|
||
<div class="wrap1_1">*仅微信付款</div>
|
||
<div class="wrap1_2">预计 ¥{{ totalMoney || "0" }}</div>
|
||
</div>
|
||
<div class="wrap2" @click.stop="signContract">确认金额并签署合同</div>
|
||
</div>
|
||
<u-popup
|
||
:round="15"
|
||
:show="show_2"
|
||
mode="bottom"
|
||
@open="
|
||
() => {
|
||
show_2 = true;
|
||
}
|
||
"
|
||
>
|
||
<div class="poup1">
|
||
<div class="content1">
|
||
<div class="wrap1">更换您的寄存地址</div>
|
||
<div @click="show_2 = false" class="wrap2">
|
||
<image
|
||
src="https://cdns.fontree.cn/fonchain-main/prod/image/default/artwork/d84593b3-10a8-4d86-be8c-b048b03b22c7.png"
|
||
></image>
|
||
</div>
|
||
</div>
|
||
<div class="content2"></div>
|
||
<div class="content3">
|
||
<div
|
||
v-for="(itemaddress, index1) of addressList"
|
||
@click="selectAddress(itemaddress)"
|
||
:class="[
|
||
listPaintings[currentIndex].warehouseID === itemaddress.ID
|
||
? 'active'
|
||
: '',
|
||
]"
|
||
:key="index1"
|
||
class="wrap1"
|
||
>
|
||
<div class="wrap1_1">{{ itemaddress.address }}</div>
|
||
<div class="wrap1_2">*剩余{{ itemaddress.leftNum }}位置</div>
|
||
</div>
|
||
</div>
|
||
<div class="content2"></div>
|
||
<div class="content6" @click="confirmAddress">
|
||
<div class="wrap1">确定</div>
|
||
</div>
|
||
</div>
|
||
</u-popup>
|
||
<u-picker
|
||
v-if="show_1"
|
||
:show="show_1"
|
||
ref="uPicker"
|
||
:columns="columns"
|
||
@confirm="
|
||
(e) => {
|
||
confirmDate(e);
|
||
}
|
||
"
|
||
@cancel="closeClick"
|
||
@change="
|
||
(e) => {
|
||
changeHandler(e);
|
||
}
|
||
"
|
||
></u-picker>
|
||
<u-loading-page
|
||
bgColor="rgba(0,0,0,0.5)"
|
||
:loading="loading"
|
||
loading-text="正在进入法大大签署..."
|
||
></u-loading-page>
|
||
<u-toast ref="uToast"></u-toast>
|
||
</div>
|
||
</template>
|
||
<script>
|
||
import http from "@/http/api";
|
||
import { postDataByParams } from "../../http/service";
|
||
import dayjs from "dayjs";
|
||
import _ from "lodash";
|
||
export default {
|
||
name: "order-details",
|
||
data() {
|
||
return {
|
||
itemHeight: 0,
|
||
scrollId: "item-0",
|
||
columns: [
|
||
[180],
|
||
["*"],
|
||
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
|
||
["="],
|
||
[180],
|
||
],
|
||
currentIndex: 0,
|
||
listPaintings: [
|
||
{
|
||
expectedPayment: "",
|
||
fileList1: [],
|
||
artworkNum: "",
|
||
artworkName: "",
|
||
artistName: "",
|
||
artworkSquareSize: "",
|
||
warehouseID: "",
|
||
endAt: "",
|
||
},
|
||
],
|
||
contentListHeight: 0,
|
||
isExpand: false,
|
||
isExpand1: false,
|
||
listHeight: 308,
|
||
minDate: "",
|
||
show: false,
|
||
value1: "",
|
||
loading: false,
|
||
fileList1: [],
|
||
dayMoney: "",
|
||
expectedPayment: "",
|
||
warehouseID: "",
|
||
cycleId: "",
|
||
cycleList: [],
|
||
addressList: [],
|
||
info: {},
|
||
show_2: false,
|
||
data: [],
|
||
show_1: false,
|
||
title: "picker-view",
|
||
|
||
visible: true,
|
||
url: "",
|
||
};
|
||
},
|
||
computed: {
|
||
totalMoney() {
|
||
return this.listPaintings.reduce((total, item) => {
|
||
return total + Number(item.expectedPayment);
|
||
}, 0);
|
||
},
|
||
},
|
||
onLoad(load) {
|
||
if (load.url) {
|
||
this.url = load.url;
|
||
this.getDetailUrl();
|
||
}
|
||
if (load.type === "detail") {
|
||
this.getData();
|
||
this.type = load.type;
|
||
}
|
||
if (load.type === "confirm") {
|
||
this.listPaintings = uni.getStorageSync("orderingInfo").listPaintings;
|
||
}
|
||
if (load.type === "scan") {
|
||
this.listPaintings = uni.getStorageSync("scanlist")?.map((x) => {
|
||
return {
|
||
...x,
|
||
expectedPayment: "",
|
||
warehouseID: "",
|
||
fileList1: [{ url: x.artworkImg }],
|
||
};
|
||
});
|
||
}
|
||
},
|
||
mounted() {
|
||
this.getCycle();
|
||
if (this.$mp.query.url) {
|
||
this.url = this.$mp.query.url;
|
||
this.getDetailUrl();
|
||
}
|
||
this.getAddress();
|
||
this.$nextTick(async () => {
|
||
this.itemHeight = await this.getElementHeight(".content-scroll");
|
||
this.getheight();
|
||
});
|
||
},
|
||
methods: {
|
||
inputConfirm: _.debounce(function (event, index) {
|
||
this.listPaintings[index].artworkSquareSize = event.target.value.replace(
|
||
/\D/g,
|
||
""
|
||
);
|
||
let number = parseInt(this.listPaintings[index].artworkSquareSize, 10);
|
||
if (isNaN(number) || number <= 0) {
|
||
this.listPaintings[index].artworkSquareSize = "";
|
||
} else {
|
||
this.obtainAmount(index);
|
||
}
|
||
}, 1000),
|
||
addDaysToCurrentDate(days) {
|
||
return dayjs().add(days, "day").format("YYYY-MM-DD");
|
||
},
|
||
show2Click(index) {
|
||
this.currentIndex = index;
|
||
this.show_2 = true;
|
||
},
|
||
closeClick() {
|
||
this.show_1 = false;
|
||
},
|
||
getElementHeight(selector) {
|
||
return new Promise((resolve, reject) => {
|
||
const query = uni.createSelectorQuery();
|
||
query
|
||
.select(selector)
|
||
.boundingClientRect((data) => {
|
||
if (data) {
|
||
resolve(data.height); // 成功获取高度时,通过 Promise 返回
|
||
} else {
|
||
reject(new Error("无法获取元素高度")); // 如果找不到元素或获取高度失败时,通过 Promise 返回错误
|
||
}
|
||
})
|
||
.exec();
|
||
});
|
||
},
|
||
async scrollDetail(event) {
|
||
const scrollTop = event.detail.scrollTop; // 获取当前滚动位置
|
||
const totalHeight = this.listPaintings.length * this.itemHeight;
|
||
const scrollPercent = (scrollTop / totalHeight) * 100;
|
||
const index = Math.floor(scrollTop / this.itemHeight); // 计算索引
|
||
/* console.log(`滚动了 ${scrollPercent}%`);
|
||
console.log(`滚动到了第 ${index} 个元素的位置`);*/
|
||
this.currentIndex = index;
|
||
},
|
||
async getData() {
|
||
const data1 = {
|
||
ID: Number(this.$mp.query.ID),
|
||
};
|
||
const res1 = await postDataByParams("/api/v2/warehouse/detail", data1);
|
||
if (res1.code === 200) {
|
||
this.info = res1.data;
|
||
}
|
||
},
|
||
changeHandler(e, i) {
|
||
const {
|
||
columnIndex,
|
||
value,
|
||
values,
|
||
index,
|
||
picker = this.$refs.uPicker,
|
||
} = e;
|
||
if (columnIndex === 2) {
|
||
picker.setColumnValues(this.columns.length - 1, [
|
||
this.columns[2][e.index] * this.columns[0][0],
|
||
]);
|
||
}
|
||
},
|
||
itemDelete(index) {
|
||
this.listPaintings.splice(index, 1);
|
||
this.currentIndex = 0;
|
||
this.scrollId = `item-0`;
|
||
if (this.listPaintings.length === 1) {
|
||
this.contentListHeight = 0;
|
||
}
|
||
this.$nextTick(() => {
|
||
this.getheight();
|
||
});
|
||
},
|
||
itemClick(index) {
|
||
this.scrollId = `item-${index}`;
|
||
this.currentIndex = index;
|
||
},
|
||
addPainting() {
|
||
this.listPaintings.push({
|
||
expectedPayment: "",
|
||
fileList1: [],
|
||
artworkNum: "",
|
||
artworkName: "",
|
||
artistName: "",
|
||
artworkSquareSize: "",
|
||
warehouseID: this.listPaintings[0].warehouseID,
|
||
endAt: this.listPaintings[0].endAt,
|
||
});
|
||
this.$nextTick(() => {
|
||
this.getheight();
|
||
});
|
||
this.currentIndex = this.currentIndex + 1;
|
||
},
|
||
getheight() {
|
||
let query = uni.createSelectorQuery().in(this);
|
||
query
|
||
.select(".content-list")
|
||
.boundingClientRect((data) => {
|
||
if (data) {
|
||
let query = uni.createSelectorQuery().in(this);
|
||
query
|
||
.select(".titile-d")
|
||
.boundingClientRect((data1) => {
|
||
if (data1) {
|
||
this.contentListHeight = data.bottom - data1.bottom;
|
||
}
|
||
})
|
||
.exec();
|
||
}
|
||
})
|
||
.exec();
|
||
},
|
||
expand1() {
|
||
if (this.isExpand) {
|
||
this.listHeight = 154 * 2;
|
||
}
|
||
if (this.isExpand) {
|
||
this.isExpand = false;
|
||
}
|
||
|
||
this.isExpand1 = !this.isExpand1;
|
||
},
|
||
expand() {
|
||
if (this.isExpand) {
|
||
this.listHeight = 154 * 2;
|
||
} else {
|
||
this.listHeight =
|
||
154 *
|
||
(this.listPaintings.length <= 7 ? this.listPaintings.length : 7);
|
||
}
|
||
this.isExpand = !this.isExpand;
|
||
if (this.isExpand1) {
|
||
this.isExpand1 = false;
|
||
}
|
||
},
|
||
|
||
confirmDate(data, index) {
|
||
this.listPaintings[this.currentIndex].endAt =
|
||
data.value[data.value.length - 1];
|
||
if (this.currentIndex === 0) {
|
||
for (let listPainting of this.listPaintings) {
|
||
listPainting.endAt = data.value[data.value.length - 1];
|
||
}
|
||
}
|
||
this.obtainAmount(this.currentIndex, this.currentIndex === 0);
|
||
this.show_1 = false;
|
||
},
|
||
openShow1(index) {
|
||
if (!this.listPaintings[index].artworkSquareSize) {
|
||
uni.showToast({
|
||
title: "请先填写画作平尺数",
|
||
duration: 2000,
|
||
icon: "none",
|
||
});
|
||
return;
|
||
}
|
||
this.currentIndex = index;
|
||
this.show_1 = true;
|
||
},
|
||
uploadFilePromise(url, type = null) {
|
||
return new Promise((resolve) => {
|
||
uni.uploadFile({
|
||
url: http.baseUrl + "/api/wxuser/uploadpic",
|
||
filePath: url,
|
||
name: "file",
|
||
success: (res) => {
|
||
const { path } = JSON.parse(res.data).data;
|
||
resolve(path);
|
||
},
|
||
});
|
||
});
|
||
},
|
||
deletePic() {
|
||
this.fileList1 = [];
|
||
},
|
||
// 新增图片
|
||
async afterRead(event, index) {
|
||
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
|
||
let lists = [].concat(event.file);
|
||
let fileListLen = this.listPaintings[index].fileList1.length;
|
||
lists.map((item) => {
|
||
this.listPaintings[index].fileList1.push({
|
||
...item,
|
||
status: "uploading",
|
||
message: "上传中",
|
||
});
|
||
});
|
||
for (let i = 0; i < lists.length; i++) {
|
||
const result = await this.uploadFilePromise(lists[i].url, "check");
|
||
let item = this.listPaintings[index].fileList1[fileListLen];
|
||
this.listPaintings[index].fileList1.splice(
|
||
fileListLen,
|
||
1,
|
||
Object.assign(item, {
|
||
status: "success",
|
||
message: "",
|
||
url: result,
|
||
})
|
||
);
|
||
fileListLen++;
|
||
}
|
||
},
|
||
async signContract() {
|
||
const checks = [
|
||
{
|
||
value: "fileList1",
|
||
message: "画作图片",
|
||
},
|
||
{
|
||
value: "artworkSquareSize",
|
||
message: "画作平尺数",
|
||
},
|
||
{
|
||
value: "artistName",
|
||
message: "画家名称",
|
||
},
|
||
{
|
||
value: "artworkName",
|
||
message: "画作名称",
|
||
},
|
||
{
|
||
value: "artworkNum",
|
||
message: "画作编号",
|
||
},
|
||
{
|
||
value: "warehouseID",
|
||
message: "寄存地址",
|
||
},
|
||
{
|
||
value: "endAt",
|
||
message: "择寄存时长",
|
||
},
|
||
];
|
||
for (const [index, item] of this.listPaintings.entries()) {
|
||
for (const check of checks) {
|
||
if (check.value === "fileList1" && item.fileList1.length < 1) {
|
||
uni.showToast({
|
||
title: `请完善第${index + 1}条数据的${check.message}`,
|
||
icon: "none",
|
||
});
|
||
return;
|
||
}
|
||
|
||
if (!item[check.value]) {
|
||
uni.showToast({
|
||
title: `请完善第${index + 1}条数据的${check.message}`,
|
||
icon: "none",
|
||
});
|
||
return;
|
||
}
|
||
if (check.value === "artworkSquareSize") {
|
||
if (Number(item[check.value]) < 1) {
|
||
uni.showToast({
|
||
title: `第${index + 1}条数据的${check.message}应大于0`,
|
||
icon: "none",
|
||
});
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
this.loading = true;
|
||
const data = {
|
||
orders: this.listPaintings.map((x) => {
|
||
return {
|
||
endAt: this.addDaysToCurrentDate(x.endAt),
|
||
warehouseID: x.warehouseID,
|
||
artworkSquareSize: Number(x.artworkSquareSize),
|
||
artworkName: x.artworkName,
|
||
artworkImg: x.fileList1?.[0]?.url,
|
||
artworkNum: x.artworkNum,
|
||
artistName: x.artistName,
|
||
};
|
||
}),
|
||
};
|
||
const res = await postDataByParams(
|
||
"/api/v2/warehouse/fdd/contract/h5",
|
||
data
|
||
);
|
||
if (res.code === 200) {
|
||
uni.setStorageSync("jumpUrl", res.data.jumpUrl);
|
||
uni.setStorageSync("orderingInfo", {
|
||
listPaintings: this.listPaintings,
|
||
transactionId: res.data.transactionId,
|
||
});
|
||
uni.navigateTo({
|
||
url: `/pages/signwebview/index`,
|
||
});
|
||
} else {
|
||
// uni.showToast({
|
||
// title: res.msg,
|
||
// duration: 2000,
|
||
// icon: "none",
|
||
// });
|
||
this.$refs.uToast.show({
|
||
message: res.msg,
|
||
icon: "none",
|
||
});
|
||
}
|
||
this.loading = false;
|
||
},
|
||
async obtainAmount(index, list = false) {
|
||
let data = {
|
||
orders: [
|
||
{
|
||
artworkSquareSize: Number(
|
||
this.listPaintings[index].artworkSquareSize
|
||
),
|
||
endAt: this.addDaysToCurrentDate(this.listPaintings[index].endAt),
|
||
},
|
||
],
|
||
};
|
||
if (list) {
|
||
data = {
|
||
orders: this.listPaintings.map((x) => {
|
||
return {
|
||
artworkSquareSize: Number(x.artworkSquareSize),
|
||
endAt: this.addDaysToCurrentDate(x.endAt),
|
||
};
|
||
}),
|
||
};
|
||
}
|
||
const res = await postDataByParams("/api/v2/warehouse/calculate", data);
|
||
if (res.code === 200) {
|
||
if (list) {
|
||
this.listPaintings.forEach((x, ix) => {
|
||
res.data.orders?.forEach((y, iy) => {
|
||
if (ix === iy) {
|
||
x.expectedPayment = Number(y.money);
|
||
}
|
||
});
|
||
});
|
||
} else {
|
||
this.listPaintings[index].expectedPayment = Number(
|
||
res.data.orders?.[0]?.money
|
||
);
|
||
}
|
||
}
|
||
},
|
||
confirmCycle() {
|
||
this.show_1 = false;
|
||
},
|
||
confirmAddress() {
|
||
this.show_2 = false;
|
||
},
|
||
selectAddress(item) {
|
||
this.listPaintings[this.currentIndex].warehouseID = item.ID;
|
||
if (this.currentIndex === 0) {
|
||
this.listPaintings.forEach((x) => {
|
||
x.warehouseID = item.ID;
|
||
});
|
||
}
|
||
},
|
||
selectionPeriod(item) {
|
||
this.cycleId = item.ID;
|
||
},
|
||
async getCycle() {
|
||
const res = await postDataByParams("/api/warehouse/cycle");
|
||
if (res.code === 200) {
|
||
this.cycleList = res.data.data;
|
||
}
|
||
},
|
||
async getAddress() {
|
||
const res = await postDataByParams("/api/warehouse/address");
|
||
if (res.code === 200) {
|
||
this.addressList = res.data.data;
|
||
console.log(this.addressList, "addressList");
|
||
}
|
||
},
|
||
async getDetailUrl() {
|
||
const data = {
|
||
url: this.url,
|
||
};
|
||
const res = await postDataByParams("/api/warehouse/ocr", data);
|
||
if (res.code === 200) {
|
||
this.info = res.data;
|
||
this.fileList1 = [{ url: this.info.artworkImg }];
|
||
} else {
|
||
this.$refs.uToast.show({
|
||
message: res.msg,
|
||
icon: "none",
|
||
});
|
||
// uni.showToast({
|
||
// title: res.msg,
|
||
// icon: "none",
|
||
// });
|
||
}
|
||
console.log(res, "getDetailUrl");
|
||
},
|
||
isDateFont(item, num) {
|
||
if (Array.isArray && this.data.length === 3) {
|
||
return this.data[num] === item;
|
||
}
|
||
},
|
||
changeData(e) {
|
||
this.data = [
|
||
e.detail.value[0] + 1990,
|
||
e.detail.value[1] + 1,
|
||
e.detail.value[2] + 1,
|
||
];
|
||
},
|
||
back() {
|
||
uni.navigateBack({ delta: 2 });
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
<style scoped lang="scss">
|
||
.fontDate {
|
||
color: #fff;
|
||
}
|
||
|
||
/deep/ .pickerSelected {
|
||
color: #ffffff !important;
|
||
z-index: 2;
|
||
}
|
||
|
||
/deep/ .test {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
z-index: -1;
|
||
background: #a9d897;
|
||
color: #fff;
|
||
height: 62rpx;
|
||
}
|
||
|
||
uni-picker-view {
|
||
display: block;
|
||
}
|
||
|
||
uni-picker-view .uni-picker-view-wrapper {
|
||
display: flex;
|
||
position: relative;
|
||
overflow: hidden;
|
||
height: 100%;
|
||
background-color: white;
|
||
}
|
||
|
||
uni-picker-view[hidden] {
|
||
display: none;
|
||
}
|
||
|
||
picker-view {
|
||
width: 100%;
|
||
// height: 600upx;
|
||
height: 400rpx;
|
||
margin-top: 20 upx;
|
||
}
|
||
|
||
.item {
|
||
line-height: 100 upx;
|
||
text-align: center;
|
||
}
|
||
|
||
.order-details {
|
||
background-image: url("https://cdns.fontree.cn/fonchain-main/prod/image/default/artwork/4fdc9a0f-d72a-46b6-a04d-ed56d5465213.png");
|
||
box-sizing: border-box;
|
||
overflow: hidden;
|
||
padding-left: 30rpx;
|
||
padding-right: 30rpx;
|
||
background-size: cover;
|
||
width: 100vw;
|
||
height: 100vh;
|
||
position: relative;
|
||
display: flex;
|
||
flex-direction: column;
|
||
.content-list {
|
||
top: 130rpx;
|
||
z-index: 999;
|
||
position: absolute;
|
||
width: 686rpx;
|
||
margin-top: 34rpx;
|
||
text-align: right;
|
||
.wrap1 {
|
||
margin-bottom: 10rpx;
|
||
font-size: 24rpx;
|
||
color: rgba(78, 150, 77, 1);
|
||
}
|
||
.wrap2 {
|
||
box-sizing: border-box;
|
||
padding-top: 20rpx;
|
||
border: 2rpx dashed rgba(118, 196, 88, 1);
|
||
border-radius: 20rpx;
|
||
background-color: #fff;
|
||
padding-left: 20rpx;
|
||
padding-right: 20rpx;
|
||
.wrap2_2 {
|
||
border-top: 1rpx dashed rgba(118, 196, 88, 1);
|
||
height: 60rpx;
|
||
position: relative;
|
||
.wrap2_2_2 {
|
||
line-height: 60rpx;
|
||
color: rgba(118, 196, 88, 1);
|
||
font-size: 24rpx;
|
||
}
|
||
.wrap2_2_1 {
|
||
position: absolute;
|
||
top: 50%;
|
||
left: 50%;
|
||
transform: translate(-50%, -50%);
|
||
width: 30rpx;
|
||
height: 16rpx;
|
||
background-image: url("https://cdns.fontree.cn/fonchain-main/prod/image/default/approval/13639162-2871-4187-abc5-71c2d9f01ac2.png");
|
||
background-size: cover;
|
||
}
|
||
}
|
||
.wrap2_1 {
|
||
z-index: 999;
|
||
padding-bottom: 20rpx;
|
||
overflow-y: scroll;
|
||
.item {
|
||
height: 154rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
padding-left: 10rpx;
|
||
padding-right: 10rpx;
|
||
&.active {
|
||
background-color: rgb(245, 251, 242);
|
||
}
|
||
.item_5 {
|
||
width: 134rpx;
|
||
color: rgba(98, 98, 98, 1);
|
||
font-size: 24rpx;
|
||
}
|
||
.item_4 {
|
||
margin-right: 28rpx;
|
||
width: 192rpx;
|
||
color: rgba(98, 98, 98, 1);
|
||
font-size: 24rpx;
|
||
}
|
||
.item_3 {
|
||
margin-right: 48rpx;
|
||
width: 78rpx;
|
||
color: rgba(98, 98, 98, 1);
|
||
font-size: 24rpx;
|
||
}
|
||
.item_2 {
|
||
margin-right: 24rpx;
|
||
width: 68rpx;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
.item_2_2 {
|
||
color: rgba(147, 147, 147, 1);
|
||
font-size: 20rpx;
|
||
}
|
||
.item_2_1 {
|
||
background-color: #000;
|
||
width: 68rpx;
|
||
height: 68rpx;
|
||
img {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
}
|
||
}
|
||
.item_1 {
|
||
margin-right: 18rpx;
|
||
color: rgba(88, 166, 107, 1);
|
||
font-size: 24rpx;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
width: 36rpx;
|
||
height: 36rpx;
|
||
border: 5rpx solid rgba(118, 196, 88, 1);
|
||
border-radius: 50%;
|
||
background: transparent;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
& > .content5 {
|
||
align-items: center;
|
||
left: 0;
|
||
background: #fff;
|
||
width: 750rpx;
|
||
position: fixed;
|
||
bottom: 0;
|
||
height: 172rpx;
|
||
display: flex;
|
||
.wrap4 {
|
||
z-index: 999;
|
||
width: 100%;
|
||
background-color: #fff;
|
||
position: absolute;
|
||
border-top-right-radius: 20rpx;
|
||
border-top-left-radius: 20rpx;
|
||
border-top: 1px dashed rgba(118, 196, 88, 1);
|
||
.item {
|
||
height: 152rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
.item_4 {
|
||
margin-right: 64rpx;
|
||
margin-left: auto;
|
||
color: rgba(118, 196, 88, 1);
|
||
font-size: 24rpx;
|
||
font-weight: bold;
|
||
}
|
||
.item_3 {
|
||
width: 100rpx;
|
||
margin-left: 48rpx;
|
||
color: rgba(98, 98, 98, 1);
|
||
font-size: 24rpx;
|
||
}
|
||
.item_2 {
|
||
width: 100rpx;
|
||
margin-left: 34rpx;
|
||
color: rgba(98, 98, 98, 1);
|
||
font-size: 24rpx;
|
||
}
|
||
.item_1 {
|
||
margin-left: 56rpx;
|
||
color: rgba(88, 166, 107, 1);
|
||
font-size: 24rpx;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
width: 36rpx;
|
||
height: 36rpx;
|
||
border: 5rpx solid rgba(118, 196, 88, 1);
|
||
border-radius: 50%;
|
||
background: transparent;
|
||
}
|
||
}
|
||
}
|
||
.wrap3 {
|
||
margin-left: 32rpx;
|
||
img {
|
||
width: 30rpx;
|
||
height: 16rpx;
|
||
}
|
||
}
|
||
.wrap2 {
|
||
border-radius: 40rpx;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
width: 392rpx;
|
||
height: 56rpx;
|
||
color: #fff;
|
||
font-size: 32rpx;
|
||
background: #76c458;
|
||
}
|
||
|
||
.wrap1 {
|
||
margin-left: 18rpx;
|
||
margin-right: 70rpx;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: start;
|
||
|
||
.wrap1_1 {
|
||
color: #939393;
|
||
font-size: 16rpx;
|
||
}
|
||
|
||
.wrap1_2 {
|
||
font-size: 32rpx;
|
||
color: #76c458;
|
||
}
|
||
}
|
||
}
|
||
|
||
.poup1 {
|
||
padding-top: 28rpx;
|
||
padding-left: 30rpx;
|
||
padding-right: 30rpx;
|
||
margin-bottom: 72rpx;
|
||
|
||
& > .content6 {
|
||
margin-top: 26rpx;
|
||
display: flex;
|
||
justify-content: center;
|
||
|
||
.wrap1 {
|
||
color: #fff;
|
||
font-size: 28rpx;
|
||
width: 436rpx;
|
||
height: 60rpx;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
background: #76c458;
|
||
border-radius: 30rpx;
|
||
}
|
||
}
|
||
|
||
& > .content3 {
|
||
margin-bottom: 70rpx;
|
||
|
||
.wrap1 {
|
||
margin-bottom: 18rpx;
|
||
border-radius: 32rpx;
|
||
height: 80rpx;
|
||
box-sizing: border-box;
|
||
border: 2px solid #76c458;
|
||
padding-left: 44rpx;
|
||
padding-right: 42rpx;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
|
||
.wrap1_2 {
|
||
color: #76c458;
|
||
font-size: 26rpx;
|
||
}
|
||
|
||
.wrap1_1 {
|
||
font-size: 28rpx;
|
||
color: #000;
|
||
}
|
||
|
||
&.disabled {
|
||
border: none;
|
||
background: #d8d8d8;
|
||
|
||
.wrap1_1 {
|
||
color: #626262;
|
||
font-size: 28rpx;
|
||
}
|
||
|
||
.wrap1_2 {
|
||
color: #626262;
|
||
font-size: 16rpx;
|
||
}
|
||
}
|
||
|
||
&.active {
|
||
background: #76c458;
|
||
|
||
.wrap1_2 {
|
||
color: #fff;
|
||
font-size: 26rpx;
|
||
}
|
||
|
||
.wrap1_1 {
|
||
font-size: 28rpx;
|
||
color: #fff;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
& > .content1 {
|
||
margin-bottom: 36rpx;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
|
||
.wrap1 {
|
||
color: #000;
|
||
font-size: 32rpx;
|
||
}
|
||
|
||
.wrap2 {
|
||
image {
|
||
width: 48rpx;
|
||
height: 48rpx;
|
||
}
|
||
}
|
||
}
|
||
|
||
& > .content2 {
|
||
margin-bottom: 36rpx;
|
||
height: 1rpx;
|
||
background: #626262;
|
||
}
|
||
}
|
||
|
||
.poup {
|
||
margin-bottom: 72rpx;
|
||
padding-top: 28rpx;
|
||
padding-left: 30rpx;
|
||
padding-right: 30rpx;
|
||
& > .content7 {
|
||
}
|
||
& > .content3 {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
|
||
.wrap4 {
|
||
margin-bottom: 40rpx;
|
||
border-radius: 32rpx;
|
||
margin-top: 30rpx;
|
||
width: 220rpx;
|
||
height: 84rpx;
|
||
background: #d8d8d8;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
|
||
.wrap4_1 {
|
||
color: #626262;
|
||
font-size: 28rpx;
|
||
}
|
||
|
||
.wrap4_2 {
|
||
color: #be7e7e;
|
||
font-size: 16rpx;
|
||
}
|
||
}
|
||
|
||
.wrap1 {
|
||
box-sizing: border-box;
|
||
flex-shrink: 0;
|
||
margin-right: 16rpx;
|
||
font-size: 28rpx;
|
||
border-radius: 32rpx;
|
||
border: 2rpx solid #76c458;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
width: 220rpx;
|
||
height: 84rpx;
|
||
|
||
&:nth-child(3) {
|
||
margin-right: 0;
|
||
}
|
||
|
||
&.active {
|
||
color: #fff;
|
||
background: #76c458;
|
||
}
|
||
}
|
||
}
|
||
|
||
& > .content6 {
|
||
margin-top: 26rpx;
|
||
display: flex;
|
||
justify-content: center;
|
||
|
||
.wrap1 {
|
||
color: #fff;
|
||
font-size: 28rpx;
|
||
width: 436rpx;
|
||
height: 60rpx;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
background: #76c458;
|
||
border-radius: 30rpx;
|
||
}
|
||
}
|
||
|
||
& > .content5 {
|
||
margin-top: 36rpx;
|
||
height: 66rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
border-bottom: 1rpx solid #bababa;
|
||
border-top: 1rpx solid #bababa;
|
||
|
||
.wrap1 {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
flex-grow: 1;
|
||
color: #4e964d;
|
||
font-size: 28rpx;
|
||
}
|
||
|
||
.wrap2 {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
flex-grow: 1;
|
||
color: #4e964d;
|
||
font-size: 28rpx;
|
||
}
|
||
|
||
.wrap3 {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
flex-grow: 1;
|
||
color: #4e964d;
|
||
font-size: 28rpx;
|
||
}
|
||
}
|
||
|
||
& > .content4 {
|
||
font-size: 32rpx;
|
||
color: #000;
|
||
}
|
||
|
||
& > .content2 {
|
||
margin-bottom: 36rpx;
|
||
height: 1rpx;
|
||
background: #626262;
|
||
}
|
||
|
||
& > .content1 {
|
||
margin-bottom: 36rpx;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
|
||
.wrap1 {
|
||
color: #000;
|
||
font-size: 32rpx;
|
||
}
|
||
|
||
.wrap2 {
|
||
image {
|
||
width: 48rpx;
|
||
height: 48rpx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.content-center {
|
||
overflow-y: scroll;
|
||
margin-bottom: 180rpx;
|
||
.content-scroll {
|
||
.painting-name {
|
||
margin-top: 48rpx;
|
||
align-items: center;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
.wrap1 {
|
||
color: rgba(0, 0, 0, 1);
|
||
font-size: 28rpx;
|
||
}
|
||
.wrap2 {
|
||
font-size: 28rpx;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
color: rgba(118, 196, 88, 1);
|
||
border-radius: 40rpx;
|
||
background-color: #fff;
|
||
width: 148rpx;
|
||
height: 56rpx;
|
||
border: 1px solid rgba(118, 196, 88, 1);
|
||
}
|
||
}
|
||
& > .content4 {
|
||
margin-bottom: 24rpx;
|
||
margin-top: 60rpx;
|
||
|
||
.wrap1 {
|
||
border: 1rpx dashed #dfe9f0;
|
||
background-color: #fff;
|
||
|
||
.wrap1_1 {
|
||
position: relative;
|
||
height: 114rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
.wrap1_1_4 {
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
bottom: 0;
|
||
position: absolute;
|
||
height: 0;
|
||
width: 636rpx;
|
||
border-bottom: 0.5px solid #626262;
|
||
}
|
||
|
||
.wrap1_1_5 {
|
||
right: 42rpx;
|
||
position: absolute;
|
||
|
||
image {
|
||
width: 46.34rpx;
|
||
height: 20rpx;
|
||
}
|
||
}
|
||
|
||
.wrap1_1_2 {
|
||
margin-right: 36rpx;
|
||
width: 0;
|
||
height: 66rpx;
|
||
border-left: 0.5px solid #626262;
|
||
}
|
||
|
||
.wrap1_1_1 {
|
||
width: 210rpx;
|
||
padding-left: 32rpx;
|
||
|
||
color: #626262;
|
||
font-size: 24rpx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
& > .content3 {
|
||
margin-top: 60rpx;
|
||
|
||
.prompt {
|
||
color: #4e964d;
|
||
font-size: 16rpx;
|
||
margin-bottom: 4rpx;
|
||
}
|
||
|
||
.wrap1 {
|
||
border: 1rpx dashed #dfe9f0;
|
||
background-color: #fff;
|
||
|
||
.wrap1_1 {
|
||
position: relative;
|
||
height: 114rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
.wrap1_1_4 {
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
bottom: 0;
|
||
position: absolute;
|
||
height: 0;
|
||
width: 636rpx;
|
||
border-bottom: 0.5px solid #626262;
|
||
}
|
||
|
||
.wrap1_1_2 {
|
||
margin-right: 36rpx;
|
||
width: 0;
|
||
height: 66rpx;
|
||
border-left: 0.5px solid #626262;
|
||
}
|
||
|
||
.wrap1_1_1 {
|
||
width: 210rpx;
|
||
padding-left: 32rpx;
|
||
|
||
color: #626262;
|
||
font-size: 24rpx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
& > .content2 {
|
||
display: flex;
|
||
justify-content: center;
|
||
|
||
image {
|
||
width: 404rpx;
|
||
height: 306rpx;
|
||
}
|
||
}
|
||
& > .content7 {
|
||
margin: 0 auto;
|
||
margin-bottom: 20rpx;
|
||
background-color: #fff;
|
||
border-radius: 40rpx;
|
||
width: 228rpx;
|
||
height: 56rpx;
|
||
border: 3rpx solid rgba(118, 196, 88, 1);
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
.wrap2 {
|
||
color: rgba(118, 196, 88, 1);
|
||
font-size: 28rpx;
|
||
}
|
||
.wrap1 {
|
||
margin-right: 20rpx;
|
||
box-sizing: border-box;
|
||
width: 32rpx;
|
||
height: 32rpx;
|
||
border: 3rpx solid rgba(118, 196, 88, 1);
|
||
border-radius: 50%;
|
||
background: transparent;
|
||
|
||
position: relative;
|
||
.horizontal {
|
||
position: absolute;
|
||
left: 50%;
|
||
top: 50%;
|
||
transform: translate(-50%, -50%);
|
||
width: 18rpx;
|
||
height: 2rpx;
|
||
background-color: rgba(118, 196, 88, 1);
|
||
}
|
||
|
||
.vertical {
|
||
position: absolute;
|
||
left: 50%;
|
||
top: 50%;
|
||
transform: translate(-50%, -50%);
|
||
width: 2rpx;
|
||
height: 18rpx;
|
||
background-color: rgba(118, 196, 88, 1);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</style>
|