improve: 替换

This commit is contained in:
From-wh 2023-07-15 14:36:39 +08:00
parent f8b8b7b015
commit a2dfd2f806
25 changed files with 339 additions and 735 deletions

View File

@ -206,6 +206,28 @@
: ''
"
>
<el-table-column
width="50"
v-if="
[
'special',
'product',
'seckill',
'product_category',
'bargain',
'combination',
'advance',
'integral',
'news',
].includes(currenType)
"
>
<template slot-scope="scope">
<el-radio v-model="templateRadio" :label="scope.row.id" @change.native="getTemplateRow(scope.row)"
>&nbsp;</el-radio
>
</template>
</el-table-column>
<el-table-column
:label="item.title"
:width="item.width"
@ -287,7 +309,7 @@
<el-input v-model="customdate.url" placeholder="请输入跳转路径"></el-input>
</el-form-item> -->
<div class="mb30 radioGroup">
<el-radio-group v-model="customdate.status" @on-change="radioTap('customdate')">
<el-radio-group v-model="customdate.status" @input="radioTap('customdate')">
<el-radio :label="1">
<span>普通链接</span>
</el-radio>
@ -344,6 +366,7 @@ export default {
label: 'name',
children: 'children',
},
templateRadio: 0,
columns: [
{
title: 'ID',
@ -462,40 +485,12 @@ export default {
created() {
this.getSort();
this.goodsCategory();
let radio = {
width: 60,
align: 'center',
render: (h, params) => {
let id = params.row.id;
let flag = false;
if (this.presentId === id) {
flag = true;
} else {
flag = false;
}
let self = this;
return h('div', [
h('el-radio', {
props: {
value: flag,
},
on: {
'on-change': () => {
self.presentId = id;
this.currenUrl = params.row.url;
},
},
}),
]);
},
};
this.columns.unshift(radio);
this.columns7.unshift(radio);
this.columns8.unshift(radio);
this.bargain.unshift(radio);
this.news.unshift(radio);
},
methods: {
getTemplateRow(row) {
this.presentId = row.id;
this.currenUrl = row.url;
},
// 删除
delLink(row, tit, num) {
let delfromData = {

View File

@ -2,8 +2,8 @@
<div class="setUp">
<template>
<el-tabs v-model="configData.tabVal">
<el-tab-pane label="内容设置" />
<el-tab-pane label="样式设置" />
<el-tab-pane label="内容设置" name="0"></el-tab-pane>
<el-tab-pane label="样式设置" name="1"></el-tab-pane>
</el-tabs>
</template>
</div>

View File

@ -194,7 +194,13 @@
</el-table>
</div>
<div class="footer acea-row row-right">
<Page :total="total" show-elevator show-total @on-change="pageChange" :page-size="fileData.limit" />
<pagination
v-if="total"
:total="total"
:page.sync="fileData.page"
@pagination="pageChange"
:limit.sync="fileData.limit"
></pagination>
</div>
</div>
</div>

View File

@ -187,10 +187,7 @@ export default {
closeModel(params) {
this.isShow = false;
// noinspection JSVoidFunctionReturnValueUsed
let msg = this.$message.loading({
content: '登录中...',
duration: 0,
});
this.loading = true;
AccountLogin({
account: this.formInline.username,
@ -200,7 +197,6 @@ export default {
captchaVerification: params ? params.captchaVerification : '',
})
.then(async (res) => {
msg();
let data = res.data;
let expires = this.getExpiresTime(data.expires_time);
// 记录用户登陆信息
@ -257,7 +253,6 @@ export default {
});
})
.catch((res) => {
msg();
let data = res === undefined ? {} : res;
this.$message.error(data.msg || '登录失败');
this.login_captcha = res.data.login_captcha;

View File

@ -8,7 +8,7 @@
<el-row :gutter="24">
<el-col :span="24" class="ml40">
<!-- 预览功能 -->
<el-col ::span="24">
<el-col :span="24">
<el-col :xl="7" :lg="7" :md="22" :sm="22" :xs="22" class="left mb15">
<img class="top" src="../../../../assets/images/mobilehead.png" />
<img class="bottom" src="@/assets/images/mobilefoot.png" />
@ -101,7 +101,7 @@
</el-tab-pane>
<el-button size="small" type="error" slot="extra" @click="deltMenus">删除</el-button>
</el-tabs>
<el-col ::span="24" v-if="isTrue">
<el-col :span="24" v-if="isTrue">
<el-button type="primary" style="display: block; margin: 10px auto" @click="submenus('formValidate')"
>保存并发布</el-button
>

View File

@ -8,7 +8,7 @@
<el-row :gutter="24">
<el-col :span="24" class="ml40">
<!-- 预览功能 -->
<el-col ::span="24">
<el-col :span="24">
<el-col :xl="7" :lg="7" :md="22" :sm="22" :xs="22" class="left mb15">
<img class="top" src="../../../../assets/images/mobilehead.png" />
<img class="bottom" src="../../../../assets/images/mobilefoot.png" />
@ -137,7 +137,7 @@
</el-form>
</div>
</el-col>
<el-col ::span="24">
<el-col :span="24">
<div class="acea-row row-center">
<el-button type="primary" class="mr20" @click="submenus('formValidate')">保存并发布 </el-button>
</div>

View File

@ -165,17 +165,12 @@ export default {
},
// 关闭模态框
closeModel() {
let msg = this.$message.loading({
content: '登录中...',
duration: 0,
});
AccountLogin({
account: this.formInline.username,
password: this.formInline.password,
imgcode: this.formInline.code,
})
.then(async (res) => {
msg();
let expires = this.getExpiresTime(res.data.exp_time);
// 记录用户登陆信息
setCookies('kefu_uuid', res.data.kefuInfo.uid, expires);
@ -195,7 +190,6 @@ export default {
}
})
.catch((res) => {
msg();
let data = res === undefined ? {} : res;
this.errorNum++;
this.captchas();

View File

@ -46,7 +46,7 @@
</vue-scroll>
</div>
<div class="right-box">
<Scroll :on-reach-bottom="handleReachBottom" class="right-scroll" height="360">
<div v-infinite-scroll="handleReachBottom" class="right-scroll" height="360">
<div class="msg-item add-box" v-if="tabCur" style="margin-top: 0">
<div class="box2">
<el-input
@ -103,7 +103,7 @@
</div>
</div>
</div>
</Scroll>
</div>
</div>
</div>
<el-dialog :visible.sync="isAddSort" :title="maskTitle" width="304px" class="class-box">

View File

@ -103,7 +103,7 @@
/>
</div>
<div v-if="orderList.length > 0">
<Scroll :on-reach-bottom="orderReachBottom" height="650" class="right-scroll">
<div v-infinite-scroll="orderReachBottom" height="650" class="right-scroll">
<div class="order-list">
<div class="order-item" v-for="(item, index) in orderList" :key="index">
<div class="head">
@ -180,7 +180,7 @@
</div>
</div>
</div>
</Scroll>
</div>
</div>
<empty v-if="orderList.length == 0 && orderConfig.type === ''" status="3" msg="暂无订单信息"></empty>
<empty v-if="orderList.length == 0 && orderConfig.type === 0" status="4" msg="暂无未支付订单"></empty>
@ -211,8 +211,8 @@
/>
</div>
<div class="list-wrapper" v-if="goodsConfig.buyList.length > 0">
<Scroll :on-reach-bottom="goodsReachBottom" height="650" class="right-scroll">
<div class="list-item" v-for="item in goodsConfig.buyList">
<div v-infinite-scroll="goodsReachBottom" height="650" class="right-scroll">
<div class="list-item" v-for="(item, index) in goodsConfig.buyList" :key="index">
<div class="img-box">
<img :src="item.image" alt="" />
</div>
@ -228,7 +228,7 @@
</div>
</div>
</div>
</Scroll>
</div>
</div>
<empty v-else status="3" msg="暂无商品信息"></empty>
</div>

View File

@ -16,12 +16,12 @@
<el-card :bordered="false" shadow="never" class="ivu-mt">
<el-row class="mt30 acea-row row-middle row-center">
<el-col :span="20">
<Steps :current="current">
<Step title="选择砍价商品"></Step>
<Step title="填写基础信息"></Step>
<Step title="修改商品详情"></Step>
<Step title="修改商品规则"></Step>
</Steps>
<el-steps :active="current">
<el-step title="选择砍价商品"></el-step>
<el-step title="填写基础信息"></el-step>
<el-step title="修改商品详情"></el-step>
<el-step title="修改商品规则"></el-step>
</el-steps>
</el-col>
<el-col :span="23" v-loading="spinShow">
<el-form
@ -637,41 +637,9 @@ export default {
productAttrsApi(row.id, 2)
.then((res) => {
let data = res.data.info;
let radio = {
title: '选择',
key: 'chose',
width: 60,
align: 'center',
render: (h, params) => {
let uid = params.index;
let flag = false;
if (this.currentid === uid) {
flag = true;
} else {
flag = false;
}
let self = this;
return h('div', [
h('el-radio', {
props: {
value: flag,
},
on: {
'on-change': () => {
self.currentid = uid;
let attrs = [];
attrs.push(params.row);
self.formValidate.attrs = attrs;
},
},
}),
]);
},
};
that.columns = data.header;
// that.columns.unshift(radio);
that.specsData = data.attrs;
that.inputChange(data);
that.formValidate.items = data.items;
})
.catch((res) => {
@ -684,50 +652,6 @@ export default {
this.push(row);
this.formValidate.attrs = attrs;
},
inputChange(data) {
let that = this;
let $index = [];
data.header.forEach(function (item, index) {
if (item.type === 1) {
$index.push({ index: index, key: item.key, title: item.title });
}
});
$index.forEach(function (item, index) {
let title = item.title;
let key = item.key;
let row = {
title: title,
key: key,
align: 'center',
minWidth: 100,
render: (h, params) => {
return h('div', [
h('InputNumber', {
props: {
min: 1,
precision: 0,
value: params.row.quota,
},
on: {
'on-change': (e) => {
params.row.quota = e;
that.specsData[params.index] = params.row;
if (!!that.formValidate.attrs && that.formValidate.attrs.length) {
that.formValidate.attrs.forEach((v, index) => {
if (v.id === params.row.id) {
that.formValidate.attrs.splice(index, 1, params.row);
}
});
}
},
},
}),
]);
},
};
that.columns.splice(item.index, 1, row);
});
},
// 获取运费模板;
productGetTemplate() {
productGetTemplateApi().then((res) => {
@ -818,40 +742,7 @@ export default {
this.formValidate.rule = info.rule === null ? '' : info.rule;
this.$set(this.formValidate, 'items', info.attrs.items);
this.description = this.formValidate.description;
this.columns = info.attrs.header;
let radio = {
title: '选择',
key: 'chose',
width: 60,
align: 'center',
render: (h, params) => {
let uid = params.index;
let flag = false;
if (this.currentid === uid) {
flag = true;
} else {
flag = false;
}
let self = this;
return h('div', [
h('el-radio', {
props: {
value: flag,
},
on: {
'on-change': () => {
self.currentid = uid;
let attrs = [];
attrs.push(params.row);
self.formValidate.attrs = attrs;
},
},
}),
]);
},
};
that.columns.unshift(radio);
this.specsData = info.attrs.value;
let defaultAttrs = [];
info.attrs.value.forEach(function (item, index) {

View File

@ -16,11 +16,11 @@
<el-card :bordered="false" shadow="never" class="ivu-mt">
<el-row class="mt30 acea-row row-middle row-center">
<el-col :span="20">
<Steps :current="current">
<Step title="选择拼团商品"></Step>
<Step title="填写基础信息"></Step>
<Step title="修改商品详情"></Step>
</Steps>
<el-steps :active="current">
<el-step title="选择拼团商品"></el-step>
<el-step title="填写基础信息"></el-step>
<el-step title="修改商品详情"></el-step>
</el-steps>
</el-col>
<el-col :span="23" v-loading="spinShow">
<el-form
@ -336,7 +336,7 @@
</el-col>
<el-col :span="24">
<el-form-item label="规格选择:">
<el-table :data="specsData" :columns="columns" border @selection-change="changeCheckbox">
<el-table :data="specsData" border @selection-change="changeCheckbox">
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column
:label="item.title"
@ -697,56 +697,11 @@ export default {
that.formValidate.items = data.items;
that.columns = data.header;
// that.columns.unshift(selection);
that.inputChange(data);
})
.catch((res) => {
that.$Message.error(res.msg);
});
},
inputChange(data) {
let that = this;
let $index = [];
data.header.forEach(function (item, index) {
if (item.type === 1) {
$index.push({ index: index, key: item.key, title: item.title });
}
});
$index.forEach(function (item, index) {
let title = item.title;
let key = item.key;
let row = {
title: title,
key: key,
align: 'center',
minWidth: 100,
render: (h, params) => {
return h('div', [
h('InputNumber', {
props: {
min: 1,
precision: 0,
value: params.row.quota,
},
on: {
'on-change': (e) => {
params.row.quota = e;
that.specsData[params.index] = params.row;
if (!!that.formValidate.attrs && that.formValidate.attrs.length) {
that.formValidate.attrs.forEach((v, index) => {
if (v.id === params.row.id) {
that.formValidate.attrs.splice(index, 1, params.row);
}
});
}
},
},
}),
]);
},
};
that.columns.splice(item.index, 1, row);
});
},
// 多选
changeCheckbox(selection) {
this.formValidate.attrs = selection;
@ -842,7 +797,6 @@ export default {
}
}
that.formValidate.attrs = attr;
that.inputChange(data);
this.spinShow = false;
})
.catch((res) => {

View File

@ -16,11 +16,11 @@
<el-card :bordered="false" shadow="never" class="ivu-mt">
<el-row class="mt30 acea-row row-middle row-center" v-loading="spinShow">
<el-col :span="20">
<Steps :current="current">
<Step title="选择积分商品"></Step>
<Step title="填写基础信息"></Step>
<Step title="修改商品详情"></Step>
</Steps>
<el-steps :active="current">
<el-step title="选择积分商品"></el-step>
<el-step title="填写基础信息"></el-step>
<el-step title="修改商品详情"></el-step>
</el-steps>
</el-col>
<el-col :span="23">
<el-form
@ -465,56 +465,11 @@ export default {
});
that.formValidate.items = data.items;
that.columns = data.header;
that.inputChange(data);
})
.catch((res) => {
that.$Message.error(res.msg);
});
},
inputChange(data) {
let that = this;
let $index = [];
data.header.forEach(function (item, index) {
if (item.type === 1) {
$index.push({ index: index, key: item.key, title: item.title });
}
});
$index.forEach(function (item, index) {
let title = item.title;
let key = item.key;
let row = {
title: title,
key: key,
align: 'center',
minWidth: 120,
render: (h, params) => {
return h('div', [
h('InputNumber', {
props: {
min: 0,
precision: 0,
value: key === 'price' ? params.row.price : params.row.quota,
},
on: {
'on-change': (e) => {
key === 'price' ? (params.row.price = e) : (params.row.quota = e);
that.specsData[params.index] = params.row;
if (!!that.formValidate.attrs && that.formValidate.attrs.length) {
that.formValidate.attrs.forEach((v, index) => {
if (v.id === params.row.id) {
that.formValidate.attrs.splice(index, 1, params.row);
}
});
}
},
},
}),
]);
},
};
that.columns.splice(item.index, 1, row);
});
},
// 多选
changeCheckbox(selection) {
this.formValidate.attrs = selection;
@ -589,7 +544,6 @@ export default {
}
}
that.formValidate.attrs = attr;
that.inputChange(data);
this.spinShow = false;
})
.catch((res) => {

View File

@ -14,11 +14,11 @@
<el-card :bordered="false" shadow="never" class="ivu-mt">
<el-row class="mt30 acea-row row-middle row-center">
<el-col :span="20">
<Steps :current="current">
<Step title="选择预售商品"></Step>
<Step title="填写基础信息"></Step>
<Step title="修改商品详情"></Step>
</Steps>
<el-steps :active="current">
<el-step title="选择预售商品"></el-step>
<el-step title="填写基础信息"></el-step>
<el-step title="修改商品详情"></el-step>
</el-steps>
</el-col>
<el-col :span="23">
<el-form
@ -533,70 +533,18 @@ export default {
productAttrsApi(row.id, 6)
.then((res) => {
let data = res.data.info;
let selection = {
type: 'selection',
width: 60,
align: 'center',
};
that.specsData = data.attrs;
that.specsData.forEach(function (item, index) {
that.$set(that.specsData[index], 'id', index);
});
that.formValidate.items = data.items;
that.columns = data.header;
that.columns.unshift(selection);
that.inputChange(data);
})
.catch((res) => {
that.$Message.error(res.msg);
});
},
inputChange(data) {
let that = this;
let $index = [];
data.header.forEach(function (item, index) {
if (item.type === 1) {
$index.push({ index: index, key: item.key, title: item.title });
}
});
$index.forEach(function (item, index) {
let title = item.title;
let key = item.key;
let row = {
title: title,
key: key,
align: 'center',
minWidth: 100,
render: (h, params) => {
return h('div', [
h('InputNumber', {
props: {
min: 1,
max: key === 'price' ? 10000000 : params.row.stock,
value: key === 'price' ? params.row.price : params.row.quota,
},
on: {
'on-change': (e) => {
key === 'price'
? (params.row.price = e)
: (params.row.quota = e < params.row.stock ? e : params.row.stock);
that.specsData[params.index] = params.row;
if (!!that.formValidate.attrs && that.formValidate.attrs.length) {
that.formValidate.attrs.forEach((v, index) => {
if (v.id === params.row.id) {
that.formValidate.attrs.splice(index, 1, params.row);
}
});
}
},
},
}),
]);
},
};
that.columns.splice(item.index, 1, row);
});
},
// 多选
changeCheckbox(selection) {
this.formValidate.attrs = selection;
@ -684,7 +632,6 @@ export default {
}
}
that.formValidate.attrs = attr;
that.inputChange(data);
this.spinShow = false;
})
.catch((res) => {

View File

@ -12,11 +12,11 @@
<el-card :bordered="false" shadow="never" class="ivu-mt">
<el-row class="mt30 acea-row row-middle row-center">
<el-col :span="20">
<Steps :current="current">
<Step title="选择秒杀商品"></Step>
<Step title="填写基础信息"></Step>
<Step title="修改商品详情"></Step>
</Steps>
<el-steps :active="current">
<el-step title="选择秒杀商品"></el-step>
<el-step title="填写基础信息"></el-step>
<el-step title="修改商品详情"></el-step>
</el-steps>
</el-col>
<el-col :span="23">
<el-form
@ -608,58 +608,12 @@ export default {
});
that.formValidate.items = data.items;
that.columns = data.header;
// that.columns.unshift(selection);
that.inputChange(data);
})
.catch((res) => {
that.$Message.error(res.msg);
});
},
inputChange(data) {
let that = this;
let $index = [];
data.header.forEach(function (item, index) {
if (item.type === 1) {
$index.push({ index: index, key: item.key, title: item.title });
}
});
$index.forEach(function (item, index) {
let title = item.title;
let key = item.key;
let row = {
title: title,
key: key,
align: 'center',
minWidth: 120,
render: (h, params) => {
return h('div', [
h('InputNumber', {
props: {
min: 0,
value: key === 'price' ? params.row.price : params.row.quota,
formatter: (value) =>
key === 'price' ? `${value}`.match(/^\d+(?:\.\d{0,2})?/) : `${value}`.match(/^\d+(?:\.\d{0,-1})?/),
},
on: {
'on-change': (e) => {
key === 'price' ? (params.row.price = e) : (params.row.quota = e);
that.specsData[params.index] = params.row;
if (!!that.formValidate.attrs && that.formValidate.attrs.length) {
that.formValidate.attrs.forEach((v, index) => {
if (v.id === params.row.id) {
that.formValidate.attrs.splice(index, 1, params.row);
}
});
}
},
},
}),
]);
},
};
that.columns.splice(item.index, 1, row);
});
},
// 多选
changeCheckbox(selection) {
this.formValidate.attrs = selection;
@ -761,7 +715,6 @@ export default {
}
}
that.formValidate.attrs = attr;
this.inputChange(data);
this.spinShow = false;
})
.catch((res) => {

View File

@ -1,11 +1,11 @@
<template>
<el-row justify="center" align="middle">
<el-col :span="20" style="margin-top: 70px" class="mb50">
<Steps :current="current">
<Step title="验证账号信息"></Step>
<Step title="修改账户密码"></Step>
<Step title="登录"></Step>
</Steps>
<el-steps :active="current">
<el-step title="验证账号信息"></el-step>
<el-step title="修改账户密码"></el-step>
<el-step title="登录"></el-step>
</el-steps>
</el-col>
<el-col :span="24">
<div class="index_from page-account-container">

View File

@ -1,11 +1,11 @@
<template>
<el-row justify="center" align="middle">
<el-col :span="20" style="margin-top: 70px" class="mb50">
<Steps :current="current">
<Step title="验证账号信息"></Step>
<Step title="修改手机号码"></Step>
<Step title="登录"></Step>
</Steps>
<el-steps :active="current">
<el-step title="验证账号信息"></el-step>
<el-step title="修改手机号码"></el-step>
<el-step title="登录"></el-step>
</el-steps>
</el-col>
<el-col :span="24">
<div class="index_from page-account-container">

View File

@ -16,14 +16,14 @@
@submit.native.prevent
>
<el-form-item label="选择类型:">
<el-radio-group v-model="formItem.type" @on-change="changeRadio">
<el-radio-group v-model="formItem.type" @input="changeRadio">
<el-radio label="1" v-if="virtual_type !== 3">发货</el-radio>
<el-radio label="2" v-if="virtual_type !== 3">送货</el-radio>
<el-radio label="3">无需配送</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="formItem.type == 1" v-show="export_open" label="发货类型:">
<el-radio-group v-model="formItem.express_record_type" @on-change="changeExpress">
<el-radio-group v-model="formItem.express_record_type" @input="changeExpress">
<el-radio label="3">商家寄件</el-radio>
<el-radio label="1">录入单号</el-radio>
<el-radio label="2">电子面单打印</el-radio>

View File

@ -28,7 +28,7 @@
<el-card :bordered="false" shadow="never" v-if="cardShow == 0">
<el-row v-if="cardShow == 0" type="flex">
<el-col style="width: 310px; height: 550px; margin-right: 30px" v-if="isDiy">
<iframe class="iframe-box" :src="imgUrl" frameborder="0" ref="iframe"></iframe>
<iframe class="iframe-box" :src="iframeUrl" frameborder="0" ref="iframe"></iframe>
<div class="mask"></div>
</el-col>
<el-col :span="isDiy ? '' : 24" v-bind="isDiy ? grid : ''" :class="isDiy ? 'table' : ''">
@ -234,7 +234,7 @@ export default {
iframeUrl: '',
modal: false,
BaseURL: Setting.apiBaseURL.replace(/adminapi/, ''),
cardShow: 1,
cardShow: 0,
loadingExist: false,
isDiy: 1,
qrcodeImg: '',

View File

@ -11,7 +11,7 @@
<el-row :gutter="24">
<el-col v-bind="grid">
<el-form-item label="是否显示:" label-for="keyword">
<el-radio-group v-model="levelFrom.is_show" type="button" @on-change="userSearchs">
<el-radio-group v-model="levelFrom.is_show" type="button" @input="userSearchs">
<el-radio label="">全部</el-radio>
<el-radio label="1">显示</el-radio>
<el-radio label="0">隐藏</el-radio>

View File

@ -11,9 +11,9 @@
</div>
<div class="message">
<el-card :bordered="false" shadow="never" class="">
<Steps :current="currentTab">
<Step :title="item.label" v-for="(item, index) in headerList" :key="index"></Step>
</Steps>
<el-steps :active="currentTab">
<el-step :title="item.label" v-for="(item, index) in headerList" :key="index"></el-step>
</el-steps>
</el-card>
</div>
<div class="pt10 tab-1" v-show="currentTab == '0'">

View File

@ -41,7 +41,7 @@
</el-timeline>
</div>
</div>
<Scroll v-if="currentTab == 2" :on-reach-bottom="handleReachBottom" height="550">
<div v-if="currentTab == 2" v-infinite-scroll="handleReachBottom" height="550">
<div class="contentTime" >
<div class="acea-row row-top off" @mouseenter="quearyEvear(item.id,index)" v-for="(item,index) in upgradeLogList" :key="index" :class="{active:index==dynamic}">
<div class="time">
@ -67,8 +67,7 @@
</el-timeline>
</div>
</div>
</Scroll>
</div>
</el-card>
<!-- 免责声明 -->
<el-dialog :visible.sync="declaration"

View File

@ -32,7 +32,7 @@
</el-col>
<el-col v-bind="grid" v-if="authType != 2">
<el-form-item label="页面地址:" prop="menu_path">
<el-input v-model="formValidate.menu_path" placeholder="请输入页面地址" @on-change="changeUnique">
<el-input v-model="formValidate.menu_path" placeholder="请输入页面地址" @change="changeUnique">
<template #prepend>
<span>{{ $routeProStr }}</span>
</template>
@ -51,7 +51,7 @@
</el-col>
<el-col v-bind="grid" v-if="authType == 2">
<el-form-item label="接口地址:" prop="api_url">
<el-input v-model="formValidate.api_url" placeholder="请输入接口地址" @on-change="changeUnique">
<el-input v-model="formValidate.api_url" placeholder="请输入接口地址" @change="changeUnique">
</el-input>
</el-form-item>
</el-col>

View File

@ -106,15 +106,56 @@
/>
</div>
</el-card>
<el-dialog :visible.sync="modal" title="添加批次">
<form-create v-model="fapi" :rule="rule" @submit="onSubmit"></form-create>
<el-dialog :visible.sync="modal" width="600px" :title="`${formValidate.id ? '编辑' : '添加'}批次`">
<!-- <form-create v-model="fapi" :rule="rule" @submit="onSubmit"></form-create> -->
<el-form ref="formValidate" :model="formValidate" label-width="100px" @submit.native.prevent>
<el-form-item label="批次名称:">
<el-input placeholder="请输入批次名称" element-id="unit_name" v-model="formValidate.title" />
</el-form-item>
<template v-if="!formValidate.id">
<el-form-item label="制卡数量:">
<el-input-number
controls-position="right"
placeholder="请输入制卡数量"
element-id="sort"
:precision="0"
:max="100000"
:min="1"
v-model="formValidate.total_num"
class="perW10"
/>
</el-form-item>
<el-form-item label="体验天数:">
<el-input-number
controls-position="right"
placeholder="请输入体验天数"
element-id="sort"
:precision="0"
:max="100000"
:min="1"
v-model="formValidate.use_day"
class="perW10"
/>
</el-form-item>
<el-form-item label="是否激活:">
<el-radio-group element-id="status" v-model="formValidate.status">
<el-radio :label="1" class="radio">激活</el-radio>
<el-radio :label="0">冻结</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注:">
<el-input type="textarea" placeholder="请输入备注" :max="100000" v-model="formValidate.remark" />
</el-form-item>
</template>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="modal = false">取消</el-button>
<el-button type="primary" @click="onSubmit()">提交</el-button>
</span>
</el-dialog>
<el-dialog :visible.sync="cardModal" title="卡列表" width="1000px">
<cardList v-if="cardModal" :id="id"></cardList>
</el-dialog>
<el-dialog :visible.sync="modal2" title="编辑批次名">
<form-create :rule="rule2" @submit="onSubmit2"></form-create>
</el-dialog>
<cardList v-if="cardModal" :id="id"></cardList> </el-dialog
>=
<el-dialog :visible.sync="modal3" title="二维码">
<div v-if="qrcode" class="acea-row row-around">
<div v-if="qrcode && qrcode.wechat_img" class="acea-row row-column-around row-between-wrapper">
@ -163,105 +204,16 @@ export default {
},
loading: false,
modal: false,
rule: [
{
type: 'input',
field: 'title',
title: '批次名称',
validate: [
{
required: true,
message: '请输入批次名称',
trigger: 'blur',
},
],
},
{
type: 'InputNumber',
field: 'total_num',
title: '制卡数量',
value: 1,
props: {
min: 1,
precision: 0,
max: 100000,
},
on: {
'on-change': (data) => {
if (data > 100000) {
this.$nextTick((e) => {
this.rule[1].value = 100000;
});
}
},
},
},
{
type: 'InputNumber',
field: 'use_day',
title: '体验天数',
value: 1,
props: {
min: 1,
precision: 0,
max: 100000,
},
on: {
'on-change': (data) => {
if (data > 100000) {
this.$nextTick((e) => {
this.rule[2].value = 100000;
});
}
},
},
},
{
type: 'radio',
field: 'status',
title: '是否激活',
value: '0',
options: [
{
value: '0',
label: '冻结',
},
{
value: '1',
label: '激活',
},
],
},
{
type: 'input',
field: 'remark',
title: '备注',
props: {
type: 'textarea',
},
},
],
formValidate: {
id: 0,
title: '',
total_num: 1,
use_day: 1,
status: 1,
remark: '',
},
modal2: false,
rule2: [
{
type: 'hidden',
field: 'id',
value: '',
},
{
type: 'input',
field: 'title',
title: '批次名称',
value: '',
validate: [
{
required: true,
message: '请输入批次名称',
trigger: 'blur',
},
],
},
],
modal3: false,
qrcode: null,
fapi: {},
@ -335,9 +287,9 @@ export default {
changeMenu(row, name) {
switch (name) {
case '1':
this.rule2[0].value = row.id;
this.rule2[1].value = row.title;
this.modal2 = true;
this.formValidate.id = row.id;
this.formValidate.title = row.title;
this.modal = true;
break;
case '2':
this.id = row.id;
@ -350,36 +302,39 @@ export default {
},
// 添加批次弹窗
addBatch() {
this.fapi.resetFields();
// this.fapi.resetFields();
this.modal = true;
this.formValidate.id = 0;
this.formValidate.title = '';
},
// 提交批次
onSubmit(formData) {
memberBatchSave(0, formData)
.then((res) => {
this.modal = false;
this.$message.success(res.msg);
this.getMemberBatch();
this.fapi.resetFields();
onSubmit() {
if (this.formValidate.id) {
memberBatchSetValue(this.formValidate.id, {
field: 'title',
value: this.formValidate.id,
})
.catch((err) => {
this.$message.error(err.msg);
});
},
onSubmit2(formData) {
memberBatchSetValue(formData.id, {
field: 'title',
value: formData.title,
})
.then((res) => {
this.modal2 = false;
this.$message.success(res.msg);
this.getMemberBatch();
})
.catch((err) => {
this.$message.error(err.msg);
});
.then((res) => {
this.modal = false;
this.$message.success(res.msg);
this.getMemberBatch();
})
.catch((err) => {
this.$message.error(err.msg);
});
} else {
memberBatchSave(this.formValidate.id, this.formValidate)
.then((res) => {
this.modal = false;
this.$message.success(res.msg);
this.getMemberBatch();
})
.catch((err) => {
this.$message.error(err.msg);
});
}
},
onSubmit2(formData) {},
// 会员卡二维码
getMemberScan() {
userMemberScan()

View File

@ -24,7 +24,7 @@
</el-input>
</el-form-item>
</el-col>
<el-col :span="12" class="ivu-text-left userFrom" v-if="!collapse">
<el-col v-bind="grid" v-if="!collapse">
<el-form-item>
<el-button type="primary" icon="ios-search" label="default" class="mr15" @click="userSearchs"
>搜索</el-button
@ -37,188 +37,143 @@
</el-form-item>
</el-col>
<template v-if="collapse">
<el-col :::span="18">
<el-col v-bind="grid">
<el-form-item label="用户标签:" label-for="label_id">
<div class="labelInput acea-row row-between-wrapper" @click="openSelectLabel">
<div style="width: 90%">
<div v-if="selectDataLabel.length">
<el-tag :closable="false" v-for="(item, index) in selectDataLabel" :key="index">{{
item.label_name
}}</el-tag>
</div>
<span class="span" v-else>选择用户关联标签</span>
<el-col v-bind="grid">
<el-form-item label="用户标签:" label-for="label_id">
<div class="labelInput acea-row row-between-wrapper" @click="openSelectLabel">
<div style="width: 90%">
<div v-if="selectDataLabel.length">
<el-tag :closable="false" v-for="(item, index) in selectDataLabel" :key="index">{{
item.label_name
}}</el-tag>
</div>
<div class="ivu-icon ivu-icon-ios-arrow-down"></div>
<span class="span" v-else>选择用户关联标签</span>
</div>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="下单次数:" label-for="pay_count">
<el-select v-model="pay_count" placeholder="请选择下单次数" element-id="pay_count" clearable>
<el-option value="all" label="全部"></el-option>
<el-option value="-1" label="0次"></el-option>
<el-option value="0" label="1次以上"></el-option>
<el-option value="1" label="2次以上"></el-option>
<el-option value="2" label="3次以上"></el-option>
<el-option value="3" label="4次以上"></el-option>
<el-option value="4" label="5次以上"></el-option>
</el-select>
</el-form-item>
</el-col>
<div class="ivu-icon ivu-icon-ios-arrow-down"></div>
</div>
</el-form-item>
</el-col>
<el-col ::span="18">
<el-col v-bind="grid">
<el-form-item label="用户分组:" label-for="group_id">
<el-select v-model="group_id" placeholder="请选择用户分组" element-id="group_id" clearable>
<el-option value="all" label="全部"></el-option>
<el-option
:value="item.id"
v-for="(item, index) in groupList"
:key="index"
:label="item.group_name"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="用户等级:" label-for="level">
<el-select v-model="level" placeholder="请选择用户等级" element-id="level" clearable>
<el-option value="all" label="全部">全部</el-option>
<el-option
:value="item.id"
v-for="(item, index) in levelList"
:key="index"
:label="item.name"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="下单次数:" label-for="pay_count">
<el-select v-model="pay_count" placeholder="请选择下单次数" element-id="pay_count" clearable>
<el-option value="all" label="全部"></el-option>
<el-option value="-1" label="0次"></el-option>
<el-option value="0" label="1次以上"></el-option>
<el-option value="1" label="2次以上"></el-option>
<el-option value="2" label="3次以上"></el-option>
<el-option value="3" label="4次以上"></el-option>
<el-option value="4" label="5次以上"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col ::span="18">
<!-- <el-col v-bind="grid">
<el-form-item label="性别:" label-for="sex">
<el-radio-group v-model="userFrom.sex" type="button">
<el-radio-button label="">
<span>全部</span>
</el-radio-button>
<el-radio-button label="1">
<span>男</span>
</el-radio-button>
<el-radio-button label="2">
<span>女</span>
</el-radio-button>
<el-radio-button label="0">
<span>保密</span>
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col> -->
<el-col v-bind="grid">
<el-form-item label="身份:" label-for="is_promoter">
<el-radio-group v-model="userFrom.is_promoter" type="button">
<el-radio-button label="">
<span>全部</span>
</el-radio-button>
<el-radio-button label="1">
<span>推广员</span>
</el-radio-button>
<el-radio-button label="0">
<span>普通用户</span>
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="付费会员:" label-for="isMember">
<!-- <el-select
v-model="userFrom.isMember"
placeholder="请选择付费会员"
element-id="isMember"
clearable
@change="changeMember"
>
<el-option :value="1">是</el-option>
<el-option :value="0">否</el-option>
</el-select> -->
<el-radio-group v-model="userFrom.isMember" type="button">
<el-radio-button label="">
<span>全部</span>
</el-radio-button>
<el-radio-button label="1">
<span>是</span>
</el-radio-button>
<el-radio-button label="0">
<span>否</span>
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="用户分组:" label-for="group_id">
<el-select v-model="group_id" placeholder="请选择用户分组" element-id="group_id" clearable>
<el-option value="all" label="全部"></el-option>
<el-option
:value="item.id"
v-for="(item, index) in groupList"
:key="index"
:label="item.group_name"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col ::span="18">
<el-col v-bind="grid">
<el-form-item label="访问情况:" label-for="user_time_type">
<el-select
v-model="user_time_type"
placeholder="请选择访问情况"
element-id="user_time_type"
clearable
>
<el-option value="" label="全部"></el-option>
<el-option value="visitno" label="时间段未访问"></el-option>
<el-option value="visit" label="时间段访问过"></el-option>
<el-option value="add_time" label="首次访问"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="grid" v-if="user_time_type">
<el-form-item label="访问时间:" label-for="user_time">
<el-date-picker
:editable="false"
@change="onchangeTime"
v-modal="timeVal"
format="yyyy/MM/dd"
type="datetimerange"
value-format="yyyy/MM/dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
class="mr20"
></el-date-picker>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="用户等级:" label-for="level">
<el-select v-model="level" placeholder="请选择用户等级" element-id="level" clearable>
<el-option value="all" label="全部">全部</el-option>
<el-option
:value="item.id"
v-for="(item, index) in levelList"
:key="index"
:label="item.name"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col ::span="18">
<el-col v-bind="grid">
<el-form-item label="地区:" label-for="country">
<el-select
v-model="userFrom.country"
placeholder="请选择国家"
element-id="country"
clearable
@change="changeCountry"
>
<el-option value="domestic" label="中国"></el-option>
<el-option value="abroad" label="外国"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="grid" v-if="userFrom.country === 'domestic'">
<el-form-item label="省份:">
<el-cascader
:options="addresData"
:value="address"
v-model="address"
@change="handleChange"
clearable
></el-cascader>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="身份:" label-for="is_promoter">
<el-radio-group v-model="userFrom.is_promoter" type="button">
<el-radio-button label="">
<span>全部</span>
</el-radio-button>
<el-radio-button label="1">
<span>推广员</span>
</el-radio-button>
<el-radio-button label="0">
<span>普通用户</span>
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="付费会员:" label-for="isMember">
<el-radio-group v-model="userFrom.isMember" type="button">
<el-radio-button label="">
<span>全部</span>
</el-radio-button>
<el-radio-button label="1">
<span>是</span>
</el-radio-button>
<el-radio-button label="0">
<span>否</span>
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="访问情况:" label-for="user_time_type">
<el-select v-model="user_time_type" placeholder="请选择访问情况" element-id="user_time_type" clearable>
<el-option value="" label="全部"></el-option>
<el-option value="visitno" label="时间段未访问"></el-option>
<el-option value="visit" label="时间段访问过"></el-option>
<el-option value="add_time" label="首次访问"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="grid2" v-if="user_time_type">
<el-form-item label="访问时间:" label-for="user_time">
<el-date-picker
:editable="false"
@change="onchangeTime"
v-modal="timeVal"
format="yyyy/MM/dd"
type="datetimerange"
value-format="yyyy/MM/dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
class="mr20"
></el-date-picker>
</el-form-item>
</el-col>
<el-col v-bind="grid">
<el-form-item label="地区:" label-for="country">
<el-select
v-model="userFrom.country"
placeholder="请选择国家"
element-id="country"
clearable
@change="changeCountry"
>
<el-option value="domestic" label="中国"></el-option>
<el-option value="abroad" label="外国"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="grid" v-if="userFrom.country === 'domestic'">
<el-form-item label="省份:">
<el-cascader
:options="addresData"
:value="address"
v-model="address"
@change="handleChange"
clearable
></el-cascader>
</el-form-item>
</el-col>
</template>
</el-row>
<el-row v-if="collapse">
<el-col :span="13" class="ivu-text-right userFrom">
<el-col v-bind="grid" class="userFrom" v-if="collapse">
<el-form-item>
<el-button type="primary" icon="ios-search" label="default" class="mr15" @click="userSearchs"
>搜索</el-button
@ -232,8 +187,8 @@
</el-col>
</el-row>
</el-form>
<el-row justify="space-between" class="mt20">
<el-col ::span="24">
<el-row :gutter="24" justify="space-between" class="mt20">
<el-col :span="24">
<el-button v-auth="['admin-user-save']" type="primary" class="mr10" @click="edit({ uid: 0 })"
>添加用户</el-button
>
@ -253,7 +208,7 @@
<!-- <el-button v-auth="['admin-user-synchro']" class="mr20" @click="synchro">同步公众号用户</el-button> -->
</el-col>
<el-col ::span="24" class="userAlert" v-if="selectionList.length">
<el-col :span="24" class="userAlert" v-if="selectionList.length">
<el-alert show-icon>
<template slot="title">
已选择<i class="userI"> {{ selectionList.length }} </i>项
@ -405,10 +360,10 @@
</div>
</el-form-item>
</el-form>
<div slot="footer">
<el-button type="primary" @click="putSend('formInline')">提交</el-button>
<span slot="footer" class="dialog-footer">
<el-button @click="cancel('formInline')">取消</el-button>
</div>
<el-button type="primary" @click="putSend('formInline')">提交</el-button>
</span>
</el-dialog>
<el-dialog :visible.sync="customerShow" title="请选择商城用户" :show-close="false" width="50%">
<customerInfo v-if="customerShow" @imageObject="imageObject"></customerInfo>
@ -599,17 +554,17 @@ export default {
contentTop: '130',
contentWidth: '98%',
grid: {
xl: 8,
lg: 12,
md: 12,
sm: 24,
xl: 6,
lg: 6,
md: 8,
sm: 12,
xs: 24,
},
grid2: {
xl: 18,
lg: 16,
md: 12,
sm: 24,
xl: 8,
lg: 8,
md: 8,
sm: 12,
xs: 24,
},
loading: false,
@ -867,7 +822,7 @@ export default {
},
// 选择地址
handleChange(selectedData) {
console.log(selectedData)
console.log(selectedData);
this.selectedData = selectedData.map((o) => o.label);
this.userFrom.province = this.selectedData[0];
this.userFrom.city = this.selectedData[1];

View File

@ -1,5 +1,11 @@
@import './index.scss';
.el-row {
display: flex;
flex-wrap: wrap;
position: relative;
box-sizing: border-box;
}
/* 页面宽度小于1200px
------------------------------- */
@media screen and (max-width: $lg) {