Commit 018f8483 authored by zhangjianguo's avatar zhangjianguo

解决冲突

parents cf507e6e 9a8824f9
...@@ -7,6 +7,7 @@ yarn-error.log* ...@@ -7,6 +7,7 @@ yarn-error.log*
/test/unit/coverage/ /test/unit/coverage/
/test/e2e/reports/ /test/e2e/reports/
selenium-debug.log selenium-debug.log
package-lock.json
# Editor directories and files # Editor directories and files
.idea .idea
......
...@@ -39,16 +39,9 @@ module.exports = function () { ...@@ -39,16 +39,9 @@ module.exports = function () {
} }
if (warnings.length) { if (warnings.length) {
console.log('')
console.log(chalk.yellow('To use this template, you must update following to modules:'))
console.log()
for (let i = 0; i < warnings.length; i++) { for (let i = 0; i < warnings.length; i++) {
const warning = warnings[i] const warning = warnings[i]
console.log(' ' + warning)
} }
console.log()
process.exit(1) process.exit(1)
} }
} }
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
}, },
"dependencies": { "dependencies": {
"axios": "^0.19.2", "axios": "^0.19.2",
"cos-js-sdk-v5": "^0.5.26",
"element-ui": "^2.13.1", "element-ui": "^2.13.1",
"js-md5": "^0.7.3", "js-md5": "^0.7.3",
"vue": "^2.5.2", "vue": "^2.5.2",
......
...@@ -11,18 +11,33 @@ export default { ...@@ -11,18 +11,33 @@ export default {
</script> </script>
<style> <style>
@import "//at.alicdn.com/t/font_1769104_02vy4h75rlau.css"; @import "//at.alicdn.com/t/font_1769104_qg9btfnng5.css";
html, html,
body { body {
margin: 0; margin: 0;
padding: 0; padding: 0;
height: 100%; height: 100%;
} }
p{ *{
margin:0; margin:0;
padding:0; padding:0;
} }
#app { #app {
height: 100%; height: 100%;
} }
/*滚动条样式*/
::-webkit-scrollbar {/*滚动条整体样式*/
height: 5px;
width: 4px;
border-radius: 5px;
}
::-webkit-scrollbar-thumb {/*滚动条里面小方块*/
border-radius:5px!important;
background: #b5b5b5!important;
}
::-webkit-scrollbar-track {/*滚动条里面轨道*/
-webkit-box-shadow: inset 0 0 0 rgba(0,0,0,0.2)!important;
border-radius: 20px!important;
background: transparent!important;
}
</style> </style>
.basefix:after {
clear: both;
content: '.';
display: block;
height: 0;
overflow: hidden;
}
.f12 {
font-size: 12px;
font-family: "Microsoft YaHei"!important;
}
.f14 {
font-size: 14px;
}
.f20 {
font-size: 20px;
}
.f22 {
font-size: 22px;
}
.f40{
font-size: 40px;
}
.head-title{
font-size: 14px;
color:#303133;
padding: 18px 20px;
box-sizing: border-box;
background: #fff;
}
.w100{
width:100px;
}
<style>
.Forgetpassword .resHeader {
width: 100%;
height: 190px;
background-image: url("../assets/img/fpassword.png");
}
.Forgetpassword .resHeader .title {
height: 50px;
font-size: 26px;
width: 274px;
margin: 0 auto 5px;
display: flex;
flex-wrap: nowrap;
}
.Forgetpassword .resHeader .title div {
padding: 0 10px;
width: 125px;
}
.Forgetpassword .resHeader .title {
font-size: 26px;
color: #333;
padding-top: 75px;
text-align: center;
}
.Forgetpassword .regisLogo {
float: right;
height: 50px;
}
.Forgetpassword .regisLine {
height: 25px;
width: 1px !important;
background: rgb(68, 68, 68);
padding: 0px !important;
margin: 21px 0 0 10px;
}
.Forgetpassword .regisWelcome {
padding: 0 !important;
margin: 14px 0 0 10px;
}
.Forgetpassword .login {
color: #409EFF;
cursor: pointer;
}
.Forgetpassword .regisLogin {
color: rgb(125, 125, 125);
text-align: center;
margin-top: 15px;
}
.Forgetpassword .regisMain {
display: block;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
-ms-flex-preferred-size: auto;
flex-basis: auto;
overflow: auto;
box-sizing: border-box;
padding: 20px;
flex: 1;
}
.Forgetpassword .box-card {
width: 700px;
margin: 40px auto 0;
}
.Forgetpassword .box-card .el-input .el-input__inner {
height: 45px;
border-radius: 22.5px;
}
.Forgetpassword .box-card .el-form-item__content {
width: 420px;
}
.Forgetpassword .NextStep {
width: 300px;
text-align: left;
margin: 40px auto 20px;
}
.Forgetpassword .box-card .code .el-input__inner {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.Forgetpassword .box-card .code .el-input-group__append {
background-color: #007BFF;
color: #fff;
border-top-right-radius: 22.5px;
border-bottom-right-radius: 22.5px;
border: 1px solid #007BFF;
}
.Forgetpassword .el-footer {
color: #ACACAC;
text-align: center;
line-height: 60px;
background-color: #F6F6F6;
font-size: 14px;
}
.Forgetpassword .forgetBtn {
font-size: 16px;
width: 120px;
height: 45px;
border-radius: 23px;
}
</style>
<template>
<div class="Forgetpassword">
<div class="resHeader">
<div class="title">
<div>
<img src="../assets/img/logo.png" alt="" class="regisLogo" />
</div>
<div class="regisLine"></div>
<div class="regisWelcome">重置密码</div>
</div>
<div class="regisLogin" style="">
已有账号?<span class="login" @click="goLogin">登录</span>
</div>
</div>
<div class="regisMain" :style="{minHeight: Height+'px'}">
<div class="box-card">
<el-form :model="msg" :rules="rules" ref="msg" label-width="130px" style="padding:0 50px;">
<el-form-item label="手机号" prop="MobilePhone">
<el-input type="text" v-model="msg.MobilePhone" maxlength="20" placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="短信验证码" prop="ValidataCode" class="code" style="display:none;">
<el-input v-model="msg.ValidataCode" maxlength="6" type="text">
<template slot="append">获取短信验证码</template>
</el-input>
</el-form-item>
<el-form-item label="设置密码" prop="Password">
<el-input type="password" v-model="msg.Password" maxlength="20" placeholder="请输入密码" />
</el-form-item>
<el-form-item label="确认密码" prop="Password2">
<el-input type="password" v-model="msg.Password2" maxlength="20" placeholder="请再次输入密码" />
</el-form-item>
</el-form>
<div class="NextStep">
<button class="el-button el-button--primary forgetBtn" @click="submitForm('msg')">提交</button>
</div>
</div>
</div>
<div class="el-footer el-footer" style="height: 60px;">
<a target="_blank" style="text-decoration: none;">由微途科技提供技术支持</a>
</div>
</div>
</template>
<script>
export default {
data() {
let validataPwd = (rule, value, callback) => {
if (this.msg.Password == '') {
return callback(new Error('请输入密码'));
}
if (this.msg.Password.trim().length < 6 || this.msg.Password.trim().length > 15) {
return callback(new Error('密码应在6至15位之间'));
} else {
callback();
}
}
let validataPwd2 = (rule, value, callback) => {
if (this.msg.Password2 == '') {
return callback(new Error('请再次输入密码'));
}
if (this.msg.Password2.trim().length < 6 || this.msg.Password2.trim().length > 15) {
return callback(new Error('密码应在6至15位之间'));
}
if (this.msg.Password != this.msg.Password2) {
return callback(new Error('两次输入密码不一致!'));
} else {
callback();
}
}
return {
Height: 0,
msg: {
MobilePhone: '',
ValidataCode: '',
Password: '',
Password2: ''
},
rules: {
MobilePhone: [{
required: true,
message: "手机号不能为空",
trigger: "blur"
}],
// ValidataCode: [
// { required: true, message: "手机验证码不能为空", trigger: "blur" }
// ],
Password: [{
validator: validataPwd,
trigger: "blur",
required: true
}],
Password2: [{
validator: validataPwd2,
trigger: "blur",
required: true
}]
},
};
},
created() {
},
methods: {
submitForm(addMsg) {
//提交创建、修改表单
this.$refs[addMsg].validate(valid => {
if (valid) {
this.resetInfo();
} else {
return false;
}
});
},
//提交重置
resetInfo() {
this.apipost("/api/Tenant/UpdateTenantPwd", this.msg, res => {
if (res.data.resultCode == 1) {
this.Success("修改密码成功!");
this.goLogin();
} else {
this.Info(res.data.message);
}
})
},
//跳转登录
goLogin() {
this.$router.push({
name: 'login',
query: {
blank: "y"
}
});
},
},
mounted() {
this.Height = document.documentElement.clientHeight - 250;
//监听浏览器窗口变化 
window.onresize = () => {
this.Height = document.documentElement.clientHeight - 250
}
}
};
</script>
This diff is collapsed.
...@@ -163,17 +163,17 @@ ...@@ -163,17 +163,17 @@
<div class="el-card box-card is-always-shadow"> <div class="el-card box-card is-always-shadow">
<div class="el-card__body"> <div class="el-card__body">
<img alt class="logo" src="../assets/img/logo.png" /> <img alt class="logo" src="../assets/img/logo.png" />
<el-form class="el-form login-form" :model="msg" :rules="rules" ref="msg" label-width="0" > <el-form class="el-form login-form" :model="msg" :rules="rules" ref="msg" label-width="0">
<div class="form-title">管理员登录</div> <div class="form-title">管理员登录</div>
<el-form-item label="" prop="Account"> <el-form-item label="" prop="Account">
<el-input v-model="msg.Account" placeholder="请输入用户名" maxlength="25"/> <el-input v-model="msg.Account" placeholder="请输入用户名" maxlength="25" />
</el-form-item> </el-form-item>
<el-form-item label="" prop="Password"> <el-form-item label="" prop="Password">
<el-input v-model="msg.Password" placeholder="请输入密码" maxlength="25"/> <el-input v-model="msg.Password" placeholder="请输入密码" maxlength="25" />
</el-form-item> </el-form-item>
<el-form-item label="" prop="ValidataCode"> <el-form-item label="" prop="ValidataCode">
<el-input v-model="msg.ValidataCode" style="width:140px;" placeholder="验证码" maxlength="25"/> <el-input v-model="msg.ValidataCode" style="width:140px;" placeholder="验证码" maxlength="25" />
<img class="pic-captcha" src="/web/index.php?r=site%2Fpic-captcha&amp;v=5e9e7ef6a93ac6.36592545" /> <img class="pic-captcha" src="/web/index.php?r=site%2Fpic-captcha&amp;v=5e9e7ef6a93ac6.36592545" />
</el-form-item> </el-form-item>
<div class="el-form-item el-form-item--small"> <div class="el-form-item el-form-item--small">
<div class="el-form-item__content" style="margin-left: 0px;"> <div class="el-form-item__content" style="margin-left: 0px;">
...@@ -199,8 +199,8 @@ ...@@ -199,8 +199,8 @@
</el-form> </el-form>
<img alt class="logo" /> <img alt class="logo" />
<div class="register_box"> <div class="register_box">
<span class="register">忘记密码?</span> <span class="register" @click="CommonJump('Forgetpassword',{blank:'y'})">忘记密码?</span>
<span class="register" @click="goLogin()" style="border-left: 1px solid rgb(169, 169, 169);">注册账号</span> <span class="register" @click="CommonJump('Register',{blank:'y'})" style="border-left: 1px solid rgb(169, 169, 169);">注册账号</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -220,15 +220,21 @@ ...@@ -220,15 +220,21 @@
ValidataCode: '', //验证码 ValidataCode: '', //验证码
}, },
rules: { rules: {
Account: [ Account: [{
{ required: true, message: "请输入用户名", trigger: "blur" } required: true,
], message: "请输入用户名",
Password: [ trigger: "blur"
{ required: true, message: "请输入密码", trigger: "blur" } }],
], Password: [{
ValidataCode: [ required: true,
{ required: true, message: "请输入右侧图片上的文字", trigger: "blur" } message: "请输入密码",
] trigger: "blur"
}],
ValidataCode: [{
required: true,
message: "请输入右侧图片上的文字",
trigger: "blur"
}]
}, },
}; };
}, },
...@@ -248,29 +254,30 @@ ...@@ -248,29 +254,30 @@
this.Info("请输入验证码!") this.Info("请输入验证码!")
} }
this.apipost("/api/Tenant/Login", this.msg, res => { this.apipost("/api/Tenant/Login", this.msg, res => {
console.log("res", res); if (res.data.resultCode == 1) {
var userData = res.data.data;
var userJson = JSON.stringify(userData);
localStorage.mall_userInfo = userJson;
this.$router.push({
path: "/index"
});
}
else
{
this.Info(res.data.message);
}
}) })
}, },
submitForm(msg){ submitForm(msg) {
//提交创建、修改表单 //提交创建、修改表单
this.$refs[msg].validate(valid => { this.$refs[msg].validate(valid => {
if (valid) { if (valid) {
this.login(); this.login();
} else { } else {
return false; return false;
}
});
},
//跳转注册
goLogin() {
this.$router.push({
name: 'Register',
query: {
blank: "y"
} }
}); });
}, },
}, },
mounted() { mounted() {
if (!this.isOnline()) { if (!this.isOnline()) {
......
This diff is collapsed.
<template>
<div class="usersList">
<div class="head-title">
用户购买记录
<el-button @click="dialogVisible=true" style="float:right;margin-top: -5px;" size="small" type="primary">批量导出</el-button>
</div>
<div class="content">
<div>
<el-date-picker
size="small"
v-model="value"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
<div style="margin-left:20px" class="searchInput">
<el-input style="display:inline-block;width:225px;height:30px"
placeholder="请输入内容"
v-model="value"
size="small"
clearable>
</el-input>
<span class="el-icon-search" style="color:#979dad;font-size:14px;position:relative;top:1px"></span>
</div>
</div>
<el-table v-loading="loading"
:data="tableData"
border
style="width: 100%;margin:20px 0">
<el-table-column
prop="ID"
label="ID">
</el-table-column>
<el-table-column
prop="address"
width="280"
label="订单号">
<template slot-scope="scope">
<div class="app-image" style="background-image: url('https://wx.qlogo.cn/mmopen/vi_32/HO8Q9ibH7UtSFzHs67f0MH6VWjftiboELYLBya5OxpZkHDlicLMq39gxRHS4NhOG1AUepQ13JdUyrT7eM52u6hAsg/132');
background-size: cover; background-position: center center; width: 50px; height: 50px; border-radius: 0%; float: left; margin-right: 8px;"></div>
<div flex="dir:left cross:center">易飞易&港中旅小李15351281772</div>
<img style="width:24px;height:24px" src="../../assets/img/userman/wx.png" alt="" class="platform-img">
<button type="button" class="el-button el-button--success" style="float: right; padding: 5px !important;">
<span>显示OpenId</span>
</button>
<div>ow_7I5dE_g9Fe1BuBPKdk8RNtEj0</div>
</template>
</el-table-column>
<el-table-column
prop="name"
label="昵称">
</el-table-column>
<el-table-column
prop="name"
label="支付金额">
</el-table-column>
<el-table-column
prop="name"
label="购买情况">
<template slot-scope="scope">
<span class="blue">0</span>
</template>
</el-table-column>
<el-table-column
prop="name"
label="支付时间">
<template slot-scope="scope">
<span class="blue">0</span>
</template>
</el-table-column>
</el-table>
<el-pagination style="text-align:right"
background
@current-change="handleCurrentChange"
:page-size="msg.pageSize"
layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
<!-- 选择导出信息 -->
<el-dialog
title="选择导出信息"
:visible.sync="dialogVisible"
width="960px">
<el-form style="border: 1px solid #F0F2F7;" :model="addMsg" ref="addMsg" label-width="100px">
<div style="box-sizing: border-box;background-color: #F3F5F6;width: 100%;padding-left: 20px;height: 50px;line-height: 50px;">
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
</div>
<div style="margin: 15px 0;"></div>
<div style="padding: 10px 25px 20px;">
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
<el-checkbox style="margin-bottom:10px" v-for="city in cities" :label="city" :key="city">{{city}}</el-checkbox>
</el-checkbox-group>
</div>
</el-form>
<div style="text-align:right;margin-top:20px">
<el-button size="small" type="primary" @click="dialogVisible = false">导出</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
loading:false,
checkAll: false,
checkedCities: ['上海', '北京'],
cities: ['上海', '北京', '广州', '深圳'],
cityOptions: ['上海', '北京', '广州', '深圳'],
isIndeterminate: true,
addMsg:{},
dialogVisible:false,
value:'',
options:[],
tableData:[
{ID:'111'}
],
msg:{
pageIndex:1,
pageSize:15,
},
total:0,
};
},
created() {
},
methods: {
handleCheckAllChange(val) {
this.checkedCities = val ? this.cityOptions : [];
this.isIndeterminate = false;
},
handleCheckedCitiesChange(value) {
let checkedCount = value.length;
this.checkAll = checkedCount === this.cities.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
},
handleCurrentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
getList(){
this.loading=true;
},
},
mounted() {
}
};
</script>
<style>
.usersList .blue{
color:#409EFF;
}
.usersList .content .searchInput{
border: 1px solid #DCDFE6;
border-radius: 4px;
}
.usersList .content .searchInput .el-input__inner{
border:none;outline:none;
height: 30px;
line-height: 30px;
}
.usersList .content .searchInput{
line-height: normal;
display: inline-table;
width: 100%;
border-collapse: separate;
border-spacing: 0;
width:250px;
margin-right: 20px;
}
.usersList .content{
background: #fff;
margin-top:10px;
padding: 20px;
box-sizing: border-box;
}
</style>
<template>
<div class="verificationMember usersList">
<div class="head-title">
会员等级
<el-button @click="goUrl" style="float:right;margin-top: -5px;" size="small" type="primary">添加会员等级</el-button>
</div>
<div class="content">
<div>
<div class="searchInput">
<el-input style="display:inline-block;width:225px;height:30px"
placeholder="请输入会员名称搜索"
v-model="value"
size="small"
clearable>
</el-input>
<span class="el-icon-search" style="color:#979dad;font-size:14px;position:relative;top:1px"></span>
</div>
</div>
<el-table
:data="tableData"
border
style="width: 100%;margin:20px 0">
<el-table-column
prop="ID"
label="ID">
</el-table-column>
<el-table-column
prop="address"
width="280"
label="会员等级">
<template slot-scope="scope">
<div class="app-image" style="background-image: url('https://wx.qlogo.cn/mmopen/vi_32/HO8Q9ibH7UtSFzHs67f0MH6VWjftiboELYLBya5OxpZkHDlicLMq39gxRHS4NhOG1AUepQ13JdUyrT7eM52u6hAsg/132');
background-size: cover; background-position: center center; width: 50px; height: 50px; border-radius: 0%; float: left; margin-right: 8px;"></div>
<div flex="dir:left cross:center">易飞易&港中旅小李15351281772</div>
<img style="width:24px;height:24px" src="../../assets/img/userman/wx.png" alt="" class="platform-img">
<button type="button" class="el-button el-button--success" style="float: right; padding: 5px !important;">
<span>显示OpenId</span>
</button>
<div>ow_7I5dE_g9Fe1BuBPKdk8RNtEj0</div>
</template>
</el-table-column>
<el-table-column
prop="name"
label="会员名称">
</el-table-column>
<el-table-column
prop="name"
label="折扣">
</el-table-column>
<el-table-column
prop="name"
label="购买价格(元)">
<template slot-scope="scope">
<span class="blue">0</span>
</template>
</el-table-column>
<el-table-column
prop="name"
label="累计金额升级条件(元)">
<template slot-scope="scope">
<span class="blue">0</span>
</template>
</el-table-column>
<el-table-column
prop="name"
label="启用状态">
<template slot-scope="scope">
<span class="blue">0</span>
</template>
</el-table-column>
<el-table-column
prop="address"
width="200"
label="操作">
<template slot-scope="scope">
<img style="width:32px;height:32px" src="../../assets/img/userman/edit.png" alt="">
<img style="width:32px;height:32px;margin:0 10px" src="../../assets/img/userman/integral.png" alt="">
<img style="width:32px;height:32px" src="../../assets/img/userman/balance.png" alt="">
</template>
</el-table-column>
</el-table>
<el-pagination style="text-align:right"
background
@current-change="handleCurrentChange"
:page-size="msg.pageSize"
layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
</div>
</template>
<script>
export default {
data() {
return {
addMsg:{},
dialogVisible:false,
value:'',
options:[],
tableData:[
{ID:'111'}
],
msg:{
pageIndex:1,
pageSize:15,
},
total:0,
rules: {
name: [
{ required: true, message: '新手机号', trigger: 'blur' }
],
},
};
},
created() {
},
methods: {
goUrl(){
this.$router.push({
name: 'setMember',
query: {
blank: "y"
}
});
},
handleCurrentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
getList(){
},
},
mounted() {
}
};
</script>
<style>
.usersList .blue{
color:#409EFF;
}
.usersList .content .searchInput{
border: 1px solid #DCDFE6;
border-radius: 4px;
}
.usersList .content .searchInput .el-input__inner{
border:none;outline:none;
height: 30px;
line-height: 30px;
}
.usersList .content .searchInput{
line-height: normal;
display: inline-table;
width: 100%;
border-collapse: separate;
border-spacing: 0;
width:250px;
margin-right: 20px;
}
.usersList .content{
background: #fff;
margin-top:10px;
padding: 20px;
box-sizing: border-box;
}
</style>
<template>
<div class="setMember usersList">
<div class="head-title">
<span @click="goUrl" class="blue">会员等级</span> / 会员设置
</div>
<div class="content">
<el-form :model="addMsg" :rules="rules" ref="addMsg" label-width="150px">
<el-form-item label="会员等级" prop="name">
<el-select style="width:293px;" size="small" v-model="addMsg.name" placeholder="请选择活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="等级名称" prop="name">
<el-input style="width:293px;" size="small" v-model="addMsg.name"></el-input>
</el-form-item>
<el-form-item class="discount commonLabel" label="折扣" prop="name">
<el-tooltip class="item" effect="dark" content="请输入0.1~10之间的数字" placement="top-start">
<i class="elzk el-tooltip el-icon-info"></i>
</el-tooltip>
<el-input style="width:293px;" type="number" min="0.1" size="small" placeholder="请输入内容" v-model="addMsg.name" class="input-with-select">
<el-button slot="append"></el-button>
</el-input>
</el-form-item>
<el-form-item label="会员状态" prop="name">
<el-switch
v-model="addMsg.name"
active-color="#409EFF"
active-value="100"
inactive-value="0">
</el-switch>
</el-form-item>
<el-form-item label="会员图标" prop="name">
<el-button size="small">选择文件</el-button>
<div><img style="width:80px;height:80px" src="../../assets/img/default.png" alt=""></div>
</el-form-item>
<el-form-item label="会员背景色" prop="name">
<el-button size="small">选择文件</el-button>
<div><img style="width:80px;height:80px" src="../../assets/img/default.png" alt=""></div>
</el-form-item>
<el-form-item label="累计金额自动升级">
<el-switch
v-model="addMsg.name"
active-color="#409EFF"
active-value="100"
inactive-value="0">
</el-switch>
</el-form-item>
<el-form-item class="commonLabel" label="升级条件" prop="name">
<el-input style="width:293px;" type="number" min="0.1" size="small" placeholder="请输入内容" v-model="addMsg.name" class="input-with-select">
<template slot="prepend">累计完成订单金额满</template>
<el-button slot="append"></el-button>
</el-input>
</el-form-item>
<el-form-item label="会员是否可购买">
<el-switch
v-model="addMsg.name"
active-color="#409EFF"
active-value="100"
inactive-value="0">
</el-switch>
</el-form-item>
<el-form-item class="commonLabel" label="购买价格" prop="name">
<el-input style="width:293px;" type="number" min="0.1" size="small" placeholder="请输入购买价格" v-model="addMsg.name" class="input-with-select">
<el-button slot="append"></el-button>
</el-input>
</el-form-item>
<el-form-item label="h会员权益(多条)">
<div style="width:700px;">
<el-table class="setTable"
:data="tableData"
border
style="margin-bottom:20px">
<el-table-column
prop="ID"
width="180px"
label="权益标题">
<template slot-scope="scope">
<el-input style="width:159px" size="small" v-model="input" placeholder="请输入内容"></el-input>
</template>
</el-table-column>
<el-table-column
prop="address"
width="180px"
label="权益图标">
<template slot-scope="scope">
<el-button size="small">选择图片</el-button>
<img style="margin-left: 10px;width:50px;height:50px" src="../../assets/img/default.png" alt="">
</template>
</el-table-column>
<el-table-column
prop="address"
width="500px"
label="权益内容">
<template slot-scope="scope">
<el-input
type="textarea"
:rows="2"
placeholder="请输入内容"
v-model="textarea">
</el-input>
</template>
</el-table-column>
<el-table-column
prop="address"
width="80px"
label="操作">
<template>
<el-tooltip class="item" effect="dark" content="删除" placement="top-start">
<img style="width:32px;height:32px" src="../../assets/img/userman/del.png" alt="">
</el-tooltip>
</template>
</el-table-column>
</el-table>
</div>
<div>
<i class="el-icon-plus" style="font-weight: bolder;margin-left:5px;color:#409EFF"></i>
<span style="color: rgb(53, 53, 53);font-size: 14px;">新增权益</span>
</div>
</el-form-item>
<el-form-item label="会员规则" prop="name">
</el-form-item>
</el-form>
</div>
<div style="margin-top:20px">
<el-button size="small" type="primary" @click="dialogVisible = false">保存</el-button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
val:'',
addMsg:{},
dialogVisible:false,
value:'',
options:[],
tableData:[
{ID:'111'}
],
msg:{
pageIndex:1,
pageSize:15,
},
total:0,
rules: {
name: [
{ required: true, message: '新手机号', trigger: 'blur' }
],
},
};
},
created() {
},
methods: {
goUrl(){
this.$router.push({
name: 'MembershipGrade',
query: {
blank: "y"
}
});
},
handleCurrentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
getList(){
},
},
mounted() {
}
};
</script>
<style>
.setMember .setTable .el-table__body .cell{
display: flex;
align-items: center;
}
.setMember .commonLabel .el-form-item__label{
margin-top: -4px;
}
.setMember .discount .el-form-item__label{
padding-right: 30px;
margin-top: -4px;
}
.setMember .el-form-item .elzk{
position: absolute;
left: -25px;
top:8px;
}
.setMember .el-form-item{
position: relative;
}
.usersList .blue{
color:#409EFF;
}
.usersList .content{
background: #fff;
margin-top:10px;
padding: 20px;
box-sizing: border-box;
}
</style>
This diff is collapsed.
<template>
<div class="verificationMember usersList">
<div class="head-title">
核销员
<el-button @click="dialogVisible=true" style="float:right;margin-top: -5px;" size="small" type="primary">添加核销员</el-button>
</div>
<div class="content">
<div>
<el-select class="w100" style="margin-right: 10px;" v-model="value" size="small" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select class="w100" style="margin-right: 10px;" v-model="value" size="small" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<div class="searchInput">
<el-input style="display:inline-block;width:225px;height:30px"
placeholder="请输入用户昵称搜索"
v-model="value"
size="small"
clearable>
</el-input>
<span class="el-icon-search" style="color:#979dad;font-size:14px;position:relative;top:1px"></span>
</div>
</div>
<el-table
:data="tableData"
v-loading="loading"
border
style="width: 100%;margin:20px 0">
<el-table-column
prop="ID"
label="用户ID">
</el-table-column>
<el-table-column
prop="address"
width="280"
label="用户">
<template slot-scope="scope">
<div class="app-image" style="background-image: url('https://wx.qlogo.cn/mmopen/vi_32/HO8Q9ibH7UtSFzHs67f0MH6VWjftiboELYLBya5OxpZkHDlicLMq39gxRHS4NhOG1AUepQ13JdUyrT7eM52u6hAsg/132');
background-size: cover; background-position: center center; width: 50px; height: 50px; border-radius: 0%; float: left; margin-right: 8px;"></div>
<div flex="dir:left cross:center">易飞易&港中旅小李15351281772</div>
<img style="width:24px;height:24px" src="../../assets/img/userman/wx.png" alt="" class="platform-img">
<button type="button" class="el-button el-button--success" style="float: right; padding: 5px !important;">
<span>显示OpenId</span>
</button>
<div>ow_7I5dE_g9Fe1BuBPKdk8RNtEj0</div>
</template>
</el-table-column>
<el-table-column
prop="name"
label="所属门店">
</el-table-column>
<el-table-column
prop="name"
label="核销订单数">
</el-table-column>
<el-table-column
prop="name"
label="核销总额">
<template slot-scope="scope">
<span class="blue">0</span>
</template>
</el-table-column>
<el-table-column
prop="name"
label="核销卡券数">
<template slot-scope="scope">
<span class="blue">0</span>
</template>
</el-table-column>
<el-table-column
prop="address"
width="200"
label="操作">
<template slot-scope="scope">
<img style="width:32px;height:32px" src="../../assets/img/userman/edit.png" alt="">
<img style="width:32px;height:32px;margin:0 10px" src="../../assets/img/userman/integral.png" alt="">
<img style="width:32px;height:32px" src="../../assets/img/userman/balance.png" alt="">
</template>
</el-table-column>
</el-table>
<el-pagination style="text-align:right"
background
@current-change="handleCurrentChange"
:page-size="msg.pageSize"
layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
<!-- 选择导出信息 -->
<el-dialog
title="设置核销员"
:visible.sync="dialogVisible"
width="600px">
<el-form :model="addMsg" :rules="rules" ref="addMsg" label-width="100px">
<el-form-item label="门店选择" prop="name">
<el-input style="width:230px" size="small" v-model="addMsg.name"></el-input>
</el-form-item>
<el-form-item label="昵称搜索" prop="name">
<el-input style="width:230px;" size="small" v-model="addMsg.name"></el-input>
</el-form-item>
</el-form>
<div style="text-align:right;margin-top:20px">
<el-button size="small" @click="dialogVisible = false">取 消</el-button>
<el-button size="small" type="primary" @click="dialogVisible = false">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
loading:false,
addMsg:{},
dialogVisible:false,
value:'',
options:[],
tableData:[
{ID:'111'}
],
msg:{
pageIndex:1,
pageSize:15,
},
total:0,
rules: {
name: [
{ required: true, message: '新手机号', trigger: 'blur' }
],
},
};
},
created() {
},
methods: {
handleCurrentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
getList(){
},
},
mounted() {
}
};
</script>
<style>
.usersList .blue{
color:#409EFF;
}
.usersList .content .searchInput{
border: 1px solid #DCDFE6;
border-radius: 4px;
}
.usersList .content .searchInput .el-input__inner{
border:none;outline:none;
height: 30px;
line-height: 30px;
}
.usersList .content .searchInput{
line-height: normal;
display: inline-table;
width: 100%;
border-collapse: separate;
border-spacing: 0;
width:250px;
margin-right: 20px;
}
.usersList .content{
background: #fff;
margin-top:10px;
padding: 20px;
box-sizing: border-box;
}
</style>
This diff is collapsed.
This diff is collapsed.
<style>
.zanTotalTop{
padding:18px 20px;
background: #fff;
border-bottom:1px solid #EBEEF5;
}
.zanIndex_Second{
background-color: #fff;
position: relative;
padding-bottom: 50px;
margin: 10px 0;
border: 1px solid #EBEEF5;
}
</style>
<template>
<div class="zanIndex">
<div class="zanTotalTop">数据概况</div>
<div class="zanIndex_Second">
<div class="selectDiv">
</div>
</div>
</div>
</template>
\ No newline at end of file
...@@ -55,6 +55,12 @@ export default { ...@@ -55,6 +55,12 @@ export default {
Vue.prototype.domainManager = function () { Vue.prototype.domainManager = function () {
let domainUrl = ''; let domainUrl = '';
domainUrl = "http://192.168.2.214:8200"; domainUrl = "http://192.168.2.214:8200";
// domainUrl = "https://localhost:5001";
domainUrl = "http://192.168.2.17:8088";
let javaUrldo = "";
// javaUrldo = locationName.indexOf('localhost') !== -1 || locationName.indexOf('viitto') !== -1 ? (locationName.indexOf('oytour') !== -1 ? "http://property.oytour.com" : "http://47.96.12.235:9001") : "http://192.168.2.17:8088";
javaUrldo = "http://192.168.2.17:8088";
let locationName = window.location.hostname; let locationName = window.location.hostname;
if (locationName.indexOf('testerp.oytour') !== -1) { if (locationName.indexOf('testerp.oytour') !== -1) {
domainUrl = "http://testapi.oytour.com"; domainUrl = "http://testapi.oytour.com";
...@@ -66,6 +72,8 @@ export default { ...@@ -66,6 +72,8 @@ export default {
DomainUrl: domainUrl, DomainUrl: domainUrl,
//常用提交数据URL //常用提交数据URL
PostUrl: domainUrl + "/api/common/post", PostUrl: domainUrl + "/api/common/post",
JavaLocalFileStreamDownLoadUrl: javaUrldo,
}; };
return obj; return obj;
}, },
...@@ -112,15 +120,76 @@ export default { ...@@ -112,15 +120,76 @@ export default {
Vue.prototype.isOnline = function () { Vue.prototype.isOnline = function () {
return process.env.NODE_ENV !== 'development'; return process.env.NODE_ENV !== 'development';
}, },
//文件类型数组
Vue.prototype.FileType = function () {
var fileTypeJson = {
//主地址npm
UserImg: "User", //用户相图片
//常用提交数据URL
GoodsImg: "Goods", //商品相关文件
};
return fileTypeJson;
},
//上传文件到云存储
Vue.prototype.UploadFileToTencent = function (path, fileObj, callback) {
//获取文件扩展名
var filename = fileObj.name;
var index = filename.lastIndexOf(".");
var suffix = filename.substr(index);
var timestamp1 = Date.parse(new Date());
var newFileName = '/Upload/' + path +"/"+ timestamp1 + "" + suffix;
var uploadMsg = {
Bucket: "viitto-1301420277",
Region: "ap-chengdu",
/* 存储桶所在地域,必须字段 */
SecretId: "AKIDDPnbIzi8C1eqEOPP8dw6MNAg9H9ldDKd",
SecretKey: "PdcLtOjslUzNFYdU4OSI1fKtdHpFT2Ob",
};
var COS = require('cos-js-sdk-v5');
var cos = new COS({
SecretId: uploadMsg.SecretId,
SecretKey: uploadMsg.SecretKey,
});
cos.putObject({
Bucket: uploadMsg.Bucket,
Region: uploadMsg.Region, //存储桶所在地域,必须字段
Key: newFileName, //文件名
StorageClass: 'STANDARD',
Body: fileObj, // 上传文件对象
onProgress: function (progressData) {}
}, function (err, data) {
if (data && data.statusCode == 200) {
var uploadResult = {
resultCode:1,
FileName: fileObj.name,
FileUrl: "http://"+data.Location
}
if (callback) {
callback(uploadResult);
}
} else {
/*上传文件异常*/
console.log(err || data);
}
});
},
//公用跳转
Vue.prototype.CommonJump = function(path,obj){
this.$router.push({
name: path,
query: obj
});
}
//HTTP提交数据 //HTTP提交数据
Vue.prototype.apipost = function (cmd, msg, successCall, faildCall, isOnline) { Vue.prototype.apipost = function (cmd, msg, successCall, faildCall, isOnline) {
if (msg == null || msg == "") { if (msg == null || msg == "") {
msg = {} msg = {}
} }
var apiurl = this.domainManager().DomainUrl+cmd; var apiurl = this.domainManager().DomainUrl + cmd;
var timestamp = (new Date()).valueOf(); var timestamp = (new Date()).valueOf();
this.apiurl = apiurl; this.apiurl = apiurl;
if (!localStorage.userInfo && localStorage.userInfo != "" && this.$route.path.toLowerCase() != "/login") { if (!localStorage.mall_userInfo && localStorage.mall_userInfo != "" && this.$route.path.toLowerCase() != "/login") {
this.$router.push({ this.$router.push({
path: '/login' path: '/login'
}) })
...@@ -128,7 +197,7 @@ export default { ...@@ -128,7 +197,7 @@ export default {
var token = ""; var token = "";
var key = ""; var key = "";
if (this.getLocalStorage() != null) { if (this.getLocalStorage() != null) {
token = this.getLocalStorage().token; token = this.getLocalStorage().Token;
key = this.getLocalStorage().SecretKey; key = this.getLocalStorage().SecretKey;
} }
var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase(); var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
...@@ -167,5 +236,53 @@ export default { ...@@ -167,5 +236,53 @@ export default {
} }
}, faildCall) }, faildCall)
} }
Vue.prototype.JavaGetLocalFile = function(cmd, msg, fileName, successCall) {
var apiurl = this.domainManager().JavaLocalFileStreamDownLoadUrl + cmd;
var timestamp = (new Date()).valueOf();
if (!localStorage.mall_userInfo && localStorage.mall_userInfo != "" && this.$route.path.toLowerCase() != "/login") {
this.$router.push({
path: '/login'
})
}
var token = "";
var key = "";
if (this.getLocalStorage() != null) {
token = this.getLocalStorage().Token;
key = this.getLocalStorage().SecretKey;
}
let mall_userInfo = localStorage.mall_userInfo ? JSON.parse(localStorage.mall_userInfo) : '';
var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
var md5Str = md5(`cmd=${cmd}&msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
let tempLanguage = 0;
if (localStorage.language && localStorage.language != '') {
if (localStorage.language == "zh-TW") {
tempLanguage = 1;
} else if (localStorage.language == "Japanese") {
tempLanguage = 2;
}
}
var postData = {
"msg": msg,
"timestamp": timestamp,
"token": token,
"sign": md5Str,
"languageId": tempLanguage,
"cmd": cmd,
}
this.$http.post(apiurl, postData, {
responseType: 'arraybuffer'
}).then((res) => {
let blob = new Blob([res.data], {
type: "application/vnd.ms-excel"
})
let url = URL.createObjectURL(blob);
let link = document.createElement('a');
link.href = url;
link.setAttribute("download", fileName);
document.body.appendChild(link);
link.click();
successCall(res);
}).catch(function(res) {});
}
} }
} }
...@@ -15,20 +15,66 @@ export default new Router({ ...@@ -15,20 +15,66 @@ export default new Router({
name: 'login', name: 'login',
component: resolve => require(['@/components/Login'], resolve), component: resolve => require(['@/components/Login'], resolve),
}, },
{
path:'/Forgetpassword',
name: 'Forgetpassword',
component: resolve => require(['@/components/Forgetpassword'], resolve),
},
{ {
path: '/Register', path: '/Register',
name: 'Register', name: 'Register',
component: resolve => require(['@/components/Register'], resolve), component: resolve => require(['@/components/Register'], resolve),
}, },
{ {
path: '/homeIndex', path: '/index',
name: 'homeIndex', name: 'index',
component: resolve => require(['@/components/homeIndex'], resolve), component: resolve => require(['@/components/index'], resolve),
}, },
{ {
path: '/basicSetUp', path: '/main',
name: 'basicSetUp', name: 'main',
component: resolve => require(['@/components/setup/basicSetUp'], resolve), component: resolve => require(['@/components/main'], resolve),
} children:[
{
path: '/zanIndex',
name: 'zanIndex',
component: resolve => require(['@/components/zanIndex'], resolve),
},
// 用户管理 用户列表
{
path: '/usersList',
name: 'usersList',
component: resolve => require(['@/components/UserMan/usersList'], resolve),
},
// 用户管理 核销员
{
path: '/verificationMember',
name: 'verificationMember',
component: resolve => require(['@/components/UserMan/verificationMember'], resolve),
},
// 用户管理 会员等级
{
path: '/MembershipGrade',
name: 'MembershipGrade',
component: resolve => require(['@/components/UserMan/MembershipGrade'], resolve),
},
// 用户管理 会员等级/会员设置
{
path: '/setMember',
name: 'setMember',
component: resolve => require(['@/components/UserMan/setMember'], resolve),
},
// 用户管理 会员等级/会员购买
{
path: '/MembersBuy',
name: 'MembersBuy',
component: resolve => require(['@/components/UserMan/MembersBuy'], resolve),
},
]
},
] ]
}) })
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