Commit ffaeb011 by member

配置项

parent d6c9433e
......@@ -13,14 +13,12 @@ const portfinder = require('portfinder')
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)
console.log(config.dev.devtool);
const devWebpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
},
// cheap-module-eval-source-map is faster for development
// devtool: config.dev.devtool,
devtool: config.dev.devtool,
// these devServer options should be customized in /config/index.js
devServer: {
......@@ -48,9 +46,7 @@ const devWebpackConfig = merge(baseWebpackConfig, {
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"development"'
}
'process.env': require('../config/dev.env')
}),
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
......
......@@ -18,6 +18,7 @@
"element-ui": "^2.3.9",
"file-saver": "^1.3.8",
"tinymce": "^4.8.3",
"vant": "^1.6.13",
"vue": "^2.5.2",
"vue-clipboard2": "^0.2.0",
"vue-router": "^3.0.1",
......
<template>
<div class="birth-select">
<div class="start-date date-block">
<el-select v-model="startVal[0]" style="width: 100px" placeholder="月份" @change="handleStartMonthChange">
<el-option v-for="item in MonthList" :value="item.value" :key="item.key" :label="item.label"> </el-option>
</el-select>
<span class="space"></span>
<el-select v-model="startVal[1]" style="width: 100px" placeholder="日期" @change="handleStartDateChange">
<el-option v-for="item in startDateList" :value="item.value" :key="item.key" :label="item.label"> </el-option>
</el-select>
</div>
<span class="range"></span>
<div class="end-date date-block">
<el-select v-model="endVal[0]" style="width: 100px" placeholder="月份" @change="handleEndMonthChange">
<el-option v-for="item in MonthList" :value="item.value" :key="item.key" :label="item.label"> </el-option>
</el-select>
<span class="space"></span>
<el-select v-model="endVal[1]" style="width: 100px" placeholder="日期" @change="handleEndDateChange">
<el-option v-for="item in endDateList" :value="item.value" :key="item.key" :label="item.label"> </el-option>
</el-select>
</div>
</div>
</template>
<script>
export default {
name: 'GicSelect',
props: {
dateval: [String, Array]
},
data() {
return {
startVal: ['', ''],
endVal: ['', ''],
// 月份
MonthList: [
{ key: 1, value: '01', label: '1月' },
{ key: 2, value: '02', label: '2月' },
{ key: 3, value: '03', label: '3月' },
{ key: 4, value: '04', label: '4月' },
{ key: 5, value: '05', label: '5月' },
{ key: 6, value: '06', label: '6月' },
{ key: 7, value: '07', label: '7月' },
{ key: 8, value: '08', label: '8月' },
{ key: 9, value: '09', label: '9月' },
{ key: 10, value: '10', label: '10月' },
{ key: 11, value: '11', label: '11月' },
{ key: 12, value: '12', label: '12月' }
],
// 日期
daysList: [['01', '03', '05', '07', '08', '10', '12'], ['02'], ['04', '06', '09', '11']],
startDateList: [
{ key: 1, value: '01', label: '1日' },
{ key: 2, value: '02', label: '2日' },
{ key: 3, value: '03', label: '3日' },
{ key: 4, value: '04', label: '4日' },
{ key: 5, value: '05', label: '5日' },
{ key: 6, value: '06', label: '6日' },
{ key: 7, value: '07', label: '7日' },
{ key: 8, value: '08', label: '8日' },
{ key: 9, value: '09', label: '9日' },
{ key: 10, value: '10', label: '10日' },
{ key: 11, value: '11', label: '11日' },
{ key: 12, value: '12', label: '12日' },
{ key: 13, value: '13', label: '13日' },
{ key: 14, value: '14', label: '14日' },
{ key: 15, value: '15', label: '15日' },
{ key: 16, value: '16', label: '16日' },
{ key: 17, value: '17', label: '17日' },
{ key: 18, value: '18', label: '18日' },
{ key: 19, value: '19', label: '19日' },
{ key: 20, value: '20', label: '20日' },
{ key: 21, value: '21', label: '21日' },
{ key: 22, value: '22', label: '22日' },
{ key: 23, value: '23', label: '23日' },
{ key: 24, value: '24', label: '24日' },
{ key: 25, value: '25', label: '25日' },
{ key: 26, value: '26', label: '26日' },
{ key: 27, value: '27', label: '27日' },
{ key: 28, value: '28', label: '28日' },
{ key: 29, value: '29', label: '29日' },
{ key: 30, value: '30', label: '30日' },
{ key: 31, value: '31', label: '31日' }
],
endDateList: [
{ key: 1, value: '01', label: '1日' },
{ key: 2, value: '02', label: '2日' },
{ key: 3, value: '03', label: '3日' },
{ key: 4, value: '04', label: '4日' },
{ key: 5, value: '05', label: '5日' },
{ key: 6, value: '06', label: '6日' },
{ key: 7, value: '07', label: '7日' },
{ key: 8, value: '08', label: '8日' },
{ key: 9, value: '09', label: '9日' },
{ key: 10, value: '10', label: '10日' },
{ key: 11, value: '11', label: '11日' },
{ key: 12, value: '12', label: '12日' },
{ key: 13, value: '13', label: '13日' },
{ key: 14, value: '14', label: '14日' },
{ key: 15, value: '15', label: '15日' },
{ key: 16, value: '16', label: '16日' },
{ key: 17, value: '17', label: '17日' },
{ key: 18, value: '18', label: '18日' },
{ key: 19, value: '19', label: '19日' },
{ key: 20, value: '20', label: '20日' },
{ key: 21, value: '21', label: '21日' },
{ key: 22, value: '22', label: '22日' },
{ key: 23, value: '23', label: '23日' },
{ key: 24, value: '24', label: '24日' },
{ key: 25, value: '25', label: '25日' },
{ key: 26, value: '26', label: '26日' },
{ key: 27, value: '27', label: '27日' },
{ key: 28, value: '28', label: '28日' },
{ key: 29, value: '29', label: '29日' },
{ key: 30, value: '30', label: '30日' },
{ key: 31, value: '31', label: '31日' }
]
};
},
methods: {
//
handleMonthValue(position, val) {
const WM = this.daysList.findIndex((item, i) => {
return item.includes(val);
});
if (position == 'start') {
this.handleChangeData(this.startDateList, WM);
} else if (position == 'end') {
this.handleChangeData(this.endDateList, WM);
}
},
handleChangeData(data, inx) {
const length = data.length; // 31 29 30
if (inx == 0) {
// 31天
this.handleLength(length, data, 0);
} else if (inx == 2) {
// 如果升级 30天
this.handleLength(length, data, 1);
} else {
// 29天
this.handleLength(length, data, 2);
}
},
handleLength(length, data, days) {
if (length == 31) {
if (days == 0) {
return;
} else if (days == 1) {
data.pop();
} else if (days == 2) {
data.splice(29, 2);
}
} else if (length == 30) {
if (days == 0) {
data.push({ key: 31, value: '31', label: '31日' });
} else if (days == 1) {
return;
} else if (days == 2) {
data.splice(29, 1);
}
} else if (length == 29) {
if (days == 0) {
data.push({ key: 30, value: '30', label: '30日' });
data.push({ key: 31, value: '31', label: '31日' });
} else if (days == 1) {
data.push({ key: 30, value: '30', label: '30日' });
} else if (days == 2) {
return;
}
}
},
// 开始月份
handleStartMonthChange(val) {
this.handleMonthValue('start', val);
this.handleDate();
this.$emit('change');
},
handleStartDateChange(val) {
this.handleDate();
this.$emit('change');
},
handleEndMonthChange(val) {
this.handleMonthValue('end', val);
this.handleDate();
this.$emit('change');
},
handleEndDateChange(val) {
this.handleDate();
this.$emit('change');
},
handleDate() {
if (!this.startVal[0] || !this.startVal[0] || !this.endVal[0] || !this.endVal[1]) {
return;
}
const start = this.startVal.join('');
const end = this.endVal.join('');
if (start - end > 0) {
this.$message.warning('开始生日日期不能大于结束日期');
this.$emit('update:dateval', '');
return;
}
const value = [start, end];
this.$emit('update:dateval', value);
},
// 回显数据
replay(start, end) {
this.startVal[0] = start.slice(0, 2);
this.startVal[1] = start.slice(2, 4);
this.endVal[0] = end.slice(0, 2);
this.endVal[1] = end.slice(2, 4);
}
},
created() {
if (this.dateval[0] && this.dateval[1]) {
this.replay(this.dateval[0], this.dateval[1]);
}
}
};
</script>
<style lang="scss" scoped>
.birth-select {
.date-block {
display: inline-block;
.space {
display: inline-block;
width: 10px;
}
}
.range {
display: inline-block;
vertical-align: middle;
width: 30px;
height: 32px;
line-height: 32px;
font-size: 12px;
text-align: center;
}
}
</style>
<template>
<!-- 标签模板配置 -->
<div class="tag-config">
<div v-for="(parent, pindex) in templateData" :key="pindex">
<!-- 1.选项控件 -->
<template v-if="parent.templateCode == 'tag001'">
<div class="m-b-20" :key="'tag1' + pindex">
<div class="checkboxOption-wrap__body__checkAll border-box">
<el-checkbox :indeterminate="parent.isIndeterminate" v-model="parent.checkAll" @change="handleCheckAllChange($event, parent)">全选</el-checkbox>
</div>
<div class="checkboxOption-wrap__body__options border-box">
<el-checkbox-group v-model="parent.checkeditems" @change="handleCheckedChange($event, parent)">
<el-checkbox v-for="(item, index) in parent.options" :label="item.key" :key="item.key + index">{{ item.value }}</el-checkbox>
</el-checkbox-group>
</div>
</div>
</template>
<!-- 2.数字范围 -->
<template v-if="parent.templateCode == ''">
<div class="m-b-20" :key="'tag2' + pindex">
<el-input v-model="parent.numRange[0]" class="select-wrap-input" style="width: 100px;margin-right: 0;" placeholder="请输入数字"></el-input
><!-- @keyup.native="(value) => toInputFrom(value)" -->
<label> - </label>
<el-input v-model="parent.numRange[1]" class="select-wrap-input" style="width: 100px;margin-right: 0;" placeholder="请输入数字"></el-input>
<!-- <label class="label-tip">注:如果起始值为空则视为小于等于最大输入值;如果最大值为空则视为大于等于最小输入值!</label> -->
</div>
</template>
<!-- 3.时间属性-固定时段/相对时段+最近+之后 -->
<template v-if="parent.templateCode == 'tag014'">
<div class="m-b-20" :key="'tag3' + pindex">
<el-radio v-model="parent.radio" label="1">固定时段</el-radio>
<el-radio v-model="parent.radio" label="2">相对时段</el-radio>
<!-- 固定时段 -->
<div class="m-t-18 w-438 p-20 border-box bg-f3f6f9" v-if="parent.radio == 1">
<el-date-picker
v-model="parent.dateRangeValue"
type="daterange"
:editable="false"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
format="yyyyMMdd"
value-format="yyyyMMdd"
:default-time="['000000', '235959']"
><!-- :picker-options="pickerOptions" -->
</el-date-picker>
</div>
<!-- 相对时段 -->
<div class="relative-range m-t-18 border-box" v-if="parent.radio != 1">
<div>
<div>
<label class="inline-block w-98 label-unit">时间精度</label>
<el-radio-group v-model="parent.timeRadio" @change="timeRadioChange($event, parent)">
<el-radio label="1"></el-radio>
<el-radio label="2"></el-radio>
<el-radio label="3"></el-radio>
</el-radio-group>
</div>
<div class="m-t-20">
<label class="inline-block w-98"></label>
<el-radio v-model="parent.timeChecked" label="1" @change="currentDayChange($event, parent)">{{ parent.timeRadio == 1 ? '天' : parent.timeRadio == 2 ? '月' : '年' }}</el-radio>
<!-- <el-checkbox v-model="parent.timeChecked"><label class="inline-block middle">{{parent.timeRadio==1?'天':parent.timeRadio==2?'月':'年'}}</label></el-checkbox> -->
</div>
<div class="m-t-20">
<label class="inline-block w-98"></label>
<el-radio v-model="parent.timeChecked" label="2">{{ '' }}</el-radio>
<!-- <el-checkbox v-model="parent.timeCheckedTwo"> </el-checkbox> -->
<el-select v-model="parent.timeSelect" placeholder="请选择" class="w-86 m-l-8">
<el-option label="最近" value="1"></el-option>
<el-option label="之后" value="2"></el-option>
</el-select>
<el-input
v-model="parent.timeInput"
placeholder="请输入"
class="w-90"
@blur="value => toEditDateInput(value, parent.timeRadio, parent)"
:disabled="parent.timeChecked == 1 ? true : false"
></el-input>
<template v-if="parent.timeRadio == 1">
<label class="inline-block middle label-unit m-l-8"></label>
<label class="inline-block middle label-tip">正整数,最大365</label>
</template>
<template v-if="parent.timeRadio == 2">
<label class="inline-block middle label-unit m-l-8"></label>
<label class="inline-block middle label-tip">正整数,最大12</label>
</template>
<template v-if="parent.timeRadio == 3">
<label class="inline-block middle label-unit m-l-8"></label>
<label class="inline-block middle label-tip">正整数,最大2</label>
</template>
</div>
</div>
</div>
</div>
</template>
<!-- 4.最近 天 -->
<template v-if="parent.templateCode == 'tag005'">
<div class="m-b-20" :key="'tag4' + pindex">
<label class="inline-block middle label-unit">最近</label
><el-input v-model="parent.timeRecent" placeholder="请输入" class="w-90 m-r-20 m-l-20" @blur="value => toEditInput(value, 'timeRecent', parent)"></el-input
><label class="inline-block middle label-unit"></label>
</div>
</template>
<!-- 5.之后 天 -->
<template v-if="parent.templateCode == 'tag006'">
<div class="m-b-20" :key="'tag5' + pindex">
<label class="inline-block middle label-unit">之后</label
><el-input v-model="parent.timeAfter" placeholder="请输入" class="w-90 m-r-20 m-l-20" @blur="value => toEditInput(value, 'timeAfter', parent)"></el-input
><label class="inline-block middle label-unit"></label>
</div>
</template>
<!-- 6.属于/不属于 -->
<template v-if="parent.templateCode == 'tag002'">
<div class="m-b-20" :key="'tag6' + pindex">
<el-radio v-model="parent.computeRadio" label="in">属于</el-radio>
<el-radio v-model="parent.computeRadio" label="notIn">不属于</el-radio>
</div>
</template>
<!-- 7.固定时段/最近 -->
<template v-if="parent.templateCode == 'tag004'">
<div class="m-b-20" :key="'tag7' + pindex">
<div>
<el-radio v-model="parent.fixedRecentRadio" label="1">固定时段</el-radio>
<el-radio v-model="parent.fixedRecentRadio" label="2">最近时段</el-radio>
</div>
<!-- 固定时段 -->
<div class="m-t-18 w-500 h-80 fixed-date-picker border-box bg-f3f6f9">
<label class="inline-block middle label-unit m-r-8" v-if="parent.fixedRecentRadio == 1">时间范围</label
><el-date-picker
v-model="parent.fixedRecentRangeValue"
v-if="parent.fixedRecentRadio == 1"
type="daterange"
:editable="false"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
format="yyyyMMdd"
value-format="yyyyMMdd"
:default-time="['000000', '235959']"
><!-- :picker-options="pickerOptions" -->
</el-date-picker>
<div v-if="parent.fixedRecentRadio == 2">
<label class="inline-block middle label-unit m-r-8">最近</label
><el-input v-model="parent.fixedRecentTimeRecent" placeholder="请输入" class="w-90 m-r-8" @blur="value => toEditInput(value, 'fixedRecentTimeRecent', parent)"></el-input
><label class="inline-block middle label-unit"></label>
</div>
</div>
</div>
</template>
<!-- 8.输入添加值 -->
<template v-if="parent.templateCode == 'tag007'">
<div class="m-b-20" :key="'tag8' + pindex">
<div><el-input v-model="parent.addInputValue" placeholder="请输入" class="w-184 m-r-8"></el-input><el-button class="middle" type="text" @click.stop="addInputVal(parent)">添加</el-button></div>
<div class="m-t-18 add-tags-wrap">
<template v-for="(item, index) in parent.addTags">
<span :key="item.value + index" class="el-tag el-tag--small">{{ item.value }}<i class="el-tag__close el-icon-close" @click="delInputVal(index, parent)"></i></span>
</template>
</div>
</div>
</template>
<!-- 9.输入搜索下拉多选 添加值 -->
<template v-if="parent.templateCode == 'tag008'">
<div class="m-b-20" :key="'tag9' + pindex">
<div class="add-search-select">
<el-select
size="small"
v-model="parent.searchModel"
multiple
filterable
remote
placeholder="请输入关键词"
:reserve-keyword="false"
:remote-method="remoteMethod"
@focus="remoteMethodFocus($event, parent, pindex)"
@change="changeRemoteMethod($event, parent)"
class="el-select--small"
>
<el-option v-for="item in parent.searchOptions" :key="item.key" :label="item.value" :value="item.key"> </el-option> </el-select
><el-button class="m-l-8 middle" type="text" @click.stop="addSearchSelectVal(parent)">添加</el-button>
</div>
<div class="m-t-18 add-tags-wrap">
<template v-for="(item, index) in parent.addSelectTags">
<span class="el-tag el-tag--small" :key="item.value + index">{{ item.value }}<i class="el-tag__close el-icon-close" @click="delSearchSelectVal(index, parent)"></i></span>
</template>
</div>
</div>
</template>
<!-- 10.存在其一/所有,/属于不属于 -->
<template v-if="parent.templateCode == 'tag012'">
<div class="m-b-20" :key="'tag10' + pindex">
<el-select v-model="parent.selectOne" placeholder="请选择" class="w-98">
<el-option label="所有" value="all"></el-option>
<el-option label="存在其一" value="in"></el-option> </el-select
><label class="inline-block middle label-unit m-l-8">{{ tagData.tagName }}</label
><el-select v-model="parent.selectTwo" placeholder="请选择" class="w-98 m-l-8">
<el-option label="属于" value="in"></el-option>
<el-option label="不属于" value="notin"></el-option> </el-select
><!-- <label
class="inline-block middle label-tip m-l-8"
>{{parent.selectLabelTip}}</label> -->
</div>
</template>
<!-- 11.门店选择器 -->
<div v-if="parent.templateCode == 'tag011'">
<div class="m-b-20" :key="'tag11' + pindex">
<vue-gic-store-new :options="parent.uuidOptions" :uuid.sync="parent.uuid" ref="storeNew" :isAdd="parent.isAdd"> </vue-gic-store-new>
</div>
</div>
<!-- 12.多选项( 全部选项/已选选项 ) -->
<template v-if="parent.templateCode == 'tag009'">
<div class="multiple-select-wrap m-b-20" :key="'tag12' + pindex">
<!-- <div class="multiple-select-wrap__search w-184">
<el-input
placeholder="请输入关键字搜索"
prefix-icon="el-icon-search"
v-model="parent.inputSearch"
@keyup.native="(value) => toSearchInput(value)">
</el-input>
</div> -->
<div class="multiple-select-wrap__body">
<div class="multiple-select-wrap__tab">
<el-tabs v-model="parent.allSelectActive">
<el-tab-pane label="全部选项" name="first">
<div class="all-select-options">
<template v-for="(item, index) in parent.allSelectOptions">
<el-checkbox :key="item.check + index" v-model="item.check" @change="allSelectChange($event, index, item, parent)">{{ item.name }}</el-checkbox>
</template>
</div>
</el-tab-pane>
<el-tab-pane :label="'已选选项(' + parent.selectedOptions.length + ')'" name="second">
<div class="slected-opyions">
<template v-for="(item, index) in parent.selectedOptions">
<span class="el-tag el-tag--small" :key="item.name + index">{{ item.name }}<i class="el-tag__close el-icon-close" @click="delallSelectVal(index, item, parent)"></i></span>
</template>
</div>
</el-tab-pane>
</el-tabs>
</div>
</div>
</div>
</template>
<!-- 13.多选项 城市选择( 全部选项/已选选项 ) -->
<template v-if="parent.templateCode == 'tag010'">
<div class="multiple-select-wrap city-select-wrap m-b-20" :key="'tag13' + pindex">
<!-- <div class="multiple-select-wrap__search w-184">
<el-input
placeholder="请输入关键字搜索"
prefix-icon="el-icon-search"
v-model="parent.inputSearch"
@keyup.native="(value) => toSearchInput(value,'city')">
</el-input>
</div> -->
<div class="multiple-select-wrap__body">
<div class="multiple-select-wrap__tab">
<el-tabs v-model="parent.citySelectActive">
<el-tab-pane label="全部选项" name="first">
<div class="all-select-options all-select-options__city">
<div class="city-checkbox city-checkbox-all border-box">
<el-checkbox :indeterminate="parent.isIndeterminateCity" v-model="parent.checkAllCity" @change="cityCheckAllChange($event, parent)">全选</el-checkbox>
</div>
<el-checkbox-group v-model="parent.checkeditemsCity" @change="citySelectChange($event, parent)">
<template v-for="(item, index) in parent.citySelectOptions">
<div class="city-checkbox border-box border-t-e4e7ed" :key="item.provinceId + index">
<el-checkbox :label="item.provinceId" :key="item.provinceId">{{ '' }}</el-checkbox
><label class="inline-block middle font-14 pointer city-name" @click.stop="toggleCity(item.provinceId, item, parent)">{{ item.provinceName }}</label>
<div
class="el-select-dropdown el-popper is-multiple"
style="min-width: 240px; position: absolute; top: 30px; left: 20px; transform-origin: center top 0px; z-index: 2215;"
x-placement="bottom-start"
v-if="item.showCity"
>
<div class="el-scrollbar" style="">
<div class="el-select-dropdown__wrap el-scrollbar__wrap" style=" margin-right: -17px;">
<ul class="el-scrollbar__view el-select-dropdown__list">
<!--市列表-->
<template v-for="(itemCity, index) in item.children">
<li
:key="itemCity.check + index"
:class="['el-select-dropdown__item', 'city-name', !!itemCity.check ? 'selected' : '']"
@click.stop="toggleClickCity(itemCity, item, parent)"
>
<span class="city-name">{{ itemCity.cityName }}</span>
</li>
</template>
</ul>
</div>
<div class="el-scrollbar__bar is-horizontal">
<div class="el-scrollbar__thumb" style="transform: translateX(0%);"></div>
</div>
<div class="el-scrollbar__bar is-vertical">
<div class="el-scrollbar__thumb" style="transform: translateY(0%);"></div>
</div>
</div>
<!---->
<div x-arrow="" class="popper__arrow" style="left: 35px;"></div>
</div>
</div>
</template>
</el-checkbox-group>
</div>
</el-tab-pane>
<el-tab-pane :label="'已选选项(' + parent.citySelectedOptions.length + ')'" name="second">
<div class="slected-opyions city-slected-opyions">
<template v-for="(item, index) in parent.citySelectedOptions">
<span :key="item.selected + index" class="el-tag el-tag--small">{{ item.selected }}<i class="el-tag__close el-icon-close" @click="delcitySelectVal(index, item, parent)"></i></span>
</template>
</div>
</el-tab-pane>
</el-tabs>
</div>
</div>
</div>
</template>
<!-- 14.选项控件异步 -->
<template v-if="parent.templateCode == 'tag013'">
<div class="m-b-20" :key="'tag14' + pindex">
<div class="checkboxOption-wrap__body__checkAll border-box">
<el-checkbox :indeterminate="parent.isIndeterminate" v-model="parent.checkAll" @change="handleCheckAllChange($event, parent)">全选</el-checkbox>
</div>
<div class="checkboxOption-wrap__body__options border-box">
<el-checkbox-group v-model="parent.checkeditems" @change="handleCheckedChange($event, parent)">
<el-checkbox v-for="(item, index) in parent.options" :label="item.key" :key="item.key + index">{{ item.value }}</el-checkbox>
</el-checkbox-group>
</div>
</div>
</template>
<!-- 15.时间属性(月日-月日+最近+之后) -->
<template v-if="parent.templateCode == 'tag015'">
<div class="m-b-20" :key="'tag15' + pindex">
<el-radio v-model="parent.radio" label="1">固定时段</el-radio>
<el-radio v-model="parent.radio" label="2">相对时段</el-radio>
<!-- 固定时段 -->
<div class="m-t-18 w-438 p-20 border-box bg-f3f6f9" v-if="parent.radio == 1">
<!-- @change="changeGicSelectValue(pindex, key, ind)" -->
<gic-select :dateval.sync="parent.monthDayRange"></gic-select>
<!-- <vue-gic-datepicker
v-model="parent.monthDayRange"
type="daterange"
:editable="false"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="MMdd"
value-format="MMdd"
>
</vue-gic-datepicker> -->
</div>
<!-- 相对时段 -->
<div class="relative-range m-t-18 border-box" v-if="parent.radio != 1">
<div>
<div>
<label class="inline-block w-98 label-unit">时间精度</label>
<el-radio-group v-model="parent.timeRadio" @change="timeRadioChange($event, parent)">
<el-radio label="1"></el-radio>
<el-radio label="2"></el-radio>
</el-radio-group>
</div>
<div class="m-t-20">
<label class="inline-block w-98"></label>
<el-radio v-model="parent.timeChecked" label="1" @change="currentDayChange($event, parent)">{{ parent.timeRadio == 1 ? '天' : '月' }}</el-radio>
<!-- <el-checkbox v-model="parent.timeChecked"><label class="inline-block middle">{{parent.timeRadio==1?'天':'月'}}</label></el-checkbox> -->
</div>
<div class="m-t-20">
<label class="inline-block w-98"></label>
<el-radio v-model="parent.timeChecked" label="2">{{ '' }}</el-radio>
<!-- <el-checkbox v-model="parent.timeCheckedTwo"> </el-checkbox> -->
<el-select v-model="parent.timeSelect" placeholder="请选择" class="w-86 m-l-8">
<el-option label="最近" value="1"></el-option>
<el-option label="之后" value="2"></el-option>
</el-select>
<el-input
v-model="parent.timeInput"
placeholder="请输入"
class="w-90"
@blur="value => toEditDateInput(value, parent.timeRadio, parent)"
:disabled="parent.timeChecked == 1 ? true : false"
></el-input>
<template v-if="parent.timeRadio == 1">
<label class="inline-block middle label-unit m-l-8"></label>
<label class="inline-block middle label-tip">正整数,最大365</label>
</template>
<template v-if="parent.timeRadio == 2">
<label class="inline-block middle label-unit m-l-8"></label>
<label class="inline-block middle label-tip">正整数,最大12</label>
</template>
</div>
</div>
</div>
</div>
</template>
<!-- 16.时间属性(年月日-年月日) -->
<template v-if="parent.templateCode == 'tag016'">
<div class="m-b-20" :key="'tag16' + pindex">
<el-date-picker
v-model="parent.dateRangeValue"
type="daterange"
:editable="false"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
format="yyyyMMdd"
value-format="yyyyMMdd"
:default-time="['000000', '235959']"
><!-- :picker-options="pickerOptions" -->
</el-date-picker>
</div>
</template>
<!-- 19.时间属性(年月日时分秒-年月日时分秒) -->
<template v-if="parent.templateCode == 'tag019'">
<div class="m-b-20" :key="'tag17' + pindex">
<el-radio v-model="parent.radio" label="1">固定时段</el-radio>
<el-radio v-model="parent.radio" label="2">相对时段</el-radio>
<!-- 固定时段 -->
<div class="m-t-18 w-438 p-20 border-box bg-f3f6f9" v-if="parent.radio == 1">
<el-date-picker
v-model="parent.dateRangeValue"
type="daterange"
:editable="false"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
format="yyyyMMdd"
value-format="yyyy-MM-dd HH:mm:ss"
:default-time="['00:00:00', '23:59:59']"
>
</el-date-picker>
</div>
<!-- 相对时段 -->
<div class="relative-range m-t-18 border-box" v-if="parent.radio != 1">
<div>
<div>
<label class="inline-block w-98 label-unit">时间精度</label>
<el-radio-group v-model="parent.timeRadio" @change="timeRadioChange($event, parent)">
<el-radio label="1"></el-radio>
<el-radio label="2"></el-radio>
<el-radio label="3"></el-radio>
</el-radio-group>
</div>
<div class="m-t-20">
<label class="inline-block w-98"></label>
<el-radio v-model="parent.timeChecked" label="1" @change="currentDayChange($event, parent)">{{ parent.timeRadio == 1 ? '天' : parent.timeRadio == 2 ? '月' : '年' }}</el-radio>
<!-- <el-checkbox v-model="parent.timeChecked"><label class="inline-block middle">{{parent.timeRadio==1?'天':parent.timeRadio==2?'月':'年'}}</label></el-checkbox> -->
</div>
<div class="m-t-20">
<label class="inline-block w-98"></label>
<el-radio v-model="parent.timeChecked" label="2">{{ '' }}</el-radio>
<!-- <el-checkbox v-model="parent.timeCheckedTwo"> </el-checkbox> -->
<el-select v-model="parent.timeSelect" placeholder="请选择" class="w-86 m-l-8">
<el-option label="最近" value="1"></el-option>
<el-option label="之后" value="2"></el-option>
</el-select>
<el-input
v-model="parent.timeInput"
placeholder="请输入"
class="w-90"
@blur="value => toEditDateInput(value, parent.timeRadio, parent)"
:disabled="parent.timeChecked == 1 ? true : false"
></el-input>
<template v-if="parent.timeRadio == 1">
<label class="inline-block middle label-unit m-l-8"></label>
<label class="inline-block middle label-tip">正整数,最大365</label>
</template>
<template v-if="parent.timeRadio == 2">
<label class="inline-block middle label-unit m-l-8"></label>
<label class="inline-block middle label-tip">正整数,最大12</label>
</template>
<template v-if="parent.timeRadio == 3">
<label class="inline-block middle label-unit m-l-8"></label>
<label class="inline-block middle label-tip">正整数,最大2</label>
</template>
</div>
</div>
</div>
</div>
</template>
<!-- 17.时间属性(年月日-年月日 + 最近) -->
<template v-if="parent.templateCode == 'tag017'">
<div class="m-b-20" :key="'tag18' + pindex">
<el-radio v-model="parent.radio" label="1">固定时段</el-radio>
<el-radio v-model="parent.radio" label="2">相对时段</el-radio>
<!-- 固定时段 -->
<div class="m-t-18 w-438 p-20 border-box bg-f3f6f9" v-if="parent.radio == 1">
<el-date-picker
v-model="parent.dateRangeValue"
type="daterange"
:editable="false"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
format="yyyyMMdd"
value-format="yyyyMMdd"
:default-time="['000000', '235959']"
><!-- :picker-options="pickerOptions" -->
</el-date-picker>
</div>
<!-- 相对时段 -->
<div class="relative-range m-t-18 border-box" v-if="parent.radio != 1">
<div>
<div>
<label class="inline-block w-98 label-unit">时间精度</label>
<el-radio-group v-model="parent.timeRadio" @change="timeRadioChange($event, parent)">
<el-radio label="1"></el-radio>
<el-radio label="2"></el-radio>
<el-radio label="3"></el-radio>
</el-radio-group>
</div>
<div class="m-t-20">
<label class="inline-block w-98"></label>
<el-radio v-model="parent.timeChecked" label="1" @change="currentDayChange($event, parent)">{{ parent.timeRadio == 1 ? '天' : parent.timeRadio == 2 ? '月' : '年' }}</el-radio>
<!-- <el-checkbox v-model="parent.timeChecked"><label class="inline-block middle">{{parent.timeRadio==1?'天':parent.timeRadio==2?'月':'年'}}</label></el-checkbox> -->
</div>
<div class="m-t-20">
<label class="inline-block w-98"></label>
<el-radio v-model="parent.timeChecked" label="2">{{ '' }}</el-radio>
<!-- <el-checkbox v-model="parent.timeCheckedTwo"> </el-checkbox> -->
<el-select v-model="parent.timeSelect" placeholder="请选择" class="w-86 m-l-8">
<el-option label="最近" value="1"></el-option>
</el-select>
<el-input
v-model="parent.timeInput"
placeholder="请输入"
class="w-90"
@blur="value => toEditDateInput(value, parent.timeRadio, parent)"
:disabled="parent.timeChecked == 1 ? true : false"
></el-input>
<template v-if="parent.timeRadio == 1">
<label class="inline-block middle label-unit m-l-8"></label>
<label class="inline-block middle label-tip">正整数,最大365</label>
</template>
<template v-if="parent.timeRadio == 2">
<label class="inline-block middle label-unit m-l-8"></label>
<label class="inline-block middle label-tip">正整数,最大12</label>
</template>
<template v-if="parent.timeRadio == 3">
<label class="inline-block middle label-unit m-l-8"></label>
<label class="inline-block middle label-tip">正整数,最大2</label>
</template>
</div>
</div>
</div>
</div>
</template>
</div>
</div>
</template>
<script>
import qs from 'qs';
import GicSelect from './birth-select';
import { getTagType, findWidget, findOndJson } from '@/request/tagConfig';
export default {
name: 'tag-config',
props: {
tagId: String
},
data() {
return {
templateData: [],
id: '',
searchFlag: false,
// 标签详情数据
tagData: {
tagId: '',
tagName: '',
tagDescribe: '',
isActive: 0, // 是否实时
inputSearch: '' // 输入搜索
},
tag001: {
checkeditems: [],
isIndeterminate: false,
checkAll: false,
options: [
// {
// value: 1,
// key: '男'
// },
// {
// value: 2,
// key: '女'
// }
],
compute: 'in'
},
// 属于/不属于(计算控件)
tag002: {
computeRadio: 'in'
},
// 数字区间
tag003: {
numRange: ['', '']
},
// 时间属性-固定时段/最近
tag004: {
fixedRecentRadio: '1',
fixedRecentRangeValue: [],
fixedRecentTimeRecent: ''
},
// 最近 天
tag005: {
timeRecent: '',
timeType: 'lastday'
},
// 之后 天
tag006: {
timeAfter: '',
timeType: 'afterday'
},
// 添加输入值
tag007: {
addInputValue: '',
addTags: []
},
// 搜索下拉多选添加值
tag008: {
searchModel: [],
searchOptions: [
// {
// key: 1,
// value: '测试去1'
// }
],
addSelectTags: []
},
// 多选项( 全部选项/已选选项 )
tag009: {
allSelectActive: 'first',
inputSearch: '',
allSelectOptions: [
// {
// id: 1,
// check: false,
// name: '欧时力'
// },
// {
// id: 2,
// check: false,
// name: '伊芙丽'
// }
],
selectedOptions: []
},
// 多选项(城市选择) ( 全部选项/已选选项 )
tag010: {
citySelectActive: 'first',
isIndeterminateCity: false,
checkAllCity: false,
citySelectOptions: [
{
provinceId: 1,
check: false,
provinceName: '北京',
showCity: false,
children: [
{
cityId: 11,
cityName: '北京',
check: false
}
]
},
{
provinceId: 2,
check: false,
provinceName: '浙江',
showCity: false,
children: [
{
cityId: 21,
cityName: '杭州',
check: false
},
{
cityId: 22,
cityName: '温州',
check: false
}
]
}
],
checkeditemsCity: [], // 已选省
citySelectedOptions: []
},
// 门店选择器
tag011: {
// 门店选择器参数
uuid: '', // 新增传空,编辑必传
// 需要的下拉 默认为全部[0,1,2,3,4,5]
// 0 全部 1 门店类型 2门店标签 3 门店区域 4 门店分组 5 部分门店
uuidOptions: [0, 1, 2, 3, 4, 5],
isAdd: true // 新增: true, 编辑: false
},
// 多范围()
tag012: {
selectOne: 'all',
selectTwo: 'in',
selectLabel: '曾经消费门店',
selectLabelTip: '注:存在其一即会员至少有一个字段值满足所选条件;所有即会员的所有字段值满足所选条件'
},
// 多选项值异步
tag013: {
checkeditems: [],
isIndeterminate: false,
checkAll: false,
options: [
// {
// value: 1,
// key: '男'
// },
// {
// value: 2,
// key: '女'
// }
]
},
// 时间属性-固定时段/相对时段 年月日-年月日+最近+之后
tag014: {
radio: '1',
dateRangeValue: [],
// 相对时间
timeRadio: '1', // 年月日
timeChecked: '1', //当 年月日 / 最近/之后
// timeCheckedTwo: false,
timeSelect: '1', // 最近/之后
timeInput: ''
},
// 时间属性- 月日-月日+最近+之后
tag015: {
radio: '1',
monthDayRange: [],
// 相对时间
timeRadio: '1', // 月日
timeChecked: '1', //当 月日 / 最近/之后
timeSelect: '1', // 最近/之后
timeInput: ''
},
// 时间属性- 年月日-年月日
tag016: {
dateRangeValue: []
},
// 时间属性- 年月日-年月日+最近
tag017: {
radio: '1',
dateRangeValue: [],
// 相对时间
timeRadio: '1', // 年月日
timeChecked: '1', //当 年月日 / 最近
// timeCheckedTwo: false,
timeSelect: '1', // 最近
timeInput: ''
},
// 时间属性- 年月日-年月日
tag019: {
radio: '1',
dateRangeValue: [],
// 相对时间
timeRadio: '1', // 年月日
timeChecked: '1', //当 年月日 / 最近/之后
// timeCheckedTwo: false,
timeSelect: '1', // 最近/之后
timeInput: ''
}
};
},
components: {
GicSelect
},
watch: {
tagId: {
immediate: true,
handler(newval) {
this.id = newval;
this._getTagType(this.id);
}
}
},
methods: {
/**
* 获取 templateData
*/
getTemplateData() {
return this.templateData;
},
//查看标签的配置项
_getTagType(id) {
const param = {
tagId: id,
requestProject: 'gic-member-tag-web'
};
getTagType(param)
.then(res => {
if (res.errorCode == 1) {
const data = res.result;
this.templateObj = {
columnKey: data.columnKey,
template: data.template
};
if (!!this.templateObj.template) {
// 检查模板code
this.checkTemplageCode(this.templateObj.template.templateContent);
}
}
})
.catch(err => {
console.log(err);
});
},
/**
* 检查模板code
*/
checkTemplageCode(template) {
this.templateData = [];
let middleTemplate = JSON.parse(template);
if (middleTemplate) {
// 模板对象
let templateVal = middleTemplate.val[0];
let newTime = middleTemplate.time;
this.currentComputeType = templateVal.compute.computeType >> 0;
console.log(this.currentComputeType);
if (this.currentComputeType === 0 && !!templateVal.compute.computeWidgetId) {
this.getTemplateCodeById(templateVal.compute.computeWidgetId);
}
// 固定计算属性(最后保存用到)
if (this.currentComputeType === 1) {
this.postCompute = templateVal.compute.compute;
}
if (!!templateVal.valWidgetId) {
setTimeout(_ => {
this.getTemplateCodeById(templateVal.valWidgetId);
}, 50);
}
if (!!newTime.length) {
if (this.currentComputeType === 1) {
setTimeout(_ => {
newTime.forEach((ele, index) => {
if (!!ele.timeWidgetId) {
this.getTemplateCodeById(ele.timeWidgetId);
}
});
}, 60);
return;
}
newTime.forEach((ele, index) => {
if (!!ele.timeWidgetId) {
this.getTemplateCodeById(ele.timeWidgetId);
}
});
}
}
},
/**
* 根据模板的id获取控件的模板code ---
*/
getTemplateCodeById(id) {
const param = {
widgetId: id,
requestProject: 'gic-member-tag-web'
};
findWidget(param)
.then(res => {
if (res.errorCode == 1) {
let data = res.result;
for (let key in data) {
// this[data.templateCode] = Object.create(null);
this[data.templateCode][key] = data[key];
}
// 如果是城市
if (data.templateCode === 'tag010') {
this.getcityData();
}
// 如果是给了 计算属性值
if (!!this.postCompute) {
// this[data.templateCode] = Object.create(null);
this[data.templateCode].postCompute = this.postCompute;
}
// 如果直接给需要字段
if (data.sourceFlag >> 0 === 0) {
data.widgetValues = JSON.parse(data.widgetValues);
// this[data.templateCode] = Object.create(null);
this[data.templateCode].options = data.widgetValues;
}
// 如果通过 url 获取
if (data.sourceFlag >> 0 === 1) {
data.widgetParam = JSON.parse(data.widgetParam);
this.getAsyncList(data.widgetParam[0].value, this[data.templateCode]);
if (data.templateCode === 'tag009' || data.templateCode === 'tag010') {
this.searchFlag = true;
}
return false;
}
this.templateData.push(this[data.templateCode]);
// 获取已存数据
this.getExistData(this.tagData.tagId);
if (data.templateCode === 'tag009' || data.templateCode === 'tag010') {
this.searchFlag = true;
}
}
})
.catch(err => {
console.log(err);
});
},
/**
* 城市
*/
getcityData() {},
/**
* 获取当前标签数据
*/
getAsyncList(url, data) {
const para = {
key: this.tagData.tagType == 1 ? this.tagData.tagId : this.currentKey,
requestProject: 'gic-member-tag-web'
};
this.axios
.post(`${this.baseUrl}${url}`, qs.stringify(para))
.then(res => {
let resData = res;
if (this.tagData.tagType != 1 && this.currentKey != 'tag') {
if (resData.errorCode == 0) {
data.options = resData.result;
this.templateData.push(data);
this.getExistData(this.tagData.tagId, data.options);
return;
}
} else {
if (resData.errorCode == 1) {
data.options = resData.result;
this.templateData.push(data);
this.getExistData(this.tagData.tagId, data.options);
}
}
})
.catch(error => {
console.log(error);
});
},
/**
* 获取当前标签已存数据
*/
getExistData(tagId, newOptions) {
const param = {
tagId: tagId,
requestProject: 'gic-member-tag-web'
};
findOndJson(param)
.then(res => {
if (res.errorCode == 1) {
if (!res.result || res.tagParams == '[]') {
this.addTempFlag = false;
return false;
}
// 查看该标签是否在暂存架中
this.addTempFlag = true;
let items = JSON.parse(res.tagParams).template;
if (!!newOptions) {
items.forEach(function(ele, index) {
if (ele.templateCode == 'tag013') {
ele.options = newOptions;
let idOptions = newOptions.map(el => el.key);
let checkFlag = true;
newOptions.forEach((el, index) => {
if (ele.checkeditems.indexOf(el.key) != -1) {
checkFlag = false; // 如果已选值中存在 options中
}
});
let checkedCount = ele.checkeditems.length;
if (this.isContained(ele.checkeditems, idOptions)) {
ele.checkAll = true;
ele.isIndeterminate = false;
return false;
}
if (checkFlag && newOptions.length < checkedCount) {
ele.checkAll = false;
ele.isIndeterminate = false;
return false;
}
if (!checkFlag && newOptions.length >= checkedCount) {
ele.checkAll = false;
ele.isIndeterminate = true;
return false;
}
if (checkFlag && newOptions.length >= checkedCount) {
ele.checkAll = false;
ele.isIndeterminate = false;
return false;
}
}
});
}
this.templateData = items;
}
})
.catch(error => {
console.log(error);
});
}
},
create() {
this.templateObj = {};
let host = window.location.origin;
if (host.indexOf('localhost') != '-1') {
this.baseUrl = 'http://gicdev.demogic.com';
} else {
this.baseUrl = host;
}
}
};
</script>
......@@ -31,7 +31,8 @@ Vue.use(vueGicAsideMenu);
Vue.use(vueGicHeader); */
// Vue.use(vueGicDatepicker);
Vue.config.productionTip = false;
Vue.config.devtools = true;
// Vue.config.productionTip = true;
// Vue.use(ElementUI, { size: 'large' });
Vue.use(VueAxios, axios);
Vue.axios.defaults.withCredentials = true; // 跨域cookie访问
......@@ -88,5 +89,4 @@ new Vue({
template: '<App/>'
});
console.log(typeof Vue);
console.log(Vue.config);
\ No newline at end of file
import request from './index';
// 会员 /memberTag/getTagById
export const getTagType = params =>
request({
url: '/memberTag/getTagById',
method: 'get',
params: params
});
// 获取模板
export const findWidget = params =>
request({
url: '/memberTag/findWidget',
method: 'get',
params: params
});
export const findOndJson = params =>
request({
url: '/member-tag-value/findOne.json',
method: 'get',
params
});
......@@ -120,10 +120,11 @@ export function export_table_to_excel(id) {
function formatJson(jsonData) {
console.log(jsonData)
}
export function export_json_to_excel(th, jsonData, defaultTitle) {
/* original data */
console.log(jsonData);
var data = jsonData;
data.unshift(th);
var ws_name = "SheetJS";
......
......@@ -2366,6 +2366,7 @@ export default {
// 获取 columnKey
// if (!!resData.result.columnKey) {
that.currentKey = resData.result.columnKey;
console.log(resData.result);
// }else {
// that.currentKey = resData.result.tagId;
// }
......
......@@ -23,9 +23,9 @@
<el-form-item label="标签描述" prop="tagDescribe" class="w-560">
<el-input :disabled="!tagEditFlag" class="w-447" type="textarea" v-model="ruleForm.tagDescribe" style="height: 96px;" @focus="focus('tagDescribe', 200)" @keyup.native="value => toInput(value)">
</el-input>
<template
><label class="input-label textarea-label">{{ inputNumObj.tagDescribe }}/200</label></template
>
<template>
<label class="input-label textarea-label">{{ inputNumObj.tagDescribe }}/200</label>
</template>
</el-form-item>
<el-form-item label="" class="font-0">
<el-button type="primary" @click.stop="confirmSave('ruleForm')" v-if="tagEditFlag">保存</el-button>
......@@ -88,21 +88,7 @@
>
删除
</el-button>
<!-- <el-popover
v-if="!scope.row.editAble && scope.row.status != 5"
placement="top"
width="160"
v-model="scope.row.popVisible">
<p style="line-height: 1.5; padding: 10px 10px 20px;">确认删除吗?</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="cancelDelTag(scope.$index,scope.row)">取消</el-button>
<el-button type="primary" size="mini" @click="toDelTag(scope.$index,scope.row)">确定</el-button>
</div> -->
<!-- <el-button slot="reference" class="p-l-20" type="text">
删除
</el-button> -->
<!-- <el-button type="text" size="small" class="" @click="confirmDel(scope.$index,scope.row)">删除</el-button> -->
<!-- </el-popover> -->
<el-button v-if="scope.row.status == 5" type="text" size="small" class="">删除中</el-button>
<el-button v-if="scope.row.editAble" type="text" @click.stop="confirmEdit(scope.$index, scope.row)">确认</el-button>
......@@ -124,8 +110,6 @@
@selectIndex="setSelectIndex"
@clearOldData="clearOldData"
>
<!-- :failHead="scope.row.header"
:failData="scope.row.data" -->
</upload-excel-component>
</template>
<template v-if="excelExistIndex == scope.$index && !!currentExcelHeader.length">
......@@ -135,21 +119,6 @@
<div class="flex-1">
<span class="p-r-8 color-303133">{{ currentExcelName }}</span
><span class="p-l-8 border-l-dcdfe6 color-1890ff excel-upload__del" @click.stop="clearOldData(scope.$index, scope.row)">删除</span>
<!-- <el-popover
v-if="!scope.row.editAble"
placement="top"
width="160"
v-model="scope.row.popVisible">
<p style="line-height: 1.5; padding: 10px 10px 20px;">确认删除吗?</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="cancelDelTag(scope.$index,scope.row)">取消</el-button>
<el-button type="primary" size="mini" @click="toDelCate(scope.$index,scope.row)">确定</el-button>
</div>
<el-button slot="reference" class="p-l-20" type="text">
删除
</el-button>
<el-button slot="reference" type="text" size="small" :disabled="!scope.row.enterpriseId? true: false" class="">删除</el-button>
</el-popover> -->
</div>
<div class="flex-1 color-909399 font-12 m-t-05">已导入会员 {{ currentExcelData.length }}</div>
</div>
......@@ -160,11 +129,7 @@
<el-table-column label=" " width="220px" class-name="no-right-border">
<template slot-scope="scope">
<el-checkbox v-model="scope.row.optType">清空标签历史标记会员</el-checkbox>
<!-- <el-tooltip class="item" effect="light" content="" placement="top">
<div slot="content">勾选此选项之后,此前被本标签标记的会员将移除此标签,此标签标记会员以本次导入为准。
</div>
<i class="el-icon-question"></i>
</el-tooltip> -->
<el-popover placement="top-end" width="200" trigger="hover">
<span>勾选后,此前被该标签标记的会员将移除此标签,此标签标记会员以本次导入为准。</span>
<i slot="reference" class="iconfont icon-xinxixianshi"></i>
......@@ -185,23 +150,6 @@
</div>
</div>
<vue-gic-footer></vue-gic-footer>
<!-- 保存 -->
<!-- <div class="manualTagEdit-wrap__footer">
<el-button @click.stop="cancelSave">取消</el-button>
<el-button type="primary" @click.stop="confirmSave">保存</el-button>
</div> -->
<!-- 上传后弹窗 -->
<!-- <el-dialog
title="提示"
:visible.sync="uploadedVisible"
width="30%"
:before-close="handleClose">
<p></p>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="uploadedVisible = false">确 定</el-button>
</span>
</el-dialog> -->
</div>
</template>
<script>
......@@ -233,16 +181,10 @@ export default {
tagLevelGroupId: [{ required: true, message: '请选择所属分类', trigger: 'blur' }]
},
optionsTwo: [
// {
// value: '1',
// label: '二级分类'
// }
],
optionsThree: [
// {
// value: '1',
// label: '未分类'
// }
],
inputNumObj: {
tagName: 0,
......@@ -258,15 +200,7 @@ export default {
currentExcelData: [], // 当前上传 excel 内容的数据
currentExcelHeader: [], // 当前上传 excel 标题的数据
tagValTableData: [
// {
// tagItemId: 1,
// tagItemName: '标签值1',
// inputValue: '', // 编辑输入框的值
// editAble: false, // 是否在编辑
// optType: true, // 是否选择清空已有标签
// status: 0, // 记录上传的状态
// popVisible: false
// },
],
// 上传后
uploadedVisible: false,
......@@ -751,16 +685,16 @@ export default {
const that = this
require.ensure([], () => {
const { export_json_to_excel } = require('@/vendor/Export2Excel')
const tHeader = ['mobile','cardNum'];
const filterVal = ['mobile','cardNum'];
const tHeader = ['手机号','卡号'];
const filterVal = ['手机号','卡号'];
const list = [
{
cardNum: "jhdm2018071315",
mobile: "17098078224"
卡号: "jhdm2018071315",
手机号: "17098078224"
},
{
cardNum: "jhdm20180608000000003",
mobile: "13100000055"
卡号: "jhdm20180608000000003",
手机号: "13100000055"
}
];
if (!list.length) {
......
......@@ -909,6 +909,7 @@ export default {
let newTempVal = newTemp.val[0];
let newTime = newTemp.time;
that.currentComputeType = parseInt(newTempVal.compute.computeType);
// 计算控件
if (parseInt(newTempVal.compute.computeType) === 0 && !!newTempVal.compute.computeWidgetId) {
that.getTemplateCodeById(newTempVal.compute.computeWidgetId);
......@@ -956,6 +957,7 @@ export default {
if (resData.errorCode == 1) {
// 返回字段否追加对应 模板数据对象上
for (let key in resData.result) {
console.log(that[resData.result.templateCode][key], resData.result[key]);
that[resData.result.templateCode][key] = resData.result[key];
}
// 如果是城市
......@@ -981,6 +983,7 @@ export default {
return false;
}
that.templateData.push(that[resData.result.templateCode]);
// 获取已存数据
that.getExistData(that.tagData.tagId);
if (resData.result.templateCode === 'tag009' || resData.result.templateCode === 'tag010') {
......@@ -1147,6 +1150,7 @@ export default {
// 获取 columnKey
that.currentKey = resData.result.columnKey;
let templateObj = resData.result.template;
if (!!templateObj) {
that.checkTagTemplate(templateObj.templateContent);
}
......
......@@ -104,21 +104,25 @@ export default {
},
async loadMemberTagList(opt) {
const params = {
requestProject: 'gic-member-tag-web',
search: opt.searchName || null, // 标签名
tagLevelGroupId: opt.id || 0, // 标签层级
tagType: opt.type || null, // 标签类型
pageNum: this.pageNum,
pageSize: this.pageSize
};
const Data = await getMemberTagList(params);
if (Data.result.result && Data.result.result.length) {
this.memberTagList = Data.result.result;
this.total = Data.result.totalCount;
} else {
this.memberTagList = [];
this.total = 0;
try {
const params = {
requestProject: 'gic-member-tag-web',
search: opt.searchName || null, // 标签名
tagLevelGroupId: opt.id || 0, // 标签层级
tagType: opt.type || null, // 标签类型
pageNum: this.pageNum,
pageSize: this.pageSize
};
const Data = await getMemberTagList(params);
if (Data.result.result && Data.result.result.length) {
this.memberTagList = Data.result.result;
this.total = Data.result.totalCount;
} else {
this.memberTagList = [];
this.total = 0;
}
} catch (e) {
console.log(e);
}
},
......@@ -131,8 +135,27 @@ export default {
// 当前页码改变
handleCurrentChange(val) {
this.pageNum = val;
this.loadMemberTagList({});
const param = this.JudgeIsHandTag();
console.log(param);
this.loadMemberTagList(param);
},
/**
* 判断是否是手工标签
*/
JudgeIsHandTag() {
let param = null;
let keys = Object.keys(this.middleWareVariable);
// 长度大于0就表示 有手工标签的值
if (keys.length) {
param = {
id: this.middleWareVariable.id,
type: this.middleWareVariable.type == 1 ? 1 : 0
};
}
console.log(param);
return param;
},
// 模糊查询会员标签
searchMemberList() {
this.loadMemberTagList({
......@@ -141,6 +164,13 @@ export default {
},
// 一级标签
handleFristTag(list) {
this.middleWareVariable = {
id: list.id,
type: list.handTag,
name: list.name
};
this.pageNum = 1;
this.pageSize = 20;
this.loadMemberTagList({
id: list.id,
type: list.handTag ? 1 : -1 // 手工标签传1
......@@ -157,6 +187,7 @@ export default {
if (list.handTag == 1) {
const hangObj = {
name: list.name,
type: 1,
id: list.id
};
localStorage.setItem('groupId', JSON.stringify(hangObj));
......@@ -168,7 +199,6 @@ export default {
},
// 删除手工
deleteHandTag(id) {
console.log(id);
this.loadMemberTagList({
id: id,
type: 1 // 手工标签传1
......@@ -177,11 +207,14 @@ export default {
},
beforeMount() {
// 一二三级都需要一个变量来保存自己的信息 在切换页码和数量的时候也要传参数过去
this.middleWareVariable = {};
this.handTag = null;
this.groupId = '';
this.getTagList();
if (localStorage.getItem('groupId')) {
const hangObj = JSON.parse(localStorage.getItem('groupId'));
this.middleWareVariable = JSON.parse(JSON.stringify(hangObj));
this.loadMemberTagList({
tagType: 1,
id: hangObj.id
......@@ -201,6 +234,13 @@ export default {
// 处理二级标签
this.$on('handle-second-tag', list => {
this.middleWareVariable = {
id: list.id,
type: list.handTag,
name: list.name
};
this.pageNum = 1;
this.pageSize = 20;
this.loadMemberTagList({
id: list.id,
type: list.handTag ? 1 : -1 // 手工标签传1
......@@ -212,6 +252,13 @@ export default {
});
// 处理三级标签
this.$on('handle-third-tag', list => {
this.middleWareVariable = {
id: list.id,
type: list.handTag,
name: list.name
};
this.pageNum = 1;
this.pageSize = 20;
this.loadMemberTagList({
id: list.id,
type: list.handTag ? 1 : -1 // 手工标签传1
......
......@@ -34,7 +34,11 @@
<div class="dialog-box">
<p class="tag-name">{{ dialogData.tagName }}</p>
<p class="tag-desc">根据会员信息扩展字段统计而来</p>
<div class="tag-value">
<p class="tag-desc">标签值设置</p>
<!-- 所有标签的配置项 -->
<tag-config-options v-if="optionFlag" :tagId="tagId" ref="tagConfig"> </tag-config-options>
<!-- <div class="tag-value">
<p>标签值设置</p>
<div class="tag-area"></div>
<p>时间范围</p>
......@@ -43,7 +47,7 @@
<el-option v-for="item in TimeOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</div>
</div>
</div> -->
<div class="tag-mode">
<p>营销方式</p>
......@@ -52,7 +56,7 @@
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogVisible = false">确 定</el-button>
<el-button type="primary" @click="confirmOptions">确 定</el-button>
</span>
</el-dialog>
</div>
......@@ -60,13 +64,15 @@
<script>
import TagMode from '@/components/tag/tag-mode';
import TagConfigOptions from '@/components/tag/tag-config-options';
import { delThirdHandTag } from '@/request/api';
export default {
name: 'tag-container',
components: {
TagMode
TagMode,
TagConfigOptions
},
props: {
......@@ -88,15 +94,24 @@ export default {
tableData: [],
dialogVisible: false,
dialogData: {},
TimeOptions: []
TimeOptions: [],
optionFlag: false,
tagId: ''
};
},
methods: {
handleClose() {
this.optionFlag = false;
},
// 添加标签 弹框里面操作
addTag(list) {
this.dialogData = list;
this.dialogVisible = !this.dialogVisible;
if (list.tagId) {
this.optionFlag = true;
this.tagId = list.tagId;
this.dialogVisible = !this.dialogVisible;
}
},
editHandTag(list) {
this.$router.push({
......@@ -133,6 +148,13 @@ export default {
.catch(err => {
console.log(err);
});
},
/**
*
*/
confirmOptions() {
console.log(this.$refs.tagConfig.getTemplateData());
}
},
......
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