提交 54644d78 编写于 作者: changdi.hao's avatar changdi.hao

Merge branch 'release' into 'master'

Release

See merge request com.pica.cloud.education.frontend/pica.cloud.web-education-admin!295
......@@ -2803,10 +2803,6 @@
"loader-utils": "~0.2.5"
}
},
"file-saver": {
"version": "github:eligrey/FileSaver.js#e865e37af9f9947ddcced76b549e27dc45c1cb2e",
"from": "github:eligrey/FileSaver.js#1.3.8"
},
"filename-regex": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
......@@ -2961,7 +2957,8 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"aproba": {
"version": "1.2.0",
......@@ -2982,12 +2979,14 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
......@@ -3002,17 +3001,20 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
......@@ -3129,7 +3131,8 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"ini": {
"version": "1.3.5",
......@@ -3141,6 +3144,7 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
......@@ -3155,6 +3159,7 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
......@@ -3162,12 +3167,14 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"minipass": {
"version": "2.2.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
......@@ -3186,6 +3193,7 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
......@@ -3266,7 +3274,8 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
......@@ -3278,6 +3287,7 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
......@@ -3363,7 +3373,8 @@
"safe-buffer": {
"version": "5.1.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"safer-buffer": {
"version": "2.1.2",
......@@ -3399,6 +3410,7 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
......@@ -3418,6 +3430,7 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
......@@ -3461,12 +3474,14 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"yallist": {
"version": "3.0.2",
"bundled": true,
"dev": true
"dev": true,
"optional": true
}
}
},
......@@ -4448,7 +4463,6 @@
"integrity": "sha512-J9X76xnncMw+wIqb15HeWfPMqPwYxSpPY8yWPJ7rAZN/ZDzFkjCSZObryCyUe8zbrVRNiuCnIeQteCzMn7GnWw==",
"requires": {
"canvg": "1.5.3",
"file-saver": "github:eligrey/FileSaver.js#e865e37af9f9947ddcced76b549e27dc45c1cb2e",
"html2canvas": "1.0.0-alpha.12",
"omggif": "1.0.7",
"promise-polyfill": "8.1.0",
......@@ -4468,6 +4482,10 @@
"base64-arraybuffer": "^0.1.5"
}
},
"file-saver": {
"version": "github:eligrey/FileSaver.js#e865e37af9f9947ddcced76b549e27dc45c1cb2e",
"from": "github:eligrey/FileSaver.js#e865e37af9f9947ddcced76b549e27dc45c1cb2e"
},
"html2canvas": {
"version": "1.0.0-alpha.12",
"resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz",
......
//
//
<template>
<div class="select-people">
<el-tab-pane label="设定人员" name="fourth">
......
<template>
<div class="add-diagnose-wrap">
<div class="fixed-wrap" v-show="showDiagnoseModal">
<div class="fullscreen-bg"></div>
<div class="add-diagnose-modal" >
......@@ -12,11 +12,11 @@
<div class="main-content">
<div class="left-box left">
<!-- 搜索列表 有搜索结果时-->
<div
v-if="searchList && searchList.length > 0"
<div
v-if="searchList && searchList.length > 0"
class="search-list-wrap"
v-infinite-scroll="loadMore"
:infinite-scroll-disabled="busy"
v-infinite-scroll="loadMore"
:infinite-scroll-disabled="busy"
infinite-scroll-distance="5"
infinite-scroll-immediate-check="false"
>
......@@ -36,13 +36,13 @@
<p v-if="noMore" class="loading">没有更多了...</p>
</ul>
</div>
<!-- 常用诊断 -->
<div v-if="!(searchList && searchList.length > 0)" class="common-diagnose">
<p class="title">常用诊断<span class='no-result' v-if="hasNoResult">没有找到相关搜索结果</span></p>
<ul class="list">
<li
v-for="item in commonList"
<li
v-for="item in commonList"
:class="returnEachCommonLiClass(item)"
@click="handleEachCommonLiClick(item)"
>
......@@ -88,14 +88,14 @@
</span>
</el-dialog>
</div>
</div>
</template>
<script>
import {
import {
getCommonDiagnoseList,
goToSearch,
goToSearch,
} from '@/utils/patients/patientsapi';
export default {
......@@ -138,7 +138,7 @@
},
watch: {
showDiagnoseModal(val) {
}
},
methods: {
......@@ -205,7 +205,6 @@
},
// 搜索框中输入文字 时 page=1 pageSize=30
handleInputSearch() {
// debugger;
clearTimeout(this.searchFlagTimer);
let that = this;
that.page = 1;
......@@ -262,7 +261,7 @@
}
that.busy = true;
that.page += 1;
// console.log('请求第几页数据: ', that.page)
if(that.page > that.totalPageNum){
// console.log('没有更多了。。。。。');
......@@ -296,7 +295,7 @@
})
}, 500)
},
handleInputSearchBlur(){
this.searchList = [];
},
......@@ -340,8 +339,8 @@
}
return -1;
},
},
},
}
</script>
......@@ -416,7 +415,7 @@
.common-diagnose{
width: 100%; height: 300px;
.title{
color: #303133;
color: #303133;
font-size: 16px;
line-height: 40px;
margin-top: 10px;
......@@ -432,7 +431,7 @@
overflow-y: scroll;
.scroll-bar;
padding: 10px;
border: 1px solid #DCDFE6;
border: 1px solid #DCDFE6;
li{
height: 35px; line-height: 35px; padding: 0 15px;
background: #fff;
......@@ -461,7 +460,7 @@
.scroll-bar;
.search-list{
border-radius: 4px;
width: 100%;
width: 100%;
padding: 10px;
li{
position: relative;
......@@ -494,7 +493,7 @@
.code{
float: left;
}
}
}
.right{
......@@ -502,7 +501,7 @@
right: 0;
top: 50%;
margin-top: -13px;
// width: 0px;
// width: 0px;
// float: left;
display: inline-block;
vertical-align: middle;
......@@ -515,7 +514,7 @@
.code{
line-height: 30px;
}
}
.loading{
color: #ccc;
......@@ -532,7 +531,7 @@
height: 300px;
margin-left: 30px;
.title{
color: #303133;
color: #303133;
font-size: 16px;
line-height: 40px;
margin-top: 10px;
......@@ -543,7 +542,7 @@
width: 450px;
height: 250px;
padding: 10px;
border: 1px solid #DCDFE6;
border: 1px solid #DCDFE6;
.scroll-bar;
.el-tag {
margin: 0 10px 10px 0;;
......@@ -558,14 +557,14 @@
}
}
}
}
}
.dialog-footer{
text-align: center;
margin: 20px auto;
}
}
.tips-wrap {
.know-confirm{
......
......@@ -34,6 +34,13 @@ body, div, span, header, footer, nav, section, aside, article, ul, dl, dt, dd, l
height: 0px;
background-color: #fff;
}
.el-table ::-webkit-scrollbar{
width: 10px;
height: 10px;
background-color: rgb(184, 180, 180);
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track
......@@ -265,4 +272,4 @@ html,body{
height: 24px;
width: 106px;
}
}
\ No newline at end of file
}
......@@ -47,6 +47,17 @@ export const queryOrderList = (params) => {
})
};
export const expressInfo = (params) => {
return fetch({
headers,
url: getBaseUrl(`campaign/distribution/logistics/expressInfo`),
method: 'get',
params: params,
description: '查询订单列表',
})
};
export const updateExpress = (params) => {
return fetch({
headers,
......@@ -57,6 +68,16 @@ export const updateExpress = (params) => {
})
};
export const updateExpressNo = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/orders/admin/${params.orderId}/updateExpressNo`),
method: 'post',
data: params,
description: '更新物流单号',
})
};
export const queryShopAuth = (params) => {
return fetch({
......
......@@ -255,7 +255,6 @@ export const getGoodsExportUrl = (params) => {
};
export const getOrdersExportUrl = (params) => {
debugger
return fetch({
headers,
url: getBaseUrl('/store/orders/admin/export'),
......@@ -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) => {
return fetch({
......@@ -347,3 +385,7 @@ export const delActivity = (params) => {
description: '活动列表',
})
};
......@@ -307,6 +307,7 @@ export default {
setAddVisible: false,
storeId:'',
goodCondition:{
id:"",
goodIds:[],
conditionType:'',
number:'',
......@@ -502,6 +503,7 @@ export default {
addGoodsCondition(){
vm.remoteMethod();
vm.goodCondition = {
id:"",
goodIds:[],
conditionType:'',
number:'',
......@@ -621,13 +623,15 @@ export default {
})
},
// 本应分页加载,这个设置pageSize为最大值解决
remoteMethod(val) {
this.searchForm = {
goodsIdList:[],
goodIdStr :val,
goodsType :'',
pageNo:1,
pageSize: 10,
pageSize: 999,
storeId:this.storeId,
commissionType: 0
};
......@@ -704,6 +708,10 @@ export default {
if (!valid) return false;
// vm.goodCondition.goodIds = [];
// vm.goodCondition.goodIds = vm.setIdArray(vm.goodCondition.goodIdList);
if(vm.goodCondition.conditionType == 2 && vm.goodCondition.number >= 100000){
this.$message({ type: "warning", message: "包邮金额最大不能超过99999.99!" });
return;
}
if(vm.resultForm.goodConditionReqList.length > 0){
// this.formData.tabs[0].contents = vm.resultForm.goodConditionReqList.filter(function (item) {
......
......@@ -647,32 +647,56 @@
<div class="basic-item-icon">
<div class="part-tit">销售信息</div>
<div class="inline">
<el-form-item label="销售方式" prop="saleType">
<el-radio-group v-model="formData.saleType" size="small">
<el-radio :label="1">零售</el-radio>
<el-radio :label="2" :disabled="commissionFlag == 1">批发</el-radio>
</el-radio-group>
<!-- <el-select-->
<!-- v-model="formData.saleType"-->
<!-- placeholder="请选择销售方式"-->
<!-- size="small"-->
<!-- @change="getSaleType(formData.saleType,2)">-->
<!-- <el-option-->
<!-- v-for="item in saleTypeList"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- ></el-option>-->
<!-- </el-select>-->
</el-form-item>
</div>
<div class="inline" v-if="formData.saleType == 1">
<el-form-item label="零售价" prop="optPrice">
<el-col :span="20">
<el-input
@input="$forceUpdate();"
size="small"
v-model="formData.optPrice"
placeholder="请输入零售价"
></el-input>
<!-- <span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/60</span> -->
<!-- <el-input-->
<!-- @input="$forceUpdate();"-->
<!-- size="small"-->
<!-- v-model="formData.optPrice"-->
<!-- placeholder="请输入零售价"-->
<!-- ></el-input>-->
<el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.optPrice" size="small" :precision="2" :min="0.00" :max="99999.99"></el-input-number>
<!-- <span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/60</span> -->
</el-col>
</el-form-item>
<!-- <el-form-item label="折扣价" prop="name">
</div>
<div class="inline" v-if="formData.saleType == 2">
<el-form-item label="批发价" prop="optPrice">
<el-col :span="20">
<el-input
size="small"
v-model="formData.name"
placeholder="请输入折扣价"
></el-input>
<!-- <el-input-->
<!-- @input="$forceUpdate();"-->
<!-- size="small"-->
<!-- v-model="formData.optPrice"-->
<!-- placeholder="请输入批发价"></el-input>-->
<el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.optPrice" size="small" :precision="2" :min="0" :max="99999.99"></el-input-number>
</el-col>
</el-form-item> -->
</el-form-item>
</div>
<div class="inline">
<el-form-item label="库存" prop="name" class="required-label">
<el-form-item label="库存" prop="stock" class="required-label">
<el-col :span="20">
<div class="stock-com">
<span class="sp sp-l" @click="changeStock(1)" :class="{'opac':formData.stock == 0}"><i class="el-icon-minus"></i></span>
......@@ -692,21 +716,23 @@
</el-form-item>
</div>
<div class="inline">
<el-form-item label="最小起购件数" prop="name" class="required-label">
<div class="inline" v-if="formData.saleType == 1">
<el-form-item label="最小起购件数" prop="leastCount" class="required-label">
<el-col :span="20">
<div class="stock-com">
<span class="sp sp-l" @click="minusCount(1)"><i class="el-icon-minus"></i></span>
<div class="stock-com" style="width: 500px;display:flex">
<el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.leastCount" size="small" :precision="0" :min="0" :max="9999"></el-input-number>
<!-- <span class="sp sp-l" @click="minusCount(1)"><i class="el-icon-minus"></i></span>
<span class="sp sp-c">{{formData.leastCount}}</span>
<span class="sp sp-r" @click="plusCount(1)"><i class="el-icon-plus"></i></span>
<span class="sp sp-r" @click="plusCount(1)"><i class="el-icon-plus"></i></span> -->
<span class="word-num" style="margin-left: 10px;">最高9999件哦</span>
</div>
<p class="error-message" v-if="formData.leastCount <= 0">最小起购件数不能为0</p>
</el-col>
</el-form-item>
</div>
<div class="inline" v-if="formData.leastCount > 1">
<el-form-item label="递增方式" prop="incrType">
<div class="inline" v-if="formData.saleType == 1 && formData.leastCount > 1">
<el-form-item label="递增方式">
<el-col :span="24">
<el-radio size="mini" v-model="formData.incrType" :label="2">倍数递增</el-radio>
<el-radio v-model="formData.incrType" :label="1">1件递增</el-radio>
......@@ -714,14 +740,15 @@
</el-form-item>
</div>
<div class="inline">
<el-form-item label="单次购买上限" prop="name" class="required-label">
<div class="inline" v-if="formData.saleType == 1">
<el-form-item label="单次购买上限" prop="mostCount" class="required-label">
<el-col :span="20" style="width: 300%;">
<div class="stock-com" style="width: 500px;">
<span class="sp sp-l" @click="minusCount(2)"><i class="el-icon-minus"></i></span>
<div class="stock-com" style="width: 500px;display:flex">
<el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.mostCount" size="small" :precision="0" :min="-1" :max="9999"></el-input-number>
<!-- <span class="sp sp-l" @click="minusCount(2)"><i class="el-icon-minus"></i></span>
<span class="sp sp-c">{{formData.mostCount}}</span>
<span class="sp sp-r" @click="plusCount(2)"><i class="el-icon-plus"></i></span>
<span class="word-num" style="margin-left: 10px;">数值为-1时,代表单次购买上限已无限制</span>
<span class="sp sp-r" @click="plusCount(2)"><i class="el-icon-plus"></i></span> -->
<span class="word-num" style="margin-left: 10px;">数值为-1时,代表单次购买上限已无限制(最高9999件哦)</span>
</div>
<p class="error-message" v-if="formData.mostCount === 0">单次购买上限不能为0</p>
<!-- <p class="error-message" v-if="formData.mostCount <= -1">单次购买上限已无限制</p>-->
......@@ -730,8 +757,8 @@
</div>
<div class="inline">
<el-form-item label="第三方商品编码" prop="externalGoodsCode">
<div class="inline" v-if="formData.saleType == 1">
<el-form-item label="第三方商品编码">
<el-col :span="20">
<el-input
size="small"
......@@ -741,18 +768,31 @@
</el-col>
</el-form-item>
</div>
</div>
</el-form>
<div class="inline" v-if="formData.saleType == 2">
<el-form-item label="最小起批" prop="minWhole" class="required-label">
<el-col :span="20">
<div class="stock-com">
<span class="sp sp-l" @click="minusCount(3)"><i class="el-icon-minus"></i></span>
<span class="sp sp-c">{{formData.minWhole}}</span>
<span class="sp sp-r" @click="plusCount(3)"><i class="el-icon-plus"></i></span>
</div>
<p class="error-message" v-if="formData.minWhole <= 0">最小起批不能为0</p>
</el-col>
</el-form-item>
</div>
<el-form
ref="formData"
:model="formData"
:rules="rules"
label-width="150px"
label-suffix=":"
class="basic-form"
>
<div class="basic-item-icon">
</div>
<!-- </el-form>-->
<!-- <el-form-->
<!-- ref="formData"-->
<!-- :model="formData"-->
<!-- :rules="rules"-->
<!-- label-width="150px"-->
<!-- label-suffix=":"-->
<!-- class="basic-form"-->
<!-- >-->
<div class="basic-item-icon" v-if="formData.saleType == 1">
<div class="part-tit">限购条件</div>
<div v-for="(item, index) in buyLimitDtoList" :key="index" >
<el-form-item label="限制条件">
......@@ -895,10 +935,19 @@
label: '年',
value: 365,
}],
saleTypeList: [
{
value: 1,
label: "零售"
},
{
value: 2,
label: "批发"
}],
checkPackageIdList: [{name:'其他',content:0}],
hospitalTypeList: [{label:'村卫生室',value:1},{label:'乡镇卫生院/中心',value:2}], // 医疗机构类型
checkTypeList: [{label:'常规检测',value:1}], // 检测类型
suitableList: [{label:'儿童',value:'1'},{label:'青年',value:'2'},{label:'中年',value:'4'},{label:'老年',value:'8'}], // 适用人群
suitableList: [{label:'儿童',value:'1'},{label:'青年',value:'2'},{label:'中年',value:'4'},{label:'老年',value:'8'},{label:'40-74岁的结直肠癌高风险人群',value:'10'}], // 适用人群
// 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段
......@@ -985,7 +1034,7 @@
this.checkPackageIdList = res.data;
})
}
debugger;
// debugger;
// 判空
if (this.formData.leastCount == null || this.formData.leastCount === '') {
this.formData.leastCount = 1;
......@@ -1186,6 +1235,10 @@
this.fileIntrList = this.getImges(imageList,2)
});
},
// 销售方式
getSaleType(saleType, type){
},
getGoodsTypes(goodsType,type){
this.goodsType = goodsType;
......@@ -1329,7 +1382,10 @@
},
complete() {
this.formData1.leastCount = this.formData.leastCount;
this.formData1.mostCount = this.formData.mostCount;
let formNameList = ['formData', 'formData1', 'formData2'];
// let formName = "formData";
if(this.goodsType == 337 ){
formNameList = ['formData', 'formData2'];
......@@ -1378,12 +1434,23 @@
}
let isTrue = false;
formNameList.map(item=>{
this.$refs[item].validate((valid) => {
// formNameList.map(item=>{
// this.$refs[item].validate((valid,object) => {
// isTrue = valid;
// if (!valid) return false;
// });
// });
let item = "";
for(let i = 0; i < formNameList.length; i++){
item = formNameList[i];
this.$refs[item].validate((valid,object) => {
isTrue = valid;
if (!valid) return false;
});
});
if(!isTrue){
return;
}
}
if(!isTrue){
return false;
......@@ -1592,6 +1659,11 @@
this.formData1.mostCount = this.formData.mostCount;
}
}
else if(type === 3){
if (this.formData.minWhole >= 2) {
this.formData.minWhole -= 1;
}
}
// if (this.formData.mostCount < this.formData.leastCount) {
// this.formData.mostCount = this.formData.leastCount;
// }
......@@ -1604,6 +1676,9 @@
this.formData.mostCount += 1;
this.formData1.mostCount = this.formData.mostCount;
}
else if(type === 3){
this.formData.minWhole += 1;
}
// if (this.formData.mostCount < this.formData.leastCount) {
// this.formData.mostCount = this.formData.leastCount;
// }
......@@ -1675,7 +1750,7 @@
checkCount(){
let flag = true;
if(this.formData.mostCount == 0){
if(this.formData.saleType == 1 && this.formData.mostCount == 0){
flag = false;
this.$message({
message: '单次购买上限不能为0',
......@@ -1684,7 +1759,7 @@
return flag;
}
if(this.formData.mostCount != -1 && this.formData.mostCount < this.formData.leastCount){
if(this.formData.saleType == 1 && this.formData.mostCount != -1 && this.formData.mostCount < this.formData.leastCount){
flag = false;
this.$message({
message: '单次购买上限不能小于最小起购件数',
......@@ -1784,7 +1859,7 @@
.word-num {
font-size: 12px;
color: #999;
padding-top: 5px;
// padding-top: 5px;
}
.line {
......@@ -1901,4 +1976,28 @@
margin-right: 15px;
position: relative;
}
//.el-input-number__increase {
// right: 1px;
// border-radius: 0 4px 4px 0;
// border-left: 1px solid #449284;
//}
.el-input-number__decrease, .el-input-number__increase {
position: absolute;
z-index: 1;
top: 1px;
width: 40px;
height: auto;
text-align: center;
background: #449284;
color: #606266;
cursor: pointer;
font-size: 13px;
}
.el-icon-plus {
color:#ffffff;
}
.el-icon-minus {
color:#ffffff;
}
</style>
......@@ -63,7 +63,9 @@ const form = {
externalGoodsCode: '',
leastCount:1,
mostCount: -1,
incrType:1
incrType:1,
saleType:1,
minWhole:0
};
......
......@@ -65,6 +65,22 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="销售方式" v-if="commissionFlag == 2">
<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-button type="primary" size="small" @click="searchList">查询</el-button>
<el-button type="default" size="small" @click="resetForm" style="margin-left:0;">重置</el-button>
......@@ -138,9 +154,10 @@
<span v-if="scope.row.proxyCommissionType == 2">{{scope.row.proxyCommissionPrice | priceNum}}</span>
</template>
</el-table-column>
<el-table-column prop="saleTypeStr" label="销售方式" width="170" align="center">
</el-table-column>
<el-table-column prop="saleTime" label="发布时间" width="170" align="center">
</el-table-column>
<el-table-column label="操作" width="200" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.commissionFlag == 2">
......@@ -377,6 +394,7 @@
pageSize: 10,
storeId:0,
commissionType: 0,
saleType:0,
proxyCommissionType:0
},
innerVisible:false,
......@@ -405,6 +423,19 @@
value: 2,
label: "固定分佣"
}],
saleTypeList: [
{
value: 0,
label: "全部"
},
{
value: 1,
label: "零售"
},
{
value: 2,
label: "批发"
}],
typeList: [],
//uploadUrl:getBaseUrl('store/goods/import'),
postData:{},
......@@ -769,6 +800,7 @@
this.searchForm.goodsName = ''
this.searchForm.goodsType = ''
this.searchForm.commissionType = 0;
this.searchForm.saleType = 0;
this.searchForm.pageNo = 1
this.searchForm.pageSize = 10
......@@ -785,9 +817,9 @@
this.getLists();
},
exportOpt() {
const { goodsIdList, goodsType, goodsName, storeId } = this.searchForm;
const { goodsIdList, goodsType, goodsName, storeId, saleType } = this.searchForm;
getGoodsExportUrl({ goodsIdList, goodsType, goodsName, storeId }).then(res => {
getGoodsExportUrl({ goodsIdList, goodsType, goodsName, storeId, saleType }).then(res => {
if (res.code != '000000') {
this.$message({ message: res.message, type: 'error' });
return;
......
......@@ -8,7 +8,7 @@
<div class="trade-status" v-if="showStatus == 2"><img src="../../assets/image/order/order_status2.png"/>已发货</div>
<div class="trade-status" v-if="showStatus == 3"><img src="../../assets/image/order/order_status3.png"/>待发货</div>
<div class="trade-status" v-if="showStatus == 4"><img src="../../assets/image/order/order_status4.png"/>等待买家付款</div>
<div class="trade-status" v-if="showStatus == 5"><img src="../../assets/image/order/order_status5.png"/>交易关闭</div>
<div class="trade-status" v-if="showStatus == 5"><img src="../../assets/image/order/order_status5.png"/>退款/关闭</div>
<div class="trade-info">
<el-card class="left-card">
<div slot="header" class="clearfix">
......@@ -29,6 +29,9 @@
<div v-if="storeType == 1">
<p>物流公司:{{orderDetailData.expressName}}</p>
<p>快递单号:{{orderDetailData.expressNo}}</p>
<el-button type="text" @click="copyTxt">复制</el-button>
<el-button type="text" @click="updateOrderNo">修改物流单号</el-button>
<input type="text" id="copyInput" class="hidden-input" />
</div>
<div v-if="storeType == 2">
<p>配送员姓名:{{orderDetailData.sender}}</p>
......@@ -67,6 +70,9 @@
<p v-if="showStatus == 1 || showStatus == 2 || showStatus == 3">支付时间:{{orderDetailData.paymentTime}}</p>
<p v-if="showStatus == 1 || showStatus == 2 || showStatus == 3">&nbsp;&nbsp;&nbsp;招募人:{{orderDetailData.ownerName}}</p>
<p v-if="showStatus == 1 || showStatus == 2 || showStatus == 3">所属药代:{{orderDetailData.brokerName}}</p>
<p>下单人手机号:{{orderDetailData.prescriberMobile}}</p>
<p>订单类型:{{orderDetailData.saleTypeStr}}</p>
<p v-if="orderDetailData.refundReason">退款原因:{{orderDetailData.refundReason}}</p>
<!--<p>发货时间:{{orderDetailData.sendTime}}</p>-->
<!--<p>成交时间:{{orderDetailData.finishTime}}</p>-->
</div>
......@@ -114,12 +120,34 @@
@closeSendSet="closeSendSet">
</send-set-dialog>
</div>
<el-dialog
class="tui-dialog"
title="修改物流单号"
:visible="showOrderNoFlag"
@close="showOrderNoFlag = false"
width="600px"
>
<el-form ref="orderDetailData" :model="orderDetailData" :rules="rulesExpress" label-width="120px">
<el-form-item label="快递公司" prop="expressName">
<el-input v-model="orderDetailData.expressName"></el-input>
</el-form-item>
<el-form-item label="快递单号" prop="expressNo">
<el-input v-model="orderDetailData.expressNo"></el-input>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="orderDetailData.remark"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" type="primary" @click="confirmExpressNo">完成</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
// import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "@/components/breadcrumb.vue";
import { queryOrderDetail } from '@/utils/shop';
import { queryOrderDetail, updateExpressNo } from '@/utils/shop';
import SendSetDialog from "@/components/shop/send-set-dialog";
export default {
components: {
......@@ -155,12 +183,23 @@
payChannel: '',//支付方式
ownerName:'',// 招募人姓名
brokerName:'',//药代名称
prescriberMobile:'',//下单人手机号
// showStatus: null,//订单展示状态,1已完成,2已发货,3待发货,4待支付,5交易关闭
saleTypeStr:'',// 订单类型
},
rulesExpress: {
expressName: [
{ required: true, message: '请输入快递公司', trigger: "blur"},
],
expressNo: [
{ required: true, message: '请输入快递单号', trigger: "blur"},
]
},
tableData: [],
sendGoodsDialog: false,
dialogTitle: '',
sendSetForm: {},
showOrderNoFlag: false,
}
},
created() {
......@@ -209,6 +248,63 @@
}
})
},
// 修改物流单号
updateOrderNo(){
this.showOrderNoFlag = true;
},
confirmExpressNo() {
if (this.orderDetailData.expressName == null || this.orderDetailData.expressName == "") {
this.$message.error("请填写快递公司");
return;
}
if (this.orderDetailData.expressNo == null || this.orderDetailData.expressNo == "") {
this.$message.error("请填写快递单号");
return;
}
updateExpressNo({
orderId: this.orderId,
expressName: this.orderDetailData.expressName,
expressNo: this.orderDetailData.expressNo,
remark: this.orderDetailData.remark
}).then(res => {
if (res.code == '000000') {
this.$message.success('操作成功');
this.showOrderNoFlag = false;
this.searchList();
} else {
this.$message.success(`操作失败:${res.message},请重试`);
}
});
},
copyTxt() {
let txt = document.getElementById("copyInput");
txt.value = this.orderDetailData.expressNo;
// if (navigator.userAgent.match(/(iPhone|iPod|iPad|Mac);?/i)) {
if (navigator.userAgent.indexOf("Safari") > -1 && navigator.userAgent.indexOf("Chrome") < 1) {
var el = document.createElement('input');
el.value = txt.value;//要复制的内容
el.style.opacity = '0';
document.body.appendChild(el);
var editable = el.contentEditable;
var readOnly = el.readOnly;
el.contentEditable = true;
el.readOnly = false;
const range = document.createRange();
range.selectNodeContents(el);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
el.setSelectionRange(0, 999999);
el.contentEditable = editable;
el.readOnly = readOnly;
var ret = document.execCommand('copy');
el.blur();
} else {
txt.select(); //选择对象
document.execCommand("copy");
}
this.$message.success('复制成功');
},
},
filters: {
toFixed2: function (value) {
......
<template>
<div class="order-manage-wrapper">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb>
<bread-crumb
:curmbFirst="curmbFirst"
:curmbSecond="curmbSecond"
></bread-crumb>
<div class="order-manage-content screenSet" id="screenSet">
<div class="header-title">订单管理</div>
<el-form ref="searchForm" :model="searchForm" label-width="80px" label-suffix=":" :inline="true">
<el-form
ref="searchForm"
:model="searchForm"
label-width="80px"
label-suffix=":"
:inline="true"
>
<el-row :gutter="30" type="flex" style="margin-top: 10px">
<el-col :span="18">
<el-col :span="24">
<el-form-item label="商品名称">
<el-input v-model="searchForm.goodsName" size="small" placeholder="请输入商品名称"></el-input>
<el-input
v-model="searchForm.goodsName"
size="small"
placeholder="请输入商品名称"
></el-input>
</el-form-item>
<el-form-item label="订单号">
<el-input v-model="searchForm.orderNo" size="small" placeholder="请输入订单号"></el-input>
<el-input
v-model="searchForm.orderNo"
size="small"
placeholder="请输入订单号"
></el-input>
</el-form-item>
<el-form-item label="买家名称">
<el-input v-model="searchForm.receiver" size="small" placeholder="请输入买家名称"></el-input>
<el-input
v-model="searchForm.receiver"
size="small"
placeholder="请输入买家名称"
></el-input>
</el-form-item>
<el-form-item label="创建人">
<el-input v-model="searchForm.prescriberName" size="small" placeholder="请输入创建人名称"></el-input>
<el-input
v-model="searchForm.prescriberName"
size="small"
placeholder="请输入创建人名称"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30" type="flex" style="margin-top: 10px">
<el-col :span="18">
<el-col :span="24">
<el-form-item label="下单时间" class="t-b">
<el-date-picker
v-model="createRangeTime"
......@@ -30,8 +55,9 @@
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 90%;"
:picker-options="pickerOptions1">
style="width: 90%"
:picker-options="pickerOptions1"
>
</el-date-picker>
</el-form-item>
<el-form-item label="招募人">
......@@ -41,7 +67,6 @@
placeholder="请输入招募人"
@change="changeOwner"
clearable
style="width:110%;height: 32px;line-height: 32px;"
>
<el-option
v-for="item in brokerOwnerList"
......@@ -57,7 +82,6 @@
id="statusSelector"
placeholder="请输入药代姓名"
clearable
style="width:110%;height: 32px;line-height: 32px;"
>
<el-option
v-for="item in brokerList"
......@@ -67,11 +91,52 @@
></el-option>
</el-select>
</el-form-item>
<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-button type="primary" size="small" @click="searchList">查询</el-button>
<el-button type="default" size="small" @click="resetForm" style="margin-left:0;">重置</el-button>
<el-button type="primary" size="small" @click="exportOrder">导出订单</el-button>
<div class="button-container">
<el-button type="primary" size="small" @click="searchList"
>查询</el-button
>
<el-button
type="default"
size="small"
@click="resetForm"
style="margin-left: 0"
>重置</el-button
>
<el-button type="primary" size="small" @click="exportOrder"
>导出订单</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-row>
</el-form>
......@@ -81,95 +146,266 @@
<el-tab-pane label="等待发货" name="second"></el-tab-pane>
<el-tab-pane label="已发货" name="third"></el-tab-pane>
<el-tab-pane label="交易成功" name="fourth"></el-tab-pane>
<el-tab-pane label="关闭交易" name="five"></el-tab-pane>
<el-tab-pane label="退款/关闭" name="five"></el-tab-pane>
</el-tabs>
<el-table :data="tableData" border max-height="1000" class="item-table" style="width: 100%;margin-top: 10px;">
<el-table-column prop="id" label="订单号" min-width="100" align="center"></el-table-column>
<el-table-column prop="goodsNameList" label="商品名称" min-width="150" align="center">
<el-table
:data="tableData"
border
max-height="1000"
class="item-table"
style="width: 100%; margin-top: 10px"
>
<el-table-column
prop="id"
label="订单号"
min-width="100"
align="center"
></el-table-column>
<el-table-column
prop="goodsNameList"
label="商品名称"
min-width="150"
align="center"
>
<template slot-scope="scope">
<!--<span>{{ scope.row.goodsName }}</span>-->
<p v-for="(item, index) in scope.row.goodsNameList" :key="index" class="p-normal">{{item}}</p>
<!--<span>{{ scope.row.goodsName }}</span>-->
<p
v-for="(item, index) in scope.row.goodsNameList"
:key="index"
class="p-normal"
>
{{ item }}
</p>
</template>
</el-table-column>
<el-table-column prop="showStatusStr" label="交易状态" min-width="100" align="center">
<el-table-column
prop="showStatusStr"
label="交易状态"
min-width="100"
align="center"
>
</el-table-column>
<el-table-column prop="amount" label="实收款" min-width="100" align="center">
<el-table-column
prop="amount"
label="实收款"
min-width="100"
align="center"
>
<template slot-scope="scope">
<span>{{ scope.row.amount | toFixed2}}</span>
<span>{{ scope.row.amount | toFixed2 }}</span>
</template>
</el-table-column>
<el-table-column prop="prescriberName" label="创建人" min-width="100" align="center"></el-table-column>
<el-table-column prop="receiver" label="买家" min-width="100" align="center"></el-table-column>
<el-table-column prop="goodsQuantityList" label="数量" min-width="100" align="center">
<el-table-column
prop="prescriberName"
label="创建人"
min-width="100"
align="center"
></el-table-column>
<el-table-column
prop="receiver"
label="买家"
min-width="100"
align="center"
></el-table-column>
<el-table-column
prop="goodsQuantityList"
label="数量"
min-width="100"
align="center"
>
<template slot-scope="scope">
<!--<span>{{ scope.row.goodsQuantity }}</span>-->
<p v-for="(item, index) in scope.row.goodsQuantityList" :key="index" class="p-normal">{{item}}</p>
<p
v-for="(item, index) in scope.row.goodsQuantityList"
:key="index"
class="p-normal"
>
{{ item }}
</p>
</template>
</el-table-column>
<el-table-column prop="sizeList" label="规格" min-width="100" align="center">
<el-table-column
prop="sizeList"
label="规格"
min-width="100"
align="center"
>
<template slot-scope="scope">
<!--<span>{{ scope.row.size }}</span>-->
<p v-for="(item, index) in scope.row.sizeList" :key="index" class="p-normal">{{item}}</p>
<p
v-for="(item, index) in scope.row.sizeList"
:key="index"
class="p-normal"
>
{{ item }}
</p>
</template>
</el-table-column>
<el-table-column prop="priceList" label="单价" min-width="100" align="center">
<el-table-column
prop="priceList"
label="单价"
min-width="100"
align="center"
>
<template slot-scope="scope">
<!--<span>{{ scope.row.price }}</span>-->
<p v-for="(item, index) in scope.row.priceList" :key="index" class="p-normal">{{item | toFixed2}}</p>
<p
v-for="(item, index) in scope.row.priceList"
:key="index"
class="p-normal"
>
{{ item | toFixed2 }}
</p>
</template>
</el-table-column>
<el-table-column prop="createTime" label="下单时间" min-width="100" align="center">
<!-- <el-table-column
prop="fanxxxx"
label="返现"
min-width="100"
align="center"
>
</el-table-column> -->
<el-table-column
prop="saleTypeStr"
label="销售方式"
width="170"
align="center"
>
</el-table-column>
<el-table-column
prop="createTime"
label="下单时间"
min-width="100"
align="center"
>
<template slot-scope="scope">
<span>{{ scope.row.createTime }}</span>
</template>
</el-table-column>
<el-table-column prop="ownerName" label="招募人" min-width="100" align="center"></el-table-column>
<el-table-column prop="brokerName" label="药代姓名" min-width="100" align="center"></el-table-column>
<el-table-column prop="comments" label="备注" min-width="100" align="center"></el-table-column>
<el-table-column label="操作" min-width="250" align="center" fixed="right">
<el-table-column
prop="ownerName"
label="招募人"
min-width="100"
align="center"
></el-table-column>
<el-table-column
prop="brokerName"
label="药代姓名"
min-width="100"
align="center"
></el-table-column>
<el-table-column
prop="comments"
label="备注"
min-width="100"
align="center"
></el-table-column>
<el-table-column
label="操作"
min-width="250"
align="center"
fixed="right"
>
<template slot-scope="scope">
<div>
<!--<el-button @click="closeTrade(scope.row)" type="text" size="small">关闭交易</el-button>-->
<!--<el-button @click="changePrice(scope.row)" type="text" size="small">修改价格</el-button>-->
<!-- <el-button @click="sendGoods(scope.row)" type="text" size="small">发货</el-button>-->
<el-button v-if="scope.row.storeType == 1 && scope.row.showStatus == 3 && scope.row.refundStatus == 0" @click="sendGoods(scope.row)" type="text" size="small">发货</el-button>
<el-button v-if="scope.row.storeType == 2 && scope.row.showStatus == 3 && scope.row.refundStatus == 0" @click="distribute(scope.row)" type="text" size="small">配送</el-button>
<el-button v-if="scope.row.storeType == 1 && (scope.row.showStatus == 1 || scope.row.showStatus == 2)" @click="viewLogistics(scope.row)" type="text" size="small">查看物流</el-button>
<el-button v-if="scope.row.storeType == 2 && scope.row.showStatus == 2" @click="distributeComplete(scope.row)" type="text" size="small">配送完成</el-button>
<el-button @click="goDetail(scope.row)" type="text" size="small">查看详情</el-button>
<el-button v-if="(scope.row.storeType == 1 || scope.row.storeType == 2) && scope.row.showStatus == 3 && scope.row.refundStatus == 0" @click="openTuiDialog(scope.row)" type="text" size="small">退款退货</el-button>
<!-- <el-button @click="sendGoods(scope.row)" type="text" size="small">发货</el-button>-->
<el-button
v-if="
scope.row.storeType == 1 &&
scope.row.showStatus == 3 &&
scope.row.refundStatus == 0
"
@click="sendGoods(scope.row)"
type="text"
size="small"
>发货</el-button
>
<el-button
v-if="
scope.row.storeType == 2 &&
scope.row.showStatus == 3 &&
scope.row.refundStatus == 0
"
@click="distribute(scope.row)"
type="text"
size="small"
>配送</el-button
>
<el-button
v-if="
scope.row.storeType == 1 &&
(scope.row.showStatus == 1 || scope.row.showStatus == 2)
"
@click="viewLogistics(scope.row)"
type="text"
size="small"
>查看物流</el-button
>
<el-button
v-if="scope.row.storeType == 2 && scope.row.showStatus == 2"
@click="distributeComplete(scope.row)"
type="text"
size="small"
>配送完成</el-button
>
<el-button @click="goDetail(scope.row)" type="text" size="small"
>查看详情</el-button
>
<el-button
v-if="
(scope.row.storeType == 1 || scope.row.storeType == 2) &&
scope.row.showStatus == 3 &&
scope.row.refundStatus == 0
"
@click="openTuiDialog(scope.row)"
type="text"
size="small"
>退款退货</el-button
>
<!-- <el-button type="text" size="small">查看物流</el-button> -->
</div>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleNumChange"
:current-page="searchForm.pageNo"
:page-sizes="[10, 30, 50, 100]"
:page-size="searchForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
background
@size-change="handleSizeChange"
@current-change="handleNumChange"
:current-page="searchForm.pageNo"
:page-sizes="[10, 30, 50, 100]"
:page-size="searchForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
></el-pagination>
</div>
<el-dialog
title="确定关闭交易吗?"
:visible="closeTradeDialog"
@close="cancelTrade"
:show-close="false"
width="600px"
center>
<p style="text-align: center;margin-top: -25px;color: #9B9997">关闭后买家将不能再付款</p>
<div style="text-align: center;margin-top: 30px;">
<el-input type="textarea"
v-model="reasonTxt"
maxlength="400"
rows="5"
placeholder="请输入备注内容"
style="width: 80%;"></el-input>
<span class="word-num">{{reasonTxt.replace(/\s+/g,"").length}}/400</span>
title="确定关闭交易吗?"
:visible="closeTradeDialog"
@close="cancelTrade"
:show-close="false"
width="600px"
center
>
<p style="text-align: center; margin-top: -25px; color: #9b9997">
关闭后买家将不能再付款
</p>
<div style="text-align: center; margin-top: 30px">
<el-input
type="textarea"
v-model="reasonTxt"
maxlength="400"
rows="5"
placeholder="请输入备注内容"
style="width: 80%"
></el-input>
<span class="word-num"
>{{ reasonTxt.replace(/\s+/g, "").length }}/400</span
>
</div>
<!--<el-form ref="auditForm" :model="auditForm" label-width="120px">
<el-form-item label="拒绝原因:">
......@@ -190,66 +426,110 @@
</el-form-item>
</el-form>-->
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="cancelTrade">取 消</el-button>
<el-button size="small" type="primary" @click="submitTrade">关闭交易</el-button>
</span>
<el-button size="small" @click="cancelTrade">取 消</el-button>
<el-button size="small" type="primary" @click="submitTrade"
>关闭交易</el-button
>
</span>
</el-dialog>
<el-dialog
title="修改价格"
:visible="changePriceDialog"
@close="cancelPrice"
width="600px"
center>
<el-form ref="changePriceForm" :model="changePriceForm" label-width="120px" label-suffix=":">
title="修改价格"
:visible="changePriceDialog"
@close="cancelPrice"
width="600px"
center
>
<el-form
ref="changePriceForm"
:model="changePriceForm"
label-width="120px"
label-suffix=":"
>
<el-form-item label="目前价格">
<span>¥{{changePriceForm.nowPrice}}</span>
<span>¥{{ changePriceForm.nowPrice }}</span>
</el-form-item>
<el-form-item label="修改价格">
<el-input type="text" v-model="changePriceForm.updatePrice" placeholder="请输入修改后的价格" style="width: 70%"></el-input>
<el-input
type="text"
v-model="changePriceForm.updatePrice"
placeholder="请输入修改后的价格"
style="width: 70%"
></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" type="primary" @click="submitPrice">完成</el-button>
</span>
<el-button size="small" type="primary" @click="submitPrice"
>完成</el-button
>
</span>
</el-dialog>
<send-set-dialog
:sendGoodsDialog="sendGoodsDialog"
:dialogTitle="dialogTitle"
:sendSetFormData="sendSetForm"
@closeSendSet="closeSendSet">
:sendGoodsDialog="sendGoodsDialog"
:dialogTitle="dialogTitle"
:sendSetFormData="sendSetForm"
@closeSendSet="closeSendSet"
>
</send-set-dialog>
<el-dialog
title="查看物流"
:visible="viewLogisticsDialog"
@close="cancelView"
:show-close="false"
width="600px"
center>
title="查看物流"
:visible="viewLogisticsDialog"
@close="cancelView"
:show-close="false"
width="700px"
center
>
<div class="view-content">
<i class="el-icon-truck" style="font-size: 18px"></i><span class="send-status">已发货</span>
<span class="view-number">{{logisticeInfo}}</span>
<el-button type="text" @click="copyTxt">复制</el-button>
<div>
<i class="el-icon-truck" style="font-size: 18px"></i
><span class="send-status">已发货</span>
<span class="view-number">{{ logisticeInfo }}</span>
</div>
<div>
<el-button type="text" @click="copyTxt">复制单号</el-button>
<el-button type="text" @click="updateOrderNo" v-if="showStatus == 2"
>修改物流单号</el-button
>
</div>
</div>
<div class="steps-logistics">
<el-steps direction="vertical" :active="0">
<el-step
v-for="(item, index) in expressData"
:title="item.time"
:description="item.context"
:key="index"
>
<div slot="icon">
<div class="dot"></div>
</div>
</el-step>
</el-steps>
</div>
<input type="text" id="copyInput" class="hidden-input" />
<span slot="footer" class="dialog-footer">
<el-button size="small" type="primary" @click="cancelView">我知道了</el-button>
</span>
<el-button size="small" type="primary" @click="cancelView"
>我知道了</el-button
>
</span>
</el-dialog>
<el-dialog
title=""
:visible="disCompleteDialog"
@close="cancelDis"
:show-close="false"
width="600px"
center>
title=""
:visible="disCompleteDialog"
@close="cancelDis"
:show-close="false"
width="600px"
center
>
<div class="view-content">
<p class="center-title">确认配送完成吗?</p>
<p class="center-title">确认配送完成吗?</p>
<p class="center-subtitle">请确认线下已将商品送达</p>
</div>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="cancelDis">取消</el-button>
<el-button size="small" type="primary" @click="submitDisComplete">配送完成</el-button>
</span>
<el-button size="small" @click="cancelDis">取消</el-button>
<el-button size="small" type="primary" @click="submitDisComplete"
>配送完成</el-button
>
</span>
</el-dialog>
</div>
<el-dialog
......@@ -259,8 +539,17 @@
@close="showTuiDialog = false"
width="385px"
>
<div style="margin-bottom: 20px;margin-top: -20px;text-align: center;"><span style="color: red;">温馨提示:订单一旦退款,订单关联的预约单将被同步取消,请谨慎操作退款</span></div>
<el-form ref="tuiForm" :rules="rules" :model="tuiForm" label-width="120px">
<div style="margin-bottom: 20px; margin-top: -20px; text-align: center">
<span style="color: red"
>温馨提示:订单一旦退款,订单关联的预约单将被同步取消,请谨慎操作退款</span
>
</div>
<el-form
ref="tuiForm"
:rules="rules"
:model="tuiForm"
label-width="120px"
>
<el-form-item label="退款退货方式:">
<el-select v-model="tuiForm.type" placeholder="请选择退货方式">
<el-option
......@@ -281,467 +570,1113 @@
v-for="item in userTypes"
:key="item.value"
:label="item.label"
:value="item.value"/>
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="退款理由" prop="">
<el-input
:maxlength="20"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }"
placeholder="请输入内容"
v-model="tuiForm.refundReason"
>
</el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" type="primary" @click="confirmTui"
>完成</el-button
>
</span>
</el-dialog>
<el-dialog
class="tui-dialog"
title="修改物流单号"
:visible="showOrderNoFlag"
@close="showOrderNoFlag = false"
width="600px"
>
<el-form
ref="expressForm"
:rules="rulesExpress"
:model="expressForm"
label-width="120px"
>
<el-form-item label="快递公司" prop="company">
<el-input v-model="expressForm.company"></el-input>
</el-form-item>
<el-form-item label="快递单号" prop="no">
<el-input v-model="expressForm.no"></el-input>
</el-form-item>
<el-form-item label="备注" prop="extendMessage">
<el-input v-model="expressForm.extendMessage"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" type="primary" @click="confirmTui">完成</el-button>
<el-button size="small" type="primary" @click="confirmExpressNo"
>完成</el-button
>
</span>
</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"
:loading="isLoading"
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="repetition">空行:{{ ProgressData.nullNum }}条</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"
width="210"
></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"
width="210"
></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>
</template>
<script>
import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "@/components/breadcrumb.vue";
import SendSetDialog from "@/components/shop/send-set-dialog";
import { getOrdersExportUrl } from "@/utils/yqrange/yqrangeApi";
import { queryOrderList, updateExpress, refundApply, brokerListAll, brokerOwnerListAll} from "@/utils/shop";
import { toDecimal2 } from '@/utils';
import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "@/components/breadcrumb.vue";
import SendSetDialog from "@/components/shop/send-set-dialog";
import {
getOrdersExportUrl,
uploadExpress,
uploadRefund,
getUploadExpressProgress,
getUploadRefundProgress,
} from "@/utils/yqrange/yqrangeApi";
import {
queryOrderList,
updateExpress,
refundApply,
brokerListAll,
brokerOwnerListAll,
updateExpressNo,
expressInfo,
} from "@/utils/shop";
import { toDecimal2 } from "@/utils";
export default {
components: {
SendSetDialog,
BreadCrumb
},
data(){
return{
createRangeTime: '',
curmbFirst: '云鹊店铺',
curmbSecond: '订单管理',
activeName: 'all',
searchForm: {
showStatus: -1,
storeId: 0,
goodsName: '',
orderNo: '',
receiver: '',
prescriberName: '',
orderTime:'',
orderBeginTime:'',
orderEndTime: '',
brokerId:'',
ownerId:'',
pageNo: 1,
pageSize: 10,
},
totalRows: 0,
tableData: [],
closeTradeDialog: false,
reasonTxt: '',
changePriceDialog: false,
changePriceForm: {
nowPrice: 45,
updatePrice: '',
},
sendGoodsDialog: false,
dialogTitle: '',
sendSetForm: {},
viewLogisticsDialog: false,
logisticeInfo: '',//复制物流信息
disCompleteDialog: false,
disCompleteData: {},
rules: {
name: [
{ required: true, message: '请输入快递公司', trigger: "blur"},
],
orderNum: [
{ required: true, message: '请输入快递单号', trigger: "blur"},
],
userName: [
{ required: true, message: '请选择退款对象', trigger: "blur"},
],
},
showTuiDialog: false,
tuiForm: {
order: null,
type: 0,
money: ''
},
tuiTypes: [
{
label: '仅退款,无需退货',
value: 0,
disabled: false
},
{
label: '仅退货,无需退款',
value: 1,
disabled: true
},
{
label: '退款退货',
value: 2,
disabled: true
}
],
userType: "", // 1.开单医生, 2.支付用户
userTypes: [
{
label: '开单医生',
value: 1,
},
{
label: '支付用户',
value: 2,
},
],
ownerId:'',
brokerList:[],
brokerOwnerList:[],
pickerOptions1: {
disabledDate: time => {
return (
time.getTime() > new Date().getTime()
); //减去一天的时间代表可以选择同一天;
}
},
}
},
created() {
console.log("order created() : enter");
this.searchForm.storeId = this.$route.query.storeId || 0,
this.searchList();
this.brokerListAll();
this.brokerOwnerListAll();
},
methods: {
searchList(){
this.searchForm.orderBeginTime = this.createRangeTime[0];
this.searchForm.orderEndTime = this.createRangeTime[1];
console.log("searchList搜索开始")
openLoading(this);
queryOrderList(this.searchForm).then(res => {
closeLoading(this);
if (res.code == '000000') {
console.log("searchList搜索结束")
this.tableData = res.data.orderSingleDtoList;
this.totalRows = res.data.totalNum;
}
})
},
resetForm() {
console.log("resetForm重置")
this.activeName = 'all';
this.createRangeTime = '';
this.searchForm = {
showStatus: -1,
storeId: this.$route.query.storeId,
goodsName: '',
prescriberName: '',
orderBeginTime:'',
orderEndTime: '',
orderNo: '',
receiver: '',
orderDate: '',
brokerId:'',
ownerId:'',
pageNo: 1,
pageSize: 10,
};
this.ownerId = "";
this.searchList();
this.brokerOwnerListAll();
this.brokerListAll();
},
handleSizeChange(val) {
this.searchForm.pageSize = val;
this.searchForm.pageNo = 1;
this.searchList();
},
handleNumChange(val) {
this.searchForm.pageNo = val;
this.searchList();
},
handleClick(tab, event) {
//-1全部,1已完成,2已发货,3待发货,4待支付,5交易关闭
if (this.activeName == 'all') {//全部
this.searchForm.showStatus = -1;
}else if (this.activeName == 'first') {//等待买家付款
this.searchForm.showStatus = 4;
}else if (this.activeName == 'second') {//待发货
this.searchForm.showStatus = 3;
}else if (this.activeName == 'third') {//已发货
this.searchForm.showStatus = 2;
}else if (this.activeName == 'fourth') {//交易成功
this.searchForm.showStatus = 1;
}else if (this.activeName == 'five') {//交易关闭
this.searchForm.showStatus = 5;
}
this.searchForm.pageNo = 1;
this.searchList();
export default {
components: {
SendSetDialog,
BreadCrumb,
},
data() {
return {
createRangeTime: "",
curmbFirst: "云鹊店铺",
curmbSecond: "订单管理",
activeName: "all",
showStatus: -1,
searchForm: {
showStatus: -1,
storeId: 0,
goodsName: "",
orderNo: "",
receiver: "",
prescriberName: "",
orderTime: "",
orderBeginTime: "",
orderEndTime: "",
brokerId: "",
ownerId: "",
pageNo: 1,
pageSize: 10,
saleType: 0,
},
//关闭交易
closeTrade(row) {
this.closeTradeDialog = true;
// 确认物流
statFlg: false,
exportDialog: false,
ExportType: 1, // 1导入物流信息 2、批量取消订单
FailureReasonFlag: false,
progressFlag: false,
totalRows: 0,
tableData: [],
FailureTable: [],
closeTradeDialog: false,
reasonTxt: "",
changePriceDialog: false,
changePriceForm: {
nowPrice: 45,
updatePrice: "",
},
cancelTrade() {
this.closeTradeDialog = false;
},
submitTrade() {
this.closeTradeDialog = false;
},
//修改价格
changePrice(row) {
this.changePriceDialog = true;
},
cancelPrice() {
this.changePriceDialog = false;
},
submitPrice() {
this.changePriceDialog = false;
},
//发货
sendGoods(row) {
this.sendGoodsDialog = true;
this.dialogTitle = '发货设置';
this.sendSetForm = row;
},
closeSendSet(val) {
console.log("关闭,val.type:" + val.type);
//保存操作
if (val.type == 2) {
console.log("刷新列表resetForm");
this.resetForm();//更新列表
}
this.sendGoodsDialog = false;
sendGoodsDialog: false,
dialogTitle: "",
sendSetForm: {},
viewLogisticsDialog: false,
logisticeInfo: "", //复制物流信息
disCompleteDialog: false,
disCompleteData: {},
rules: {
name: [{ required: true, message: "请输入快递公司", trigger: "blur" }],
orderNum: [
{ required: true, message: "请输入快递单号", trigger: "blur" },
],
userName: [
{ required: true, message: "请选择退款对象", trigger: "blur" },
],
},
//配送
distribute(row) {
this.sendGoodsDialog = true;
this.dialogTitle = '配送设置';
this.sendSetForm = row;
expressData: [
{
time: "2021-06-23 12:21:21",
context: "待揽收",
},
],
showTuiDialog: false,
tuiForm: {
order: null,
type: 0,
refundReason: "",
money: "",
},
//查看物流
viewLogistics(row) {
this.viewLogisticsDialog = true;
this.logisticeInfo = `${row.expressName} ${row.expressNo}`;
expressForm: {
order: null,
company: "",
no: "",
extendMessage: "",
},
cancelView() {
this.viewLogisticsDialog = false;
rulesExpress: {
company: [
{ required: true, message: "请输入快递公司", trigger: "blur" },
],
no: [{ required: true, message: "请输入快递单号", trigger: "blur" }],
},
copyTxt() {
let txt = document.getElementById("copyInput");
txt.value = this.logisticeInfo;
// if (navigator.userAgent.match(/(iPhone|iPod|iPad|Mac);?/i)) {
if (navigator.userAgent.indexOf("Safari") > -1 && navigator.userAgent.indexOf("Chrome") < 1) {
var el = document.createElement('input');
el.value = txt.value;//要复制的内容
el.style.opacity = '0';
document.body.appendChild(el);
var editable = el.contentEditable;
var readOnly = el.readOnly;
el.contentEditable = true;
el.readOnly = false;
const range = document.createRange();
range.selectNodeContents(el);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
el.setSelectionRange(0, 999999);
el.contentEditable = editable;
el.readOnly = readOnly;
var ret = document.execCommand('copy');
el.blur();
} else {
txt.select(); //选择对象
document.execCommand("copy");
}
this.$message.success('复制成功');
tuiTypes: [
{
label: "仅退款,无需退货",
value: 0,
disabled: false,
},
{
label: "仅退货,无需退款",
value: 1,
disabled: true,
},
{
label: "退款退货",
value: 2,
disabled: true,
},
],
userType: "", // 1.开单医生, 2.支付用户
userTypes: [
{
label: "开单医生",
value: 1,
},
{
label: "支付用户",
value: 2,
},
],
saleTypeList: [
{
value: 0,
label: "全部",
},
{
value: 1,
label: "零售",
},
{
value: 2,
label: "批发",
},
],
fileData: {
fileBaseStr: "",
fileName: "",
},
//配送完成
distributeComplete(row) {
this.disCompleteDialog = true;
this.disCompleteData = row;
ownerId: "",
brokerList: [],
brokerOwnerList: [],
showOrderNoFlag: false,
LogisticsUrl:
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet/2021/08/12/20210812101318239-4c4e680b.xlsx",
CancelOrderUrl:
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet/2021/08/12/2021081210125196-5a8743b1.xlsx",
timer: null,
pickerOptions1: {
disabledDate: (time) => {
return time.getTime() > new Date().getTime(); //减去一天的时间代表可以选择同一天;
},
},
cancelDis() {
this.disCompleteDialog = false;
ProgressData: {
totalNum: "", //总数
nullNum:"",//空白行
status: "", // 1完成 0进行中
doneNum: "", // doneNum 完成数量
successNum: "", // 成功数量
failNum: "", //失败数量
repeatNum: "",
errorFileUrl: "", // 失败 原因文件
errorList: [], // 失败列表
},
//确认配送完成
submitDisComplete() {
let para = this.disCompleteData;
para.type = 3;
updateExpress(para).then(res => {
if (res.code == '000000') {
this.$message.success('操作成功')
this.disCompleteDialog = false;
this.resetForm();//更新列表
}else {
isLoading: false,
// errorFileUrl:"",
};
},
created() {
console.log("order created() : enter");
(this.searchForm.storeId = this.$route.query.storeId || 0),
this.searchList();
this.brokerListAll();
this.brokerOwnerListAll();
},
methods: {
// 确认导入
confirmExport() {
if (this.ExportType == 1) {
this.uploadExpress();
} else {
this.uploadRefund();
}
},
//
ShowExportDialog(type) {
this.ExportType = type;
this.exportDialog = true;
this.fileData = {
fileBaseStr: "",
fileName: "",
};
},
// 批量更新物流操作
uploadExpress() {
this.isLoading = true;
openLoading(this);
uploadExpress(this.fileData)
.then((res) => {
if (res && res.code == "000000") {
closeLoading(this);
this.getUploadExpressProgressInterval(
res.data.tradeBatchUploadLogId
);
} else {
this.isLoading = false;
this.$message.error(res.message);
}
});
},
//查看详情
goDetail(row) {
this.$router.push({
path: `/order-detail`,
query:{
id: row.id,
storeId: this.searchForm.storeId,
storeType: row.storeType,
}
})
},
openTuiDialog(item) {
this.tuiForm.order = item;
this.tuiForm.money = toDecimal2(item.amount);
this.showTuiDialog = true;
},
confirmTui() {
if (this.userType == null || this.userType == "") {
this.$message.error("请选择退款对象");
return;
}
refundApply({ orderId: this.tuiForm.order.id, userType: this.userType }).then(res => {
if (res.code == '000000') {
this.$message.success('操作成功');
this.showTuiDialog = false;
this.searchList();
.catch((err) => {
this.isLoading = false;
closeLoading(this);
});
},
// 批量取消退款操作
uploadRefund() {
this.isLoading = true;
openLoading(this);
uploadRefund(this.fileData)
.then((res) => {
console.log(res);
if (res && res.code == "000000") {
closeLoading(this);
this.getUploadRefundProgressInterval(res.data.tradeBatchUploadLogId);
} else {
this.$message.success(`操作失败:${res.message},请重试`);
this.isLoading = false;
this.$message.error(res.message);
}
})
.catch((err) => {
this.isLoading = false;
closeLoading(this);
});
},
exportOrder() {
const { goodsName, orderNo, receiver, orderDate, storeId, brokerId, ownerId, prescriberName, orderBeginTime, orderEndTime} = this.searchForm;
},
// 获取物流上传进度
async getUploadExpressProgressInterval(id) {
clearInterval(this.timer);
let status = await this.getUploadExpressProgress(id);
if (status == 0) {
console.log("status------", status);
this.timer = setInterval(() => {
this.getUploadExpressProgress(id);
}, 2000);
}
},
getUploadExpressProgress(id) {
return getUploadExpressProgress(id).then((res) => {
if (res && res.code == "000000") {
this.isLoading = false;
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;
this.searchList();
getOrdersExportUrl({ goodsName, orderNo, receiver, orderDate, storeId,brokerId,ownerId,prescriberName, orderBeginTime, orderEndTime}).then(res => {
if (res.code != '000000') {
this.$message({ message: res.message, type: 'error' });
return;
}, 2000);
}
window.open(res.data);
});
},
return res.data.status;
} else {
this.isLoading = false;
this.$message.error(res.message);
return;
}
});
},
// 云鹊店铺-订单管理-药代列表
brokerListAll(){
// 获取批量取消进度
async getUploadRefundProgressInterval(id) {
clearInterval(this.timer);
let status = await this.getUploadRefundProgress(id);
if (status == 0) {
this.timer = setInterval(() => {
this.getUploadRefundProgress(id);
}, 2000);
}
},
brokerListAll({ownerId:this.ownerId}).then(res => {
closeLoading(this);
if (res.code == '000000') {
this.brokerList = res.data;
}
})
},
//云鹊店铺-订单管理-招募人列表
brokerOwnerListAll(){
brokerOwnerListAll().then(res => {
closeLoading(this);
if (res.code == '000000') {
this.brokerOwnerList = res.data;
getUploadRefundProgress(id) {
return getUploadRefundProgress(id).then((res) => {
if (res && res.code == "000000") {
this.exportDialog = false;
this.progressFlag = true;
this.ProgressData = res.data;
this.isLoading = false;
if (res.data.status == 1) {
clearInterval(this.timer);
setTimeout(() => {
this.progressFlag = false;
this.statFlg = true;
this.searchList()
}, 2000);
}
})
},
return res.data.status;
} else {
this.isLoading = false;
this.$message.error(res.message);
return;
}
});
},
// 取消导入物流信息
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;
},
changeOwner(data) {
this.ownerId = data;
this.brokerListAll();
searchList() {
this.searchForm.orderBeginTime = this.createRangeTime[0];
this.searchForm.orderEndTime = this.createRangeTime[1];
console.log("searchList搜索开始");
openLoading(this);
queryOrderList(this.searchForm).then((res) => {
closeLoading(this);
if (res.code == "000000") {
console.log("searchList搜索结束");
this.tableData = res.data.orderSingleDtoList;
this.totalRows = res.data.totalNum;
}
});
},
resetForm() {
console.log("resetForm重置");
this.activeName = "all";
this.createRangeTime = "";
this.searchForm = {
showStatus: -1,
storeId: this.$route.query.storeId,
goodsName: "",
prescriberName: "",
orderBeginTime: "",
orderEndTime: "",
orderNo: "",
receiver: "",
orderDate: "",
brokerId: "",
ownerId: "",
saleType: 0,
pageNo: 1,
pageSize: 10,
};
this.ownerId = "";
this.searchList();
this.brokerOwnerListAll();
this.brokerListAll();
},
handleSizeChange(val) {
this.searchForm.pageSize = val;
this.searchForm.pageNo = 1;
this.searchList();
},
handleNumChange(val) {
this.searchForm.pageNo = val;
this.searchList();
},
handleClick(tab, event) {
//-1全部,1已完成,2已发货,3待发货,4待支付,5交易关闭
if (this.activeName == "all") {
//全部
this.searchForm.showStatus = -1;
} else if (this.activeName == "first") {
//等待买家付款
this.searchForm.showStatus = 4;
} else if (this.activeName == "second") {
//待发货
this.searchForm.showStatus = 3;
} else if (this.activeName == "third") {
//已发货
this.searchForm.showStatus = 2;
} else if (this.activeName == "fourth") {
//交易成功
this.searchForm.showStatus = 1;
} else if (this.activeName == "five") {
//交易关闭
this.searchForm.showStatus = 5;
}
this.searchForm.pageNo = 1;
this.searchList();
},
//关闭交易
closeTrade(row) {
this.closeTradeDialog = true;
},
cancelTrade() {
this.closeTradeDialog = false;
},
submitTrade() {
this.closeTradeDialog = false;
},
//修改价格
changePrice(row) {
this.changePriceDialog = true;
},
cancelPrice() {
this.changePriceDialog = false;
},
submitPrice() {
this.changePriceDialog = false;
},
//发货
sendGoods(row) {
this.sendGoodsDialog = true;
this.dialogTitle = "发货设置";
this.sendSetForm = row;
},
closeSendSet(val) {
console.log("关闭,val.type:" + val.type);
//保存操作
if (val.type == 2) {
console.log("刷新列表resetForm");
this.resetForm(); //更新列表
}
this.sendGoodsDialog = false;
},
//配送
distribute(row) {
this.sendGoodsDialog = true;
this.dialogTitle = "配送设置";
this.sendSetForm = row;
},
//查看物流
viewLogistics(row) {
console.log("row-----", row);
expressInfo({ expressNo: row.expressNo,receiverMobile:row.receiverMobile }).then((res) => {
if (res.code == "000000") {
this.expressData = [...res.data.data, ...this.expressData];
this.logisticeInfo = `${row.expressName} ${row.expressNo}`;
this.expressForm.order = row;
this.expressForm.company = `${row.expressName}`;
this.expressForm.no = `${row.expressNo}`;
this.expressForm.extendMessage = `${row.remark}`;
this.showStatus = row.showStatus;
this.viewLogisticsDialog = true;
}
});
},
cancelView() {
this.viewLogisticsDialog = false;
},
copyTxt() {
let txt = document.getElementById("copyInput");
txt.value = this.logisticeInfo;
// if (navigator.userAgent.match(/(iPhone|iPod|iPad|Mac);?/i)) {
if (
navigator.userAgent.indexOf("Safari") > -1 &&
navigator.userAgent.indexOf("Chrome") < 1
) {
var el = document.createElement("input");
el.value = txt.value; //要复制的内容
el.style.opacity = "0";
document.body.appendChild(el);
var editable = el.contentEditable;
var readOnly = el.readOnly;
el.contentEditable = true;
el.readOnly = false;
const range = document.createRange();
range.selectNodeContents(el);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
el.setSelectionRange(0, 999999);
el.contentEditable = editable;
el.readOnly = readOnly;
var ret = document.execCommand("copy");
el.blur();
} else {
txt.select(); //选择对象
document.execCommand("copy");
}
this.$message.success("复制成功");
},
//配送完成
distributeComplete(row) {
this.disCompleteDialog = true;
this.disCompleteData = row;
},
cancelDis() {
this.disCompleteDialog = false;
},
//确认配送完成
submitDisComplete() {
let para = this.disCompleteData;
para.type = 3;
updateExpress(para).then((res) => {
if (res.code == "000000") {
this.$message.success("操作成功");
this.disCompleteDialog = false;
this.resetForm(); //更新列表
} else {
this.$message.error(res.message);
}
});
},
//查看详情
goDetail(row) {
this.$router.push({
path: `/order-detail`,
query: {
id: row.id,
storeId: this.searchForm.storeId,
storeType: row.storeType,
},
});
},
openTuiDialog(item) {
this.tuiForm.order = item;
this.tuiForm.money = toDecimal2(item.amount);
this.showTuiDialog = true;
},
confirmTui() {
if (this.userType == null || this.userType == "") {
this.$message.error("请选择退款对象");
return;
}
refundApply({
orderId: this.tuiForm.order.id,
userType: this.userType,
refundReason: this.tuiForm.refundReason,
}).then((res) => {
if (res.code == "000000") {
this.$message.success("操作成功");
this.showTuiDialog = false;
this.searchList();
} else {
this.$message.success(`操作失败:${res.message},请重试`);
}
});
},
// 修改物流单号
updateOrderNo() {
this.viewLogisticsDialog = false;
this.showOrderNoFlag = true;
},
confirmExpressNo() {
if (this.expressForm.company == null || this.expressForm.company == "") {
this.$message.error("请填写快递公司");
return;
}
if (this.expressForm.no == null || this.expressForm.no == "") {
this.$message.error("请填写快递单号");
return;
}
updateExpressNo({
orderId: this.expressForm.order.id,
expressName: this.expressForm.company,
expressNo: this.expressForm.no,
remark: this.expressForm.extendMessage,
}).then((res) => {
if (res.code == "000000") {
this.$message.success("操作成功");
this.showOrderNoFlag = false;
this.searchList();
} else {
this.$message.success(`操作失败:${res.message},请重试`);
}
});
},
exportOrder() {
const {
goodsName,
orderNo,
receiver,
orderDate,
storeId,
brokerId,
ownerId,
prescriberName,
orderBeginTime,
orderEndTime,
saleType,
} = this.searchForm;
getOrdersExportUrl({
goodsName,
orderNo,
receiver,
orderDate,
storeId,
brokerId,
ownerId,
prescriberName,
orderBeginTime,
orderEndTime,
saleType,
}).then((res) => {
if (res.code != "000000") {
this.$message({ message: res.message, type: "error" });
return;
}
window.open(res.data);
});
},
// 云鹊店铺-订单管理-药代列表
brokerListAll() {
brokerListAll({ ownerId: this.ownerId }).then((res) => {
closeLoading(this);
if (res.code == "000000") {
this.brokerList = res.data;
}
});
},
filters: {
toFixed2: function (value) {
let val;
if (value) {
val = (value/100).toFixed(2);
}else {
val = 0.00
//云鹊店铺-订单管理-招募人列表
brokerOwnerListAll() {
brokerOwnerListAll().then((res) => {
closeLoading(this);
if (res.code == "000000") {
this.brokerOwnerList = res.data;
}
return val;
});
},
changeOwner(data) {
this.ownerId = data;
this.brokerListAll();
},
},
filters: {
toFixed2: function (value) {
let val;
if (value) {
val = (value / 100).toFixed(2);
} else {
val = 0.0;
}
return val;
},
}
},
};
</script>
<style lang="scss">
.order-manage-wrapper{
.order-manage-content{
background: #fff;
padding: 10px;
.header-title{
padding: 10px 12px;
font-size: 13px;
color: #449284;
border-bottom: 1px solid #efefef;
}
.order-manage-wrapper {
.el-step__icon {
border: none;
background: transparent;
}
.el-step__title {
font-size: 14px;
}
.el-step:last-of-type .el-step__line {
display: block !important;
height: 30%;
}
.dot {
border-radius: 50%;
height: 8px;
width: 8px;
border: 1px solid #999999;
background-color: #b8b8b8;
}
.order-manage-content {
background: #fff;
padding: 10px;
.button-container {
margin-bottom: 10px;
}
.el-button--text{
.header-title {
padding: 10px 12px;
font-size: 13px;
color: #449284;
font-size: 14px;
&::after{
content: '';
border-bottom: 1px solid #efefef;
}
}
.el-button--text {
color: #449284;
font-size: 14px;
&::after {
content: "";
position: relative;
height: 14px;
/*border-right: 1px solid #EBEEF5;*/
border-right: 1px solid #aaaaaa;
padding-right: 10px;
}
&:last-of-type {
&::after {
content: "";
position: relative;
width: 1px;
height: 14px;
/*border-right: 1px solid #EBEEF5;*/
border-right: 1px solid #aaaaaa;
padding-right: 10px;
}
&:last-of-type{
&::after{
content: '';
position: relative;
width: 1px;
height: 14px;
border-right: none;
}
border-right: none;
}
}
}
.el-tabs__item.is-active{
color: #449284;
}
.el-tabs__item.is-active {
color: #449284;
}
.el-tabs__active-bar {
background-color: #449284;
}
.el-tabs__item:hover {
color: #449284;
}
.view-content {
display: flex;
justify-content: space-between;
.send-status {
margin-left: 5px;
}
.el-tabs__active-bar{
background-color: #449284;
.view-number {
color: #999999;
margin-left: 15px;
margin-right: 15px;
}
.el-tabs__item:hover{
color: #449284;
.center-title {
text-align: center;
}
.view-content{
.send-status{
margin-left: 5px;
}
.view-number{
color: #999999;
margin-left: 15px;
margin-right: 15px;
}
.center-title{
text-align: center;
}
.center-subtitle{
text-align: center;
font-size: 13px;
margin-top: 10px;
color: #999999;
}
.center-subtitle {
text-align: center;
font-size: 13px;
margin-top: 10px;
color: #999999;
}
.hidden-input {
height: 0;
}
.steps-logistics {
height: 350px;
overflow-y: scroll;
}
.hidden-input {
height: 0;
}
.p-normal {
line-height: 26px;
border-bottom: 1px solid #e4e7ed;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin: 10px 0;
text-align: center;
&:last-child {
border-bottom: none;
}
.p-normal{
line-height: 26px;
border-bottom: 1px solid #E4E7ED;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin: 10px 0;
}
.tui-dialog {
.el-dialog__header {
text-align: center;
}
.is-disabled {
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);
&:last-child{
border-bottom: none;
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;
}
}
.tui-dialog {
.el-dialog__header {
text-align: center;
}
.is-disabled {
width: 193px;
}
.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: 360px;
.failure {
color: #e63c3c;
}
}
}
.importUrl {
color: #449284;
}
</style>
const checkBarcode = (rule, value, cb) => {
const valedBarcode = new RegExp("[\\u4E00-\\u9FFF]+","g");
const valedBarcode = new RegExp("[\\u4E00-\\u9FFF]+","g");
if(value && valedBarcode.test(value)) cb(new Error('条形码不能输入中文'));
cb();
};
......@@ -100,7 +100,16 @@ const rules = {
{ required: true, message: "请选择商品类型", trigger: "change" }
],
optPrice: [
{ required: true, message: "请输入零售价", trigger: "blur" },
{ required: true, message: "请输入价格", trigger: "blur" },
],
saleType:[
{ required: true, message: "请选择销售方式", trigger: "change" }
],
stock: [
{ required: true, message: "请输入库存", trigger: "blur" },
],
minWhole: [
{ required: true, message: "请输入最小起批", trigger: "blur" },
],
// introduce: [
// { required: true, message: "请输入圈子介绍", trigger: "blur" },
......@@ -119,4 +128,3 @@ export const originRules1 = rules1;
export const originRules2 = rules2;
export const originRules = rules;
\ No newline at end of file
......@@ -171,7 +171,7 @@
uploadPersonExcel
} from "@/utils/education/educationApi";
import Sortable from "sortablejs";
let vm = null;
export default {
components: {
......@@ -198,7 +198,7 @@
callback(new Error(`请输入0~100正整数`));
}
};
let checkOrgListName = (rule, value, callback) => {
console.log(rule, value, callback);
// const val = parseFloat(value);
......@@ -210,7 +210,7 @@
// callback(new Error(`请输入0~100正整数`));
// }
};
return {
idTypeProject: "",
......@@ -238,7 +238,7 @@
},
projectId: null,
peopleLevel: null,
orgListIndex: 0,
pickerOptions0: {
disabledDate: time => {
......@@ -260,7 +260,7 @@
}
},
fileList: [],
//设定机构 数据
getRowKeys(row) {
return row.id;
......@@ -410,9 +410,9 @@
this.formOrganization.pageNum = 1;
this.formOrganization.name = "";
this.formOrganization.administrativeIdList = ["0"];
this.formOrganization.level = "-1";
this.formOrganization.level = "-1";
},
//初始化范围树
setTreeData(administrative) {
let treeIdList = [];
......@@ -502,7 +502,7 @@
halfCheckedTree
);
//重构内容
this.allSelectedKeys = allSelectedKeys;
this.initCheckList(allSelectedKeys);
//console.log("allSelectedKeys", allSelectedKeys);
......@@ -511,7 +511,6 @@
this.updatedTree = true;
},
getTreeCheck() {
debugger
//重构归并树
let checkedTree = operationData.getSimpleCheckedNodes(
this.$refs.tree.store
......@@ -535,7 +534,7 @@
console.log(treeKeyList);
this.$refs.tree.setCheckedKeys(treeKeyList);
},
//删除label节点 同步树结构
handleCloseTree(tag) {
if (this.status4Flag != 1) {
......@@ -617,7 +616,7 @@
);
console.log("", this.changedPerson, "", this.changedPerson2);
},
//改变小生态 table check
selectionChangeEcology(rows) {
this.changedEcology = [];
......@@ -775,7 +774,7 @@
if (res.code == "000000") {
this.tableOrganization = res.data.organizationList;
this.totalOrganization = res.data.total;
vm.initOrganizationStatus();
} else {
vm.$message(res.message);
......@@ -800,7 +799,7 @@
if (res.code == "000000") {
this.tableOrganization = res.data.organizationList;
this.totalOrganization = res.data.total;
vm.initOrganizationStatus();
} else {
vm.$message(res.message);
......@@ -844,7 +843,7 @@
console.log("scope", scope);
return scope;
},
//选择搜索机构方式
searchPeople() {
this.formPerson.pageNum = 1;
......@@ -857,7 +856,7 @@
this.getPeopleChoose();
}
},
//判断项目范围选择
showScopeType() {
if (this.projectStatus == "" || this.projectStatus == 1) {
......@@ -916,7 +915,7 @@
this.changedOrganization = [];
this.changedOrganization2 = [];
},
initTags(value) {
//console.log('value',value,'optionsComponent',this.optionsComponent);
this.tagsComponent = [];
......@@ -937,13 +936,13 @@
}
console.log("this.optionsComponent值:", this.optionsComponent);
},
// add 校验输入是否为整数
checkIntFun(str) {
let r = /^\+?[0-9]*$/;
return r.test(str);
},
hideErrorInfo(str) {
if (str) {
this.customError[str] = {
......@@ -954,14 +953,14 @@
this.customError = {};
}
},
dioErrorPop(str) {
return this.$message({
message: str,
type: "warning"
});
},
blurName() {
vm.visibleName = false;
setTimeout(function() {
......@@ -1338,4 +1337,3 @@
left: 0;
}
</style>
\ No newline at end of file
......@@ -4414,12 +4414,12 @@ vjs.SeekBar.prototype.onMouseMove = function(event){
};
vjs.SeekBar.prototype.onMouseUp = function(event){
debugger
vjs.Slider.prototype.onMouseUp.call(this, event);
this.player_.scrubbing = false;
if (this.videoWasPlaying) {
debugger
this.player_.play();
}
};
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册