Commit c71ffc94 by crushh

udpate: dist

parents 2b730e78 744c09cd
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="./static/css/iconfont.css"><link rel="stylesheet" href="./static/css/common.css"><link rel="shortcut icon" type="image/x-icon" href="./static/img/favicon.ico"><title>积分商城</title><script defer="defer" src="/integral-mall/js/main.8c0b7f88b21b9d75a69b.js"></script><link href="/integral-mall/css/main.56d8a19e370a25608bd4.css" rel="stylesheet"></head><body><div id="app"></div><script>(function() {
<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="./static/css/iconfont.css"><link rel="stylesheet" href="./static/css/common.css"><link rel="shortcut icon" type="image/x-icon" href="./static/img/favicon.ico"><title>积分商城</title><script defer="defer" src="/integral-mall/js/main.f2adaf8d0a36cadb3994.js"></script><link href="/integral-mall/css/main.bfa8b7cb20884c98662c.css" rel="stylesheet"></head><body><div id="app"></div><script>(function() {
var src = '/component/static/import-component.js?timestrap=' + new Date().getTime();
var host = window.location.host;
host = host.indexOf('localhost') > -1 || host.indexOf('192.168') > -1 ? 'gicdev.demogic.com' : host;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -3,13 +3,13 @@
* @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
* @license Licensed under MIT license
* See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
* @version v4.2.8+1e68dce6
* @version v4.2.6+9869a4bc
*/
/*!
* clipboard.js v2.0.8
* https://clipboardjs.com/
*
* clipboard.js v2.0.1
* https://zenorocha.github.io/clipboard.js
*
* Licensed MIT © Zeno Rocha
*/
......
......@@ -218,10 +218,8 @@ input:focus {
.pagination{
float:right;
}
.w-260{
width:260px;
}
.user-header-pop {
.user-header-pop {
min-width: 95px;
}
.el-popover.user-header-pop {
......@@ -261,6 +259,11 @@ input:focus {
.mall-content-title h3 i:hover{
color:#909399;
}
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
/*编辑按钮*/
.el-icon-edit{
......@@ -346,21 +349,6 @@ input[type="number"] {
-moz-appearance: textfield;
}
/* .el-input__inner{
line-height:0px!important;
}
.el-input__inner::-webkit-input-placeholder {
line-height:normal!important;
}
::-moz-placeholder {
line-height:normal!important;
}
:-ms-input-placeholder {
line-height:normal!important;
} */
.icon-xinxixianshi{
color: #909399;
font-size: 14px;
......@@ -374,4 +362,65 @@ input[type="number"] {
fill: currentColor;
overflow: hidden;
}
/** 宽度*/
.w-260{
width:260px;
}
.w-280 {
width: 280px;
}
.w-300 {
width: 300px;
}
.w-140 {
width: 140px;
}
.w-160 {
width: 160px;
}
.w-100 {
width: 100px;
}
.w-180 {
width: 180px;
}
/** 提示 */
.infoTips {
display: flex;
padding: 5px 16px;
align-items: baseline;
color: #606266;
background: #e6f7ff;
border-radius: 2px;
margin-bottom: 20px;
width: fit-content;
}
.infoTipsIcon {
width: 12px;
color:#1890FF;
font-size: 12px;
margin-right: 9px;
}
.infoTipsContent {
line-height: 22px;
font-size: 12px;
color:#303133 ;
}
.infoTips_waring{
background: #FCF6F1;
color: #FA8C16;
}
/** 搜索条件 */
.search-wrap{
display: flex;
justify-content: space-around;
align-items: flex-start;
margin-bottom: 20px;
}
.table-page-search-wrapper{
flex: 1;
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
\ No newline at end of file
......@@ -174,7 +174,7 @@ export default {
selectListMore: {
type: Object,
default () {
return [];
return {};
},
},
},
......@@ -381,15 +381,7 @@ export default {
};
</script>
<style scoped>
.w-100 {
width: 100px;
}
.w-160 {
width: 160px;
}
.w-300 {
width: 300px;
}
.gift-info img {
width: 48px;
height: 48px;
......
......@@ -248,7 +248,7 @@ export default {
},
// 右侧搜索
getRightList () {
var newData = this.selectLeftList.filter(item => {
const newData = this.selectLeftList.filter(item => {
if (item.storeGroupName.indexOf(this.searchValue) > -1) {
return item;
}
......@@ -273,7 +273,7 @@ export default {
return false;
}
// 过滤数据只保留部分有用字段
this.selectLeftList.map(v => {
this.selectLeftList.forEach(v => {
delete v.children;
delete v.parentGroupId;
delete v.groupLevel;
......@@ -333,9 +333,7 @@ export default {
.search-content {
margin: 10px;
}
.w-180 {
width: 180px;
}
.border-radius20 /deep/ input {
border-radius: 20px;
}
......
......@@ -317,9 +317,7 @@ export default {
.search-content {
margin: 10px;
}
.w-180 {
width: 180px;
}
.border-radius20 /deep/ input {
border-radius: 20px;
}
......
......@@ -21,6 +21,9 @@ Vue.config.productionTip = false;
if (process.env.NODE_ENV === 'development') {
Vue.config.devtools = true;
}
window.ELEMENT.Dialog.props.closeOnClickModal.default = false; // 全局设置点击蒙层不关闭
/* eslint-disable no-new */
/* eslint-disable no-new */
window.getLimit(router, 'integral-mall').then(() => {
......
......@@ -19,6 +19,8 @@ import editDeliver from '../views/setting/editDeliver';
import orderDetail from '../views/order/orderDetail';
import recordList from '../views/setting/recordList';
import convenSet from '../views/setting/convenSet';
import ruleList from '../views/goods/ruleList/ruleList';
import ruleInfo from '../views/goods/ruleList/info';
Vue.use(VueClipboard);
/**
......@@ -101,6 +103,38 @@ const router = new Router({
component: flashSaleInfo,
},
{
path: '/ruleList',
name: 'ruleList',
component: ruleList,
meta: {
useMenuLimit: true,
},
},
{
path: '/editRule/:id',
name: 'editRule',
component: ruleInfo,
meta: {
type: 'edit',
},
},
{
path: '/addRule',
name: 'addRule',
component: ruleInfo,
meta: {
type: 'add',
},
},
{
path: '/copyRule/:id',
name: 'copyRule',
component: ruleInfo,
meta: {
type: 'copy',
},
},
{
path: '/giftExchange',
name: 'giftExchange',
component: giftExchange,
......
......@@ -2,7 +2,7 @@
import axios from 'axios';
import store from '../store/index';
import router from '../router';
import { Message } from 'element-ui';
// axios 配置
// axios.defaults.timeout = 5000;
// let adminUrl = 'http://gicdev.demogic.com'
......@@ -46,26 +46,65 @@ request.interceptors.request.use(
// http response 拦截器
request.interceptors.response.use(
response => {
if (response.status == 200 && response.data.errorCode === 401) {
window.location.href = window.location.origin + '/gic-web';
// window.location.href = 'http://gicdev.com/gic-web'
console.log('===>');
console.log(response);
const { data, config } = response;
let err;
const { errorCode } = data;
switch (errorCode) {
case 0:
return response;
case 401:
Message({
message: '登录失效',
type: 'error',
});
window.location.href = window.location.origin + '/gic-web';
break;
case undefined:
break;
default:
Message({
message: data.message,
type: 'error',
});
err = new Error(`${data.message}: ${config.url}`);
if (__DEVELOPMENT) {
console.log('>>>>>>>>>> response data error >>>>>>>>>>');
}
return Promise.reject(err);
}
return response;
},
error => {
if (error.response) {
switch (error.response.status) {
case 401:
// 401 清除token信息并跳转到登录页面
store.commit(types.LOGOUT);
router.replace({
name: 'login',
query: { redirect: router.currentRoute.fullPath }
});
}
console.log('===>');
console.log(error);
const status = err.response.status;
switch (status) {
case 400: err.message = '请求错误'; break;
case 401: err.message = '未授权,请登录';
store.commit(types.LOGOUT);
window.location.href = window.location.origin + '/gic-web';
break;
case 403: err.message = '拒绝访问'; break;
case 404: err.message = `请求地址出错: ${err.response.config.url}`; break;
case 408: err.message = '请求超时'; break;
case 500: err.message = '服务器内部错误'; break;
case 501: err.message = '服务未实现'; break;
case 502: err.message = '网关错误'; break;
case 503: err.message = '服务不可用'; break;
case 504: err.message = '网关超时'; break;
case 505: err.message = 'HTTP版本不受支持'; break;
default: break;
}
return Promise.reject(error.response.data);
if (__DEVELOPMENT) {
console.log('>>>>>>>>>> response error >>>>>>>>>>');
}
Message({
message: '系统异常',
type: 'error',
});
return Promise.reject(err);
}
);
......
......@@ -1305,12 +1305,7 @@ export default {
.disabled {
pointer-events: none;
}
.section {
background: #fff;
margin: 24px;
padding: 24px;
margin-bottom: 80px;
}
.w-300 {
width: 300px;
}
......
......@@ -293,26 +293,11 @@ export default {
};
</script>
<style scoped>
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
.m-r-10 {
margin-right: 10px;
}
.w-280 {
width: 280px;
}
.w-300 {
width: 300px;
}
.w-140 {
width: 140px;
}
.w-160 {
width: 160px;
}
.gift-info img {
width: 75px;
height: 75px;
......
......@@ -907,11 +907,7 @@ export default {
};
</script>
<style scoped>
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
.m-r-10 {
margin-right: 10px;
}
......
......@@ -1697,11 +1697,8 @@ export default {
width: 100px;
}
.section {
background: #fff;
margin: 24px;
padding-bottom: 24px;
margin-bottom: 80px;
/* padding: 24px; */
padding:0 0 24px 0;
margin-bottom:80px;
}
.section-content h3 {
......
......@@ -70,6 +70,18 @@
</div>
<div class="search-content-item" style="height:32px;">
<el-select
v-model="ruleRelationFlag"
placeholder="上架规则"
clearable
class="w-140"
@change="getListCurr"
>
<el-option label="已关联上架规则" :value="1" />
<el-option label="未关联上架规则" :value="0" />
</el-select>
</div>
<div class="search-content-item" style="height:32px;">
<el-select
v-model="category"
placeholder="礼品分类"
class="w-140"
......@@ -309,8 +321,7 @@
</template>
</el-table-column>
<el-table-column
fixed="right"
prop="shelf "
prop="shelf"
label="状态"
min-width="110px"
>
......@@ -318,6 +329,12 @@
{{ scope.row.shelf ? (scope.row.shelf == 1 ? '已下架' : scope.row.shelf == 2 ? '已上架' : '待上架') : '--' }}
</template>
</el-table-column>
<el-table-column
fixed="right"
prop="ruleTitle"
label="上架规则"
min-width="110px"
/>
<el-table-column fixed="right" label="操作" min-width="220px">
<template slot-scope="scope">
<div>
......@@ -331,7 +348,7 @@
</el-button>
<el-button
type="text"
v-if="((scope.row.status === 2 && scope.row.canEdit && scope.row.releaseType === 2 && scope.row.isShelves === 1) || (scope.row.status === 1 && scope.row.canEdit)) && $getButtonLimit($buttonCode.giftNew)"
v-if="((scope.row.status === 2 && scope.row.canEdit && scope.row.releaseType === 2 && scope.row.isShelves === 1 && !scope.row.ruleTitle) || (scope.row.status === 1 && scope.row.canEdit)) && $getButtonLimit($buttonCode.giftNew)"
:limit-code="$buttonCode.giftNew"
@click="deleteList(scope.row, 2)"
>
......@@ -547,6 +564,7 @@ export default {
stockDialog: false,
enterpriseId: '',
specialOrder: false,
ruleRelationFlag: '',
};
},
created () {
......@@ -659,6 +677,7 @@ export default {
stockStatus: this.stockStatus ? this.stockStatus : -1,
goodsType: this.goodsType, // 商品类型
showSelfFlag: this.showSelfStatus ? 1 : 0,
ruleRelationFlag: this.ruleRelationFlag,
};
this.loading = true;
request.post('/api-integral-mall/page-gift', qs.stringify(params)).then(res => {
......@@ -1073,11 +1092,7 @@ export default {
};
</script>
<style scoped>
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
.w-300 {
width: 300px;
}
......
......@@ -2734,10 +2734,8 @@ export default {
width: 100px;
}
.section {
background: #fff;
margin: 24px;
padding-bottom: 24px;
margin-bottom: 80px;
padding:0 0 24px 0;
margin-bottom:80px;
}
.section-content h3 {
height: 55px;
......
<template>
<div class="mall-section-container">
<div class="mall-content-section">
<div class="mall-content-title">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '' }">
<a href="/report/#/memberSummary">首页</a>
</el-breadcrumb-item>
<el-breadcrumb-item>积分商城</el-breadcrumb-item>
<el-breadcrumb-item>商品</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/ruleList' }">
上架规则
</el-breadcrumb-item>
<el-breadcrumb-item>{{ breadcrumbTitle }}</el-breadcrumb-item>
</el-breadcrumb>
<h3>
<span>{{ breadcrumbTitle }}</span>
</h3>
</div>
<div class="section">
<el-form
ref="ruleForm"
:rules="rules"
:model="ruleForm"
label-width="160px"
size="small"
>
<el-form-item label="上架规则名称" prop="ruleTitle">
<el-input
maxlength="12"
show-word-limit
placeholder="请输入上架规则名称"
v-model="ruleForm.ruleTitle"
clearable
@clear="ruleForm.ruleTitle=''"
style="width:340px"
/>
</el-form-item>
<el-form-item label="上架规则名称备注" prop="ruleExplanation">
<el-input
maxlength="30"
show-word-limit
placeholder="请输入上架规则说明"
v-model="ruleForm.ruleExplanation"
style="width:340px"
/>
</el-form-item>
<el-form-item label="适用人群" prop="memberType">
<el-radio v-model="ruleForm.memberType" :label="1">
全部会员
</el-radio>
<el-radio v-model="ruleForm.memberType" :label="3">
会员筛选
</el-radio>
</el-form-item>
<el-form-item v-show="ruleForm.memberType === 3">
<vue-gic-people
v-bind="storeParams"
:projectName="projectName"
:triggerReset="true"
:useId="useId"
:hasSearchData="hasSearchData"
:sceneValue="sceneValue"
ref="peopleFilter"
@findFilter="findFilter"
@getBackData="getBackData"
@editHide="editHide"
@editShow="editShow"
@hideBtn="hideBtn"
/>
<div class="gic-people--button" v-show="toggleTag">
<el-button size="small" type="primary" @click="getData">
确 定
</el-button>
<el-button size="small" @click="cancelFilter">
取 消
</el-button>
</div>
</el-form-item>
<div>
<el-form-item style="margin-top:50px">
<el-button type="primary" size="small" @click="submit()">
确认新建
</el-button>
</el-form-item>
</div>
</el-form>
</div>
</div>
</div>
</template>
<script>
import request from '../../../service/request';
export default {
data () {
const activityTimeVal = (rule, value, callback) => {
callback(new Error('请填写'));
};
return {
breadcrumbTitle: '新建上架规则',
fixedWidth: document.documentElement.clientWidth - 200,
ruleForm: {
memberType: 1,
},
rules: {
ruleTitle: [
{ required: true, message: '请填写', trigger: 'blur' },
],
activityTime: [
{ required: true, message: '请填写', trigger: 'blur', validator: activityTimeVal },
],
},
projectName: 'integral-mall',
useId: '',
hasSearchData: '',
sceneValue: 'member', // 场景值
toggleTag: true,
isEdit: this.$route.meta.type === 'edit',
isAdd: this.$route.meta.type === 'add',
isCopy: this.$route.meta.type === 'copy',
};
},
computed: {
storeParams () {
return !this.isAdd ? { creatorId: this.ruleForm.creatorId } : {};
},
},
mounted () {
console.log(this.$route.params.id);
if (!this.isAdd) {
this.integralMallProRuleId = this.$route.params.id;
this.getDatail(this.$route.params.id);
}
const obj = {
edit: '编辑上架规则',
add: '新建上架规则',
copy: '复制上架规则',
};
this.breadcrumbTitle = obj[this.$route.meta.type];
},
methods: {
/** 人群筛选器 */
cancelFilter () { // 取消
this.$refs.peopleFilter.cancelSet();
},
getData () {
this.$refs.peopleFilter.confirmSet();
},
// 获取需要回显的数据, 供保存时候使用
getBackData (val) {
console.log(val);
this.ruleForm.searchJson = val;
},
// 显示编辑,保存按钮隐藏,确认按钮显示 (子组件会调用)
editShow () {
console.log('hideBtn');
this.toggleTag = true;
},
// 显示保存按钮,隐藏确认按钮显示 (子组件会调用)
editHide () {
console.log('hideBtn');
console.log(this.useId);
this.toggleTag = false;
},
// 子组件触发父组件事件,返回过滤条件数据
findFilter (value) {
console.log(value);
this.ruleForm.filterJson = value;
},
// 隐藏保存按钮和确认按钮 (子组件会调用)
// 传个参数给父组件 来查数据
hideBtn () {
console.log('hideBtn');
this.toggleTag = false;
},
getDatail (integralMallProRuleId) {
request.get('/api-integral-mall/get-rule', { params: { integralMallProRuleId } }).then(res => {
if (res.data.result) {
this.ruleForm = res.data.result;
if (this.ruleForm.memberType == 3) {
this.hasSearchData = this.ruleForm.filterJson;
}
}
});
},
submit () {
if (this.ruleForm.memberType === 3) {
if (this.toggleTag && !this.ruleForm.filterJson) {
this.$message.error('请选中人群筛选器的数据');
return false;
}
}
this.$refs.ruleForm.validate(val => {
if (val) {
let params = {};
if (this.isCopy) {
const { ruleTitle, ruleExplanation, filterJson, memberType, searchJson } = this.ruleForm;
params = { ruleTitle, ruleExplanation, memberType, filterJson, searchJson };
} else {
params = this.ruleForm;
}
if (params.memberType == 1) {
delete params.filterJson;
delete params.searchJson;
}
request.get('/api-integral-mall/add-update-rule', { params }).then(res => {
this.$router.go(-1);
});
}
});
},
},
};
</script>
<style scoped>
.gic-people--button{
background: #f2f3f4;
padding: 0 0 20px 124px;
}
</style>
......@@ -16,10 +16,8 @@
</div>
<div class="section">
<div style="margin-bottom:22px">
<div class="infoTips">
<div class="infoTipsTitle">
<i class="el-icon-info" style="color:#1890FF" /> 温馨提示
</div>
<div class="infoTips" style="width:auto;">
<i class="el-icon-info infoTipsIcon" />
<div class="infoTipsContent">
<p>1.使用该功能请在常规设置中关闭“无库存自动下架”的设置项;</p>
<p>2.若礼品增加库存后将清空之前的统计数;</p>
......@@ -233,11 +231,7 @@ export default {
};
</script>
<style scoped>
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
.w-280 {
width: 280px;
}
......@@ -268,20 +262,5 @@ export default {
color: #909399;
font-size: 13px;
}
.infoTips {
margin-bottom: 20px;
background: #e6f7ff;
border-radius: 4px;
border: 1px solid #91d5ff;
padding: 13px 16px;
color: #606266;
}
.infoTipsTitle {
font-size: 14px;
line-height: 22px;
}
.infoTipsContent {
line-height: 22px;
font-size: 13px;
}
</style>
......@@ -663,11 +663,7 @@ export default {
}
}
}
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
.goods-list-content {
margin: 0 25px 25px 25px;
padding: 22px 24px 24px 24px;
......
......@@ -1153,11 +1153,6 @@ export default {
}
</style>
<style scoped>
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
.goods-list-content {
margin: 0 25px 25px 25px;
......
......@@ -562,11 +562,7 @@ export default {
};
</script>
<style scoped>
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
.m-r-10 {
margin-right: 10px;
}
......
......@@ -206,11 +206,7 @@ export default {
.mall-section-container {
padding-bottom: 58px;
}
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
.icon-type-title {
display: flex;
align-items: center;
......
......@@ -510,7 +510,7 @@ export default {
.section {
background: #fff;
margin: 24px;
/* padding: 24px; */
padding: 0;
}
.header-top {
/* margin: 15px 0 22px 0; */
......
......@@ -835,7 +835,7 @@ export default {
.section {
background: #fff;
margin: 24px;
padding-bottom: 24px;
padding: 0 0 24px 0;
}
.section-content h3 {
height: 55px;
......
......@@ -178,11 +178,7 @@ export default {
.w-280 {
width: 280px;
}
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
.header-top {
/* margin: 15px 0 22px 0; */
}
......
......@@ -218,10 +218,8 @@ input:focus {
.pagination{
float:right;
}
.w-260{
width:260px;
}
.user-header-pop {
.user-header-pop {
min-width: 95px;
}
.el-popover.user-header-pop {
......@@ -261,6 +259,11 @@ input:focus {
.mall-content-title h3 i:hover{
color:#909399;
}
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
/*编辑按钮*/
.el-icon-edit{
......@@ -346,21 +349,6 @@ input[type="number"] {
-moz-appearance: textfield;
}
/* .el-input__inner{
line-height:0px!important;
}
.el-input__inner::-webkit-input-placeholder {
line-height:normal!important;
}
::-moz-placeholder {
line-height:normal!important;
}
:-ms-input-placeholder {
line-height:normal!important;
} */
.icon-xinxixianshi{
color: #909399;
font-size: 14px;
......@@ -374,4 +362,65 @@ input[type="number"] {
fill: currentColor;
overflow: hidden;
}
/** 宽度*/
.w-260{
width:260px;
}
.w-280 {
width: 280px;
}
.w-300 {
width: 300px;
}
.w-140 {
width: 140px;
}
.w-160 {
width: 160px;
}
.w-100 {
width: 100px;
}
.w-180 {
width: 180px;
}
/** 提示 */
.infoTips {
display: flex;
padding: 5px 16px;
align-items: baseline;
color: #606266;
background: #e6f7ff;
border-radius: 2px;
margin-bottom: 20px;
width: fit-content;
}
.infoTipsIcon {
width: 12px;
color:#1890FF;
font-size: 12px;
margin-right: 9px;
}
.infoTipsContent {
line-height: 22px;
font-size: 12px;
color:#303133 ;
}
.infoTips_waring{
background: #FCF6F1;
color: #FA8C16;
}
/** 搜索条件 */
.search-wrap{
display: flex;
justify-content: space-around;
align-items: flex-start;
margin-bottom: 20px;
}
.table-page-search-wrapper{
flex: 1;
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
\ No newline at end of file
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