Commit 1c71dc76 by 无尘

feat: 增加门店标签

parent 36161584
<!DOCTYPE html><html><head><meta charset=utf-8><link rel="shortcut icon" href=./favicon.ico><title>好办管理平台</title><link rel=stylesheet type=text/css href=//web-1251519181.file.myqcloud.com/custom-element/custom-element.1.0.28.css><link href=./static/css/app.518fe6c172f82fe7a61ef590142620fa.css rel=stylesheet></head><body style="min-width: 1400px;" class=damolish><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.6.6/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script>// Raven.config('https://3715a345910d4c768e7a1ec14619c2d5@sentry.io/1413672').install();</script><script type=text/javascript src=./static/js/manifest.b4d5687dc8407a18e867.js></script><script type=text/javascript src=./static/js/vendor.c9b2df17ceb0429de99c.js></script><script type=text/javascript src=./static/js/app.21b4349cd7c51202a507.js></script></body></html>
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><link rel="shortcut icon" href=./favicon.ico><title>好办管理平台</title><link rel=stylesheet type=text/css href=//web-1251519181.file.myqcloud.com/custom-element/custom-element.1.0.28.css><link href=./static/css/app.b9fdfdb98bf0e10d2500f1909aebeb7f.css rel=stylesheet></head><body style="min-width: 1400px;" class=damolish><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.6.6/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script>// Raven.config('https://3715a345910d4c768e7a1ec14619c2d5@sentry.io/1413672').install();</script><script type=text/javascript src=./static/js/manifest.9c8d87ff617217442ac0.js></script><script type=text/javascript src=./static/js/vendor.c9b2df17ceb0429de99c.js></script><script type=text/javascript src=./static/js/app.2184769414ec8bd8c5bd.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.
This source diff could not be displayed because it is too large. You can view the blob instead.
!function(e){var a=window.webpackJsonp;window.webpackJsonp=function(c,b,n){for(var r,t,o,i=0,u=[];i<c.length;i++)t=c[i],f[t]&&u.push(f[t][0]),f[t]=0;for(r in b)Object.prototype.hasOwnProperty.call(b,r)&&(e[r]=b[r]);for(a&&a(c,b,n);u.length;)u.shift()();if(n)for(i=0;i<n.length;i++)o=d(d.s=n[i]);return o};var c={},f={88:0};function d(a){if(c[a])return c[a].exports;var f=c[a]={i:a,l:!1,exports:{}};return e[a].call(f.exports,f,f.exports,d),f.l=!0,f.exports}d.e=function(e){var a=f[e];if(0===a)return new Promise(function(e){e()});if(a)return a[2];var c=new Promise(function(c,d){a=f[e]=[c,d]});a[2]=c;var b=document.getElementsByTagName("head")[0],n=document.createElement("script");n.type="text/javascript",n.charset="utf-8",n.async=!0,n.timeout=12e4,d.nc&&n.setAttribute("nonce",d.nc),n.src=d.p+"static/js/"+e+"."+{0:"42440f8056b4b0b4ac33",1:"954a8a70c5f1171933ac",2:"2025d32c544f960c7161",3:"997026118555af93e618",4:"7fb54b0d6edc84c910b5",5:"f7ad326b7bff884d7fb2",6:"00f20e93cef1956f15b6",7:"facffc398c23923c8192",8:"4f852cb49f6311f19754",9:"f194e939f50c22abbac8",10:"1d0857d1e94ff89262fb",11:"03c37101384d7f8451c2",12:"1b8128f6337e01fbb679",13:"eeb1013728f3e67bb869",14:"cc777d4e374d0428a9f9",15:"1a4794eae71e5676b82a",16:"9ff89e3ae22fb695931f",17:"0ee5ffd1827c0ab14257",18:"fdb6aeb863dd5e05ebd6",19:"ceaa40d8aa6227ccaa7b",20:"d60a5509cfb104ae32c6",21:"1a27d8ec6c459919d185",22:"5c36adc5f254c90483ff",23:"491faa03cecb9d035fc6",24:"8c63bc2c5c38d0efdfab",25:"7076feee8fb02a9fbd13",26:"de90a25b8c7e499ddbf9",27:"98b07cae060277f91c6b",28:"0a1e4e532e911fe8ee50",29:"d1d2e2f4866402685ebc",30:"27972587c83f67958573",31:"745d0f921a50ba58cf57",32:"1fd5fed58bc31e91b784",33:"d60beb8286a5273c8520",34:"21e42e4239a3a4bece96",35:"8c517c66214b3008ba1d",36:"3bbb7cafb472971b8cd2",37:"fc7d253c24f6632ba2af",38:"6a84a1d7311f4ef3cb59",39:"b64160a2fdbfc78b53e4",40:"c2d0332913d876d457d2",41:"883973de975d053d281d",42:"d739ebc0d5e255987326",43:"f08a7bf3e0cd9c6d8f23",44:"9a9245e2a878fdd91872",45:"78c9f3a1b7442c634d26",46:"4474017ec78a1cd02a56",47:"ad1e50cd8ff9ec4528dd",48:"534afe1a47d06e71d7b3",49:"3e4f58da4e6dae1b60a2",50:"ba943a0915a5c08260e6",51:"377ddd3618ad5bd9c3a8",52:"1e2ae65363a4861dd355",53:"cad2e8ac87e5684a9bc2",54:"aa9df4f3a7eacae9e5db",55:"5515666662cecc9025bc",56:"2d7039de458c3c9cb678",57:"9f9fb6bfcac478732dad",58:"1dfc413c8f0da4db52bc",59:"de9ed682f5022caa478a",60:"b93cca4d26a897341a84",61:"e929be2249e56a4db90a",62:"77e65cc235de29edf756",63:"8dc992fa307e85a06f17",64:"8f624930d7a6266c14aa",65:"ee24c9ea4ad155c3ddea",66:"b5bf727065a1ed5946a8",67:"1fe24764bbf2648873df",68:"41bddef9412d24e28010",69:"652d69184cf76313c028",70:"1613bc16d6c5304d1aa7",71:"fb6ae1fa5882d1945bf5",72:"72518d4d13ed9dc695c0",73:"5bdb89b0f1465b060f2d",74:"fb3884c87b974098417c",75:"251a7f0a164aea4bd0a9",76:"2f91bec3164b97372cc8",77:"6fe16236fb659a3a7a94",78:"c09e19736f0439e748d1",79:"226a5391cf104f25aba2",80:"61cf8043af3376e8e56b",81:"8a3b9f12ebd002b093b1",82:"e06079d8bdfc76cb3d38",83:"d05cf74242c704db1b6a",84:"e08cae32b8d07ae3eb93",85:"cb39869b0ab00851c322"}[e]+".js";var r=setTimeout(t,12e4);function t(){n.onerror=n.onload=null,clearTimeout(r);var a=f[e];0!==a&&(a&&a[1](new Error("Loading chunk "+e+" failed.")),f[e]=void 0)}return n.onerror=n.onload=t,b.appendChild(n),c},d.m=e,d.c=c,d.d=function(e,a,c){d.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:c})},d.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(a,"a",a),a},d.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},d.p="./",d.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
!function(e){var a=window.webpackJsonp;window.webpackJsonp=function(c,b,n){for(var r,t,o,i=0,u=[];i<c.length;i++)t=c[i],f[t]&&u.push(f[t][0]),f[t]=0;for(r in b)Object.prototype.hasOwnProperty.call(b,r)&&(e[r]=b[r]);for(a&&a(c,b,n);u.length;)u.shift()();if(n)for(i=0;i<n.length;i++)o=d(d.s=n[i]);return o};var c={},f={88:0};function d(a){if(c[a])return c[a].exports;var f=c[a]={i:a,l:!1,exports:{}};return e[a].call(f.exports,f,f.exports,d),f.l=!0,f.exports}d.e=function(e){var a=f[e];if(0===a)return new Promise(function(e){e()});if(a)return a[2];var c=new Promise(function(c,d){a=f[e]=[c,d]});a[2]=c;var b=document.getElementsByTagName("head")[0],n=document.createElement("script");n.type="text/javascript",n.charset="utf-8",n.async=!0,n.timeout=12e4,d.nc&&n.setAttribute("nonce",d.nc),n.src=d.p+"static/js/"+e+"."+{0:"4a9c7d5a616370b2b8f0",1:"954a8a70c5f1171933ac",2:"2025d32c544f960c7161",3:"997026118555af93e618",4:"7fb54b0d6edc84c910b5",5:"f7ad326b7bff884d7fb2",6:"00f20e93cef1956f15b6",7:"facffc398c23923c8192",8:"4f852cb49f6311f19754",9:"f194e939f50c22abbac8",10:"1d0857d1e94ff89262fb",11:"03c37101384d7f8451c2",12:"9f3a41c68054f09af611",13:"4913f45b4835065643bb",14:"6d7eb6699c5988f1d073",15:"1a4794eae71e5676b82a",16:"9ff89e3ae22fb695931f",17:"0ee5ffd1827c0ab14257",18:"fdb6aeb863dd5e05ebd6",19:"ceaa40d8aa6227ccaa7b",20:"d60a5509cfb104ae32c6",21:"1a27d8ec6c459919d185",22:"5c36adc5f254c90483ff",23:"491faa03cecb9d035fc6",24:"8c63bc2c5c38d0efdfab",25:"7076feee8fb02a9fbd13",26:"de90a25b8c7e499ddbf9",27:"98b07cae060277f91c6b",28:"0a1e4e532e911fe8ee50",29:"d1d2e2f4866402685ebc",30:"27972587c83f67958573",31:"745d0f921a50ba58cf57",32:"1fd5fed58bc31e91b784",33:"d60beb8286a5273c8520",34:"21e42e4239a3a4bece96",35:"8c517c66214b3008ba1d",36:"3bbb7cafb472971b8cd2",37:"fc7d253c24f6632ba2af",38:"6a84a1d7311f4ef3cb59",39:"b64160a2fdbfc78b53e4",40:"c2d0332913d876d457d2",41:"883973de975d053d281d",42:"d739ebc0d5e255987326",43:"f08a7bf3e0cd9c6d8f23",44:"9a9245e2a878fdd91872",45:"78c9f3a1b7442c634d26",46:"4474017ec78a1cd02a56",47:"ad1e50cd8ff9ec4528dd",48:"534afe1a47d06e71d7b3",49:"3e4f58da4e6dae1b60a2",50:"ba943a0915a5c08260e6",51:"377ddd3618ad5bd9c3a8",52:"1e2ae65363a4861dd355",53:"cad2e8ac87e5684a9bc2",54:"aa9df4f3a7eacae9e5db",55:"5515666662cecc9025bc",56:"2d7039de458c3c9cb678",57:"9f9fb6bfcac478732dad",58:"1dfc413c8f0da4db52bc",59:"de9ed682f5022caa478a",60:"b93cca4d26a897341a84",61:"e929be2249e56a4db90a",62:"77e65cc235de29edf756",63:"8dc992fa307e85a06f17",64:"8f624930d7a6266c14aa",65:"ee24c9ea4ad155c3ddea",66:"b5bf727065a1ed5946a8",67:"1fe24764bbf2648873df",68:"41bddef9412d24e28010",69:"652d69184cf76313c028",70:"1613bc16d6c5304d1aa7",71:"fb6ae1fa5882d1945bf5",72:"72518d4d13ed9dc695c0",73:"5bdb89b0f1465b060f2d",74:"fb3884c87b974098417c",75:"251a7f0a164aea4bd0a9",76:"2f91bec3164b97372cc8",77:"6fe16236fb659a3a7a94",78:"c09e19736f0439e748d1",79:"226a5391cf104f25aba2",80:"61cf8043af3376e8e56b",81:"8a3b9f12ebd002b093b1",82:"e06079d8bdfc76cb3d38",83:"d05cf74242c704db1b6a",84:"e08cae32b8d07ae3eb93",85:"cb39869b0ab00851c322"}[e]+".js";var r=setTimeout(t,12e4);function t(){n.onerror=n.onload=null,clearTimeout(r);var a=f[e];0!==a&&(a&&a[1](new Error("Loading chunk "+e+" failed.")),f[e]=void 0)}return n.onerror=n.onload=t,b.appendChild(n),c},d.m=e,d.c=c,d.d=function(e,a,c){d.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:c})},d.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(a,"a",a),a},d.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},d.p="./",d.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
......@@ -4,7 +4,7 @@
* @Author: 无尘
* @Date: 2018-10-10 14:44:45
* @LastEditors: 无尘
* @LastEditTime: 2020-07-20 10:27:37
* @LastEditTime: 2020-08-14 14:55:11
*/
/* 后台返回消息提示 */
import { Message } from 'element-ui';
......@@ -27,7 +27,7 @@ export default {
}
Message.error({
duration: 2000,
message: response.message
message: response.message || '接口异常'
});
}
}
......
......@@ -4,7 +4,7 @@
* @Author: 无尘
* @Date: 2018-10-10 14:44:45
* @LastEditors: 无尘
* @LastEditTime: 2019-09-25 17:17:00
* @LastEditTime: 2020-08-14 14:55:02
*/
/* 消息提示 */
import { Message } from 'element-ui';
......@@ -13,7 +13,7 @@ export default {
showmsg: function(msg, type) {
Message({
duration: 2000,
message: msg,
message: msg || '接口异常',
type: type
});
}
......
<!--
* @Descripttion: 当前组件信息
* @version: 1.0.0
* @Author: 无尘
* @Date: 2020-02-08 10:27:21
* @LastEditors: 无尘
* @LastEditTime: 2020-08-14 16:34:01
-->
<!--
选择门店分组组件:
<gic-select-tag
:selectData="selectData"
@returnTags="returnTags">
</gic-select-tag>
import gicSelectTag from '@/components/app/card/gic-select-tag.vue';
returnTags: function(nodes) {
const that = this;
that.conditionObj.tags = nodes;
},
-->
<template>
<el-popover placement="bottom" title="" width="350" trigger="click" v-model="storeVisible">
<div class="daily-store-select">
<div class="el-scrollbar define-search-select">
<div class="el-select-dropdown__wrap el-scrollbar__wrap" style="margin-bottom: -5px; margin-right: -5px;">
<el-checkbox-group v-model="dailyRuleForm.tags" @change="handleStoresChange">
<ul class="el-scrollbar__view el-select-dropdown__list">
<li :class="['el-select-dropdown__item', item.select ? 'selected hover' : '']" v-for="item in tags" :key="item.tagId">
<el-checkbox :label="item.tagId">{{ item.tagName }}</el-checkbox>
</li>
<li v-if="!tags.length" class="text-center"><span>暂无数据</span></li>
</ul>
</el-checkbox-group>
</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>
<div class="flex-column item-cell-select inline-block " slot="reference">
<div class="depart-item-wrap">
<div :style="{ width: width }" class="el-select el-select--large depart-item-content">
<span class="font-14 color-c0c4cc p-l-10" style="display: inline-block;line-height: 32px;color: #c0c4cc;" v-if="!dailyRuleForm.tags.length">请选择门店标签</span>
<div class="el-select__tags" style="max-width: 348px;">
<span style="display:block">
<template v-for="(item, index) in dailyRuleForm.tags">
<span class="el-tag el-tag--info el-tag--small" :key="index + 'tag'">
<span class="el-select__tags-text">{{ item.tagName }}</span>
<i class="el-tag__close el-icon-close" @click.stop="delDepart(index, dailyRuleForm.tags)"></i>
</span>
</template>
</span>
</div>
</div>
</div>
</div>
</el-popover>
</template>
<script>
import { getRequest } from '@/api/api';
import errMsg from '@/common/js/error';
// import { _debounce } from '@/common/js/public';
export default {
name: 'gic-select-store',
props: {
width: {
type: String,
default() {
return '357px';
}
},
selectData: {
type: [Object, Array],
default() {
return [];
}
},
brandId: {
type: String,
default() {
return '';
}
}
},
data() {
return {
projectName: '', // 当前项目名
enterpriseId: this.brandId,
storeVisible: false,
tags: [],
dailyRuleForm: {
tags: []
}
};
},
methods: {
/**
* 选中改变
*/
handleStoresChange(value) {
const that = this;
let arr = that.tags.map(ele => value.includes(ele.tagId));
that.$emit('returnTags', arr);
},
/**
* 获取门店标签
*/
getTagsData() {
const that = this;
let para = {
gicEnterpriseId: that.brandId
};
getRequest('/haoban-app-customer-web/cardCoupon/find-store-tag-list', para)
.then(res => {
let resData = res.data;
if (resData.errorCode == 1) {
that.tags = resData.result || [];
return;
}
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.$message.error({
duration: 1000,
message: error.message
});
});
}
},
watch: {
brandId(val) {
const that = this;
if (val) {
that.tags = [];
that.getTagsData();
}
},
selectData: function(newData, oldData) {
let that = this;
if (!!newData.length) {
that.dailyRuleForm.tags = JSON.parse(JSON.stringify(newData));
} else {
that.dailyRuleForm.tags = [];
}
}
},
mounted() {
const that = this;
if (!!that.brandId) {
that.tags = [];
that.getTagsData();
}
if (!!that.selectData.length) {
that.dailyRuleForm.tags = that.selectData.map(ele => ele.tagId);
} else {
that.dailyRuleForm.tags = [];
}
}
};
</script>
<style lang="less" scoped>
.depart-item-content {
width: 213px;
height: 32px;
overflow: hidden;
white-space: nowrap;
border-radius: 2px;
border: 1px solid #c4c6cf;
cursor: pointer;
box-sizing: border-box;
}
.select-tree-wrap {
max-height: 300px;
overflow-y: auto;
}
.item-cell-select {
/deep/ .el-select__tags {
white-space: nowrap;
overflow: hidden;
}
.el-select {
.el-tag {
border-radius: 2px;
border: 1px solid rgba(220, 223, 230, 1);
background-color: #fff;
.el-tag__close {
top: 1px;
color: #909399;
&:hover {
background-color: transparent;
}
}
}
}
}
.w-350 {
width: 350px;
}
.show-select-num {
position: relative;
display: inline-block;
font-size: inherit;
height: 32px;
line-height: 32px;
padding-left: 10px;
-webkit-appearance: none;
background-color: #fff;
background-image: none;
border-radius: 4px;
border: 1px solid #dcdfe6;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #606266;
.el-select__caret {
color: #c0c4cc;
font-size: 14px;
transition: transform 0.3s;
transform: rotate(180deg);
cursor: pointer;
&.is-reverse {
transform: rotate(0deg);
}
}
}
.daily-store-select {
position: relative;
}
</style>
......@@ -4,11 +4,11 @@
* @Author: 无尘
* @Date: 2020-04-13 15:27:46
* @LastEditors: 无尘
* @LastEditTime: 2020-06-28 14:08:48
* @LastEditTime: 2020-08-14 16:33:45
-->
<template>
<section class="common-right-wrap">
<section class="common-right-wrap" :loading="loadingPage">
<div class="new-card-body border-box">
<el-form :model="formData" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">
<el-form-item label="选择卡券" prop="coupCardId">
......@@ -32,7 +32,11 @@
<div v-if="formData.sendRange == 2" class="w-240 inline-block item-cell-select">
<gic-select-store :brandId="brandId" :selectData="formData.selectList" @returnStores="returnStores"> </gic-select-store>
</div>
<div v-if="(formData.sendRange == '1' || formData.sendRange == '2') && !formData.selectList.length" class="el-form-item__error">请选择发送范围</div>
<el-radio class="m-l-40 m-r-8" v-model="formData.sendRange" label="3" @change="changeRange">门店标签</el-radio>
<div v-if="formData.sendRange == 3" class="w-240 inline-block item-cell-select">
<gic-select-tag :brandId="brandId" :selectData="formData.selectList" @returnTags="returnTags"> </gic-select-tag>
</div>
<div v-if="(formData.sendRange == '1' || formData.sendRange == '2' || formData.sendRange == '3') && !formData.selectList.length" class="el-form-item__error">请选择发送范围</div>
</div>
</div>
<div class="el-form-item el-form-item--large">
......@@ -66,6 +70,7 @@
import gicSelectStore from '@/components/common/gic-select-store.vue';
import gicSelectGroup from '@/components/common/gic-select-group.vue';
import selectCard from '@/components/app/card/select-card.vue';
import gicSelectTag from '@/components/app/card/gic-select-tag.vue';
import { getRequest, postRequest } from '@/api/api';
import showMsg from '@/common/js/showmsg';
import errMsg from '@/common/js/error';
......@@ -89,7 +94,8 @@ export default {
components: {
selectCard,
gicSelectGroup,
gicSelectStore
gicSelectStore,
gicSelectTag
},
data() {
const validateRange = (rule, value, callback) => {
......@@ -125,6 +131,7 @@ export default {
activeId: '3',
wxEnterpriseId: localStorage.getItem('userInfos') ? JSON.parse(localStorage.getItem('userInfos')).wxEnterpriseId : '',
selectCoupCard: {}, //已选卡券对象
loadingPage: true,
formData: {
id: '',
coupCardId: '',
......@@ -150,6 +157,13 @@ export default {
},
methods: {
/**
* 选择门店标签
*/
returnTags: function(nodes) {
const that = this;
that.formData.selectList = JSON.parse(JSON.stringify(nodes));
},
/**
* 选择门店
*/
returnStores: function(nodes) {
......@@ -282,6 +296,7 @@ export default {
*/
getCardData() {
const that = this;
that.loadingPage = true;
let para = {
coupCardId: that.$route.query.coupCardId,
gicEnterpriseId: that.brandId
......@@ -289,6 +304,7 @@ export default {
getRequest('/haoban-app-customer-web/cardCoupon/find-card-coup-detail', para)
.then(res => {
let resData = res.data;
that.loadingPage = false;
if (resData.errorCode == 1) {
if (!resData.result.detail) {
that.addTag = false;
......@@ -322,6 +338,7 @@ export default {
errMsg.errorMsg(resData);
})
.catch(function(error) {
that.loadingPage = false;
that.$message.error({
duration: 1000,
message: error.message
......
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