tyler 2 жил өмнө
parent
commit
a152768c15

+ 28 - 11
.env.development

@@ -1,19 +1,36 @@
 # just a flag
 ENV='development'
 
+# # api请求地址
+# VUE_APP_BASE_API='http://172.17.133.86:9970'
+# # 文件下载地址
+# VUE_APP_BASE_DO_API='http://local.ng.backend.api.com'
+# # CDN文件地址
+# VUE_APP_CDN_API='http://172.17.133.86:9970'
+# # 页面地址
+# VUE_APP_BASE_WEBSITE='http://local.ng.backend.ele.com'
+# # 会员端地址
+# VUE_APP_FRONTEND_WEBSITE='http://local.ng.frontend.ele.com'
+# # PayStack
+# VUE_APP_BASE_PAY_STACK_PUBLIC_KEY='pk_test_2eed10135c4a958c5073795b22854ded9d1a6c55'
+# # 请求token前缀
+# VUE_APP_ACCESS_TOKEN_PREFIX='Bearer '
+# # 区域js文件地址
+# VUE_APP_SYSTEM_JS='http://ng-upload.elken.com'
+
 # api请求地址
-VUE_APP_BASE_API='http://172.17.133.86:9970'
+VUE_APP_BASE_API='http://16.163.228.151:8042'
 # 文件下载地址
-VUE_APP_BASE_DO_API='http://local.ng.backend.api.com'
+VUE_APP_BASE_DO_API='http://16.163.228.151:8042'
 # CDN文件地址
-VUE_APP_CDN_API='http://172.17.133.86:9970'
-# 页面地址
-VUE_APP_BASE_WEBSITE='http://local.ng.backend.ele.com'
-# 会员端地址
-VUE_APP_FRONTEND_WEBSITE='http://local.ng.frontend.ele.com'
-# PayStack
-VUE_APP_BASE_PAY_STACK_PUBLIC_KEY='pk_test_2eed10135c4a958c5073795b22854ded9d1a6c55'
-# 请求token前缀
-VUE_APP_ACCESS_TOKEN_PREFIX='Bearer '
+VUE_APP_CDN_API='http://16.163.228.151:8042'
 # 区域js文件地址
 VUE_APP_SYSTEM_JS='http://ng-upload.elken.com'
+# 结算页面地址
+VUE_APP_BASE_WEBSITE='http://16.163.228.151:8042'
+# 会员页面地址
+VUE_APP_FRONTEND_WEBSITE='http://16.163.228.151:8045'
+# PayStack支付key
+VUE_APP_BASE_PAY_STACK_PUBLIC_KEY='pk_test_2eed10135c4a958c5073795b22854ded9d1a6c55'
+# 请求token前缀
+VUE_APP_ACCESS_TOKEN_PREFIX='Bearer '

+ 27 - 0
src/api/member.js

@@ -359,3 +359,30 @@ export function updateUserAdd(data) {
     data
   })
 }
+
+/**
+ * 会员最高聘级调整列表
+ * @param data
+ * @returns {*}
+ */
+export function changeHighestEmpLevelList(data) {
+  return request({
+    url: '/v1/user/change-highest-emp-level-list',
+    method: 'get',
+    params: data
+  })
+}
+
+/**
+ * 会员最高聘级调整
+ * @param data
+ * @returns {*}
+ */
+export function updateHighestEmpLevel(data) {
+  return request({
+    url: '/v1/user/change-highest-emp-level',
+    method: 'post',
+    data
+  })
+}
+

+ 12 - 0
src/lang/en.js

@@ -91,6 +91,7 @@ export default {
     moveNetworkManagement:'Move Network Management',
     memberLevelAdjustmentList:'Member Level Adjustment List',
     modifyStockistLevel:'Modify Stockist Level',
+    memberHighestEmpLevelAdjustment:'Member Highest Emp Level Adjustment',
     metaPeriod:'Closure',
     metaBalanceList:'Member bonus balance',
     metaOtherPeriodBonus:'Member bonus',
@@ -469,6 +470,7 @@ export default {
     moveNetworkManagement: 'Move Network Management',
     memberLevelAdjustmentList: 'Member Level Adjustment List',
     modifyStockistLevel: 'Modify Stockist Level',
+    memberHighestEmpLevelAdjustment:'Member Highest Emp Level Adjustment',
     // Second level menu/interface-networkChart
     placementNetwork: 'Placement Network',
     sponsorNetwork: 'Sponsor Network',
@@ -519,13 +521,23 @@ export default {
   member: {
     memberCode: 'Member Code',
     memberName: 'Member Name',
+    userInfoQuery: 'Query',
+    pleaseInputMemberCode: 'Please enter member code',
+    pleaseSelectDirectorLevel: 'Please Select The Director Level',
+    modifyHighestDirectorLevelHits: 'Do you want to modify the current member Director level?',
+    modifyHighestDirectorLevelLevel: 'Modify member Director level',
+    selectDirectorLevelHint: 'Please Select The Director Level',
+    modifyMemberDirectorLevelHits: 'Do you want to modify the current member Director level?',
     currentLevel: 'Current Level',
+    highestLevel: 'highest Level',
+    Level: 'highest Level',
     stockistLevel: 'Stockist Level',
     entryLevel: 'Entry Level',
     pleaseSelectStockistLevel: 'Please Select The Stockist Level',
     remark: 'Remark',
     modifyEntryLevelHits: 'Do you want to modify the current member entry level?',
     modifyMemberLevel: 'Modify member level',
+    changeHighestEmpLevel: 'Change Highest Emp Level',
     selectEntryLevelHint: 'Please Select The Entry Level',
     modifyMemberEntryLevelHits: 'Do you want to modify the current member level?',
     all: 'All',

+ 13 - 2
src/lang/zh.js

@@ -91,6 +91,7 @@ export default {
     moveNetworkManagement:'移网管理',
     memberLevelAdjustmentList:'会员级别调整列表',
     modifyStockistLevel:'修改报单中心级别',
+    memberHighestEmpLevelAdjustment:'会员最高等级调整',
     metaPeriod:'封期管理',
     metaBalanceList:'会员账户余额',
     metaOtherPeriodBonus:'往期奖金',
@@ -470,6 +471,7 @@ export default {
     moveNetworkManagement: '移网管理',
     memberLevelAdjustmentList: '会员级别调整列表',
     modifyStockistLevel: '修改报单中心级别',
+    memberHighestEmpLevelAdjustment:'会员最高等级调整',
     // 二级菜单/接口-networkChart
     placementNetwork: '安置网络',
     sponsorNetwork: '推荐网路',
@@ -520,13 +522,22 @@ export default {
   member: {
     memberCode: '会员编号',
     memberName: '会员姓名',
+    userInfoQuery: '查询',
+    pleaseInputMemberCode: '请输入会员编号',
+    pleaseSelectDirectorLevel: '请选择总监等级',
+    modifyHighestDirectorLevelHits: '是否要修改当前会员最高总监等级?',
+    modifyHighestDirectorLevelLevel: '调整会员最高总监等级',
+    selectDirectorLevelHint: '请选择总监等级',
+    modifyMemberDirectorLevelHits: '是否要修改当前会员总监等级',
     currentLevel: '当前级别',
+    highestLevel: '最高等级',
     stockistLevel: '报单中心级别',
     entryLevel: '报单级别',
     pleaseSelectStockistLevel: '请选择报单中心级别',
     remark: '备注',
     modifyEntryLevelHits: '是否要修改当前会员报单级别?',
     modifyMemberLevel: '修改会员级别',
+    changeHighestEmpLevel: '调整最高等级',
     selectEntryLevelHint: '请选择报单级别',
     modifyMemberEntryLevelHits: '是否要修改当前会员级别',
     all: '全部',
@@ -652,7 +663,7 @@ export default {
     teamBonusConfig: '团队奖配置',
     bonusPercent: '拿奖比例',
     capBonus: '个人封顶值',
-    manageStarConfig: '管理级配置',
+    manageStarConfig: '管理级配置',
     manageBonusPercent: '蓝星奖比例',
     tourBonusPercent: '旅游奖比例',
     carFundBonusPercent: '车奖比例',
@@ -660,7 +671,7 @@ export default {
     achieveMemberNo: '推荐会员达标数',
     achievePerfBV: '推荐达标及格获奖BV',
     achieveBV: '推荐达标不及格获奖BV',
-    crownStarConfig: '皇冠级配置',
+    crownStarConfig: '皇冠级配置',
     levelScore: '级别分数(BV)',
     upgradeScore: '升级分数(BV)',
     score: '分',

+ 5 - 4
src/router/modules/member.js

@@ -37,11 +37,12 @@ const memberRouter = {
       meta: { title: 'memberLevelAdjustmentList', icon: 'el-icon-user-solid' }
     },
     {
-      path: 'change-user-dec-role', // 修改报单中心级别
-      component: () => import('@/views/user/modify-stockist-level'),
-      name: 'modifyStockistLevel',
-      meta: { title: 'modifyStockistLevel', icon: 'el-icon-user-solid' }
+      path: 'change-highest-emp-level-list', // 调整会员最高聘级
+      component: () => import('@/views/user/change-highest-emp-level'),
+      name: 'memberHighestEmpLevelAdjustment',
+      meta: { title: 'memberHighestEmpLevelAdjustment', icon: 'el-icon-user-solid' }
     },
+
   ]
 }
 

+ 14 - 14
src/views/shop/goods-add.vue

@@ -86,9 +86,9 @@
 </template>
 
 <script>
-import baseInfo from '@/utils/baseInfo'
+import { addGoods, getAddGoodsConfig, getUploadToken } from '@/api/shop'
 import Upload from '@/components/Upload'
-import { getAddGoodsConfig, getUploadToken, addGoods } from '@/api/shop'
+import baseInfo from '@/utils/baseInfo'
 
 export default {
   name: 'goods-add',
@@ -262,46 +262,46 @@ export default {
 /* 小于760 */
  @media (max-width:759px) {
     
-    /deep/ .el-input {
+    ::v-deep .el-input {
         width: 100% !important;
     }
-    /deep/ .el-select {
+    ::v-deep .el-select {
         width: 100% !important;
     }
 
-    /deep/ .el-textarea {
+    ::v-deep .el-textarea {
         width: 100% !important;
     }
-    /deep/ .image-uploader {
+    ::v-deep .image-uploader {
         width: 100% !important;
     }
-    /deep/ i.el-icon-plus.uploader-icon {
+    ::v-deep i.el-icon-plus.uploader-icon {
         width:100% !important;
     }
-    /deep/ .form-page {
+    ::v-deep .form-page {
         width:100%;
         padding-left: 1%;
     }
-    /deep/ img { 
+    ::v-deep img { 
         width: 100% !important;
         height: 100% !important;
     }
 } 
 
 @media (min-width:760px) {
-    /deep/ .el-input {
+    ::v-deep .el-input {
         width: 400px !important;
     }
-    /deep/ .el-select {
+    ::v-deep .el-select {
         width: 400px !important;
     }
-    /deep/ .el-textarea {
+    ::v-deep .el-textarea {
         width: 400px !important;
     }
-    /deep/ .upload-container {
+    ::v-deep .upload-container {
         width: 400px !important;
     }
-    /deep/ .form-page {
+    ::v-deep .form-page {
         width:100%;
         padding-left: 10%;
     }

+ 472 - 0
src/views/user/change-highest-emp-level.vue

@@ -0,0 +1,472 @@
+<template>
+  <div v-loading="loading">
+    <div class="white-box">
+      <div class="filter-box">
+        <filter-user
+          ref="filterUser"
+          :filter-types="filterTypes"
+          @select-value="handleFilterUser"
+        ></filter-user>
+      </div>
+
+      <el-table :data="tableData" stripe style="width: 100%">
+        <el-table-column
+          v-for="(tableHeader, key) in tableHeaders"
+          :key="key"
+          :label="tableHeader.header"
+        >
+          <template slot-scope="{ row }">
+            <template v-if="row[tableHeader.index].other.tag">
+              <el-tag
+                :type="
+                  row[tableHeader.index].other.tag.type
+                    ? row[tableHeader.index].other.tag.type
+                    : null
+                "
+                :size="
+                  row[tableHeader.index].other.tag.size
+                    ? row[tableHeader.index].other.tag.size
+                    : null
+                "
+                :class="
+                  row[tableHeader.index].other.tag.class
+                    ? row[tableHeader.index].other.tag.class
+                    : null
+                "
+              >
+                <span
+                  style="
+                    word-break: keep-all;
+                    word-wrap: break-word;
+                    white-space: pre-wrap;
+                  "
+                  >{{ row[tableHeader.index].value }}</span
+                >
+              </el-tag>
+            </template>
+            <template v-else-if="row[tableHeader.index].other.progress">
+              <el-progress
+                type="circle"
+                :percentage="
+                  Number.parseInt(percentList['MOVE_PERCENT'][row.ID])
+                "
+                :width="50"
+                :stroke-width="3"
+              ></el-progress>
+            </template>
+            <template v-else>
+              <div v-html="row[tableHeader.index].value"></div>
+            </template>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <div class="white-box-footer">
+        <el-button
+          type="primary"
+          size="small"
+          @click="dialog = true"
+          icon="el-icon-plus"
+          v-show="permission.hasPermission(`user/change-user-dec-level`)"
+          >{{ $t("member.changeHighestEmpLevel") }}</el-button
+        >
+
+        <pagination
+          v-show="total > 0"
+          :total="total"
+          :page_size="pageSize"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+        />
+      </div>
+    </div>
+
+    <!-- 	-->
+    <el-dialog
+      :title="$t('member.changeHighestEmpLevel')"
+      :visible.sync="dialog"
+      :width="screenWidth"
+      style="margin-top: -80px"
+    >
+      <el-form
+        ref="form"
+        :model="form"
+        label-width="170px"
+        :label-position="labelPosition"
+      >
+        <el-form-item :label="$t('member.memberCode')" required>
+          <el-input
+            :placeholder="$t('member.pleaseInputMemberCode')"
+            @input="userNameInput"
+            v-model.trim="form.userName"
+            class="input-with-select"
+          >
+            <el-button slot="append" icon="el-icon-search" @click="handleQuery"
+              >{{ $t("member.userInfoQuery") }}</el-button
+            >
+          </el-input>
+
+          <el-tag v-show="userInfo.REAL_NAME !== null" style="margin-top: 5px">
+            {{ $t("member.memberName") }}:{{ userInfo.REAL_NAME }}
+          </el-tag>
+          <el-tag
+            v-show="userInfo.REAL_NAME !== null"
+            v-for="(item, key) in empLevels"
+            :label="item.LEVEL_NAME"
+            :value="item.ID"
+            :key="key"
+            v-if="key === userInfo.EMP_LV"
+            style="margin-top: 5px"
+          >
+            {{ $t("member.highestLevel") }}:{{ item.LEVEL_NAME }}
+          </el-tag>
+        </el-form-item>
+        <el-form-item :label="$t('member.modifyHighestDirectorLevelLevel')" required>
+          <el-select
+            style="width: 100%"
+            v-model="form.levelId"
+            :placeholder="$t('member.selectDirectorLevelHint')"
+          >
+            <el-option
+              v-for="(item, key) in empLevels"
+              :label="item.LEVEL_NAME"
+              :value="item.ID"
+              :key="key"
+              :disabled="key === userInfo.EMP_LV"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item :label="$t('member.remark')">
+          <el-input
+            type="textarea"
+            :rows="2"
+            placeholder=""
+            v-model="form.remark"
+          >
+          </el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button
+            type="primary"
+            :loading="submitButtonStat"
+            @click="onSubmit"
+            >{{ $t("common.confirm") }}</el-button
+          >
+        </el-form-item>
+      </el-form>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+changeHighestEmpLevelList,
+fetchMemberFullInfo,
+updateHighestEmpLevel
+} from "@/api/member";
+import FilterUser from "@/components/FilterUser";
+import Pagination from "@/components/Pagination";
+import { getScreenWidth } from "@/utils";
+import baseInfo from "@/utils/baseInfo";
+import filterHelper from "@/utils/filterHelper";
+import permission from "@/utils/permission";
+import tool from "@/utils/tool";
+
+export default {
+  name: "memberHighestEmpLevelAdjustment",
+  components: { FilterUser, Pagination },
+  data() {
+    return {
+      tableHeaders: null,
+      tableData: null,
+      loading: false,
+      tool: tool,
+      permission: permission,
+      //   allDecLevel: baseInfo.decLevels(),
+      empLevels: baseInfo.empLevels(),
+      filterTypes: {},
+      filterModel: {},
+      filterStatus: "0",
+      total: 0,
+      page: 1,
+      pageSize: 20,
+      currentPage: 1,
+
+      screenWidth: getScreenWidth() > 500 ? "500px" : getScreenWidth() + "px",
+      labelPosition: getScreenWidth() >= 500 ? "right" : "top",
+
+      submitButtonStat: false,
+      dialog: false,
+      form: {
+        userName: null,
+        periodNum: null,
+        levelId: null,
+        remark: null,
+      },
+      userInfo: {
+        REAL_NAME: null,
+        DEC_LV: null,
+      },
+    };
+  },
+  mounted() {
+    this.getData();
+  },
+  methods: {
+    //now
+	onSubmit() {
+        let that = this
+
+        if (!that.form.userName.length) {
+			that.$message({
+            message: that.$t("member.pleaseInputMemberCode"),
+            type: 'warning'
+          })
+          return false
+        }
+        if (!that.form.levelId) {
+			that.$message({
+            message: that.$t("member.pleaseSelectDirectorLevel"),
+            type: 'warning'
+          })
+          return false
+        }
+
+        that.$confirm(that.$t("member.modifyHighestDirectorLevelHits"),  that.$t("common.hint"), {
+          confirmButtonText: that.$t("article.confirm"),
+          cancelButtonText: that.$t("article.cancel"),
+          type: 'warning'
+        }).then(() => {
+			that._handleSubmit()
+        }).catch(() => {
+			that._clearData()
+        })
+      },
+	  _handleSubmit() {
+        this.submitButtonStat = true
+		updateHighestEmpLevel(this.form)
+        .then((response) => {
+          this.$message({
+            message: response.data,
+            type: "success",
+          });
+
+          setTimeout(() => {
+            this.submitButtonStat = false;
+          }, 0.5 * 1000);
+
+          this.submitButtonStat = false;
+          this._clearData();
+          this.dialog = false;
+          this.getData();
+        })
+        .catch((error) => {
+          this.$message({
+            message: error,
+            type: "warning",
+          });
+
+          this.submitButtonStat = false;
+        });
+         
+      },
+    getData(page, pageSize) {
+      this.loading = true;
+      const paramsData = Object.assign(
+        {
+          page: page === null || page == undefined ? 1 : page,
+          pageSize:
+            pageSize === null || pageSize == undefined
+              ? this.pageSize
+              : pageSize,
+          filterStatus: this.filterStatus != -1 ? `=,${this.filterStatus}` : "",
+        },
+        this.filterModel
+      );
+      changeHighestEmpLevelList(paramsData)
+        .then((response) => {
+          this.filterTypes = response.data.filterTypes;
+          this.tableData = response.data.list;
+          this.total = +response.data.totalCount;
+          this.currentPage = page;
+          this.pageSize = pageSize;
+          this.filterTypes = response.data.filterTypes;
+          this.tableHeaders = response.data.columnsShow;
+
+          this.loading = false;
+        })
+        .catch((error) => {
+          this.$message({
+            message: error,
+            type: "warning",
+          });
+          this.loading = false;
+        });
+    },
+    handleClose() {
+      this._clearData();
+      this.dialog = false;
+    },
+    handleQuery() {
+      if (!this.form.userName.length) {
+        this.$message({
+          message: this.$t("member.pleaseInputMemberCode"),
+          type: "warning",
+        });
+        return false;
+      }
+      fetchMemberFullInfo({ userName: this.form.userName })
+        .then((response) => {
+          this.userInfo = response.data;
+          this.submitButtonStat = false;
+        })
+        .catch((error) => {
+          this.userInfo.REAL_NAME = null;
+          this.$message({
+            message: error,
+            type: "warning",
+          });
+          this.submitButtonStat = false;
+        });
+    },
+    userNameInput(val) {
+      console.log(val);
+      if (val == "") {
+        this.userInfo.REAL_NAME = null;
+      }
+    },
+    //before
+    handleChange() {
+      this.submitButtonStat = true;
+      fetchMemberFullInfo({ userName: this.form.userName })
+        .then((response) => {
+          this.userInfo = response.data;
+          this.submitButtonStat = false;
+        })
+        .catch((error) => {
+          this.userInfo.REAL_NAME = null;
+          this.$message({
+            message: error,
+            type: "warning",
+          });
+          this.submitButtonStat = false;
+        });
+    },
+    handleFilterUser(filterData) {
+      filterHelper.handleFilterUser(this, filterData);
+    },
+    handleCurrentChange(page) {
+      this.getData(page, this.pageSize);
+    },
+    handleSizeChange(pageSize) {
+      this.getData(this.currentPage, pageSize);
+    },
+    // getData(page, pageSize) {
+    //   this.loading = true;
+    //   const paramsData = Object.assign(
+    //     {
+    //       page: page === null || page == undefined ? 1 : page,
+    //       pageSize:
+    //         pageSize === null || pageSize == undefined
+    //           ? this.pageSize
+    //           : pageSize,
+    //     },
+    //     this.filterModel
+    //   );
+    //   fetchEntryLevelList(paramsData)
+    //     .then((response) => {
+    //       this.filterTypes = response.data.filterTypes;
+    //       this.tableData = response.data.list;
+    //       this.total = +response.data.totalCount;
+    //       this.currentPage = page;
+    //       this.pageSize = pageSize;
+    //       this.filterTypes = response.data.filterTypes;
+    //       this.tableHeaders = response.data.columnsShow;
+
+    //       this.loading = false;
+    //     })
+    //     .catch((error) => {
+    //       this.$message({
+    //         message: error,
+    //         type: "warning",
+    //       });
+    //       this.loading = false;
+    //     });
+    // },
+    // onSubmit() {
+    //   this.$confirm(
+    //     this.$t("member.modifyMemberEntryLevelHits"),
+    //     this.$t("common.hint"),
+    //     {
+    //       confirmButtonText: this.$t("common.confirm"),
+    //       cancelButtonText: this.$t("common.cancel"),
+    //       type: "warning",
+    //     }
+    //   )
+    //     .then(() => {
+    //       this._handleSubmit();
+    //     })
+    //     .catch((error) => {
+    //       this.$message({
+    //         message: error,
+    //         type: "warning",
+    //       });
+    //     });
+    // },
+    // _handleSubmit() {
+    //   this.submitButtonStat = true;
+    //   updateUserEntryLevel(this.form)
+    //     .then((response) => {
+    //       this.$message({
+    //         message: response.data,
+    //         type: "success",
+    //       });
+
+    //       setTimeout(() => {
+    //         this.submitButtonStat = false;
+    //       }, 0.5 * 1000);
+
+    //       this.submitButtonStat = false;
+    //       this._clearData();
+    //       this.dialog = false;
+    //       this.getData();
+    //     })
+    //     .catch((error) => {
+    //       this.$message({
+    //         message: error,
+    //         type: "warning",
+    //       });
+
+    //       this.submitButtonStat = false;
+    //     });
+    // },
+    _clearData() {
+      this.form = {
+        userName: null,
+        periodNum: null,
+        levelId: null,
+        remark: null,
+      };
+      this.userInfo = {
+        REAL_NAME: null,
+        DEC_LV: null,
+      };
+    },
+  },
+};
+</script>
+
+<style>
+.app-main {
+  padding: 15px;
+}
+.app-container {
+  padding: 0;
+}
+.white-box {
+  padding: 15px;
+}
+.form-page {
+  width: 100%;
+}
+</style>

+ 1 - 1
vue.config.js

@@ -39,7 +39,7 @@ module.exports = {
     },
     proxy: {
       [process.env.VUE_APP_BASE_API]:{
-        target:"http://172.17.133.86:9970",
+        target:"http://16.163.228.151:8042",
         changeOrigin:true,
         pathRewrite:{
           ["^" + process.env.VUE_APP_BASE_API] : ""