Commit fd27ed47 by zhangmeng

提交

parent 84220c8b
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/css/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link href=/marketing/static/css/app.47482f5f85e7136188e04495bc84a042.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/marketing/static/js/manifest.0a85049e489e85ac5f0a.js></script><script type=text/javascript src=/marketing/static/js/vendor.36a2ac04287db4a87222.js></script><script type=text/javascript src=/marketing/static/js/app.8363f4973edba5b7f859.js></script></body></html>
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/css/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link href=/marketing/static/css/app.fde2c0616f5f7d9da0da4a2c463012ee.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/marketing/static/js/manifest.0a85049e489e85ac5f0a.js></script><script type=text/javascript src=/marketing/static/js/vendor.6b464a5bf69f693bb00d.js></script><script type=text/javascript src=/marketing/static/js/app.3cc1428158f6d1052254.js></script></body></html>
\ No newline at end of file
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.
......@@ -19,8 +19,8 @@
<div class="add-replay-content">
<el-form label-position="right" ref="form" :model="form" label-width="100px">
<el-form-item class="text-content" label="文本内容">
<el-input v-model="form.text" @keyup.native="toInput(form.text,$event)"></el-input>
<span class="text-num">{{inputNum}}/{{inputLength}}</span>
<dm-input v-model="form.text" @keyup.native="toInput(form.text,$event)" :maxlength="20"></dm-input>
<!-- <span class="text-num">{{inputNum}}/{{inputLength}}</span> -->
</el-form-item>
<el-form-item label="文本链接" v-show="false">
<el-radio-group v-model="form.linkStyle">
......@@ -361,7 +361,7 @@
self.form.url='http://' + self.form.url;
}
self.textarea = self.textarea + '<a href="'+self.form.url+'">'+self.form.text+'</a>';
self.xcxUrlObj.textarea = self.textarea;
self.xcxUrlObj.textarea = self.textarea.replace('undefined','');
self.xcxUrlObj.imageMediaId = '';
// self.xcxUrlObj.wechatContent = null;
self.$emit('listenWxText',self.xcxUrlObj)
......@@ -383,7 +383,7 @@
}
self.addReplayDialog = false;
self.textarea = self.textarea + '<a href="" >'+ self.form.text +'</a>';
self.xcxToolObj.textarea = self.textarea;
self.xcxToolObj.textarea = self.textarea.replace('undefined','');
self.xcxToolObj.imageMediaId = self.imageMediaId;
self.xcxToolObj.wechatContent = self.wechatContent;
self.$emit('listenWxText',self.xcxToolObj)
......
......@@ -19,20 +19,14 @@ import vueGicStoreLinkage from '@gic-test/vue-gic-store-linkage/src/lib'
import vueGicStoreGroup from '@gic-test/vue-gic-store-group'
import vueGicPeople from '@gic-test/vue-gic-people'
import vueGicConfirmPeople from '@gic-test/vue-gic-confirm-people/src/lib'
import install from 'packele'
import packele from 'packele'
import preview from 'vue-photo-preview/src/lib/index.js'
import 'vue-photo-preview/dist/skin.css'
import dmDelete from './components/dm-delete'
//删除组件 这个组件常用,放到这不用在组件里引入
Vue.component(dmDelete.name,dmDelete)
Vue.config.productionTip = false
Vue.use(preview)
Vue.use(install)
Vue.use(packele)
Vue.use(ElementUI)
Vue.use(vueGicHeader)
Vue.use(vueGicFooter)
......
......@@ -5,6 +5,8 @@ import page404 from '@/views/error/404'
import page500 from '@/views/error/500'
import test from '@/test'
import staticCom from '@/test/static-com'
//微信营销
import wechat from './modules/wechat'
......@@ -73,5 +75,11 @@ export default [
path: '/test',
name: '测试组件',
component: test
},
{
path: '/staticcom',
name: '测试组件',
component: staticCom
}
]
<template>
<el-popover class="fl" placement="bottom-start" width="406" trigger="click">
<div class="dm-store__area clearfix">
<div class="dm-store__area__left fl">
<el-checkbox v-for="(v,i) in areaList" v-model="v.isCheck" :key="i" @change="setCurrentCity(v)">{{v.provinceName}}</el-checkbox>
</div>
<div class="dm-store__area__right fr">
cccc
<el-checkbox v-for="(v,i) in currentCityList" v-model="v.isCheck" :key="i">{{v.cityName}}</el-checkbox>
</div>
</div>
<div class="el-input dm-store__type__inner w200" slot="reference">
<div class="el-input__inner block">
已选择1个门店区域
</div>
</div>
</el-popover>
</template>
<script>
const baseUrl = 'http://gicdev.demogic.com';
export default {
name:'options-type',
props:{
checked:{
type:Array,
default() {
return [];
}
}
},
watch: {
newChecked(val) {
this.$emit('get-emit',val);
}
},
data() {
return {
areaList:[],
currentCityList:[],
newChecked:this.checked
}
},
created() {
this.getAreaTree();
},
methods:{
init() {
this.newChecked = this.checked;
console.log(this.newChecked)
},
delTag(index){
this.newChecked.splice(index,1);
},
filterLabel(val) {
let result = '';
this.typeList.map( v => {
if (val === v.value) {
result = v.label;
}
})
return result;
},
getAreaTree() {
this.axios.get(baseUrl + '/api-plug/dict-district-tree?requestProject=gic-web').then(res => {
this.areaList = res.data.result.map(v => ({
isCheck:false,
...v,
}))
console.log(this.areaList)
})
},
setCurrentCity(item) {
this.currentCityList = item.children || [];
item.children.map(v => {
v.isCheck = item.isCheck
});
}
}
}
</script>
<template>
<el-popover class="vertical-middle" placement="bottom-start" width="176" trigger="click">
<el-checkbox-group v-model="checkList">
<el-popover class="fl" placement="bottom-start" width="176" trigger="click">
<el-checkbox-group v-model="newChecked">
<div v-for="(v,i) in typeList" :key="i">
<el-checkbox :label="v"></el-checkbox>
<el-checkbox :label="v.value">{{v.label}}</el-checkbox>
</div>
</el-checkbox-group>
<div class="el-input dm-store__type__inner w200" slot="reference">
<div placeholder="请选择" class="el-input__inner">
<div placeholder="请选择" class="el-input__inner block">
<div class="dm-store__tag__wrap">
<el-tag v-for="(v,i) in checkList" size="mini" :key="i" closable @close="delTag(i)">{{v}}</el-tag>
<el-tag v-for="(v,i) in newChecked" size="mini" :key="i" closable @close="delTag(i)">{{filterLabel(v)}}</el-tag>
</div>
<el-popover class="dm-store__tag__count" placement="top-start" title="已选择" width="200" trigger="hover">
<span slot="reference">{{checkList.length}}</span>
<el-popover v-if="newChecked.length" class="dm-store__tag__count" placement="top-start" title="已选择" width="200" trigger="hover">
<div>
<el-tag v-for="(v,i) in newChecked" size="mini" :key="i" closable @close="delTag(i)">{{filterLabel(v)}}</el-tag>
</div>
<span slot="reference">{{newChecked.length}}</span>
</el-popover>
</div>
<!-- <span class="el-input__suffix">
<span class="el-input__suffix-inner">
<i class="el-select__caret el-input__icon el-icon-arrow-up"></i>
</span>
</span> -->
</div>
</el-popover>
</el-popover>
</template>
<script>
export default {
name:'options-type',
props:{
checked:{
type:Array,
default() {
return [];
}
}
},
watch: {
newChecked(val) {
this.$emit('get-emit',val);
}
},
data() {
return {
typeList:[1,2,3,4,5,6,7],
checkList:[]
typeList:[
{label:'自营',value:0},
{label:'联营',value:1},
{label:'代理',value:2},
{label:'代销',value:3},
{label:'托管',value:4},
],
newChecked:this.checked
}
},
methods:{
init() {
this.newChecked = this.checked;
console.log(this.newChecked)
},
delTag(index){
this.checkList.splice(index,1);
this.newChecked.splice(index,1);
},
filterLabel(val) {
let result = '';
this.typeList.map( v => {
if (val === v.value) {
result = v.label;
}
})
return result;
}
}
}
</script>
......
......@@ -2,6 +2,25 @@
.w200 {
width: 200px;
}
.block{
display: block!important;
}
.fl {
float: left;
}
.fr {
float: right;
}
.clearfix:after{
display: block;
clear: both;
content: '';
visibility: hidden;
height: 0;
}
.clearfix{
zoom: 1;
}
.vertical-middle {
vertical-align: middle;
}
......@@ -14,14 +33,29 @@
vertical-align: middle;
}
.dm-store .dm-store__tag__wrap{
.dm-store .dm-store__tag__wrap {
max-width: calc(100% - 20px);
line-height: 28px;
overflow: hidden;
white-space: nowrap;
max-width: calc(100% - 20px);
}
.dm-store .dm-store__tag__wrap .el-tag {
margin-right:5px;
}
.dm-store .dm-store__tag__count {
position:absolute;
right: 0;
right: 2px;
top: 0;
font-size: 12px;
}
.dm-store__area__left{
width: 200px;
}
.dm-store__area__right{
width: 200px;
}
<template>
<section class="dm-store">
<el-select v-model="leftValue" placeholder="请选择" class="w200 vertical-middle">
<section class="dm-store clearfix">
<el-select v-model="leftValue" placeholder="请选择" class="w200 fl">
<el-option v-for="(v,i) in leftList" :key="i" :label="v.label" :value="v.value"></el-option>
</el-select>
<com-type v-show="leftValue === 2"></com-type>
</section>
</template>
<com-type v-show="leftValue === 1" ref="typeRef" :checked="typeList" @get-emit="emitTypeList"></com-type>
<com-area v-show="leftValue === 3"></com-area>
<el-checkbox :indeterminate="true" v-model="checkAll">全选</el-checkbox>
<el-checkbox :indeterminate="false" v-model="checkAll">全选</el-checkbox>
<el-checkbox :indeterminate="false" v-model="checkTrue">全选</el-checkbox>
</section>
</template>
<script>
import comType from './com-type';
import comArea from './com-area';
export default {
name:'dm-store',
components:{
'com-type':comType
'com-type':comType,
'com-area':comArea
},
data() {
return {
leftValue:2, // 一级选择值
leftList:[
{label:'所有门店',value:1},
{label:'门店类型',value:2},
{label:'门店标签',value:3},
{label:'门店区域',value:4},
{label:'门店分组',value:5},
{label:'部分门店',value:6}
], // 一级列表
leftValue:3, // 一级选择值
leftList:[ // 一级列表
{label:'所有门店',value:0},
{label:'门店类型',value:1},
{label:'门店标签',value:2},
{label:'门店区域',value:3},
{label:'门店分组',value:4},
{label:'部分门店',value:5}
],
typeList:[0,1], // 选中的门店类型
isIndeterminate:true,
checkAll:false,
checkTrue:true
}
},
created() {
setTimeout(v => {
this.typeList = [
0,1,2,3
]
this.$nextTick(_ => {
this.$refs.typeRef.init();
})
},3000)
},
methods:{
emitTypeList(val) {
console.log(val)
// this.typeList = val;
},
test() {
this.checkAll = !this.checkAll
}
}
}
</script>
......
......@@ -4,7 +4,7 @@
<dm-store style="padding:20px;"></dm-store>
</div>
<div>
<vue-gic-store-linkage style="padding:20px;"></vue-gic-store-linkage>
<vue-gic-store-linkage style="padding:20px;" :msg="sendChildData"></vue-gic-store-linkage>
</div>
</div>
</template>
......@@ -13,6 +13,15 @@ import dmStore from './dmStore';
export default {
components:{
'dm-store':dmStore
},
data() {
return {
sendChildData:{
storeType:0,
storeGroupIds:'',
storeIds:[],
},
}
}
}
</script>
......
<template>
<div >
<div class="dm-wrap">
<p>dm-input</p>
<dm-input class="w200" type="text" v-model="value" :maxlength="20"></dm-input>
</div>
<div class="dm-wrap">
<p>dm-delete</p>
<dm-delete @confirm="delData(scope.row)" tips="是否删除?">
<el-button type="text">删除</el-button>
</dm-delete>
</div>
<div class="dm-wrap">
<p>dm-form-item</p>
<el-form :model="form" ref="form" :rules="rules" label-width="80px">
<dm-form-item prop="proName" label="标题" tooltip="这是一段测试文字">
<dm-input class="w200" type="text" v-model="value" :maxlength="20"></dm-input>
</dm-form-item>
</el-form>
</div>
</div>
</template>
<script>
export default {
data() {
return {
value:'',
form:{},
rules:{}
}
},
methods:{
delData(row) {
}
}
}
</script>
......@@ -2,7 +2,7 @@
* @Author: zhangmeng
* @Date: 2018-08-14 15:45:36
* @Last Modified by: zhangmeng
* @Last Modified time: 2018-10-16 16:13:23
* @Last Modified time: 2018-10-22 16:30:37
*/
<template>
<section class="dm-wrap">
......@@ -22,7 +22,7 @@
<el-button class="fr" type="primary" @click="$router.push('/wechat/record/add')">新建群发</el-button>
</div>
<el-table tooltipEffect="light" :data="recordList" style="width: 100%" v-loading="loading">
<el-table-column v-for="(v,i) in recordHeader" :show-overflow-tooltip="v.tooltip" :width="v.width" :min-width="v.minWidth" :align="v.align" :key="i" :prop="v.prop" :label="v.label" :formatter="v.formatter" :fixed="v.fixed"></el-table-column>
<el-table-column v-for="(v,i) in recordHeader" :show-overflow-tooltip="v.tooltip" :width="v.width" :min-width="v.minWidth" :align="v.align" :key="i" :prop="v.prop" :label="v.label" :formatter="v.formatter" :fixed="v.fixed" :render-header="v.renderHeader"></el-table-column>
<el-table-column label="状态" align="left" prop="timesStatus" width="160px">
<template slot-scope="scope" >
<span v-if="scope.row.sendStatus == 1" class="dm-status--success">已发送</span>
......@@ -64,6 +64,7 @@ export default {
'time-counts':timeCounts
},
data () {
const _vm = this;
return {
contentTypeOptions:[{value:'',label:'所有类型'},{value:0,label:'图文消息'},{value:1,label:'文本消息'},{ value:2,label:'图片'}],
sendStatusOptions:[{value:'',label:'所有状态'}, {value:0,label:'待发送'},{value:1,label:'已发送',},{ value:2,label:'已失效'}],
......@@ -99,9 +100,15 @@ export default {
{label:'营销场景',prop:'sceneSettingName',width:'100',align:'left'},
{label:'发送人数',prop:'sendMemberCount',width:'100',align:'left'},
{label:'送达人数',prop:'sendCount',width:'100',align:'left'},
{label:'阅读人数',prop:'readCount',width:'100',align:'left'},
{label:'分享人数',prop:'redirectCount',width:'100',align:'left'},
{label:'收藏人数',prop:'collectCount',width:'100',align:'left'},
{label:'阅读人数',prop:'readCount',width:'100',align:'left',renderHeader:(h,{colunm,$index}) => {
return this.renderHeader('阅读人数');
}},
{label:'分享人数',prop:'redirectCount',width:'100',align:'left',renderHeader:(h,{colunm,$index}) => {
return this.renderHeader('分享人数');
}},
{label:'收藏人数',prop:'collectCount',width:'100',align:'left',renderHeader:(h,{colunm,$index}) => {
return this.renderHeader('收藏人数');
}},
],
listParams:{
contentType:'', //否 number 图文类型(0:图文消息,1:文本消息, 2: 图片)
......@@ -170,6 +177,11 @@ export default {
}).catch(err => {
this.$tips({type: 'error',message: '禁用失败!'});
})
},
renderHeader(label) {
return ( <el-tooltip class="item" effect="dark" content="只对发送图文7天内的数据进行统计" placement="top-start">
<span class="fw500">{label} <i class="iconfont icon-xinxixianshi fz14"></i></span>
</el-tooltip>)
}
}
}
......
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