提交 e64a1a9e 编写于 作者: yafei.li's avatar yafei.li

Merge branch 'feat/lyf' into 'develop'

Feat/lyf

See merge request com.pica.cloud.education.frontend/pica.cloud.web-education-admin!284
...@@ -205,7 +205,6 @@ ...@@ -205,7 +205,6 @@
}, },
// 搜索框中输入文字 时 page=1 pageSize=30 // 搜索框中输入文字 时 page=1 pageSize=30
handleInputSearch() { handleInputSearch() {
// debugger;
clearTimeout(this.searchFlagTimer); clearTimeout(this.searchFlagTimer);
let that = this; let that = this;
that.page = 1; that.page = 1;
......
...@@ -255,7 +255,6 @@ export const getGoodsExportUrl = (params) => { ...@@ -255,7 +255,6 @@ export const getGoodsExportUrl = (params) => {
}; };
export const getOrdersExportUrl = (params) => { export const getOrdersExportUrl = (params) => {
debugger
return fetch({ return fetch({
headers, headers,
url: getBaseUrl('/store/orders/admin/export'), url: getBaseUrl('/store/orders/admin/export'),
...@@ -265,6 +264,45 @@ export const getOrdersExportUrl = (params) => { ...@@ -265,6 +264,45 @@ export const getOrdersExportUrl = (params) => {
}) })
}; };
export const uploadExpress = (params) => {
return fetch({
headers,
url: getBaseUrl(`/store/batch/upload/express`),
method: 'POST',
data: params,
description: '批量更新物流操作',
})
};
export const uploadRefund = (params) => {
return fetch({
headers,
url: getBaseUrl(`/store/batch/upload/refund`),
method: 'POST',
data: params,
description: '批量取消退款操作',
})
};
export const getUploadExpressProgress = (id) => {
return fetch({
headers,
url: getBaseUrl(`store/batch/upload/progress/express/${id}`),
method: 'GET',
description: '查询批量更新物流处理进度,id为批次id',
})
};
export const getUploadRefundProgress = (id) => {
return fetch({
headers,
url: getBaseUrl(`store/batch/upload/progress/refund/${id}`),
method: 'GET',
description: '查询批量取消退款处理进度,id为批次id',
})
};
export const getExamAwardList = (params) => { export const getExamAwardList = (params) => {
return fetch({ return fetch({
...@@ -347,3 +385,7 @@ export const delActivity = (params) => { ...@@ -347,3 +385,7 @@ export const delActivity = (params) => {
description: '活动列表', description: '活动列表',
}) })
}; };
...@@ -107,23 +107,8 @@ ...@@ -107,23 +107,8 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- <el-col :span="6">-->
<!-- <el-form-item label="订单类型">-->
<!-- <el-select-->
<!-- v-model="searchForm.saleType"-->
<!-- placeholder="请选择订单类型"-->
<!-- size="small"-->
<!-- clearable>-->
<!-- <el-option-->
<!-- v-for="item in saleTypeList"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- ></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="6" style="text-align: right"> <el-col :span="6" style="text-align: right">
<div class="button-container">
<el-button type="primary" size="small" @click="searchList" <el-button type="primary" size="small" @click="searchList"
>查询</el-button >查询</el-button
> >
...@@ -137,6 +122,21 @@ ...@@ -137,6 +122,21 @@
<el-button type="primary" size="small" @click="exportOrder" <el-button type="primary" size="small" @click="exportOrder"
>导出订单</el-button >导出订单</el-button
> >
</div>
<div class="button-container">
<el-button
type="primary"
size="small"
@click="ShowExportDialog(1)"
>导入物流单号</el-button
>
<el-button
type="primary"
size="small"
@click="ShowExportDialog(2)"
>批量取消订单</el-button
>
</div>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
...@@ -258,6 +258,15 @@ ...@@ -258,6 +258,15 @@
</p> </p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column
prop="fanxxxx"
label="返现"
min-width="100"
align="center"
>
</el-table-column>
<el-table-column <el-table-column
prop="saleTypeStr" prop="saleTypeStr"
label="销售方式" label="销售方式"
...@@ -347,7 +356,11 @@ ...@@ -347,7 +356,11 @@
>查看详情</el-button >查看详情</el-button
> >
<el-button <el-button
v-if="(scope.row.storeType == 1 || scope.row.storeType == 2) &&scope.row.showStatus == 3 &&scope.row.refundStatus == 0" v-if="
(scope.row.storeType == 1 || scope.row.storeType == 2) &&
scope.row.showStatus == 3 &&
scope.row.refundStatus == 0
"
@click="openTuiDialog(scope.row)" @click="openTuiDialog(scope.row)"
type="text" type="text"
size="small" size="small"
...@@ -473,8 +486,7 @@ ...@@ -473,8 +486,7 @@
</div> </div>
<div> <div>
<el-button type="text" @click="copyTxt">复制单号</el-button> <el-button type="text" @click="copyTxt">复制单号</el-button>
<el-button type="text" @click="updateOrderNo" <el-button type="text" @click="updateOrderNo" v-if="showStatus == 2"
v-if="showStatus == 2"
>修改物流单号</el-button >修改物流单号</el-button
> >
</div> </div>
...@@ -482,7 +494,7 @@ ...@@ -482,7 +494,7 @@
<div class="steps-logistics"> <div class="steps-logistics">
<el-steps direction="vertical" :active="0"> <el-steps direction="vertical" :active="0">
<el-step <el-step
v-for="(item,index) in expressData" v-for="(item, index) in expressData"
:title="item.time" :title="item.time"
:description="item.context" :description="item.context"
:key="index" :key="index"
...@@ -580,7 +592,6 @@ ...@@ -580,7 +592,6 @@
> >
</span> </span>
</el-dialog> </el-dialog>
<el-dialog <el-dialog
class="tui-dialog" class="tui-dialog"
title="修改物流单号" title="修改物流单号"
...@@ -610,13 +621,178 @@ ...@@ -610,13 +621,178 @@
> >
</span> </span>
</el-dialog> </el-dialog>
<!-- 导入物流单号 dialog-->
<el-dialog
class="exportlogistics-dialog"
:title="ExportType == 1 ? '导入物流单号' : '批量取消订单'"
:visible="exportDialog"
@close="exportDialog = false"
width="600px"
>
<el-form label-width="120px">
<el-form-item label="导入文档:">
<el-upload
class="upload-excel"
action="#"
accept=".xlsx"
multiple
:limit="1"
:show-file-list="false"
:before-upload="uploadfile"
>
<div class="upload-container">
<el-input
class="file-name"
v-model="fileData.fileName"
size="mini"
readonly
></el-input
><el-button type="primary" size="mini">选择文件</el-button>
</div>
</el-upload>
</el-form-item>
<el-form-item label="模板:">
<a v-if="ExportType == 1" class="importUrl" :href="LogisticsUrl">
物流单号修改模板.xlxs</a
>
<a v-else class="importUrl" :href="CancelOrderUrl">
批量取消模板.xlxs</a
>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="cancelExport">取消</el-button>
<el-button size="small" type="primary" @click="confirmExport"
>确认</el-button
>
</div>
</el-dialog>
<!-- 导出进度loading -->
<el-dialog
class="exportlogistics-dialog"
:visible="progressFlag"
width="600px"
:close-on-click-modal="false"
:show-close="false"
>
<div>
<div class="progress-container">
<div class="progress-tag">
{{ ProgressData.doneNum }}/{{ ProgressData.totalNum }}
<div class="popper__arrow"></div>
</div>
<div class="progress-content">正在导入...</div>
</div>
</div>
</el-dialog>
<!-- 结果统计 -->
<el-dialog
class="exportlogistics-dialog"
title="导入完成"
:visible="statFlg"
@close="statFlg = false"
width="600px"
>
<div class="stat-container">
<div class="stat-title">模板数据共{{ ProgressData.totalNum }}条</div>
<div class="stat-result">
<div class="success">成功:{{ ProgressData.successNum }}条</div>
<div class="repetition">重复:{{ ProgressData.repeatNum }}条</div>
<div class="failure">失败:{{ ProgressData.failNum }}条</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="statFlg = false">取消</el-button>
<el-button size="small" type="primary" @click="showReasondialog"
>查看失败原因</el-button
>
</div>
</el-dialog>
<!-- 失败原因 -->
<el-dialog
class="exportlogistics-dialog"
title="失败记录"
:visible="FailureReasonFlag"
@close="FailureReasonFlag = false"
width="1000px"
>
<div class="FailureReasonFlag-container" v-if="ExportType == 1">
<el-table
:data="ProgressData.errorList"
border
height="300"
style="width: 100%"
>
<el-table-column
prop="subOrderId"
label="订单号"
align="center"
></el-table-column>
<el-table-column
prop="expressName"
label="快递公司"
align="center"
></el-table-column>
<el-table-column prop="expressNo" label="快递单号" align="center">
</el-table-column>
<el-table-column prop="remark" label="备注" align="center">
</el-table-column>
<el-table-column prop="failInfo" label="失败原因" align="center">
</el-table-column>
<el-table-column prop="operationGuide" label="操作指引" align="center">
</el-table-column>
</el-table>
</div>
<div class="FailureReasonFlag-container" v-else>
<el-table
:data="ProgressData.errorList"
border
height="300"
style="width: 100%"
>
<el-table-column
prop="subOrderId"
label="订单号"
align="center"
></el-table-column>
<el-table-column
prop="refundReason"
label="取消原因"
align="center"
></el-table-column>
<el-table-column prop="failInfo" label="失败原因" align="center">
</el-table-column>
<el-table-column prop="operationGuide" label="操作指引" align="center">
</el-table-column>
</el-table>
</div>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="FailureReasonFlag = false"
>取消</el-button
>
<a :href="ProgressData.errorFileUrl">
<el-button size="small" type="primary">导出失败记录</el-button>
</a>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { openLoading, closeLoading } from "../../utils/utils"; import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "@/components/breadcrumb.vue"; import BreadCrumb from "@/components/breadcrumb.vue";
import SendSetDialog from "@/components/shop/send-set-dialog"; import SendSetDialog from "@/components/shop/send-set-dialog";
import { getOrdersExportUrl } from "@/utils/yqrange/yqrangeApi"; import {
getOrdersExportUrl,
uploadExpress,
uploadRefund,
getUploadExpressProgress,
getUploadRefundProgress,
} from "@/utils/yqrange/yqrangeApi";
import { import {
queryOrderList, queryOrderList,
updateExpress, updateExpress,
...@@ -624,7 +800,7 @@ import { ...@@ -624,7 +800,7 @@ import {
brokerListAll, brokerListAll,
brokerOwnerListAll, brokerOwnerListAll,
updateExpressNo, updateExpressNo,
expressInfo expressInfo,
} from "@/utils/shop"; } from "@/utils/shop";
import { toDecimal2 } from "@/utils"; import { toDecimal2 } from "@/utils";
...@@ -639,7 +815,7 @@ export default { ...@@ -639,7 +815,7 @@ export default {
curmbFirst: "云鹊店铺", curmbFirst: "云鹊店铺",
curmbSecond: "订单管理", curmbSecond: "订单管理",
activeName: "all", activeName: "all",
showStatus:-1, showStatus: -1,
searchForm: { searchForm: {
showStatus: -1, showStatus: -1,
storeId: 0, storeId: 0,
...@@ -656,8 +832,15 @@ export default { ...@@ -656,8 +832,15 @@ export default {
pageSize: 10, pageSize: 10,
saleType: 0, saleType: 0,
}, },
// 确认物流
statFlg: false,
exportDialog: false,
ExportType: 1, // 1导入物流信息 2、批量取消订单
FailureReasonFlag: false,
progressFlag: false,
totalRows: 0, totalRows: 0,
tableData: [], tableData: [],
FailureTable: [],
closeTradeDialog: false, closeTradeDialog: false,
reasonTxt: "", reasonTxt: "",
changePriceDialog: false, changePriceDialog: false,
...@@ -681,10 +864,12 @@ export default { ...@@ -681,10 +864,12 @@ export default {
{ required: true, message: "请选择退款对象", trigger: "blur" }, { required: true, message: "请选择退款对象", trigger: "blur" },
], ],
}, },
expressData:[{ expressData: [
time:"2021-06-23 12:21:21", {
context:"待揽收" time: "2021-06-23 12:21:21",
}], context: "待揽收",
},
],
showTuiDialog: false, showTuiDialog: false,
tuiForm: { tuiForm: {
order: null, order: null,
...@@ -746,15 +931,36 @@ export default { ...@@ -746,15 +931,36 @@ export default {
label: "批发", label: "批发",
}, },
], ],
fileData: {
fileBaseStr: "",
fileName: "",
},
ownerId: "", ownerId: "",
brokerList: [], brokerList: [],
brokerOwnerList: [], brokerOwnerList: [],
showOrderNoFlag: false, showOrderNoFlag: false,
LogisticsUrl:
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet/2021/08/11/20210811143152984-191c5df6.xlsx",
CancelOrderUrl:
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet/2021/08/11/20210811143101795-d6363772.xlsx",
timer: null,
pickerOptions1: { pickerOptions1: {
disabledDate: (time) => { disabledDate: (time) => {
return time.getTime() > new Date().getTime(); //减去一天的时间代表可以选择同一天; return time.getTime() > new Date().getTime(); //减去一天的时间代表可以选择同一天;
}, },
}, },
ProgressData: {
totalNum: "", //总数
status: "", // 1完成 0进行中
doneNum: "", // doneNum 完成数量
successNum: "", // 成功数量
failNum: "", //失败数量
repeatNum: "",
errorFileUrl: "", // 失败 原因文件
errorList: [], // 失败列表
},
// errorFileUrl:"",
}; };
}, },
created() { created() {
...@@ -765,6 +971,130 @@ export default { ...@@ -765,6 +971,130 @@ export default {
this.brokerOwnerListAll(); this.brokerOwnerListAll();
}, },
methods: { methods: {
// 确认导入
confirmExport() {
if (this.ExportType == 1) {
this.uploadExpress();
} else {
this.uploadRefund();
}
},
//
ShowExportDialog(type) {
this.ExportType = type;
this.exportDialog = true;
this.fileData={
fileBaseStr: "",
fileName: "",
}
},
// 批量更新物流操作
uploadExpress() {
openLoading(this);
uploadExpress(this.fileData)
.then((res) => {
if (res && res.code == "000000") {
closeLoading(this);
this.getUploadExpressProgress(res.data.tradeBatchUploadLogId);
} else {
this.$message.error(res.message);
}
})
.catch((err) => {
closeLoading(this);
});
},
// 批量取消退款操作
uploadRefund() {
openLoading(this);
uploadRefund(this.fileData).then((res) => {
console.log(res);
if (res && res.code == "000000") {
closeLoading(this);
this.getUploadRefundProgress(res.data.tradeBatchUploadLogId);
}
});
},
// 获取物流上传进度
getUploadExpressProgress(id) {
clearInterval(this.timer);
this.timer = setInterval(() => {
getUploadExpressProgress(id).then((res) => {
if (res && res.code == "000000") {
this.exportDialog = false;
this.progressFlag = true;
this.ProgressData = res.data;
if (res.data.status == 1) {
clearInterval(this.timer);
setTimeout(() => {
this.progressFlag = false;
this.statFlg = true;
}, 2000);
}
} else {
this.$message.error(res.message);
}
});
}, 2000);
},
// 获取批量取消进度
getUploadRefundProgress(id) {
clearInterval(this.timer);
this.timer = setInterval(() => {
getUploadRefundProgress(id).then((res) => {
if (res && res.code == "000000") {
this.exportDialog = false;
this.progressFlag = true;
this.ProgressData = res.data;
if (res.data.status == 1) {
clearInterval(this.timer);
setTimeout(() => {
this.progressFlag = false;
this.statFlg = true;
}, 2000);
}
} else {
this.$message.error(res.message);
}
});
}, 2000);
},
// 取消导入物流信息
cancelExport() {
(this.fileData = {
fileBaseStr: "",
fileName: "",
}),
(this.exportDialog = false);
},
// 导入物流单号
uploadfile(file) {
let _this = this;
let arr = file.type.split("/");
let ext = "." + arr[1];
let name = file.name;
let reader = new FileReader();
reader.onload = function (e) {
_this.fileData.fileName = name;
_this.fileData.fileBaseStr = e.target.result.substr(
e.target.result.indexOf("base64,") + 7
);
console.log("fileJson", _this.fileData);
};
reader.readAsDataURL(file);
},
// 确认取消订单
showReasondialog() {
this.statFlg=false;
this.FailureReasonFlag = true;
},
searchList() { searchList() {
this.searchForm.orderBeginTime = this.createRangeTime[0]; this.searchForm.orderBeginTime = this.createRangeTime[0];
this.searchForm.orderEndTime = this.createRangeTime[1]; this.searchForm.orderEndTime = this.createRangeTime[1];
...@@ -880,16 +1210,16 @@ export default { ...@@ -880,16 +1210,16 @@ export default {
}, },
//查看物流 //查看物流
viewLogistics(row) { viewLogistics(row) {
console.log("row-----",row) console.log("row-----", row);
expressInfo({ expressNo: row.expressNo }).then((res) => { expressInfo({ expressNo: row.expressNo }).then((res) => {
if (res.code == "000000") { if (res.code == "000000") {
this.expressData=[...res.data.data,...this.expressData] this.expressData = [...res.data.data, ...this.expressData];
this.logisticeInfo = `${row.expressName} ${row.expressNo}`; this.logisticeInfo = `${row.expressName} ${row.expressNo}`;
this.expressForm.order = row; this.expressForm.order = row;
this.expressForm.company = `${row.expressName}`; this.expressForm.company = `${row.expressName}`;
this.expressForm.no = `${row.expressNo}`; this.expressForm.no = `${row.expressNo}`;
this.expressForm.extendMessage = `${row.remark}`; this.expressForm.extendMessage = `${row.remark}`;
this.showStatus=row.showStatus; this.showStatus = row.showStatus;
this.viewLogisticsDialog = true; this.viewLogisticsDialog = true;
} }
}); });
...@@ -1092,11 +1422,11 @@ export default { ...@@ -1092,11 +1422,11 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
.order-manage-wrapper { .order-manage-wrapper {
.el-step__icon{ .el-step__icon {
border: none; border: none;
background: transparent; background: transparent;
} }
.el-step__title{ .el-step__title {
font-size: 14px; font-size: 14px;
} }
...@@ -1104,7 +1434,7 @@ export default { ...@@ -1104,7 +1434,7 @@ export default {
display: block !important; display: block !important;
height: 30%; height: 30%;
} }
.dot{ .dot {
border-radius: 50%; border-radius: 50%;
height: 8px; height: 8px;
width: 8px; width: 8px;
...@@ -1114,6 +1444,9 @@ export default { ...@@ -1114,6 +1444,9 @@ export default {
.order-manage-content { .order-manage-content {
background: #fff; background: #fff;
padding: 10px; padding: 10px;
.button-container {
margin-bottom: 10px;
}
.header-title { .header-title {
padding: 10px 12px; padding: 10px 12px;
font-size: 13px; font-size: 13px;
...@@ -1205,4 +1538,90 @@ export default { ...@@ -1205,4 +1538,90 @@ export default {
width: 193px; width: 193px;
} }
} }
.exportlogistics-dialog {
}
.upload-container {
display: flex;
justify-content: flex-start;
align-items: center;
.file-name {
margin-right: 5px;
}
}
.progress-container {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.progress-content {
width: 150px;
height: 40px;
background: #449284;
border-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
}
.progress-tag {
width: 150px;
height: 40px;
border: 1px solid #ebeef5;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
margin-bottom: 10px;
position: relative;
.popper__arrow {
position: absolute;
bottom: 0px;
left: 50%;
margin-right: 3px;
transform: translateX(-3px);
border-bottom-width: 0;
&::after {
position: absolute;
display: block;
width: 0;
height: 0;
border-top-color: #fff;
border-left-color: transparent;
border-bottom-color: transparent;
border-right-color: transparent;
border-style: solid;
content: " ";
border-width: 6px;
}
}
}
.stat-container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.stat-title {
color: #333;
font-size: 16px;
font-weight: bold;
margin-bottom: 10px;
}
.stat-result {
display: flex;
justify-content: space-between;
width: 300px;
.failure {
color: #e63c3c;
}
}
}
.importUrl {
color: #449284;
}
</style> </style>
...@@ -511,7 +511,6 @@ ...@@ -511,7 +511,6 @@
this.updatedTree = true; this.updatedTree = true;
}, },
getTreeCheck() { getTreeCheck() {
debugger
//重构归并树 //重构归并树
let checkedTree = operationData.getSimpleCheckedNodes( let checkedTree = operationData.getSimpleCheckedNodes(
this.$refs.tree.store this.$refs.tree.store
...@@ -1338,4 +1337,3 @@ ...@@ -1338,4 +1337,3 @@
left: 0; left: 0;
} }
</style> </style>
\ No newline at end of file
...@@ -4414,12 +4414,12 @@ vjs.SeekBar.prototype.onMouseMove = function(event){ ...@@ -4414,12 +4414,12 @@ vjs.SeekBar.prototype.onMouseMove = function(event){
}; };
vjs.SeekBar.prototype.onMouseUp = function(event){ vjs.SeekBar.prototype.onMouseUp = function(event){
debugger
vjs.Slider.prototype.onMouseUp.call(this, event); vjs.Slider.prototype.onMouseUp.call(this, event);
this.player_.scrubbing = false; this.player_.scrubbing = false;
if (this.videoWasPlaying) { if (this.videoWasPlaying) {
debugger
this.player_.play(); this.player_.play();
} }
}; };
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册