Commit e7eda127 by huaying

Merge branch 'feature/9月基础迭代' into test

parents 7777197d aa71758b
......@@ -3971,11 +3971,12 @@
.el-dialog__headerbtn:focus .el-dialog__close, .el-dialog__headerbtn:hover .el-dialog__close {
color: #2F54EB; }
.el-dialog__title {
line-height: 24px;
font-size: 18px;
line-height: 22px;
font-size: 16px !important;
font-weight: 500;
color: #303133; }
.el-dialog__body {
padding: 20px 20px 10px 20px;
padding: 10px 20px 10px 20px;
color: #606266;
font-size: 14px; }
.el-dialog__footer {
......@@ -28288,7 +28289,7 @@
left: 0;
bottom: 0;
width: 100%;
height: 2px;
height: 1px;
background-color: #e4e7ed;
z-index: 1; }
.el-tabs__nav-wrap.is-scrollable {
......@@ -4,6 +4,7 @@
<meta charset="utf-8" />
<link rel="shortcut icon" href="./favicon.ico" />
<style href="//at.alicdn.com/t/font_2996579_ubjq74uy5wj.css"></style><!--GIC3.0 客户 -->
<script src="//at.alicdn.com/t/font_2996579_ubjq74uy5wj.js"></script><!--GIC3.0 客户 -->
<!-- 3.0 组件库 -->
<script src="//at.alicdn.com/t/font_2859043_ckil7xvsqi.js"></script>
<!-- <link rel="stylesheet" href="//web-1251519181.file.myqcloud.com/simple-style.1.0.2.css"></link> -->
......
......@@ -167,7 +167,11 @@
class="basic-info-table"
@click.native="linkDetail(row.memberId)"
>
<img :src="row.thirdImgUrl || defaultImg" class="basic-img" />
<img v-if="row.thirdImgUrl" :src="row.thirdImgUrl" class="basic-img" />
<svg v-else aria-hidden="true" class="basic-img">
<use xlink:href="#icon-user-default"></use>
</svg>
<div>
<div class="member-name">
......
......@@ -85,7 +85,7 @@ export default {
.table-colum-wrap {
display: flex;
flex-wrap: wrap;
width: 100%;
width: 105%;
.table-colum-item {
flex: 25%;
line-height: 35px;
......
<template>
<el-dialog title="微信转POS" :visible.sync="dialogVisible" custom-class="customer-dialog" @close="cancel" width="420px">
<p style="margin-bottom: 8px">确认将此客户的微信信息删除吗?删除后:</p>
<p style="margin-bottom: 8px">
1、此客户的客户类型将从微信会员转为POS会员;<br/>
2、该客户与微信侧的关联信息将被清除(公众号和小程序);<br/>
3、与该客户相关的数据统计将产生影响如微信会员数、POS转微信会员数等
</p>
<p>删除后不可恢复,请谨慎操作!</p>
<span slot="footer" class="dialog-footer">
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="okBtn">确定</el-button>
</span>
</el-dialog>
</template>
<script>
import { doFetchGet } from '../../axios/api';
import url from '../../axios/url';
export default {
props: {
dialogVisible: {
type: Boolean,
default: false,
},
memberId: {
type: String,
default: ''
}
},
data() {
return {
};
},
methods: {
cancel() {
this.$emit('update:dialogVisible', false);
},
okBtn() {
doFetchGet(url.weChantToPos,{mid: this.memberId}).then((res)=>{
if(res.data.errorCode == 0){
this.cancel();
this.$emit('refresh');
this.$message.success('操作成功');
}else{
this.$message.error(res.data.message);
}
})
}
}
};
</script>
<style lang="less">
.customer-dialog {
/deep/.el-dialog__header{
font-size: 16px !important;
}
}
</style>
<style lang="less" scoped>
.customer-dialog {
background: #000000;
opacity: 0.5;
p {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #303133;
line-height: 20px;
}
}
</style>
\ No newline at end of file
......@@ -6,10 +6,13 @@
<h2 class="item-title">
<i class="vertical-line" /><span>{{ section.title }}</span>
</h2>
<el-button type="text" v-if="section.name==='basic' && getCodeAuth('memberEditInfo')"
<div>
<el-button type="text" v-if="section.name==='basic' && getCodeAuth('memberEditInfo')"
@click="baseinfoDialogVisible=true" :limit-code="getCode('memberEditInfo')">
编辑
</el-button>
<el-button type="text" v-if="section.name==='basic' && getCodeAuth('wxToPOS') && member.customerType == 'wxOpenCarMember'" :limit-code="getCode('wxToPOS')" style="margin-left:12px" @click="weChantDialogVisible=true">微信转POS</el-button>
</div>
</div>
<div :class="[section.class]">
<!-- 基本信息 -->
......@@ -29,12 +32,16 @@
<el-image
fit="cover"
class="user-avatar-img"
:src="member.thirdImgUrl ? member.thirdImgUrl : defaultImg"
v-if="member.thirdImgUrl"
:src="member.thirdImgUrl"
>
<div slot="error" class="image-slot">
<img width="120" :src="require('../../../static/img/broke-img.png')" alt="">
</div>
</el-image>
<svg v-else aria-hidden="true" class="user-avatar-img" width="120px" height="120px">
<use xlink:href="#icon-user-default"></use>
</svg>
</div>
</div>
<div class="right">
......@@ -813,6 +820,9 @@
:memberId="memberId"
@refresh="initData"
/>
<!-- 微信转POS弹窗 -->
<wxToPosDialog :dialogVisible.sync="weChantDialogVisible" :memberId="memberId"
@refresh="initData"></wxToPosDialog>
</div>
</template>
<script>
......
......@@ -10,7 +10,6 @@ import importDialog from "@/components/allCustomers/components/importDialog.vue"
import url from "../../components/axios/url";
import { mapState } from "vuex";
import { formatLongTime, paddingBorth } from "@/utils/utils";
import defaultImg from "../../../static/img/default.png";
import authMethods from "@/mixins/auth";
import {
checkFalse,
......@@ -129,7 +128,6 @@ export default {
{ value: "mainstore", label: "修改服务门店", code: "memberBatchSetService" },
{ value: "store", label: "修改协管门店", code: "memberBatchSetCustomer" }
],
defaultImg,
integralFlag: "", // 积分调整权限
memberGrade: [], // 商户等级列表
cliqueMemberGrade: [], // 集团等级列表
......
......@@ -5,12 +5,12 @@ import customermainstoreDialog from './components/customermainstoreDialog.vue';
import customersubstoreDialog from './components/customersubstoreDialog.vue';
import customerlabelDialog from './components/customerlabelDialog.vue';
import IconLabelValue from './components/icon-label-value.vue';
import defaultImg from '../../../static/img/default.png';
import { mapState } from 'vuex';
import url from '../../components/axios/url';
import { doFetch, doFetchqs, doFetchGet } from '../../components/axios/api';
import authMethods from '@/mixins/auth';
import CustomerLog from './components/customerLog.vue';
import wxToPosDialog from './components/wxToPosDialog.vue';
import {
checkFalse,
checkStatus,
......@@ -72,7 +72,6 @@ export default {
// currentPage: 1,
// },
// totalCount: 0,
defaultImg,
labelTabsActive: 'memberTagGroup',
fullscreenLoading: false, // 全局loading
// tableLoading: false, // 用户日志列表loading
......@@ -176,7 +175,9 @@ export default {
},
// { title: '客户日志', name: 'log', class: 'log-info-contain' },
],
marketingRecordNum: 0
marketingRecordNum: 0,
// 微信转POS
weChantDialogVisible: false,
};
},
watch: {
......@@ -517,6 +518,7 @@ export default {
customersubstoreDialog,
customerlabelDialog,
IconLabelValue,
CustomerLog
CustomerLog,
wxToPosDialog,
},
};
<template>
<div class="orderListBox">
<div class="orderListBox" :style="activeName != 'store' ? 'margin-top: -20px;' : ''">
<div class="orderListTop" v-if="activeName == 'store'">
<div class="order-report-content">
<div class="order-content-left">
......
......@@ -158,7 +158,7 @@
<!-- 退款单、退换单显示实退金额 -->
<div class="order-descript-item">
<div class="order-descript-label">
<div class="order-descript-label-text">{{ el.orderType == 2 || el.orderType == 4 ? '实退金额' : '实付金额'}}</div>
<div class="order-descript-label-text">{{ el.orderType == 2 ? '实退金额' : '实付金额'}}</div>
</div>
<div class="order-descript-content">
{{ el.payAmount | fomatFloat }}
......@@ -216,7 +216,6 @@
</el-table-column>
</el-table>
</div>
</div>
<el-pagination
v-if="params.total > 0"
:page-sizes="[20, 40, 60, 80]"
......@@ -230,6 +229,7 @@
style="margin-top: 20px; text-align: right"
></el-pagination>
</div>
</div>
</template>
<script>
......@@ -310,12 +310,12 @@ export default {
this.params.channelType = channel[this.tab];
this.getTableData();
// if(this.params.channelType == 3) {
// let screenHeight = document.documentElement.clientHeight - 580 + 'px';
// let screenHeight = document.documentElement.clientHeight - 540 + 'px';
// this.$nextTick(() => {
// this.maxHeight = screenHeight;
// });
// }else {
let screenHeight = document.documentElement.clientHeight - 375 + 'px';
let screenHeight = document.documentElement.clientHeight - 325 + 'px';
this.$nextTick(() => {
this.maxHeight = screenHeight;
});
......@@ -326,14 +326,14 @@ export default {
// if(this.params.channelType == 3) {
// window.onresize = () => {
// return (() => {
// let screenHeight = document.documentElement.clientHeight - 580 + 'px';
// let screenHeight = document.documentElement.clientHeight - 540 + 'px';
// that.maxHeight = screenHeight;
// })();
// };
// }else{
window.onresize = () => {
return (() => {
let screenHeight = document.documentElement.clientHeight - 375 + 'px';
let screenHeight = document.documentElement.clientHeight - 325 + 'px';
that.maxHeight = screenHeight;
})();
};
......
......@@ -125,6 +125,7 @@ const urlConfig = {
frozenMemberExportExcel: '/api-admin/frozen-member-export-excel',// 异常会员搜索结果导出
cliqueMemberRelation: '/api-member/clique-member-relation',//判断是否有展示会员导入的权限 1不可,2,null可
weChantToPos: '/api-member/member-change-wechat-member-pos'
}
const defaultUrl = Object.assign({}, urlConfig);
......
......@@ -72,7 +72,10 @@
> </el-table-column>
<el-table-column label="基本信息">
<div slot-scope="{ row }" class="customer-info-cell">
<img :src="row.thirdImgUrl||require('../../../static/img/default.png')" alt="">
<img v-if="row.thirdImgUrl" :src="row.thirdImgUrl" class="customer-icon" alt="">
<svg v-else aria-hidden="true" class="customer-icon">
<use xlink:href="#icon-user-default"></use>
</svg>
<p class="memberName">
{{ row.memberName | formatMember }}
</p>
......@@ -179,7 +182,7 @@ export default { ...memberReturn };
.customer-info-cell {
display: flex;
align-items: center;
img {
.customer-icon {
display: block;
width: 60px;
height: 60px;
......
......@@ -141,9 +141,6 @@ export default {
}
},
filters: {
defaultImg: val => {
if(!val) return './static/img/default.png';
},
formatColorSize: val => {
let temp = '';
if(val) {
......
......@@ -108,7 +108,12 @@
<el-table-column prop="clerkImageUrl" label="导购信息" width="260px">
<template slot-scope="scope">
<div class="record-clerk">
<span class="record-clerkimg"><img style="vertical-align: middle" width="60" height="60" :src="scope.row.clerkImageUrl | defaultImg" alt=""></span>
<span class="record-clerkimg">
<img v-if="scope.row.clerkImageUrl" style="vertical-align: middle" width="60" height="60" :src="scope.row.clerkImageUrl" alt="">
<svg v-else aria-hidden="true" width="60px" height="60px">
<use xlink:href="#icon-user-default"></use>
</svg>
</span>
<span class="record-clerkname">{{ scope.row.clerkName }}<br>{{ scope.row.clerkCode }}</span>
</div>
</template>
......@@ -164,7 +169,11 @@
<el-table-column prop="productName" label="商品信息" width="200px">
<template slot-scope="scope">
<div class="record-info">
<div class="record-infoimg"><img width="60" height="60" src="/static/img/default.png" alt=""></div>
<div class="record-infoimg">
<svg aria-hidden="true" width="60px" height="60px">
<use xlink:href="#icon-user-default"></use>
</svg>
</div>
<div class="record-infocontent">
<div>{{ scope.row.productName }}</div>
<div>{{ scope.row.productCode }}</div>
......
......@@ -60,12 +60,12 @@
>
<div class="pointer">
<div class="singelinfo">
<div class="singelinfo-img"><img
width="100"
height="100"
:src="scope.row.thirdImgUrl ? scope.row.thirdImgUrl : './static/img/default.png'"
alt=""
></div>
<div class="singelinfo-img">
<img v-if="scope.row.thirdImgUrl" width="100" height="100" :src="scope.row.thirdImgUrl" alt="">
<svg v-else aria-hidden="true" width="100px" height="100px">
<use xlink:href="#icon-user-default"></use>
</svg>
</div>
<div class="singelinfo-content pLeft10 pRight10">
<span class="lheigth0">{{ scope.row.memberName }}
<span
......@@ -104,13 +104,12 @@
<a class="singelinfo-jlitem">卡券记录 ({{ singleInfo.couponCount }})</a>
</div>
</div>
<span slot="reference" class="member-span"><img
class="tablecontent-cellimg mr6"
width="60"
height="60"
:src="scope.row.thirdImgUrl ? scope.row.thirdImgUrl : './static/img/default.png'"
alt=""
></span>
<span slot="reference" class="member-span">
<img v-if="scope.row.thirdImgUrl" class="tablecontent-cellimg mr6" width="60" height="60" :src="scope.row.thirdImgUrl" alt="">
<svg v-else aria-hidden="true" class="tablecontent-cellimg mr6" width="60px" height="60px">
<use xlink:href="#icon-user-default"></use>
</svg>
</span>
</el-popover>
<span class="fix-block">{{scope.row.memberName}}</span>
</div>
......@@ -159,10 +158,10 @@
:key="index"
>
<div class="basic-info">
<img
:src="item.thirdImgUrl ? item.thirdImgUrl : './static/img/default.png'"
class="list-img"
>
<img v-if="item.thirdImgUrl" :src="item.thirdImgUrl" class="list-img">
<svg v-else aria-hidden="true" class="list-img">
<use xlink:href="#icon-user-default"></use>
</svg>
<span class="txt">{{item.memberName}}</span>
</div>
<i
......
......@@ -5,7 +5,6 @@ import {
checkSuccess
} from "../../../../../static/js/checkStatus";
import authMethods from "@/mixins/auth";
import defaultImg from "../../../../../static/img/default.png";
import { formatLongTime, paddingBorth } from "@/utils/utils";
import FreezeDialog from "../../components/dialog/freeze.vue";
import MemberFieldsDialog from "../../components/dialog/fieldsSettingDialog.vue";
......@@ -76,7 +75,6 @@ export default {
},
dialogMemberFieldVisible: false,
dialogExportFieldVisible: false,
defaultImg,
settingType: 0, // 0未查询 1已设置 2未设置
selectPage: {
type: 0,
......
......@@ -114,7 +114,10 @@
class="basic-info-table"
@click.native="linkDetail(row.memberId)"
>
<img :src="row.thirdImgUrl || defaultImg" class="basic-img" />
<img v-if="row.thirdImgUrl" :src="row.thirdImgUrl" class="basic-img" />
<svg v-else aria-hidden="true" class="basic-img">
<use xlink:href="#icon-user-default"></use>
</svg>
<div>
<div class="member-name">
......
......@@ -263,12 +263,12 @@
>
<template slot-scope="scope">
<div class="record-info">
<div class="record-infoimg"><img
width="60"
height="60"
:src="scope.row.imageUrl ? scope.row.imageUrl : './static/img/default.png'"
alt=""
></div>
<div class="record-infoimg">
<img v-if="scope.row.imageUrl" width="60" height="60" :src="scope.row.imageUrl" alt="">
<svg v-else aria-hidden="true" width="60px" height="60px">
<use xlink:href="#icon-user-default"></use>
</svg>
</div>
<div class="record-infocontent">
<div>{{ scope.row.productName }}</div>
<div>{{ scope.row.productCode }}</div>
......
......@@ -93,7 +93,7 @@ export default {
.table-colum-wrap {
display: flex;
flex-wrap: wrap;
width: 100%;
width: 105%;
.table-colum-item {
flex: 25%;
line-height: 35px;
......
......@@ -5,7 +5,6 @@ import {
checkSuccess
} from "../../../../../static/js/checkStatus";
import authMethods from "@/mixins/auth";
import defaultImg from "../../../../../static/img/default.png";
import { formatLongTime,paddingBorth } from "@/utils/utils";
import FreezeDialog from "../../components/dialog/freeze.vue";
import MemberFieldsDialog from "../../components/dialog/fieldsSettingDialog.vue";
......@@ -53,7 +52,6 @@ export default {
},
dialogMemberFieldVisible: false,
dialogExportFieldVisible: false,
defaultImg,
settingType: 0, // 0未查询 1已设置 2未设置
selectPage: {
type: 0,
......
......@@ -110,7 +110,10 @@
class="basic-info-table"
@click.native="linkDetail(row.memberId)"
>
<img :src="row.thirdImgUrl || defaultImg" class="basic-img" />
<img v-if="row.thirdImgUrl" :src="row.thirdImgUrl" class="basic-img" />
<svg v-else aria-hidden="true" class="basic-img">
<use xlink:href="#icon-user-default"></use>
</svg>
<div>
<div class="member-name">
......
......@@ -5,7 +5,6 @@ import {
checkSuccess
} from "../../../../../static/js/checkStatus";
import authMethods from "@/mixins/auth";
import defaultImg from "../../../../../static/img/default.png";
import ImportDialog from "@/components/allCustomers/components/importDialog.vue";
import { formatLongTime } from "@/utils/utils";
export default {
......@@ -23,7 +22,6 @@ export default {
data() {
return {
dialogImportVisible: false,
defaultImg,
searchData: {
pageSize: 20,
currentPage: 1,
......
......@@ -41,7 +41,10 @@
<!-- 基本信息 -->
<el-row type="flex" align="middle" class="basic-info-table"
@click.native="linkDetail(row.memberId)">
<img :src="row.thirdImgUrl || defaultImg" class="basic-img" />
<img v-if="row.thirdImgUrl" :src="row.thirdImgUrl" class="basic-img" />
<svg v-else aria-hidden="true" class="basic-img">
<use xlink:href="#icon-user-default"></use>
</svg>
<div>
<div class="member-name">
<span v-if="row.memberName">{{ row.memberName }}</span>
......@@ -98,7 +101,10 @@
</el-row>
<div class="selected-list">
<div class="selected-item" v-for="item in multipleList" :key="item">
<img :src="item.thirdImgUrl || defaultImg" class="user-header" />
<img v-if="item.thirdImgUrl" :src="item.thirdImgUrl || defaultImg" class="user-header" />
<svg v-else aria-hidden="true" class="user-header">
<use xlink:href="#icon-user-default"></use>
</svg>
<div class="user-name">
<span v-if="item.memberName">{{ item.memberName }}</span>
<span class="nick-name" v-if="item.nickName"
......
......@@ -5,7 +5,6 @@ import {
checkSuccess
} from "../../../../../static/js/checkStatus";
import authMethods from "@/mixins/auth";
import defaultImg from "../../../../../static/img/default.png";
import ImportDialog from "@/components/allCustomers/components/importDialog.vue";
import { formatLongTime, paddingBorth } from "@/utils/utils";
import {dateformat} from '@/utils/formatTime';
......@@ -65,7 +64,6 @@ export default {
}
],
dialogImportVisible: false,
defaultImg,
searchData: {
pageSize: 20,
currentPage: 1,
......
......@@ -48,7 +48,10 @@
class="basic-info-table"
@click.native="linkDetail(row.memberId)"
>
<img :src="row.thirdImgUrl || defaultImg" class="basic-img" />
<img v-if="row.thirdImgUrl" :src="row.thirdImgUrl" class="basic-img" />
<svg v-else aria-hidden="true" class="basic-img">
<use xlink:href="#icon-user-default"></use>
</svg>
<div>
<div class="member-name">
<span v-if="row.memberName">{{ row.memberName }}</span>
......
......@@ -3975,8 +3975,9 @@
.el-dialog__headerbtn:focus .el-dialog__close, .el-dialog__headerbtn:hover .el-dialog__close {
color: #2F54EB; }
.el-dialog__title {
line-height: 24px;
font-size: 18px;
line-height: 22px;
font-size: 16px !important;
font-weight: 500;
color: #303133; }
.el-dialog__body {
padding: 20px 20px 10px 20px;
......@@ -28292,7 +28293,7 @@
left: 0;
bottom: 0;
width: 100%;
height: 2px;
height: 1px;
background-color: #e4e7ed;
z-index: 1; }
.el-tabs__nav-wrap.is-scrollable {
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment