Quellcode durchsuchen

Merge branch 'cygx_14.3' into debug

bding vor 6 Monaten
Ursprung
Commit
fea30e81a2

+ 24 - 0
src/api/cygx/api.js

@@ -95,3 +95,27 @@ export const inrernalApi = {
     return post("/activity/videoHistory/add", params);
   },
 };
+
+//获取用户详情接口
+export const getUser = (params) => {
+  return get("/user/detail", params);
+};
+
+//获取用户的选择详情接口
+export const getUserChoose = (params) => {
+  return get("/report/choose/detail", params);
+};
+//提交用户的选择详情接口
+export const postChooseSubmit = (params) => {
+  return post("/user/choose/submit", params);
+};
+
+//提交用户的选择详情接口
+export const postChooseSubmitPush = (params) => {
+  return post("/user/choose/submit_push", params);
+};
+
+//提交用户的选择详情接口
+export const postChooseSubmitType = (params) => {
+  return post("/user/choose/submit_follow_type", params);
+};

+ 1 - 1
src/api/cygx/http.js

@@ -16,7 +16,7 @@ const _axios = axios.create(config);
 _axios.interceptors.request.use(
   function (config) {
     // Do something before request is sent
-    let auth = localStorage.getItem("access_token") || "";
+    let auth = localStorage.getItem("access_token") || "20ec44c7fe0e02ff597c324406ce49ca4ef363e60f63d1b49973f971afec185f";
     console.log(auth,'------');
     
     if (auth) {

BIN
src/assets/cygx/img/AcceptBtn.png


BIN
src/assets/cygx/img/AcceptIcon.png


BIN
src/assets/cygx/img/FocusBtn.png


BIN
src/assets/cygx/img/FocusIcon.png


BIN
src/assets/cygx/img/NoPermission.png


BIN
src/assets/cygx/img/WithPermission.png


BIN
src/assets/cygx/img/bg_icon.png


BIN
src/assets/cygx/img/card_bg.png


BIN
src/assets/cygx/img/init_imgurl.png


BIN
src/assets/cygx/img/tag_bg.png


BIN
src/assets/cygx/img/uninterested.png


BIN
src/assets/cygx/img/uninterestedBtn.png


+ 5 - 0
src/router/cygx/index.js

@@ -58,4 +58,9 @@ export const cygxRoutes = [
     name: "FiccReportDtl",
     component: () => import("@/views/cygx/FICCReport/Detail.vue"),
   },
+  {
+    path: "/pushrulesPages",
+    name: "PushRulesPages",
+    component: () => import("@/views/cygx/pushrulesPages.vue"),
+  },
 ];

+ 508 - 0
src/views/cygx/pushrulesPages.vue

@@ -0,0 +1,508 @@
+<script setup>
+import { reactive, toRefs, onMounted, ref, unref, watch } from "vue";
+import { getUserChoose, getUser, postChooseSubmitPush, postChooseSubmitType } from "@/api/cygx/api.js";
+import { Toast, Checkbox, CheckboxGroup } from "vant";
+
+import { useRouter, useRoute } from "vue-router";
+import "vant/es/toast/style";
+
+const router = useRouter();
+const route = useRoute();
+/**
+ * 用户详情
+ */
+const userInfo = ref({});
+const permissionList = ref([]);
+// 获取用户详情
+const getUseDate = async () => {
+  let res = await getUser();
+  if (res.Ret === 200) {
+    userInfo.value = res.Data;
+    console.log(userInfo.value);
+  }
+};
+
+/**
+ * 获取用户的选择
+ */
+const chooseList = ref([]);
+const activeTag = ref(0);
+
+const tabsHandler = (item, index) => {
+  activeTag.value = index;
+};
+
+//获取用户的选择
+const getChooseList = async () => {
+  const res = await getUserChoose();
+  if (res.Ret === 200) {
+    const { Data } = res;
+    IsRefuse.value = Data.IsRefuse;
+    IsSubjective.value = Data.IsSubjective;
+    IsObjective.value = Data.IsObjective;
+    permissionList.value = Data.List;
+  }
+};
+//用户的选择保存
+const chooseSubmit = async () => {};
+
+const CheckListPushAll = ref(false); // 接受推送的全选
+const followAll = ref(false); // 接受推送的全选
+const uninterestedAll = ref(false); // 接受推送的全选
+
+// 点击每个小选项的全选
+const allHandleCheck = async (e, key) => {
+  if (key == "TS") {
+    if (!CheckListPushAll.value) {
+      permissionList.value[activeTag.value].CheckListPush = [];
+    } else {
+      permissionList.value[activeTag.value].CheckListPush = permissionList.value[activeTag.value].ListPush.map((item) => item.IndustrialManagementId);
+    }
+  } else if (key == "GZ") {
+    if (!followAll.value) {
+      permissionList.value[activeTag.value].CheckListFollow = [];
+    } else {
+      permissionList.value[activeTag.value].CheckListFollow = permissionList.value[activeTag.value].ListFollow.map((item) => item.IndustrialManagementId);
+    }
+  } else {
+    if (!uninterestedAll.value) {
+      permissionList.value[activeTag.value].CheckListUninterested = [];
+    } else {
+      permissionList.value[activeTag.value].CheckListUninterested = permissionList.value[activeTag.value].ListUninterested.map((item) => item.IndustrialManagementId);
+    }
+  }
+};
+
+const allCheck = ref(false);
+
+const allInHandleCheck = (e) => {
+  CheckListPushAll.value = followAll.value = uninterestedAll.value = e;
+};
+// 推送更新内容
+const IsRefuse = ref(0);
+const IsSubjective = ref(0);
+const IsObjective = ref(0);
+
+// 推送规则的请求
+const pushHandle = async () => {
+  const res = await postChooseSubmitPush({
+    IsRefuse: IsRefuse.value,
+    IsSubjective: IsSubjective.value ? 1 : 0,
+    IsObjective: IsObjective.value ? 1 : 0,
+  });
+  if (res.Ret === 200) {
+    Toast("操作成功");
+    getChooseList();
+  }
+};
+
+// 底部的确认按钮
+import FocusBtn from "../../assets/cygx/img/FocusBtn.png";
+import AcceptBtn from "../../assets/cygx/img/AcceptBtn.png";
+import uninterestedBtn from "../../assets/cygx/img/uninterestedBtn.png";
+const confirmList = [
+  {
+    name: "重点关注",
+    key: 1,
+    imgUrl: FocusBtn,
+  },
+  {
+    name: "接受推送",
+    key: 0,
+    imgUrl: AcceptBtn,
+  },
+  {
+    name: "不感兴趣",
+    key: 3,
+    imgUrl: uninterestedBtn,
+  },
+];
+
+// 底部确认按钮
+const btnConfirm = async (item) => {
+  let List = [];
+  permissionList.value.forEach((_, index) => {
+    if (activeTag.value === index) {
+      List.push({
+        ChartPermissionName: _.PermissionName,
+        CheckList: [..._.CheckListFollow, ..._.CheckListPush, ..._.CheckListUninterested],
+      });
+    }
+  });
+  console.log(List);
+  return;
+
+  const res = await postChooseSubmitType({
+    FollowType: item.key,
+    List,
+  });
+  if (res.Ret == 200) {
+    Toast("操作成功");
+    getChooseList();
+  }
+};
+
+onMounted(() => {
+  document.title = "推送规则";
+  let access_token = route.query.token || "";
+  localStorage.setItem("access_token", access_token);
+  getChooseList();
+  getUseDate();
+});
+</script>
+
+<template>
+  <div class="container-tag">
+    <div class="top-content">
+      <div class="personal-details">
+        <div class="head-portrait">
+          <img :src="userInfo.Headimgurl" v-if="userInfo.Headimgurl" />
+          <img src="@/assets/cygx/img/init_imgurl.png" v-else />
+        </div>
+        <div class="details-item">
+          <template v-if="userInfo.HasPermission == 0 || userInfo.HasPermission == 2 || userInfo.HasPermission == 3">
+            <p class="name">{{ userInfo.RealName }}</p>
+            <p class="phone">{{ userInfo.Mobile }}</p>
+            <p class="company">{{ userInfo.CompanyName }}</p>
+          </template>
+          <p class="no-info" v-else>暂无您的客户信息</p>
+        </div>
+      </div>
+      <div class="authority">
+        <template v-if="userInfo.HasPermission == 0">
+          <div :class="['item', activeTag == index && 'act-item']" v-for="(item, index) in permissionList" :key="item.ChartPermissionId" @click="tabsHandler(item, index)">
+            {{ item.PermissionName }}
+            <img v-if="item.HasCheck" src="@/assets/cygx/img/WithPermission.png" alt="" />
+            <img v-else src="@/assets/cygx/img/NoPermission.png" alt="" />
+          </div>
+        </template>
+        <template v-else-if="userInfo.HasPermission == 2 || userInfo.HasPermission == 3">
+          <div class="item">暂无权限</div>
+        </template>
+      </div>
+    </div>
+    <template v-if="userInfo.HasPermission == 0">
+      <div class="push-updates-content">
+        <div class="switch-content">
+          <div>
+            <span>推送更新内容</span>
+            <span>(重点关注+接受推送) </span>
+          </div>
+          <van-switch v-model="IsRefuse" :active-value="1" :inactive-value="0" @change="pushHandle" />
+        </div>
+        <div class="distinguish" v-show="IsRefuse">
+          <div class="distinguish-content">
+            <Checkbox key="one" @toggle="pushHandle" :name="1" v-model="IsObjective" icon-size="14" shape="square" checked-color="#E2C586">请向我推送【客观类】内容</Checkbox>
+            <p class="check-explain">(线上/线下调研及调研纪要、产业跟踪、季度跟踪)</p>
+          </div>
+          <div class="distinguish-content">
+            <Checkbox v-model="IsSubjective" @toggle="pushHandle" :name="1" icon-size="14" shape="square" checked-color="#E2C586">请向我推送【主观类】内容</Checkbox>
+            <p class="check-explain">(行业深度报告、路演精华、财报点评、分析师沙龙、产业深度路演)</p>
+          </div>
+        </div>
+      </div>
+
+      <div class="select-content" v-if="permissionList && permissionList.length > 0">
+        <!-- 重点关注 -->
+        <div class="checkbox-content">
+          <div class="title-content-all">
+            <div class="title-img">
+              <img src="@/assets/cygx/img/FocusIcon.png" alt="" />
+              重点关注
+            </div>
+            <Checkbox v-model="followAll" @change="allHandleCheck($event, 'GZ')" icon-size="14" shape="square" checked-color="#E2C586">全选</Checkbox>
+          </div>
+
+          <div class="checkbox-item">
+            <CheckboxGroup v-model="permissionList[activeTag].CheckListFollow">
+              <Checkbox
+                icon-size="14"
+                shape="square"
+                checked-color="#E2C586"
+                :name="item.IndustrialManagementId"
+                v-for="item in permissionList[activeTag].ListFollow"
+                :key="item.IndustrialManagementId"
+                >{{ item.IndustryName }}</Checkbox
+              >
+            </CheckboxGroup>
+          </div>
+        </div>
+        <!-- 接受推送 -->
+        <div class="checkbox-content">
+          <div class="title-content-all">
+            <div class="title-img">
+              <img src="@/assets/cygx/img/AcceptIcon.png" alt="" />
+              接受推送
+            </div>
+            <Checkbox v-model="CheckListPushAll" @change="allHandleCheck($event, 'TS')" icon-size="14" shape="square" checked-color="#E2C586">全选</Checkbox>
+          </div>
+
+          <div class="checkbox-item">
+            <CheckboxGroup v-model="permissionList[activeTag].CheckListPush" ref="acceptGroup">
+              <Checkbox
+                icon-size="14"
+                shape="square"
+                checked-color="#E2C586"
+                :name="item.IndustrialManagementId"
+                v-for="item in permissionList[activeTag].ListPush"
+                :key="item.IndustrialManagementId"
+                >{{ item.IndustryName }}</Checkbox
+              >
+            </CheckboxGroup>
+          </div>
+        </div>
+        <!-- 不感兴趣 -->
+        <div class="checkbox-content">
+          <div class="title-content-all">
+            <div class="title-img">
+              <img src="@/assets/cygx/img/uninterested.png" alt="" />
+              不感兴趣
+            </div>
+            <Checkbox v-model="uninterestedAll" @change="allHandleCheck($event, 'XQ')" icon-size="14" shape="square" checked-color="#E2C586">全选</Checkbox>
+          </div>
+
+          <div class="checkbox-item">
+            <CheckboxGroup v-model="permissionList[activeTag].CheckListUninterested">
+              <Checkbox
+                icon-size="14"
+                shape="square"
+                checked-color="#E2C586"
+                :name="item.IndustrialManagementId"
+                v-for="item in permissionList[activeTag].ListUninterested"
+                :key="item.IndustrialManagementId"
+                >{{ item.IndustryName }}</Checkbox
+              >
+            </CheckboxGroup>
+          </div>
+        </div>
+      </div>
+
+      <div class="confirm-box">
+        <div>
+          <Checkbox v-model="allCheck" @change="allInHandleCheck" icon-size="14" shape="square" checked-color="#E2C586">全选</Checkbox>
+        </div>
+        <div class="btn-content">
+          <div class="btn-item" @click="btnConfirm(item)" v-for="item in confirmList" :key="item.key">
+            <img :src="item.imgUrl" alt="" />
+            <p>{{ item.name }}</p>
+          </div>
+        </div>
+      </div>
+    </template>
+  </div>
+</template>
+
+<style lang="scss" scoped>
+.container-tag {
+  min-height: 100vh;
+  padding: 30px 25px 150px;
+  background: url("@/assets/cygx/img/bg_icon.png") no-repeat;
+  background-size: 100% 100%;
+  .top-content {
+    width: 100%;
+    height: 438px;
+    background: url("@/assets/cygx/img/tag_bg.png") no-repeat;
+    background-size: 100% 100%;
+    padding: 68px 25px;
+    box-sizing: border-box;
+  }
+  .personal-details {
+    display: flex;
+    .head-portrait {
+      width: 126px;
+      height: 126px;
+      border-radius: 50%;
+      overflow: hidden;
+      img {
+        width: 100%;
+        height: 100%;
+      }
+    }
+    .details-item {
+      margin-left: 30px;
+      font-size: 28px;
+      color: #fff;
+      .name {
+        font-size: 34px;
+        font-weight: 500;
+        color: #fff;
+      }
+      .phone {
+        padding: 10px 0 5px;
+      }
+    }
+  }
+  .authority {
+    width: 105%;
+    overflow: hidden;
+    padding-top: 10px;
+    display: flex;
+    flex-wrap: wrap;
+    .item {
+      padding: 0 30px;
+      height: 50px;
+      font-size: 24px;
+      border-radius: 4px;
+      background-color: #403f3e;
+      margin: 20px 20px 0 0;
+      border: 1px solid #e5cfb1;
+      font-weight: 400;
+      color: #e5cfb1;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      img {
+        display: block;
+        margin-left: 10px;
+        width: 24px;
+        height: 24px;
+      }
+    }
+    .act-item {
+      background-color: #e2c586;
+      color: #6c4d08;
+    }
+  }
+
+  .select-content {
+    .checkbox-content {
+      padding: 20px;
+      background-color: #2b2a2a;
+      border-radius: 16px;
+      margin-top: 10px;
+      overflow: hidden;
+      .title-content-all {
+        margin: 30px 0;
+        color: #e2c586;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        .title-img {
+          display: flex;
+          align-items: center;
+          img {
+            width: 40px;
+            height: 40px;
+            margin-right: 8px;
+          }
+        }
+      }
+    }
+  }
+  .distinguish {
+    .distinguish-content {
+      border: 1px solid #e5cfb133;
+      color: #e5efff;
+      padding: 10px 20px;
+      border-radius: 8px;
+      margin-top: 20px;
+    }
+    .check-explain {
+      font-size: 24px;
+      color: #e5cfb1;
+      text-indent: 1em;
+    }
+  }
+  .confirm-box {
+    position: fixed;
+    bottom: 0px;
+    left: 0;
+    width: 100%;
+    height: 112px;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding-left: 30px;
+    padding-right: 30px;
+    padding-bottom: calc(0px + constant(safe-area-inset-bottom));
+    padding-bottom: calc(0px + env(safe-area-inset-bottom));
+    background: linear-gradient(90deg, #242524 0%, #403e3d 100%);
+    z-index: 9;
+    .btn-content {
+      display: flex;
+      .btn-item {
+        text-align: center;
+        margin-left: 62px;
+        font-size: 24px;
+        color: #e2c58666;
+        img {
+          display: inline-block;
+          margin-bottom: 5px;
+          width: 40px;
+          height: 40px;
+        }
+      }
+    }
+  }
+  .checkbox-item {
+    :deep(.CheckboxGroup) {
+      display: flex;
+      flex-wrap: wrap;
+    }
+    :deep(.van-checkbox) {
+      width: 50%;
+    }
+  }
+
+  .bottom-btn {
+    position: relative; // 相对定位
+    z-index: 0;
+    width: 368px;
+    height: 80px;
+    background: #3385ff;
+    line-height: 80px;
+    text-align: center;
+    margin: 0 auto;
+    font-size: 34px;
+    color: #fff;
+  }
+  .push-updates-content {
+    .van-switch--on {
+      background-color: #e2c586;
+    }
+    margin: 20px 0;
+    padding: 20px;
+    border-radius: 8px;
+    background: linear-gradient(90deg, #242424 0%, #403f3e 100%);
+  }
+  .switch-content {
+    color: #e2c586;
+    span:nth-child(1) {
+      font-weight: 600;
+      font-size: 28px;
+      padding-right: 12px;
+    }
+    span {
+      color: #e2c586;
+      font-size: 24px;
+    }
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+  }
+  .wx-app {
+    position: absolute; // 绝对定位
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    z-index: 100;
+    opacity: 0;
+    .btn {
+      width: 100%;
+      height: 100%;
+    }
+  }
+}
+</style>
+
+<style scoped>
+::v-deep .van-checkbox__label {
+  color: #e2c586 !important; /* 修改复选框标签的颜色 */
+  font-size: 24px !important;
+  font-weight: 600;
+}
+::v-deep .van-checkbox__icon .van-icon {
+  border: 1px solid #e2c586;
+}
+</style>