123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812 |
- <template>
- <div class="addEquities app-container" v-loading="loading1">
- <el-form
- :model="setQuery"
- ref="setQuery"
- :rules="rules"
- label-width="230px"
- >
- <el-form-item label="权益名称:" prop="equityName">
- <el-input
- v-model="setQuery.equityName"
- :maxlength="15"
- class="item-width-300"
- ></el-input>
- </el-form-item>
- <el-form-item label="权益图标:" prop="equityImg">
- <Upload
- type="equityImg"
- id="equityImg"
- width="250px"
- height="150px"
- uploadType="OTHER"
- :imgUrl="setQuery.equityImg"
- @uploadEnd="uploadEnd"
- ></Upload>
- </el-form-item>
- <el-form-item label="权益描述:" prop="equityDetail">
- <el-input
- type="text"
- placeholder="请输入权益描述"
- v-model="setQuery.equityDetail"
- class="item-width-500"
- >
- </el-input>
- </el-form-item>
- <template v-if="setQuery.equityType == 2">
- <el-form-item label="权益说明:" prop="equityMsg">
- <el-input
- type="textarea"
- placeholder="请输入权益说明"
- v-model="setQuery.equityMsg"
- :maxlength="400"
- :rows="6"
- class="item-width-500"
- show-word-limit
- >
- </el-input>
- </el-form-item>
- <el-form-item label="关联服务:">
- <el-radio-group v-model="setQuery.bindService" @input="changeService">
- <!-- <el-radio :label="1">满减券</el-radio> -->
- <el-radio :label="2">小桔加油券</el-radio>
- <el-radio :label="3">品类权限</el-radio>
- <el-radio :label="4">视频权益</el-radio>
- <el-radio :label="5">抽奖</el-radio>
- </el-radio-group>
- </el-form-item>
- <template v-if="setQuery.bindService ==2">
- <el-form-item label="选择优惠券:" prop="bindContent">
- <el-input
- v-if="setQuery.bindContent"
- v-model="couponName"
- class="item-width-300"
- disabled
- ></el-input>
- <el-button class="ml10" @click="handleChoose(1)">{{setQuery.bindContent?'切换':'选择优惠券'}}</el-button>
- </el-form-item>
- <el-form-item label="限制核销后才能再次领取:">
- <el-checkbox v-model="setQuery.getFlag" :true-label="1" :false-label="2" ></el-checkbox>
- </el-form-item>
- </template>
- <template v-if="setQuery.bindService ==5">
- <el-form-item label="选择抽奖活动:" prop="bindContent">
- <el-input
- v-if="setQuery.bindContent"
- v-model="couponName"
- class="item-width-300"
- disabled
- ></el-input>
- <el-button class="ml10" @click="handleChoose(2)">{{setQuery.bindContent?'切换':'选择抽奖活动'}}</el-button>
- </el-form-item>
- <el-form-item label="抽奖次数:" prop="givenNum">
- <el-input
- size="small"
- type="number"
- v-model.number="setQuery.givenNum"
- :maxlength="10"
- class="item-width-300"
- >
- <template slot="append">次</template>
- </el-input>
- </el-form-item>
-
- </template>
- <el-form-item label="赠送数量:" prop="claimNum" v-if="setQuery.bindService ==2 ||setQuery.bindService ==4">
- <div class="item">
- <div class="label">限制每人</div>
- <el-select v-model="setQuery.claimType" size="small" class="item-width-100" placeholder="">
- <el-option
- v-for="item in typeOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value">
- </el-option>
- </el-select>
- <div class="label">领取</div>
- <el-input
- size="small"
- type="number"
- v-model.number="setQuery.claimNum"
- :maxlength="10"
- class="item-width-100"
- >
- <template slot="append">次</template>
- </el-input>
- </div>
- </el-form-item>
- <el-form-item label="选择品类:" prop="bindContent" v-if="setQuery.bindService ==3">
- <el-tree
- v-loading="loadingTree"
- :data="data"
- :props="{
- label: 'cateName',
- children: 'child'
- }"
- ref="tree"
- node-key="id"
- show-checkbox
- @check-change="handleCheckChange">
- </el-tree>
- </el-form-item>
- <el-form-item label="权益内容:" prop="equityContent" v-if="setQuery.bindService ==4">
- <el-table
- :data="setQuery.equityContent"
- tooltip-effect="dark"
- border
- style="width: 500px"
- >
- <el-table-column
- align="center"
- label="图标"
- prop="icon"
- show-overflow-tooltip
- width="150px"
- >
- <template slot-scope="scope">
- <img class="icon" :src="scope.row.icon" alt="">
- </template>
- </el-table-column>
-
- <el-table-column
- align="center"
- label="权益"
- prop="equityName"
- show-overflow-tooltip
- >
- </el-table-column>
- <el-table-column align="center" label="操作" width="100px">
- <template slot-scope="scope">
- <!-- <el-button type="text" size="small" @click="handleEdit(scope.row)"
- > 编辑</el-button
- > -->
- <el-button type="text" size="small" @click="handleDel(scope.$index)"
- >删除</el-button
- >
- </template>
- </el-table-column>
- </el-table>
- <el-button type="text" size="small" @click="handleAdd">+添加</el-button>
- </el-form-item>
- </template>
-
- </el-form>
- <div class="btn-group">
- <el-button>取 消</el-button>
- <el-button type="primary" :loading="loading" @click="save"
- >确 定</el-button
- >
- </div>
- <el-dialog :title="title" width="550px" :visible.sync="dialogFormVisible1">
- <el-form label-width="130px" :model="form"
- ref="form"
- :rules="rules1">
- <el-form-item label="视频会员" prop="pid">
- <el-select v-model="form.pid" size="small" class="item-width-300" placeholder="请选择">
- <el-option
- v-for="item in goodsData"
- :key="item.pid"
- :label="item.title"
- :value="item.pid">
- <img style="float: left; width:30px;height:30px;border-radius:50%;" :src="item.cover&&item.cover[0]" alt="">
- <span style="float: right; color: #8492a6; font-size: 13px">{{ item.title }}</span>
- </el-option>
- </el-select>
- </el-form-item>
-
- </el-form>
- <div slot="footer" class="dialog-footer">
- <el-button @click="dialogFormVisible1 = false">取 消</el-button>
- <el-button type="primary" :loading="btnLoading1" @click="save1">确 定</el-button>
- </div>
- </el-dialog>
- <el-dialog title="选择优惠券" width="70%" :visible.sync="dialogTableVisible">
-
- <div class="search">
- <div>
- <el-input
- v-model="couponQuery.couponName"
- size="small"
- clearable
- placeholder="请输入优惠券名称"
- class="item-width-200 "
- ></el-input>
-
- <el-button
- class="ml10"
- type="primary"
- size="small"
- icon="el-icon-search"
- @click="handleSearch"
- >
- 搜索
- </el-button>
- </div>
- </div>
- <el-table
- :data="tableData"
- tooltip-effect="dark"
- border
- v-loading="loading2"
- style="width: 100%"
- >
- <el-table-column
- align="center"
- label="选择"
- prop="setMealCode"
- show-overflow-tooltip
- >
- <template slot-scope="scope">
- <el-radio v-model="setQuery.bindContent" :label="scope.row.id" @input="selectCoupon(scope.row.couponName)"></el-radio>
- </template>
- </el-table-column>
- <el-table-column
- prop="couponName"
- align="center"
- label="优惠券名称"
- show-overflow-tooltip
- >
- </el-table-column>
- <el-table-column
- prop="surplusNum"
- align="center"
- label="剩余数量"
- show-overflow-tooltip
- >
- </el-table-column>
- <el-table-column
- prop="useNum"
- align="center"
- label="已使用"
- show-overflow-tooltip
- >
- </el-table-column>
- <el-table-column
- prop="createTime"
- align="center"
- label="创建时间"
- show-overflow-tooltip
- >
- </el-table-column>
- </el-table>
- <div class="page-box">
- <el-pagination
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- background
- :current-page="couponQuery.currentPage"
- :page-sizes="[10, 20, 30, 40]"
- :page-size="couponQuery.pageSize"
- layout="total, sizes, prev, pager, next, jumper"
- :total="total"
- >
- </el-pagination>
- </div>
- </el-dialog>
- <el-dialog title="选择抽奖" width="70%" :visible.sync="dialogTableVisible1">
-
- <div class="search">
- <div>
- <el-input
- v-model="query.raffleName"
- size="small"
- clearable
- placeholder="请输入活动名称"
- class="item-width-200 "
- ></el-input>
-
- <el-button
- class="ml10"
- type="primary"
- size="small"
- icon="el-icon-search"
- @click="handleSearch1"
- >
- 搜索
- </el-button>
- </div>
- </div>
- <el-table
- :data="tableData1"
- tooltip-effect="dark"
- border
- v-loading="loading2"
- style="width: 100%"
- >
- <el-table-column
- align="center"
- label="选择"
- prop="setMealCode"
- show-overflow-tooltip
- >
- <template slot-scope="scope">
- <el-radio v-model="setQuery.bindContent" :label="scope.row.id" @input="selectCoupon(scope.row.raffleName)"></el-radio>
- </template>
- </el-table-column>
- <el-table-column
- prop="raffleName"
- align="center"
- label="活动名称"
- show-overflow-tooltip
- >
- </el-table-column>
- <el-table-column
- prop="surplusNum"
- align="center"
- label="活动时间"
- show-overflow-tooltip
- >
- <template slot-scope="scope">
- <div v-if="scope.row.raffleCycle == 1">
- {{scope.row.startTime}} 至 {{scope.row.endTime}}
- </div>
- <div v-else>
- {{scope.row.raffleCycleContent | filterDate}}
- </div>
-
- </template>
- </el-table-column>
- <el-table-column
- prop="useNum"
- align="center"
- label="展示状态"
- show-overflow-tooltip
- >
- <template slot-scope="scope">
- {{scope.row.raffleState == 1 ? '展示' : '不展示'}}
- </template>
- </el-table-column>
-
- </el-table>
- <div class="page-box">
- <el-pagination
- @size-change="handleSizeChange1"
- @current-change="handleCurrentChange1"
- background
- :current-page="query.currentPage"
- :page-sizes="[10, 20, 30, 40]"
- :page-size="couponQuery.pageSize"
- layout="total, sizes, prev, pager, next, jumper"
- :total="total"
- >
- </el-pagination>
- </div>
- </el-dialog>
- </div>
- </template>
- <script>
- import {getLuckyDrawList} from '@/api/luckyDraw.js'
- import { editEquity,getEquity } from "@/api/equity";
- import { getCouponList } from "@/api/coupon";
- import {getData,getGoodsList} from '@/api/goods'
- import Upload from "@/components/Upload";
- export default {
- components: {
- Upload,
- },
- data() {
- return {
- couponName:'',
- loading: false,
- loading1: false,
- loading2: false,
- loadingTree: false,
- btnLoading1: false,
- dialogTableVisible: false,
- dialogTableVisible1: false,
- dialogFormVisible1: false,
- query: {
- enable:1,
- raffleName:'',
- "status":'',
- "state":'',
- "currentPage": 1,
- "pageSize": 10,
- },
- tableData: [],
- tableData1: [],
- title: "",
- total: 0,
- data:[],
- typeOptions:[
- {
- label:'每月',
- value:1
- },
- {
- label:'最多',
- value:2
- }
- ],
- form:{
- pid:'',
- },
- setQuery: {
- claimType: 1,
- claimNum:1,
- givenNum:1,
- getFlag:1,
- "setMealCode":'',
- "bindContent": "",
- "bindService": 2,
- equityContent:[],
- "equityDetail": "",
- "equityImg": "",
- "equityName": "",
- "equityType": 0,
- "givenNum": 1,
- "showType": 1,
- "status": 1
- },
- couponQuery: {
- couponName:'',
- startTime:'',
- endTime:'',
- couponType: '',
- status:'2',
- currentPage: 1,
- pageSize: 10,
- },
- goodsData:[],
- rules1:{
- pid: [
- { required: true, message: "请选择", trigger: "change" },
- ],
- equityName: [
- { required: true, message: "请输入权益", trigger: "blur" },
- ],
- }
- };
- },
- computed: {
- rules() {
- if(this.setQuery.equityType == 2){
- if(this.setQuery.bindService == 4){
- return {
- equityName: [
- { required: true, message: "请输入权益名称", trigger: "blur" },
- ],
- equityImg: [
- { required: true, message: "请上传权益图片", trigger: "change" },
- ],
- equityDetail: [
- { required: true, message: "请输入权益描述", trigger: "blur" },
- ],
- equityMsg: [
- { required: true, message: "请输入权益说明", trigger: "blur" },
- ],
- equityContent: [
- { required: true, message: "请选择", trigger: "change" },
- ],
- claimNum: [
- { required: true, message: "请选择", trigger: "blur" },
- { type:'number',min:1, message: "最小数量为1", trigger: "blur" },
- ],
- }
- }else{
-
- return {
- equityName: [
- { required: true, message: "请输入权益名称", trigger: "blur" },
- ],
- equityImg: [
- { required: true, message: "请上传权益图片", trigger: "change" },
- ],
- equityDetail: [
- { required: true, message: "请输入权益描述", trigger: "blur" },
- ],
- equityMsg: [
- { required: true, message: "请输入权益说明", trigger: "blur" },
- ],
- bindContent: [
- { required: true, message: "请选择", trigger: "change" },
- ],
- claimNum: [
- { required: true, message: "请选择", trigger: "blur" },
- { type:'number',min:1, message: "最小数量为1", trigger: "blur" },
- ],
- givenNum: [
- { required: true, message: "请选择", trigger: "blur" },
- { type:'number',min:1, message: "最小数量为1", trigger: "blur" },
- ],
- }
- }
- }else{
- return {
- equityName: [
- { required: true, message: "请输入权益名称", trigger: "blur" },
- ],
- equityImg: [
- { required: true, message: "请上传权益图片", trigger: "change" },
- ],
- equityDetail: [
- { required: true, message: "请输入权益描述", trigger: "blur" },
- ],
- }
- }
- }
- },
- filters: {
- filterDate: function(value) {
- let arr = ['','周一','周二','周三','周四','周五','周六','周日']
- let str = ''
- let list = value.split(',')
- list.map(item=>{
- str = str + arr[item] +'、'
- })
- return str;
- }
- },
- watch: {
- 'setQuery.bindService'(val) {
- if(val==3&&!this.data.length){
- this.getData()
- }
- }
- },
- methods: {
- handleAdd(){
- this.title = '添加'
- this.form = {
- icon:'',
- equityName:''
- }
- this.dialogFormVisible1 = true
- },
- handleEdit(row){
- this.title = '编辑'
- this.form = {
- id:row.id,
- icon:row.icon,
- equityName:row.equityName,
- }
- this.dialogFormVisible1 = true
- },
- handleDel(index){
- this.setQuery.equityContent.splice(index,1)
- },
- handleSearch(){
- this.couponQuery.currentPage = 1
- this.getCouponList();
- },
- handleSearch1(){
- this.query.currentPage = 1
- this.getLuckyDrawList();
- },
- selectCoupon(name){
- this.couponName = name
- },
- changeService(){
- this.setQuery.bindContent = ''
- },
- // 选择优惠券
- handleChoose(type){
- if(type==1){
- this.dialogTableVisible = true
- this.couponQuery.currentPage = 1
- this.getCouponList()
- }else{
- this.dialogTableVisible1 = true
- this.query.currentPage = 1
- this.getLuckyDrawList()
- }
- },
- handleCheckChange(val,ischecked){
- if(ischecked){
- this.$nextTick(()=>{
- this.$refs.setQuery.clearValidate('bindContent')
- })
- }
- },
- handleSizeChange(val) {
- this.couponQuery.currentPage = 1;
- this.couponQuery.pageSize = val;
- this.getCouponList()
- },
- handleCurrentChange(val) {
- this.couponQuery.currentPage = val;
- this.getCouponList()
- },
- handleSizeChange1(val) {
- this.query.currentPage = 1;
- this.query.pageSize = val;
- this.getLuckyDrawList()
- },
- handleCurrentChange1(val) {
- this.query.currentPage = val;
- this.getLuckyDrawList()
- },
- uploadEnd(val) {
- this.setQuery[val.type] = val.url;
- },
- uploadEnd1(val){
- this.form[val.type] = val.url;
- },
- save() {
-
- if(this.setQuery.bindService==3){
- this.setQuery.bindContent = this.$refs.tree.getCheckedKeys().join()
- }
- let setQuery = JSON.parse(JSON.stringify(this.setQuery))
- if(setQuery.bindService==4){
- setQuery.equityContent = JSON.stringify(setQuery.equityContent)
- }else{
- setQuery.equityContent = ''
- }
- this.$refs.setQuery.validate((v) => {
- if (v) {
- this.loading = true;
- editEquity(setQuery).then((res) => {
- this.loading = false;
- if (res.state == "Success") {
- this.$notify({
- title: "成功",
- message: "操作成功",
- type: "success",
- });
- this.$router.push({
- path:"/operationManage/equitiesManage/index",
- query:{
- id:this.setQuery.setMealCode
- }
- });
- }
- });
- }
- });
- },
- save1(){
- this.$refs.form.validate((v) => {
- if (v) {
- if(this.title == '编辑'){
- let index = this.setQuery.equityContent.findIndex(item => item.id == this.form.id)
- this.$set(this.setQuery.equityContent[index],'id',this.form.id)
- this.$set(this.setQuery.equityContent[index],'icon',this.form.icon)
- this.$set(this.setQuery.equityContent[index],'equityName',this.form.equityName)
-
- this.dialogFormVisible1 = false
- }else{
- this.goodsData.map(item=>{
- if(item.pid == this.form.pid){
- this.setQuery.equityContent.push({
- icon:item.cover&&item.cover.length?item.cover[0]:'',
- equityName:item.title,
- serviceId:item.pid
- })
- }
- })
- // this.setQuery.equityContent.push(this.form)
- this.dialogFormVisible1 = false
- }
- }
- });
- },
- getDetail(){
- this.loading1 = true
- getEquity({equityId:this.$route.query.id,regionCode:'520100'}).then((res) => {
- this.loading1 = false
- if (res.state == "Success") {
- this.setQuery = res.content
- this.setQuery.bindContent = Number(this.setQuery.bindContent)
- if(this.setQuery.bindService == 3){
- this.$nextTick(()=>{
- this.$refs.tree.setCheckedKeys(this.setQuery.bindContent.split(','))
- })
- }else if(this.setQuery.bindService == 4){
- this.setQuery.equityContent = JSON.parse(this.setQuery.equityContent)
- }else{
- this.couponName = this.setQuery.couponName
- }
-
- }
- });
- },
- getCouponList(){
- this.couponQuery.couponType = this.setQuery.bindService == 1?1:3
- this.loading2 = true
- getCouponList(this.couponQuery).then((res) => {
- this.loading2 = false;
- if (res.state == "Success") {
- this.tableData = res.content.records;
- this.total = res.content.total;
- }
- });
- },
- getData(){
- this.loadingTree=true
- getData().then(res=>{
- this.loadingTree=false
- if (res.state == "Success") {
- this.data = res.content
- }
- })
- },
- // 获取视频会员商品
- getGoodsList(){
- getGoodsList({
- productType:['Recharge'],
- regionCode:'520100',
- page:0,
- size:99}).then(res=>{
- if(res.state == 'Success'){
- this.goodsData = res.content.content
- }
- })
- },
- // 抽奖列表
- getLuckyDrawList(){
- this.loading = true
- getLuckyDrawList(this.query).then(res=>{
- this.loading = false
- if(res.state == 'Success'){
- this.tableData1 = res.content.records
- this.total = res.content.total
- }
- })
- }
- },
- created () {
- this.getGoodsList()
- this.setQuery.equityType = this.$route.query.equityType
- this.setQuery.setMealCode = this.$route.query.setMealCode
- if(this.$route.query.id){
- this.getDetail()
- }
- },
- };
- </script>
- <style lang="scss" scoped>
- .addEquities {
- padding-bottom: 40px;
- .icon{
- width: 40px;
- height: 40px;
- }
- .btn-group {
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .item{
- display: flex;
- align-items: center;
- .label{
- color: #606266;
- font-size: 14px;
- padding: 0 10px;
- }
- }
- }
- </style>
|