Forráskód Böngészése

feat: 处理、流量套餐、歌单、签到配置、连续抽签、多添加一层谨慎操作提示

Damon 9 hónapja
szülő
commit
50cc006541

+ 1 - 1
src/router/index.js

@@ -404,7 +404,7 @@ export const dynamicRoutes = [{
       }
     }]
   },
-  
+
   // 猫王精选电台
   {
     path: '/music',

+ 2 - 2
src/views/music/choiceness/detail.vue

@@ -349,7 +349,7 @@ export default {
       var that = this;
       dialogCallBack(that, function () {
         that
-          .$confirm(`是否删除${row.name}?`, "提示", {
+          .$confirm(`是否删除${row.name}?`, "提示", {
             type: "warning",
           })
           .then(() => {
@@ -478,4 +478,4 @@ export default {
 .form .el-form-item {
   width: 500px;
 }
-</style>
+</style>

+ 194 - 79
src/views/music/menu/index.vue

@@ -1,3 +1,4 @@
+<!-- 音频管理 歌单 -->
 <template>
   <div class="app-container">
     <!-- 搜索 -->
@@ -9,81 +10,184 @@
         <el-input v-model="form.name" placeholder="请输入歌单名称" clearable />
       </el-form-item>
       <el-form-item label="资源平台:">
-        <el-select v-model="form.platformId" placeholder="请选择资源平台" clearable>
-          <el-option v-for="item in platformOptions" :key="item.value" :value="item.value" :label="item.label" />
+        <el-select
+          v-model="form.platformId"
+          placeholder="请选择资源平台"
+          clearable
+        >
+          <el-option
+            v-for="item in platformOptions"
+            :key="item.value"
+            :value="item.value"
+            :label="item.label"
+          />
         </el-select>
       </el-form-item>
       <el-form-item label="当前状态:">
         <el-select v-model="form.status" placeholder="请选择当前状态" clearable>
-          <el-option v-for="item in onOrOffOptions" :key="item.value" :value="item.value" :label="item.label" />
+          <el-option
+            v-for="item in onOrOffOptions"
+            :key="item.value"
+            :value="item.value"
+            :label="item.label"
+          />
         </el-select>
       </el-form-item>
       <el-form-item label="付费类型:">
-        <el-select v-model="form.payType" placeholder="请选择付费类型" clearable>
-          <el-option v-for="item in payTypeOptions.slice(0, 2)" :key="item.value" :value="item.value"
-            :label="item.label" />
+        <el-select
+          v-model="form.payType"
+          placeholder="请选择付费类型"
+          clearable
+        >
+          <el-option
+            v-for="item in payTypeOptions.slice(0, 2)"
+            :key="item.value"
+            :value="item.value"
+            :label="item.label"
+          />
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" @click="getSearch">搜索</el-button>
+        <el-button type="primary" icon="el-icon-search" @click="getSearch"
+          >搜索</el-button
+        >
         <el-button icon="el-icon-refresh" @click="getRefresh">重置</el-button>
-        <el-button type="primary" plain icon="el-icon-plus" @click="getDetail()"
-          v-hasPermi="['music:menu:add']">新增</el-button>
-        <el-button type="primary" :disabled="obj.id === ''" @click="getChange(obj, 1)"
-          v-hasPermi="['music:menu:up']">批量上架</el-button>
-        <el-button type="primary" :disabled="obj.id === ''" @click="getChange(obj, 2)"
-          v-hasPermi="['music:menu:down']">批量下架</el-button>
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          @click="getDetail()"
+          v-hasPermi="['music:menu:add']"
+          >新增</el-button
+        >
+        <el-button
+          type="primary"
+          :disabled="obj.id === ''"
+          @click="getChange(obj, 1)"
+          v-hasPermi="['music:menu:up']"
+          >批量上架</el-button
+        >
+        <el-button
+          type="primary"
+          :disabled="obj.id === ''"
+          @click="getChange(obj, 2)"
+          v-hasPermi="['music:menu:down']"
+          >批量下架</el-button
+        >
       </el-form-item>
     </el-form>
     <!-- 列表 -->
-    <el-table :data="tableData" v-loading="loading" @selection-change="handleSelect">
+    <el-table
+      :data="tableData"
+      v-loading="loading"
+      @selection-change="handleSelect"
+    >
       <el-table-column type="selection" align="center" />
-      <el-table-column label="歌单Id" prop="id" align="center" show-overflow-tooltip />
-      <el-table-column label="歌单名称" prop="name" align="center" show-overflow-tooltip />
+      <el-table-column
+        label="歌单Id"
+        prop="id"
+        align="center"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="歌单名称"
+        prop="name"
+        align="center"
+        show-overflow-tooltip
+      />
       <el-table-column label="歌单封面" align="center" width="100px">
         <template slot-scope="scope">
           <el-image v-if="scope.row.coverUrl" :src="scope.row.coverUrl" />
         </template>
       </el-table-column>
-      <el-table-column label="歌单创建者" prop="avatarNickName" align="center" show-overflow-tooltip />
+      <el-table-column
+        label="歌单创建者"
+        prop="avatarNickName"
+        align="center"
+        show-overflow-tooltip
+      />
       <el-table-column label="创建者头像" align="center" width="100px">
         <template slot-scope="scope">
-          <el-image v-if="scope.row.avatarNickHead" :src="scope.row.avatarNickHead" />
+          <el-image
+            v-if="scope.row.avatarNickHead"
+            :src="scope.row.avatarNickHead"
+          />
         </template>
       </el-table-column>
-      <el-table-column label="付费类型" prop="payType" align="center" :formatter="freeFormatter" />
-      <el-table-column label="资源平台" prop="platformId" align="center" :formatter="platformFormatter" />
+      <el-table-column
+        label="付费类型"
+        prop="payType"
+        align="center"
+        :formatter="freeFormatter"
+      />
+      <el-table-column
+        label="资源平台"
+        prop="platformId"
+        align="center"
+        :formatter="platformFormatter"
+      />
       <el-table-column label="歌曲数量" prop="programCount" align="center" />
-      <el-table-column label="当前状态" prop="status" align="center" :formatter="statusFormatter" />
+      <el-table-column
+        label="当前状态"
+        prop="status"
+        align="center"
+        :formatter="statusFormatter"
+      />
       <el-table-column label="更新时间" align="center">
         <template slot-scope="scope">
-          {{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}
+          {{ parseTime(scope.row.updateTime, "{y}-{m}-{d} {h}:{i}:{s}") }}
         </template>
       </el-table-column>
       <el-table-column label="操作" align="center">
         <template slot-scope="scope">
-          <el-button type="text" @click="getDetail(scope.row.id, true)">查看</el-button>
+          <el-button type="text" @click="getDetail(scope.row.id, true)"
+            >查看</el-button
+          >
           <span v-if="scope.row.status === 2">
-            <el-button type="text" @click="getDetail(scope.row.id)" v-hasPermi="['music:menu:edit']"
-              style="margin-left: 10px">编辑</el-button>
-            <el-button type="text" @click="getChange(scope.row, 1)" v-hasPermi="['music:menu:up']">上架
+            <el-button
+              type="text"
+              @click="getDetail(scope.row.id)"
+              v-hasPermi="['music:menu:edit']"
+              style="margin-left: 10px"
+              >编辑</el-button
+            >
+            <el-button
+              type="text"
+              @click="getChange(scope.row, 1)"
+              v-hasPermi="['music:menu:up']"
+              >上架
             </el-button>
-            <el-button type="delete" @click="getDelete(scope.row)" v-hasPermi="['music:menu:delete']">删除
+            <el-button
+              type="delete"
+              @click="getDelete(scope.row)"
+              v-hasPermi="['music:menu:delete']"
+              >删除
             </el-button>
           </span>
-          <el-button v-else type="text" @click="getChange(scope.row, 2)" v-hasPermi="['music:menu:down']">下架
+          <el-button
+            v-else
+            type="text"
+            @click="getChange(scope.row, 2)"
+            v-hasPermi="['music:menu:down']"
+            >下架
           </el-button>
         </template>
       </el-table-column>
     </el-table>
-    <pagination v-show="total > 0" :total="total" :page.sync="form.pageNum" :limit.sync="form.pageSize"
-      @pagination="getList" />
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="form.pageNum"
+      :limit.sync="form.pageSize"
+      @pagination="getList"
+    />
   </div>
 </template>
 
 <script>
-import { list, change, remove } from '@/api/music/menu'
-import { platformMixin, onOrOffMixin, payTypeMixin } from '@/mixin/index'
+import { change, list, remove } from "@/api/music/menu";
+import { onOrOffMixin, payTypeMixin, platformMixin } from "@/mixin/index";
+import { dialogCallBack } from "@/utils/DialogUtil";
 export default {
   mixins: [platformMixin, onOrOffMixin, payTypeMixin],
   data() {
@@ -94,7 +198,7 @@ export default {
       form: {
         pageNum: 1,
         pageSize: 10,
-        type: 2
+        type: 2,
       },
       // 总数据
       total: 0,
@@ -102,38 +206,38 @@ export default {
       tableData: [],
       // 批量上下架
       obj: {
-        id: '',
-        name: '已选数据'
-      }
+        id: "",
+        name: "已选数据",
+      },
     };
   },
   mounted() {
     // 获取资源平台
     this.getPlatform({
-      audioType: 10
-    })
-    this.getList()
+      audioType: 10,
+    });
+    this.getList();
   },
   methods: {
     // 列表
     getList() {
-      this.loading = true
+      this.loading = true;
       // 后端延迟
       setTimeout(() => {
-        list(this.form).then(res => {
+        list(this.form).then((res) => {
           if (res.code === 0) {
-            this.tableData = res.data.records
-            this.total = res.data.total
-            this.loading = false
+            this.tableData = res.data.records;
+            this.total = res.data.total;
+            this.loading = false;
           }
-        })
+        });
       }, 1500);
     },
 
     // 搜索
     getSearch() {
-      this.form.pageNum = 1
-      this.getList()
+      this.form.pageNum = 1;
+      this.getList();
     },
 
     // 重置
@@ -141,9 +245,9 @@ export default {
       this.form = {
         pageNum: 1,
         pageSize: 10,
-        type: 2
-      }
-      this.getList()
+        type: 2,
+      };
+      this.getList();
     },
 
     // 新增 / 查看 / 编辑
@@ -152,58 +256,69 @@ export default {
         path: `/music/menu/detail`,
         query: {
           id: id,
-          disabled: boolean
-        }
-      })
+          disabled: boolean,
+        },
+      });
     },
 
     // 上下架
     getChange(row, status) {
-      let title = status === 1 ? '上架' : '下架'
-      this.$confirm(`是否${title}${row.name}?`, '提示', {
-        type: 'warning'
-      }).then(() => {
-        change(row.id, status).then(res => {
-          if (res.code === 0) {
-            this.$message.success(`${title}成功!`)
-            this.getList()
-          }
+      let title = status === 1 ? "上架" : "下架";
+      this.$confirm(`是否${title}${row.name}?`, "提示", {
+        type: "warning",
+      })
+        .then(() => {
+          change(row.id, status).then((res) => {
+            if (res.code === 0) {
+              this.$message.success(`${title}成功!`);
+              this.getList();
+            }
+          });
         })
-      }).catch(() => { })
+        .catch(() => {});
     },
 
     // 删除
     getDelete(row) {
-      this.$confirm(`是否删除${row.name}?`, '提示', {
-        type: 'warning'
-      }).then(() => {
-        remove(row.id).then(res => {
-          if (res.code === 0) {
-            this.$message.success('删除成功!')
-            this.getList()
-          }
-        })
-      }).catch(() => { })
+      var that = this;
+      dialogCallBack(that, function () {
+        that
+          .$confirm(`是否删除${row.name}?`, "提示", {
+            type: "warning",
+          })
+          .then(() => {
+            remove(row.id).then((res) => {
+              if (res.code === 0) {
+                that.$message.success("删除成功!");
+                that.getList();
+              }
+            });
+          })
+          .catch(() => {});
+      });
     },
 
     // 多选
     handleSelect(e) {
-      this.obj.id = ''
-      e.map((item, index) => this.obj.id += item.id + ((index + 1) < e.length ? ',' : ''))
+      this.obj.id = "";
+      e.map(
+        (item, index) =>
+          (this.obj.id += item.id + (index + 1 < e.length ? "," : ""))
+      );
     },
 
     // 字典翻译
     platformFormatter(row) {
-      return this.selectDictLabel(this.platformOptions, row.platformId)
+      return this.selectDictLabel(this.platformOptions, row.platformId);
     },
 
     statusFormatter(row) {
-      return this.selectDictLabel(this.onOrOffOptions, row.status)
+      return this.selectDictLabel(this.onOrOffOptions, row.status);
     },
 
     freeFormatter(row) {
-      return this.selectDictLabel(this.payTypeOptions, row.payType)
-    }
+      return this.selectDictLabel(this.payTypeOptions, row.payType);
+    },
   },
 };
 </script>

+ 1 - 1
src/views/operation/channel/index.vue

@@ -269,7 +269,7 @@ export default {
       var that = this;
       dialogCallBack(that, function () {
         that
-          .$confirm(`是否删除${row.name}?`, "提示", {
+          .$confirm(`是否删除${row.name}?`, "提示", {
             type: "warning",
           })
           .then(() => {

+ 254 - 122
src/views/registration/regConfig/index.vue

@@ -1,43 +1,93 @@
+<!-- 签到管理 签到配置-->
 <template>
   <div class="app-container">
-    <el-form :model="form" ref="form" :rules="rules" label-width="auto" v-loading="loading"
-      :disabled="checkPermi(['registration:regConfig:change']) ? false : true">
+    <el-form
+      :model="form"
+      ref="form"
+      :rules="rules"
+      label-width="auto"
+      v-loading="loading"
+      :disabled="checkPermi(['registration:regConfig:change']) ? false : true"
+    >
       <el-form-item label="签到标题:" prop="signTitle">
-        <el-input v-model="form.signTitle" placeholder="请输入签到标题" maxlength="50" show-word-limit />
+        <el-input
+          v-model="form.signTitle"
+          placeholder="请输入签到标题"
+          maxlength="50"
+          show-word-limit
+        />
       </el-form-item>
       <el-form-item label="签到周期:" prop="signDay">
-        <el-input-number v-model="form.signDay" :min="1" :max="99" placeholder="请输入签到周期" :controls="false"
-          @change="changeSignDay" />
+        <el-input-number
+          v-model="form.signDay"
+          :min="1"
+          :max="99"
+          placeholder="请输入签到周期"
+          :controls="false"
+          @change="changeSignDay"
+        />
         <span class="span">天</span>
       </el-form-item>
       <el-form-item label="基础积分:" prop="baseRewardPoint">
-        <el-input-number v-model="form.baseRewardPoint" :min="0" :controls="false" placeholder="请输入基础积分" />
+        <el-input-number
+          v-model="form.baseRewardPoint"
+          :min="0"
+          :controls="false"
+          placeholder="请输入基础积分"
+        />
         <span class="span">积分</span>
       </el-form-item>
 
       <el-form-item label="连续签到奖励:">
-        <el-popover placement="top" content="连续签到一定天数后,可以额外获得积分" trigger="hover">
-          <el-checkbox v-model="form.isContinueReward" :true-label="0" :false-label="1" slot="reference">
+        <el-popover
+          placement="top"
+          content="连续签到一定天数后,可以额外获得积分"
+          trigger="hover"
+        >
+          <el-checkbox
+            v-model="form.isContinueReward"
+            :true-label="0"
+            :false-label="1"
+            slot="reference"
+          >
             开启
           </el-checkbox>
         </el-popover>
-        <el-table v-if="form.isContinueReward === 0" :data="form.pointConfigContinueRList">
+        <el-table
+          v-if="form.isContinueReward === 0"
+          :data="form.pointConfigContinueRList"
+        >
           <el-table-column label="连续签到天数 / 天" align="center">
             <template slot-scope="scope">
-              <el-input-number class="input-number" v-model="scope.row.signDay" :min="1" :max="99"
-                :controls="false" @blur="checkSignDay(scope.row.signDay, scope.$index)" />
+              <el-input-number
+                class="input-number"
+                v-model="scope.row.signDay"
+                :min="1"
+                :max="99"
+                :controls="false"
+                @blur="checkSignDay(scope.row.signDay, scope.$index)"
+              />
             </template>
           </el-table-column>
           <el-table-column label="奖励积分 / 积分" align="center">
             <template slot-scope="scope">
-              <el-input-number class="input-number" v-model="scope.row.rewardPoint" :min="0"
-                :controls="false" />
+              <el-input-number
+                class="input-number"
+                v-model="scope.row.rewardPoint"
+                :min="0"
+                :controls="false"
+              />
             </template>
           </el-table-column>
           <el-table-column align="center">
             <template #header>
-              <el-button type="text" icon="el-icon-plus" @click="handlerPush('签到奖励')"
-                :disabled="continuePush">添加</el-button>
+              <el-button
+                type="text"
+                icon="el-icon-plus"
+                @click="handlerPush('签到奖励')"
+                :disabled="continuePush"
+                >添加</el-button
+              >
             </template>
             <template slot-scope="scope">
               <el-button type="delete" @click="getDeleteContinue(scope)">
@@ -49,30 +99,59 @@
       </el-form-item>
 
       <el-form-item label="收听播放奖励:">
-        <el-popover placement="top" content="播放一定时间后,可以获得相应奖励" trigger="hover">
-          <el-select v-model="form.notifyRewardType" placeholder="请选择奖励类型" slot="reference"
-            style="width: 150px; margin-bottom: 10px">
-            <el-option v-for="item in rewardOptions" :key="item.value" :value="item.value"
-              :label="item.label" />
+        <el-popover
+          placement="top"
+          content="播放一定时间后,可以获得相应奖励"
+          trigger="hover"
+        >
+          <el-select
+            v-model="form.notifyRewardType"
+            placeholder="请选择奖励类型"
+            slot="reference"
+            style="width: 150px; margin-bottom: 10px"
+          >
+            <el-option
+              v-for="item in rewardOptions"
+              :key="item.value"
+              :value="item.value"
+              :label="item.label"
+            />
           </el-select>
         </el-popover>
-        <el-table v-if="form.notifyRewardType" :data="form.pointConfigListenGoodList">
+        <el-table
+          v-if="form.notifyRewardType"
+          :data="form.pointConfigListenGoodList"
+        >
           <el-table-column label="播放时间 / 小时" align="center">
             <template slot-scope="scope">
-              <el-input-number class="input-number" v-model="scope.row.listenTime" :max="99" :controls="false"
-                @blur="checkListenTime(scope.row.listenTime, scope.$index)" />
+              <el-input-number
+                class="input-number"
+                v-model="scope.row.listenTime"
+                :max="99"
+                :controls="false"
+                @blur="checkListenTime(scope.row.listenTime, scope.$index)"
+              />
             </template>
           </el-table-column>
           <el-table-column label="奖励积分 / 积分" align="center">
             <template slot-scope="scope">
-              <el-input-number class="input-number" v-model="scope.row.rewardPoint" :min="0"
-                :controls="false" />
+              <el-input-number
+                class="input-number"
+                v-model="scope.row.rewardPoint"
+                :min="0"
+                :controls="false"
+              />
             </template>
           </el-table-column>
           <el-table-column align="center">
             <template #header>
-              <el-button type="text" icon="el-icon-plus" @click="handlerPush('播放奖励')"
-                :disabled="listenGoodPush">添加</el-button>
+              <el-button
+                type="text"
+                icon="el-icon-plus"
+                @click="handlerPush('播放奖励')"
+                :disabled="listenGoodPush"
+                >添加</el-button
+              >
             </template>
             <template slot-scope="scope">
               <el-button type="delete" @click="getDeleteListenGood(scope)">
@@ -83,24 +162,37 @@
         </el-table>
       </el-form-item>
       <el-form-item label="手机通知奖励:">
-        <el-input-number v-model="form.notifyRewardPoint" :min="0" :controls="false" />
+        <el-input-number
+          v-model="form.notifyRewardPoint"
+          :min="0"
+          :controls="false"
+        />
         <span class="span">积分</span>
       </el-form-item>
       <el-form-item label="签到规则:" prop="signRule">
-        <el-input v-model="form.signRule" type="textarea" :autosize="{minRows: 5, maxRows: 10}"
-          placeholder="请输入签到规则" />
+        <el-input
+          v-model="form.signRule"
+          type="textarea"
+          :autosize="{ minRows: 5, maxRows: 10 }"
+          placeholder="请输入签到规则"
+        />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" @click="getSubmit">确定
-        </el-button>
+        <el-button type="primary" @click="getSubmit">确定 </el-button>
       </el-form-item>
     </el-form>
   </div>
 </template>
 
 <script>
-import { list, submit, removeContinue, removeListenGood } from '@/api/registration/regConfig'
-import { checkPermi } from '@/utils/permission'
+import {
+list,
+removeContinue,
+removeListenGood,
+submit,
+} from "@/api/registration/regConfig";
+import { dialogCallBack } from "@/utils/DialogUtil";
+import { checkPermi } from "@/utils/permission";
 export default {
   data() {
     return {
@@ -108,7 +200,7 @@ export default {
       loading: false,
       // 表单
       form: {
-        pointConfigContinueRList: []
+        pointConfigContinueRList: [],
       },
       // 连续签到奖励 添加按钮禁止
       continuePush: false,
@@ -116,167 +208,207 @@ export default {
       listenGoodPush: false,
       // 校验
       rules: {
-        signTitle: [{
-          required: true, message: '请输入签到标题', trigger: 'blur'
-        }],
-        signDay: [{
-          required: true, message: '请输入签到周期', trigger: 'blur'
-        }],
-        baseRewardPoint: [{
-          required: true, message: '请输入基础积分', trigger: 'blur'
-        }],
-        signRule: [{
-          required: true, message: '请输入签到规则', trigger: 'blur'
-        }]
+        signTitle: [
+          {
+            required: true,
+            message: "请输入签到标题",
+            trigger: "blur",
+          },
+        ],
+        signDay: [
+          {
+            required: true,
+            message: "请输入签到周期",
+            trigger: "blur",
+          },
+        ],
+        baseRewardPoint: [
+          {
+            required: true,
+            message: "请输入基础积分",
+            trigger: "blur",
+          },
+        ],
+        signRule: [
+          {
+            required: true,
+            message: "请输入签到规则",
+            trigger: "blur",
+          },
+        ],
       },
       // 奖励类型
-      rewardOptions: [{
-        value: 4,
-        label: '积分'
-      }],
+      rewardOptions: [
+        {
+          value: 4,
+          label: "积分",
+        },
+      ],
       // 是否只读
-      disabled: false
-    }
+      disabled: false,
+    };
   },
   watch: {
-    'form.pointConfigContinueRList': {
+    "form.pointConfigContinueRList": {
       handler(val) {
         // 当连续签到已达基础签到周期上限则禁止添加新数据
-        this.continuePush = val.length < this.form.signDay ? val.findIndex(i => i.signDay === this.form.signDay) !== -1 ? true : false : true
+        this.continuePush =
+          val.length < this.form.signDay
+            ? val.findIndex((i) => i.signDay === this.form.signDay) !== -1
+              ? true
+              : false
+            : true;
       },
-      deep: true
+      deep: true,
+    },
+    "form.pointConfigListenGoodList"(val) {
+      this.listenGoodPush = val.length >= 10 ? true : false;
     },
-    'form.pointConfigListenGoodList'(val) {
-      this.listenGoodPush = val.length >= 10 ? true : false
-    }
   },
   mounted() {
-    this.getList()
+    this.getList();
   },
   methods: {
     // 详情
     getList() {
-      this.loading = true
-      list().then(res => {
+      this.loading = true;
+      list().then((res) => {
         if (res.code === 0) {
-          this.form = res.data
-          this.loading = false
+          this.form = res.data;
+          this.loading = false;
         }
-      })
+      });
     },
 
     // 签到周期改变 连续签到列表重置
     changeSignDay() {
-      let ids = ''
-      let arr = []
-      this.form.pointConfigContinueRList.map(i => {
+      let ids = "";
+      let arr = [];
+      this.form.pointConfigContinueRList.map((i) => {
         if (i.id) {
-          arr.push(i.id)
+          arr.push(i.id);
         }
-      })
-      ids = arr.join(',')
+      });
+      ids = arr.join(",");
       if (ids) {
-        removeContinue(ids).then(res => { })
+        removeContinue(ids).then((res) => {});
       }
-      this.form.pointConfigContinueRList = []
+      this.form.pointConfigContinueRList = [];
     },
 
     // 添加
     handlerPush(key) {
-      if (key === '签到奖励') {
+      if (key === "签到奖励") {
         this.form.pointConfigContinueRList.push({
           signDay: undefined,
           rewardPoint: undefined,
           status: 1,
-        })
+        });
       } else {
         this.form.pointConfigListenGoodList.push({
           listenTime: undefined,
           rewardPoint: undefined,
-          type: this.form.notifyRewardType
-        })
+          type: this.form.notifyRewardType,
+        });
       }
     },
 
     // 判断连续签到天数是否大于签到周期天数
     checkSignDay(e, index) {
       if (e > this.form.signDay) {
-        this.$message.error('连续签到天数不可大于签到周期!')
-        this.form.pointConfigContinueRList[index].signDay = undefined
+        this.$message.error("连续签到天数不可大于签到周期!");
+        this.form.pointConfigContinueRList[index].signDay = undefined;
       }
-      if (this.form.pointConfigContinueRList.filter(i => i.signDay === e).length === 2) {
-        this.$message.error('此天数已存在!')
-        this.form.pointConfigContinueRList[index].signDay = undefined
+      if (
+        this.form.pointConfigContinueRList.filter((i) => i.signDay === e)
+          .length === 2
+      ) {
+        this.$message.error("此天数已存在!");
+        this.form.pointConfigContinueRList[index].signDay = undefined;
       }
     },
 
     // 判断收听播放奖励时是否填写重复的时间
     checkListenTime(e, index) {
-      if (this.form.pointConfigListenGoodList.filter(i => i.listenTime === e).length === 2) {
-        this.$message.error('此时间已存在!')
-        this.form.pointConfigListenGoodList[index].listenTime = undefined
+      if (
+        this.form.pointConfigListenGoodList.filter((i) => i.listenTime === e)
+          .length === 2
+      ) {
+        this.$message.error("此时间已存在!");
+        this.form.pointConfigListenGoodList[index].listenTime = undefined;
       }
     },
 
     // 删除连续签到奖励
     getDeleteContinue(scope) {
-      let title = scope.row.signDay ? scope.row.signDay : '空'
-      this.$confirm(`是否删除 连续签到天数为${title} 的数据?`, '提示', {
-        type: 'warning'
-      }).then(() => {
-        if (scope.row.id) {
-          removeContinue(scope.row.id).then(res => {
-            if (res.code !== 0) {
-              return false
+      var that = this;
+      dialogCallBack(that, function () {
+        let title = scope.row.signDay ? scope.row.signDay : "空";
+        that
+          .$confirm(`是否有删除 连续签到天数为${title} 的数据?`, "提示", {
+            type: "warning",
+          })
+          .then(() => {
+            if (scope.row.id) {
+              removeContinue(scope.row.id).then((res) => {
+                if (res.code !== 0) {
+                  return false;
+                }
+              });
             }
+            that.$message.success("删除成功!");
+            that.form.pointConfigContinueRList.splice(scope.$index, 1);
           })
-        }
-        this.$message.success('删除成功!')
-        this.form.pointConfigContinueRList.splice(scope.$index, 1)
-      }).catch(() => { })
+          .catch(() => {});
+      });
     },
 
     // 删除收听播放奖励
     getDeleteListenGood(scope) {
-      let title = scope.row.listenTime ? scope.row.listenTime : '空'
-      this.$confirm(`是否删除 播放时间为${title} 的数据?`, '提示', {
-        type: 'warning'
-      }).then(() => {
-        if (scope.row.id) {
-          removeListenGood({
-            id: scope.row.id
-          }).then(res => {
-            if (res.code !== 0) {
-              return false
+      var that = this;
+      dialogCallBack(that, function () {
+        let title = scope.row.listenTime ? scope.row.listenTime : "空";
+        that
+          .$confirm(`是否有删除 播放时间为${title} 的数据?`, "提示", {
+            type: "warning",
+          })
+          .then(() => {
+            if (scope.row.id) {
+              removeListenGood({
+                id: scope.row.id,
+              }).then((res) => {
+                if (res.code !== 0) {
+                  return false;
+                }
+              });
             }
+            that.$message.success("删除成功!");
+            that.form.pointConfigListenGoodList.splice(scope.$index, 1);
           })
-        }
-        this.$message.success('删除成功!')
-        this.form.pointConfigListenGoodList.splice(scope.$index, 1)
-      }).catch(() => { })
-
+          .catch(() => {});
+      });
     },
 
     // 确定
     getSubmit() {
       this.$refs.form.validate((valid) => {
         if (valid) {
-          submit(this.form).then(res => {
+          submit(this.form).then((res) => {
             if (res.code === 0) {
-              this.$message.success('修改成功!')
-              this.getList()
+              this.$message.success("修改成功!");
+              this.getList();
             }
-          })
+          });
         } else {
-          return false
+          return false;
         }
-      })
+      });
     },
 
     // 监控权限
-    checkPermi
-  }
-}
+    checkPermi,
+  },
+};
 </script>
 
 <style lang="scss" scoped>
@@ -291,4 +423,4 @@ export default {
 .span {
   margin-left: 10px;
 }
-</style>
+</style>

+ 287 - 125
src/views/service/package/index.vue

@@ -1,78 +1,214 @@
+<!-- 服务管理 流量套餐 -->
 <template>
   <div class="app-container">
     <!-- 搜索 -->
     <el-form inline size="mini">
-      <el-form-item :label="form.typeList[0] === '13' ? '套餐名称:' : '流量名称:'">
+      <el-form-item
+        :label="form.typeList[0] === '13' ? '套餐名称:' : '流量名称:'"
+      >
         <el-input v-model="form.name" placeholder="请输入套餐名称" clearable />
       </el-form-item>
       <el-form-item v-if="form.typeList[0] !== '12'" label="资源平台:">
-        <el-select v-model="form.platformId" placeholder="请选择资源平台" clearable>
-          <el-option v-for="item in platformOptions" :key="item.value" :label="item.label" :value="item.value" />
+        <el-select
+          v-model="form.platformId"
+          placeholder="请选择资源平台"
+          clearable
+        >
+          <el-option
+            v-for="item in platformOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </el-form-item>
       <el-form-item v-else label="流量套餐:">
-        <el-select v-model="form.goodsId" placeholder="请选择流量套餐" clearable>
-          <el-option v-for="(item, index) in goodsOptions" :key="index" :label="item" :value="index" />
+        <el-select
+          v-model="form.goodsId"
+          placeholder="请选择流量套餐"
+          clearable
+        >
+          <el-option
+            v-for="(item, index) in goodsOptions"
+            :key="index"
+            :label="item"
+            :value="index"
+          />
         </el-select>
       </el-form-item>
       <el-form-item label="关联设备:">
-        <el-select v-model="form.deviceIds" filterable placeholder="请选择关联设备" clearable>
-          <el-option v-for="item in devOptions" :key="item.value" :label="item.label" :value="item.value" />
+        <el-select
+          v-model="form.deviceIds"
+          filterable
+          placeholder="请选择关联设备"
+          clearable
+        >
+          <el-option
+            v-for="item in devOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </el-form-item>
       <el-form-item label="当前状态:">
         <el-select v-model="form.status" placeholder="请选择当前状态" clearable>
-          <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value" />
+          <el-option
+            v-for="item in statusOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" @click="getSearch">搜索</el-button>
+        <el-button type="primary" icon="el-icon-search" @click="getSearch"
+          >搜索</el-button
+        >
         <el-button icon="el-icon-refresh" @click="getRefresh">重置</el-button>
-        <el-button type="primary" plain icon="el-icon-plus" @click="getDetail()"
-          v-hasPermi="['service:package:add']">新增</el-button>
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          @click="getDetail()"
+          v-hasPermi="['service:package:add']"
+          >新增</el-button
+        >
       </el-form-item>
     </el-form>
     <!-- 列表 -->
-    <el-table :data="tableData" v-loading="loading" :default-sort="{ prop: 'sort' }">
-      <el-table-column label="排序" align="center" prop="sort" key="sort" :formatter="sortFormatter" />
-      <el-table-column :label="form.typeList[0] === '13' ? '套餐名称' : '流量名称'" align="center" prop="name" key="name"
-        show-overflow-tooltip />
-      <el-table-column label="关联设备" align="center" prop="deviceIds" key="deviceIds" :formatter="devFormatter"
-        show-overflow-tooltip />
-      <el-table-column label="原价/元" align="center" prop="price" key="price" />
-      <el-table-column label="活动价/元" align="center" prop="discount" key="discount" />
-      <el-table-column v-if="form.typeList[0] === '12'" label="流量套餐" align="center" prop="intro" key="intro"
-        show-overflow-tooltip />
-      <el-table-column v-if="form.typeList[0] !== '12'" label="有效期" align="center" prop="indate" key="indate"
-        :formatter="timeFormatter" />
-      <el-table-column v-if="form.typeList[0] !== '12'" label="资源平台" align="center" prop="platformId" key="platformId"
-        :formatter="platformFormatter" />
-      <el-table-column v-if="form.typeList[0] !== '12'" label="栏目" align="center" prop="groupId" key="groupId"
-        :formatter="sceneFormatter" />
-      <el-table-column label="当前状态" align="center" prop="status" key="status" :formatter="statusFormatter" />
-      <el-table-column label="是否推荐" align="center" prop="isRecommend" key="isRecommend" :formatter="recommendFormatter" />
-      <el-table-column label="创建时间" align="center" prop="createTime" key="createTime" />
+    <el-table
+      :data="tableData"
+      v-loading="loading"
+      :default-sort="{ prop: 'sort' }"
+    >
+      <el-table-column
+        label="排序"
+        align="center"
+        prop="sort"
+        key="sort"
+        :formatter="sortFormatter"
+      />
+      <el-table-column
+        :label="form.typeList[0] === '13' ? '套餐名称' : '流量名称'"
+        align="center"
+        prop="name"
+        key="name"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="关联设备"
+        align="center"
+        prop="deviceIds"
+        key="deviceIds"
+        :formatter="devFormatter"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="原价/元"
+        align="center"
+        prop="price"
+        key="price"
+      />
+      <el-table-column
+        label="活动价/元"
+        align="center"
+        prop="discount"
+        key="discount"
+      />
+      <el-table-column
+        v-if="form.typeList[0] === '12'"
+        label="流量套餐"
+        align="center"
+        prop="intro"
+        key="intro"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        v-if="form.typeList[0] !== '12'"
+        label="有效期"
+        align="center"
+        prop="indate"
+        key="indate"
+        :formatter="timeFormatter"
+      />
+      <el-table-column
+        v-if="form.typeList[0] !== '12'"
+        label="资源平台"
+        align="center"
+        prop="platformId"
+        key="platformId"
+        :formatter="platformFormatter"
+      />
+      <el-table-column
+        v-if="form.typeList[0] !== '12'"
+        label="栏目"
+        align="center"
+        prop="groupId"
+        key="groupId"
+        :formatter="sceneFormatter"
+      />
+      <el-table-column
+        label="当前状态"
+        align="center"
+        prop="status"
+        key="status"
+        :formatter="statusFormatter"
+      />
+      <el-table-column
+        label="是否推荐"
+        align="center"
+        prop="isRecommend"
+        key="isRecommend"
+        :formatter="recommendFormatter"
+      />
+      <el-table-column
+        label="创建时间"
+        align="center"
+        prop="createTime"
+        key="createTime"
+      />
       <el-table-column label="操作" align="center">
         <template slot-scope="scope">
-          <el-button type="text" @click="getDetail(scope.row.id)" v-hasPermi="['service:package:edit']">
+          <el-button
+            type="text"
+            @click="getDetail(scope.row.id)"
+            v-hasPermi="['service:package:edit']"
+          >
             编辑
           </el-button>
-          <el-button v-if="scope.row.status === 1" type="text" @click="getChange(scope.row)"
-            v-hasPermi="['service:package:down']">下架</el-button>
-          <el-button v-else type="delete" @click="getDelete(scope.row)"
-            v-hasPermi="['service:package:delete']">删除</el-button>
+          <el-button
+            v-if="scope.row.status === 1"
+            type="text"
+            @click="getChange(scope.row)"
+            v-hasPermi="['service:package:down']"
+            >下架</el-button
+          >
+          <el-button
+            v-else
+            type="delete"
+            @click="getDelete(scope.row)"
+            v-hasPermi="['service:package:delete']"
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
-    <pagination v-show="total > 0" :total="total" :page.sync="form.pageNum" :limit.sync="form.pageSize"
-      @pagination="getList" />
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="form.pageNum"
+      :limit.sync="form.pageSize"
+      @pagination="getList"
+    />
   </div>
 </template>
 
 <script>
-import { list, remove, shelve, goodsList } from '@/api/service/package'
-import { list as sceneList } from '@/api/operation/scene'
-import { devMixin, serviceTimeMixin } from '@/mixin/index'
+import { list as sceneList } from "@/api/operation/scene";
+import { goodsList, list, remove, shelve } from "@/api/service/package";
+import { devMixin, serviceTimeMixin } from "@/mixin/index";
+import { dialogCallBack } from "@/utils/DialogUtil";
 export default {
   mixins: [devMixin, serviceTimeMixin],
   data() {
@@ -83,94 +219,104 @@ export default {
       form: {
         pageNum: 1,
         pageSize: 10,
-        typeList: this.$route.query.typeList.split(',')
+        typeList: this.$route.query.typeList.split(","),
       },
       // 列表
       tableData: [],
       // 总数据
       total: 0,
       // 是否推荐
-      recommendOptions: [{
-        value: 0,
-        label: '是'
-      }, {
-        value: 1,
-        label: '否'
-      }],
+      recommendOptions: [
+        {
+          value: 0,
+          label: "是",
+        },
+        {
+          value: 1,
+          label: "否",
+        },
+      ],
       // 当前状态
-      statusOptions: [{
-        value: 1,
-        label: '上架'
-      }, {
-        value: 4,
-        label: '下架'
-      }],
+      statusOptions: [
+        {
+          value: 1,
+          label: "上架",
+        },
+        {
+          value: 4,
+          label: "下架",
+        },
+      ],
       // 资源平台
-      platformOptions: [{
-        value: 6,
-        label: 'QQ音乐'
-      }, {
-        value: 9,
-        label: '酷狗音乐'
-      }, {
-        value: 10,
-        label: '爱听音乐'
-      }],
+      platformOptions: [
+        {
+          value: 6,
+          label: "QQ音乐",
+        },
+        {
+          value: 9,
+          label: "酷狗音乐",
+        },
+        {
+          value: 10,
+          label: "爱听音乐",
+        },
+      ],
       // 流量套餐
       goodsOptions: [],
       // 爱听专区
-      sceneOptions: []
-    }
+      sceneOptions: [],
+    };
   },
   mounted() {
-    if (this.form.typeList[0] === '12') {
-      this.getGoodSList(2)
+    if (this.form.typeList[0] === "12") {
+      this.getGoodSList(2);
     } else {
-      this.getSceneList()
+      this.getSceneList();
     }
-    this.getDevList()
-    this.getList()
+    this.getDevList();
+    this.getList();
   },
   methods: {
     // 列表
     getList() {
-      this.loading = true
-      list(this.form).then(res => {
+      this.loading = true;
+      list(this.form).then((res) => {
         if (res.code === 0) {
-          this.tableData = res.data.records
-          this.total = res.data.total
-          this.loading = false
+          this.tableData = res.data.records;
+          this.total = res.data.total;
+          this.loading = false;
         }
-      })
+      });
     },
 
     // 流量套餐
     getGoodSList(e) {
-      goodsList(e).then(res => {
+      goodsList(e).then((res) => {
         if (res.code === 0) {
-          this.goodsOptions = res.data
+          this.goodsOptions = res.data;
         }
-      })
+      });
     },
 
     // 爱听专区
     getSceneList() {
-      sceneList().then(res => {
+      sceneList().then((res) => {
         if (res.code === 0) {
-          res.data.map(i => {
+          res.data.map((i) => {
             this.sceneOptions.push({
               value: i.id,
-              label: i.name
-            })
-          })
+              label: i.name,
+            });
+          });
         }
-      })
+      });
     },
 
     // 搜索
     getSearch() {
-      this.form.pageNum = 1
-      this.getList()
+      this.form.pageNum = 1;
+      this.getList();
     },
 
     // 重置
@@ -178,9 +324,9 @@ export default {
       this.form = {
         pageNum: 1,
         pageSize: 10,
-        typeList: this.$route.query.typeList.split(',')
-      }
-      this.getList()
+        typeList: this.$route.query.typeList.split(","),
+      };
+      this.getList();
     },
 
     // 新增 / 编辑
@@ -189,68 +335,84 @@ export default {
         path: `/service/package/detail`,
         query: {
           id: id,
-          typeList: this.form.typeList.join(',')
-        }
-      })
-      this.$route.meta.activeMenu = this.$route.query.typeList.split(',')[0] === '13' ? '/service/musicPackage' : '/service/flowPackage'
+          typeList: this.form.typeList.join(","),
+        },
+      });
+      this.$route.meta.activeMenu =
+        this.$route.query.typeList.split(",")[0] === "13"
+          ? "/service/musicPackage"
+          : "/service/flowPackage";
     },
 
     // 删除
     getDelete(row) {
-      this.$confirm(`是否删除${row.name}?`, '提示', {
-        type: 'warning'
-      }).then(() => {
-        remove(row.id).then(res => {
-          if (res.code === 0) {
-            this.$message.success('删除成功!')
-            this.getList()
-          }
-        })
-      }).catch(() => { })
+      var that = this;
+      dialogCallBack(that, function () {
+        that
+          .$confirm(`是否删除${row.name}?`, "提示", {
+            type: "warning",
+          })
+          .then(() => {
+            remove(row.id).then((res) => {
+              if (res.code === 0) {
+                that.$message.success("删除成功!");
+                that.getList();
+              }
+            });
+          })
+          .catch(() => {});
+      });
     },
 
     // 下架
     getChange(row) {
-      this.$confirm(`是否下架${row.name}?`, '提示', {
-        type: 'warning'
-      }).then(() => {
-        shelve(row.id).then(res => {
-          if (res.code === 0) {
-            this.$message.success('下架成功!')
-            this.getList()
-          }
+      this.$confirm(`是否下架${row.name}?`, "提示", {
+        type: "warning",
+      })
+        .then(() => {
+          shelve(row.id).then((res) => {
+            if (res.code === 0) {
+              this.$message.success("下架成功!");
+              this.getList();
+            }
+          });
         })
-      }).catch(() => { })
+        .catch(() => {});
     },
 
     // 字典翻译
     sortFormatter(row) {
-      return row.businessType === 5 ? row.sort : '/'
+      return row.businessType === 5 ? row.sort : "/";
     },
     // 资源平台
     platformFormatter(row) {
-      return this.selectDictLabel(this.platformOptions, row.platformId)
+      return this.selectDictLabel(this.platformOptions, row.platformId);
     },
     // 服务时间
     timeFormatter(row) {
-      return this.selectDictLabel(this.serviceTimeOptions, row.indate)
+      return this.selectDictLabel(this.serviceTimeOptions, row.indate);
     },
     // 当前状态
     statusFormatter(row) {
-      return this.selectDictLabel(this.statusOptions, row.status)
+      return this.selectDictLabel(this.statusOptions, row.status);
     },
     // 是否推荐
     recommendFormatter(row) {
-      return this.selectDictLabel(this.recommendOptions, row.isRecommend)
+      return this.selectDictLabel(this.recommendOptions, row.isRecommend);
     },
     // 关联设备
     devFormatter(row) {
-      return row.deviceIds ? row.deviceIds.split(',').map(i => this.selectDictLabel(this.devOptions, i)).join(',') : ''
+      return row.deviceIds
+        ? row.deviceIds
+            .split(",")
+            .map((i) => this.selectDictLabel(this.devOptions, i))
+            .join(",")
+        : "";
     },
     // 栏目
     sceneFormatter(row) {
-      return this.selectDictLabel(this.sceneOptions, row.groupId)
-    }
-  }
-}
+      return this.selectDictLabel(this.sceneOptions, row.groupId);
+    },
+  },
+};
 </script>