浏览代码

修改内容

lex-xin 10 月之前
父节点
当前提交
bb8427b386

+ 111 - 124
src/views/categroyManager/productSystem/memberSet.vue

@@ -2,7 +2,7 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>
-      会员设置
+      学练宝设置
     </h2>
     <div class="m-core">
       <save-form
@@ -18,12 +18,30 @@
           <el-input
             v-model.trim="searchForm.search"
             clearable
-            placeholder="会员名称"
+            placeholder="学练宝名称"
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="createTimer">
+          <el-date-picker
+            v-model.trim="searchForm.createTimer"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            start-placeholder="更新开始时间"
+            end-placeholder="更新结束时间"
+            :picker-options="{ firstDayOfWeek: 1 }"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-input
+            v-model.trim="searchForm.updateName"
+            clearable
+            placeholder="更新人"
           ></el-input>
         </el-form-item>
         <el-form-item>
           <el-button native-type="submit" type="danger">搜索</el-button>
-          <!-- <el-button native-type="reset" type="primary">重置</el-button> -->
+          <el-button native-type="reset" type="primary">重置</el-button>
         </el-form-item>
       </save-form>
       <el-button
@@ -31,56 +49,48 @@
         style="margin-bottom: 20px"
         v-permission="'memberRankSetting/add'"
         @click="addLeave"
-        >新增会员等级</el-button
+        >新增</el-button
       >
       <el-table
         :data="tableList"
         :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+        row-key="id"
+        :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
       >
         <el-table-column
           align="center"
           prop="name"
-          label="会员名称"
+          label="学练宝名称"
         ></el-table-column>
-        <el-table-column align="center" prop="type" label="会员标识">
-          <template slot-scope="scope">
-            <el-image
-              style="width: 100px; height: 100px"
-              :src="scope.row.icon"
-              :preview-src-list="[scope.row.icon]"
-            >
-            </el-image>
-          </template>
-        </el-table-column>
-              <el-table-column align="center" prop="type" label="试用会员标识">
-          <template slot-scope="scope">
-            <el-image
-              style="width: 100px; height: 100px"
-              :src="scope.row.experienceIcon"
-              :preview-src-list="[scope.row.experienceIcon]"
-            >
-            </el-image>
-          </template>
-        </el-table-column>
-        <!-- <el-table-column
+
+        <el-table-column
+          align="center"
+          prop="name"
+          label="学练宝介绍"
+        ></el-table-column>
+        <el-table-column
           align="center"
-          prop="type"
-          label="是否新用户试用"
-        ></el-table-column> -->
+          prop="name"
+          label="曲目数量"
+        ></el-table-column>
         <el-table-column
           align="center"
           prop="updateTime"
-          width="100px"
-          label="修改时间"
+          label="更新时间"
         ></el-table-column>
         <el-table-column
           align="center"
           prop="operatorName"
-          label="修改人"
+          label="更新人"
         ></el-table-column>
         <el-table-column align="center" label="操作">
           <template slot-scope="scope">
             <div>
+              <auth auths="memberRankSetting/get">
+                <el-button type="text" @click="resetMember(scope.row)"
+                  >添加了项</el-button
+                >
+              </auth>
               <!-- memberRankSetting/add -->
               <auth auths="memberRankSetting/get">
                 <el-button type="text" @click="resetMember(scope.row)"
@@ -120,18 +130,28 @@
     >
       <el-form :model="form" :inline="true" ref="ruleForm">
         <el-alert
-          title="会员信息"
+          title="学练宝信息"
           type="info"
           :closable="false"
           style="margin-bottom: 20px"
         >
         </el-alert>
-
         <el-form-item
-          label="会员名称"
+          label="父级"
+          prop="name"
+          :label-width="formLabelWidth"
+        >
+          <el-input
+            :disabled="true"
+            v-model.trim="form.name"
+            style="width: 620px"
+          ></el-input>
+        </el-form-item>
+        <el-form-item
+          label="学练宝名称"
           prop="name"
           :label-width="formLabelWidth"
-          :rules="[{ required: true, message: '请输入会员名称' }]"
+          :rules="[{ required: true, message: '请输入学练宝名称' }]"
         >
           <el-input
             :disabled="addDisabled"
@@ -143,10 +163,10 @@
           ></el-input>
         </el-form-item>
         <el-form-item
-          label="会员介绍"
+          label="学练宝介绍"
           prop="intro"
           :label-width="formLabelWidth"
-          :rules="[{ required: true, message: '请输入会员介绍' }]"
+          :rules="[{ required: true, message: '请输入学练宝介绍' }]"
         >
           <el-input
             maxlength="200"
@@ -159,74 +179,8 @@
             style="width: 620px"
           ></el-input>
         </el-form-item>
-        <el-form-item
-          label="会员标识"
-          prop="icon"
-          :label-width="formLabelWidth"
-          :rules="[{ required: true, message: '请上传会员标识' }]"
-        >
-          <!-- <upload
-            v-if="!addDisabled"
-            v-model="form.icon"
-            :imageWidthM="200"
-            :disabled="addDisabled"
-            :imageHeightM="200"
-          ></upload>
-          <img v-else :src="form.icon" alt="" width="120px" height="120px" /> -->
-          <image-cropper :options="cropperOptions" :disabled="addDisabled" :imgSize="2" :imageUrl="form.icon" @crop-upload-success="cropSuccess2" />
-          <!-- <p style="color: red" v-if="!addDisabled">
-            请上传200*200像素,大小2M以内,格式为jpg、png、gif图片
-          </p> -->
-        </el-form-item>
-        <br>
-        <el-form-item
-          label="试用会员标识"
-          prop="experienceIcon"
-          :label-width="formLabelWidth"
-          :rules="[{ required: true, message: '请上传试用会员标识' }]"
-        >
-          <!-- <upload
-            v-if="!addDisabled"
-            v-model="form.experienceIcon"
-            :imageWidthM="200"
-            :disabled="addDisabled"
-            :imageHeightM="200"
-          ></upload> -->
-          <image-cropper :options="cropperOptions" :disabled="addDisabled" :imgSize="2" :imageUrl="form.experienceIcon"  @crop-upload-success="cropSuccess" />
-          <!-- <img v-else :src="form.experienceIcon" alt="" width="120px" height="120px" /> -->
-          <p style="color: red" v-if="!addDisabled">
-            请上传大小2M以内,格式为jpg、png、gif图片
-          </p>
-        </el-form-item>
-        <!-- <br />
-        <el-form-item
-          label="是否新用户试用"
-          prop="name"
-          :label-width="formLabelWidth"
-        >
-          <el-select
-            v-model.trim="form.isProbationPeriod"
-            clearable
-            filterable
-            placeholder="请选择是否试用"
-          >
-            <el-option label="是" :value="true"></el-option>
-            <el-option label="否" :value="false"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item
-          label="试用期限"
-          prop="name"
-          :label-width="formLabelWidth"
-        >
-          <el-input
-            style="width: 200px"
-            v-model.trim="form.name"
-            autocomplete="off"
-          >
-            <template slot="append">天</template>
-          </el-input>
-        </el-form-item> -->
+      
+        
         <el-alert
           title="会员权益"
           type="info"
@@ -245,7 +199,7 @@
           <el-button type="primary" @click="onReSetRole">重置</el-button>
         </el-form-item>
         <br />
-        <el-form-item label="会员功能" :label-width="formLabelWidth">
+        <el-form-item label="学练宝内容" :label-width="formLabelWidth">
           <el-checkbox
             :disabled="addDisabled"
             :indeterminate="isIndeterminate"
@@ -272,6 +226,34 @@
             </el-tree>
           </div>
         </el-form-item>
+
+
+        <el-form-item label="学练宝功能" :label-width="formLabelWidth">
+          <el-checkbox
+            :disabled="addDisabled"
+            :indeterminate="isIndeterminate"
+            @change="onCheckAll"
+            v-model.trim="checkAll"
+            >全选</el-checkbox
+          >
+          <div>
+            <el-tree
+              class="tree"
+              :data="treeData"
+              show-checkbox
+              node-key="id"
+              @check="onTreeCheck"
+              :filter-node-method="filterNode"
+              highlight-current
+              :default-checked-keys="checkList"
+              :props="defaultProps"
+            >
+              <div slot-scope="{ node, data }">
+                {{ node.label }}
+              </div>
+            </el-tree>
+          </div>
+        </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
         <el-button v-if="!addDisabled" @click="branchStatus = false"
@@ -293,6 +275,7 @@ import {
   getmemberRankDetail,
   resetMemberRank,
 } from "./api";
+import { getTimes } from "@/utils";
 import { getMemberPrivilegesItem } from "@/views/dictionaryManager/api";
 export default {
   components: { pagination, Upload, ImageCropper },
@@ -302,6 +285,8 @@ export default {
       formLabelWidth: "120px",
       searchForm: {
         search: null,
+        updateName: null,
+        createTimer: [],
       },
       rules: {
         // 分页规则
@@ -315,9 +300,9 @@ export default {
       branchStatus: false,
       form: {
         name: "",
-        icon: "",
-        into: "",
-        experienceIcon:'',
+        // icon: "",
+        // into: "",
+        // experienceIcon:'',
       },
       addDisabled: false,
       checkAll: false,
@@ -354,12 +339,12 @@ export default {
   },
   methods: {
     onFormClose(ruleForm) {
-      (this.form = {
+      this.form = {
         name: "",
         icon: "",
         into: "",
-      }),
-        this.$refs.trees.setCheckedNodes([]);
+      }
+      this.$refs.trees.setCheckedNodes([]);
       this.onTreeCheck();
       this.$refs[ruleForm].resetFields();
     },
@@ -367,17 +352,20 @@ export default {
       this.rules.page = 1;
       this.getList();
     },
-    onReSet() {},
-    cropSuccess(data) {
-      this.form.experienceIcon = data.data.url;
-    },
-    cropSuccess2(data) {
-      this.form.icon = data.data.url;
+    onReSet() {
+      this.searchForm = {
+        search: null,
+        updateName: null,
+        createTimer: [],
+      }
+      this.search()
     },
     async getList() {
       try {
+        let { createTimer, ...reset } = this.searchForm;
         const res = await getmemberRankList({
-          search: this.searchForm.search,
+          ...reset,
+          ...getTimes(createTimer, ["startDate", "endDate"], "YYYY-MM-DD"),
           rows: this.rules.limit,
           page: this.rules.page,
         });
@@ -387,7 +375,7 @@ export default {
     },
     async addLeave() {
       this.checkList = [];
-      this.title = "新增会员等级";
+      this.title = "新增";
       this.addDisabled = false;
       this.pageType = "create";
       await this.getNewTree();
@@ -454,7 +442,6 @@ export default {
     },
     onReSetRole() {
       this.seachRoleValue = "";
-      // this.data = this.setTableData(this.silderList);
       this.$refs.trees.filter(this.seachRoleValue);
       // console.log(this.data);
     },
@@ -484,7 +471,7 @@ export default {
       this.branchStatus = true;
       await this.resetTree(row);
       if (type) {
-        this.title = "修改会员等级";
+        this.title = "修改";
         this.pageType = "update";
         this.addDisabled = false;
         this.slideCount = 0;
@@ -494,7 +481,7 @@ export default {
         );
       } else {
         this.addDisabled = true;
-        this.title = "查看会员等级";
+        this.title = "查看";
         this.pageType = "";
         this.slideCount = 0;
         this.treeData = await this.setTableData(

+ 1 - 1
src/views/organManager/components/memberSetting.vue

@@ -2,7 +2,7 @@
 <template>
   <div>
     <el-alert
-      title="会员设置"
+      title="机构学练宝设置"
       type="info"
       :closable="false"
       style="margin-bottom: 20px"

+ 279 - 0
src/views/organManager/components/memberSettingMore.vue

@@ -0,0 +1,279 @@
+<!--  -->
+<template>
+  <div>
+    <el-alert
+      title="机构学练宝设置"
+      type="info"
+      :closable="false"
+      style="margin-bottom: 20px"
+    ></el-alert>
+    <el-form
+      ref="form"
+      label-position="right"
+      :model="form"
+      :inline="true"
+    >
+      <row>
+        <col :span="6">
+          <el-form-item label="机构可用版本" prop="teachingMaterialId" label-width="130px">
+            <el-cascader
+              v-model.trim="form.teachingMaterialId"
+              :disabled="isDisabled"
+              v-show="!isDisabled"
+              style="width: 300px !important"
+              :options="teachList"
+              :props="{ multiple: true }"
+              :show-all-levels="false"
+              collapse-tags
+              ref="cascader"
+              @change="onChange"
+              clearable
+            ></el-cascader>
+
+            <el-tag
+              :key="tag.id"
+              v-show="isDisabled"
+              v-for="tag in dynamicTags"
+              :disable-transitions="false"
+              @close="handleClose(tag)"
+            >
+              {{ tag.name }}
+            </el-tag>
+          </el-form-item>
+        </col>
+        <col :span="6">
+          <div>
+            <el-form-item label="激活周期" prop="serveId" label-width="110px"
+            :rules="[{ required: true, message: '请选择激活周期', trigger: 'change' }]">
+            <el-select
+              v-model="form.serveId"
+              :disabled="isDisabled"
+              placeholder="请选择激活周期"
+            >
+              <!-- <el-option v-for="item in productList" :key="item.id"
+                :label="item.serveName" :value="item.id"></el-option> -->
+            </el-select>
+          </el-form-item>
+          <el-form-item
+            label="激活金额" label-width="110px"
+            prop="year_divide"
+            :rules="[
+              { required: true, message: '请输入激活金额', trigger: 'blur' }
+            ]"
+          >
+            <el-input
+              :disabled="isDisabled"
+              placeholder="请输入激活金额"
+              @keyup.native="keyupEvent($event)"
+              v-model="form.year_divide"
+              style="width: 238px;"
+            >
+              <div slot="append">元</div>
+            </el-input>
+          </el-form-item>
+
+          <el-button icon="el-icon-plus" circle></el-button>
+          <el-button icon="el-icon-delete" circle></el-button>
+          </div>
+          <div>
+            <el-form-item label="激活周期" prop="serveId" label-width="110px"
+            :rules="[{ required: true, message: '请选择激活周期', trigger: 'change' }]">
+            <el-select
+              v-model="form.serveId"
+              :disabled="isDisabled"
+              placeholder="请选择激活周期"
+            >
+              <!-- <el-option v-for="item in productList" :key="item.id"
+                :label="item.serveName" :value="item.id"></el-option> -->
+            </el-select>
+          </el-form-item>
+          <el-form-item
+            label="激活金额" label-width="110px"
+            prop="year_divide"
+            :rules="[
+              { required: true, message: '请输入激活金额', trigger: 'blur' }
+            ]"
+          >
+            <el-input
+              :disabled="isDisabled"
+              placeholder="请输入激活金额"
+              @keyup.native="keyupEvent($event)"
+              v-model="form.year_divide"
+              style="width: 238px;"
+            >
+              <div slot="append">元</div>
+            </el-input>
+          </el-form-item>
+
+          <el-button icon="el-icon-plus" circle></el-button>
+          <el-button icon="el-icon-delete" circle></el-button>
+          </div>
+        </col>
+      </row>
+      <!--       
+      <el-form-item label="可用教材" prop="teachingMaterialId">
+        <el-cascader
+          v-model.trim="form.teachingMaterialId"
+          :disabled="isDisabled"
+          v-show="!isDisabled"
+          style="width: 300px !important"
+          :options="teachList"
+          :props="{ multiple: true }"
+          :show-all-levels="false"
+          collapse-tags
+          ref="cascader"
+          @change="onChange"
+          clearable
+        ></el-cascader>
+
+        <el-tag
+          :key="tag.id"
+          v-show="isDisabled"
+          v-for="tag in dynamicTags"
+          :disable-transitions="false"
+          @close="handleClose(tag)"
+        >
+          {{ tag.name }}
+        </el-tag>
+      </el-form-item> -->
+    </el-form>
+  </div>
+</template>
+
+<script>
+import { queryTree } from "../../accompaniment/api";
+import _ from "lodash";
+export default {
+  props: ["type", "data"],
+  data() {
+    return {
+      form: {
+        day_divide: null,
+        month_divide: null,
+        quarter_divide: null,
+        half_year_divide: null,
+        year_divide: null,
+        teachingMaterialId: [] // 可用教材
+      },
+      teachList: [], // 教材列表
+      dynamicTags: []
+    };
+  },
+  async mounted() {
+    await this.__init();
+    if (this.data) {
+      const { config, teachingMaterialId } = this.data;
+      const tmpConfig = config ? JSON.parse(config) : {};
+      let tempIdArr = [];
+      if (teachingMaterialId) {
+        const tempIds = teachingMaterialId.split(",").map(i => Number(i));
+        tempIds.forEach(id => {
+          tempIdArr.push(this.formatParentId(id, this.teachList));
+        });
+      }
+      this.form = {
+        ...tmpConfig.member_config,
+        teachingMaterialId: tempIdArr
+      };
+      this.$nextTick(() => {
+        this.onChange();
+      });
+    }
+  },
+  computed: {
+    isDisabled() {
+      return this.type == "setting" ? true : false;
+    }
+  },
+  methods: {
+    async __init() {
+      try {
+        // 不管是添加、查看、修改都传-1
+        const tenantId = -1;
+        const res = await queryTree({ enable: 1, tenantId, queryType: 'ALL' });
+        const rows = res.data || [];
+        rows.forEach(item => {
+          let children = [];
+          item.label = item.name;
+          item.value = item.id;
+          let childList = item.sysMusicScoreCategoriesList
+            ? item.sysMusicScoreCategoriesList
+            : [];
+          if (childList.length > 0) {
+            childList.forEach(child => {
+              child.label = child.name;
+              child.value = child.id;
+              child.sysMusicScoreCategoriesList = [];
+              children.push(child);
+            });
+          }
+          item.children = children.length > 0 ? children : null;
+          this.teachList.push(item);
+        });
+      } catch (e) {
+        console.log(e);
+      }
+    },
+    onChange() {
+      let childNodes = this.$refs.cascader.getCheckedNodes(true);
+      this.dynamicTags = [];
+      childNodes.forEach(node => {
+        this.dynamicTags.push({
+          name: node.label,
+          id: node.value
+        });
+      });
+    },
+    formatParentId(id, list, ids = []) {
+      for (const item of list) {
+        if (item.sysMusicScoreCategoriesList) {
+          const cIds = this.formatParentId(
+            id,
+            item.sysMusicScoreCategoriesList,
+            [...ids, item.id]
+          );
+          if (cIds.includes(id)) {
+            return cIds;
+          }
+        }
+        if (item.id === id) {
+          return [...ids, id];
+        }
+      }
+      return ids;
+    },
+    handleClose(tag) {},
+    onSubmit() {
+      let status = false;
+      this.$refs.form.validate(_ => {
+        status = _;
+      });
+      return status;
+    },
+    getValues() {
+      const { teachingMaterialId, ...res } = this.form;
+      let tempArr = [];
+      teachingMaterialId.forEach(ids => {
+        tempArr.push(_.last(ids));
+      });
+      return {
+        member_config: { ...res },
+        teachingMaterialId: tempArr
+      };
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.el-tag + .el-tag {
+  margin-left: 10px;
+}
+.el-input,
+.el-select,
+.el-cascader__dropdown {
+  width: 300px !important;
+}
+.el-cascader-menu {
+  width: 100%;
+}
+</style>

+ 1 - 1
src/views/organManager/organOperation.vue

@@ -36,7 +36,7 @@
 <script>
 import organInfo from './components/organInfo'
 import openService from './components/openService'
-import memberSetting from './components/memberSetting'
+import memberSetting from './components/memberSettingMore'
 import roomRules from './components/roomRules'
 import rateSetting from './components/rateSetting'
 import { tenantInfoAdd, tenantInfoInfo, tenantInfoUpdate } from './api'