Przeglądaj źródła

Merge branch 'master' into bzkf30

bzkf30 2 lat temu
rodzic
commit
dde2b1dac0

+ 29 - 4
src/pages/personal/components/MasterTeacher/index.vue

@@ -33,8 +33,13 @@
           <el-form-item label="任教年级" prop="um_grade">
             <remote-select to="grade" v-model="formline.um_grade"></remote-select>
           </el-form-item>
-          <el-form-item label="学校" prop="um_school_name">
+          <!-- <el-form-item label="学校" prop="um_school_name">
             <el-input v-model="formline.um_school_name" />
+          </el-form-item> -->
+          <el-form-item label="学校" prop="um_school_name">
+            <el-select v-model="formline.um_school_name" placeholder=" " size="large">
+              <el-option v-for="item in schoolData" :key="item.sm_name" :label="item.sm_name" :value="item.sm_name" />
+            </el-select>
           </el-form-item>
           <el-form-item label="之江汇账号" prop="um_zjer_account">
             <el-input v-model="formline.um_zjer_account" />
@@ -63,6 +68,7 @@ export default {
   data() {
     return {
       wholeData: [],
+      schoolData: [],
       formline: {
         um_name: "",
         um_avatar: "",
@@ -96,9 +102,10 @@ export default {
             trigger: "submit",
           },
         ],
-        um_school_name: [
-          { required: true, message: "请输入学校名称", trigger: "blur" },
-        ],
+        // um_school_name: [
+        //   { required: true, message: "请输入学校名称", trigger: "blur" },
+        // ],
+        um_school_name: [{ required: true, message: "请选择学校", trigger: "change" }],
         um_zjer_account: [
           { required: true, message: "请输入之江汇账号", trigger: "blur" },
         ],
@@ -107,6 +114,7 @@ export default {
       mainFileData: ["png", "jpg", "jpeg"],
       isRead: false,
       loading: true,
+      mainTip: "",
     };
   },
   components: { Picture, FolderOpened, ElConfigProvider },
@@ -114,6 +122,18 @@ export default {
     goBack() {
       this.$router.go(-1);
     },
+    //学校
+    initSchoolData() {
+      this.schoolData = [];
+      request({
+        url: '/school/main/index',
+        data: {}
+      }).then(res => {
+        if (res.code == 1) {
+          this.schoolData = res.data.page_data;
+        }
+      })
+    },
     getListData() {
       this.loading = true;
       let data = {
@@ -177,6 +197,10 @@ export default {
       }
       this.$refs[formName].validate((valid) => {
         if (valid) {
+          if (this.formline.um_avatar == "") {
+            this.mainTip = "请上传头像";
+            return;
+          }
           let data = {
             um_name: this.formline.um_name,
             um_avatar: this.formline.um_avatar,
@@ -210,6 +234,7 @@ export default {
   mounted() {
     this.addData();
     this.getListData();
+    this.initSchoolData();
   },
 };
 </script>

+ 18 - 46
src/pages/personal/components/MyCourse/xtbk.vue

@@ -4,9 +4,7 @@
     <el-card>
       <div style="padding: 0 75px">
         <span class="title">协同备课</span>
-        <span class="subTitle"
-          >我的课程 - 我创建的 - <span style="color: #000">协同备课</span></span
-        >
+        <span class="subTitle">我的课程 - 我创建的 - <span style="color: #000">协同备课</span></span>
       </div>
     </el-card>
 
@@ -24,24 +22,14 @@
       <div>
         <span>年级</span>
         <el-tabs v-model="firstForm.grade" @click="initData">
-          <el-tab-pane
-            v-for="(item, index) in gradeList"
-            :key="index"
-            :label="item.grade_name"
-            :name="item.grade_id"
-          ></el-tab-pane>
+          <el-tab-pane v-for="(item, index) in gradeList" :key="index" :label="item.grade_name" :name="item.grade_id"></el-tab-pane>
         </el-tabs>
       </div>
 
       <div>
         <span>科目</span>
         <el-tabs v-model="firstForm.subject" @click="initData">
-          <el-tab-pane
-            v-for="(item, index) in subjectList"
-            :key="index"
-            :label="item.subject_name"
-            :name="item.subject_id"
-          ></el-tab-pane>
+          <el-tab-pane v-for="(item, index) in subjectList" :key="index" :label="item.subject_name" :name="item.subject_id"></el-tab-pane>
         </el-tabs>
       </div>
     </div>
@@ -52,39 +40,24 @@
           <img class="cover" :src="https + item.zx_img" alt="" />
           <div class="main pt-3">
             <p class="main-title">{{ item.zx_name }}</p>
-            <img style="cursor: pointer;"
-              @click="editData(item.zx_id)"
-              class="edit"
-              src="@/assets/img/edit.png"
-              alt=""
-            />
-            <img style="cursor: pointer;"
-              @click="deleteData(item.zx_id)"
-              class="delete"
-              src="@/assets/img/delete.png"
-              alt=""
-            />
+            <img style="cursor: pointer;" @click="editData(item.zx_id)" class="edit" src="@/assets/img/edit.png" alt="" />
+            <img style="cursor: pointer;" @click="deleteData(item.zx_id)" class="delete" src="@/assets/img/delete.png" alt="" />
 
             <p class="main-content">{{ item.zx_brief }}</p>
             <div class="cursor-pointer flex items-center text-sm">
-              <el-avatar :size="16" :src="getAvatarUrl(userMsg.user_id)" /> <span class="ml-1">{{ userMsg.user_name }}</span> 
+              <el-avatar :size="16" :src="getAvatarUrl(userMsg.user_id)" /> <span class="ml-1">{{ userMsg.user_name }}</span>
             </div>
           </div>
         </div>
       </template>
-      <el-empty
-        v-else
-        image-size="100"
-        description="无数据"
-        style="padding: 10px 0; width: 100%"
-      />
+      <el-empty v-else image-size="100" description="无数据" style="padding: 10px 0; width: 100%" />
     </div>
   </div>
 </template>
 
 <script>
-import { grade_list, xtbk_list, subject_list, xtbk_delete,user_list,user_info } from "./api";
-import { getFullUrl,getAvatarUrl } from '@/utils/helper';
+import { grade_list, xtbk_list, subject_list, xtbk_delete, user_list, user_info } from "./api";
+import { getFullUrl, getAvatarUrl } from '@/utils/helper';
 export default {
   data() {
     return {
@@ -101,7 +74,7 @@ export default {
         grade: "",
         subject: "",
       },
-      userMsg:{}
+      userMsg: {}
     };
   },
   methods: {
@@ -197,7 +170,7 @@ export default {
             }
           });
         })
-        .catch(() => {});
+        .catch(() => { });
     },
   },
   // async created() {
@@ -356,10 +329,6 @@ export default {
     display: flex;
     flex-wrap: wrap;
     margin: 0 auto;
-    .cover{
-      width: 263px;
-      border-radius: 6px 0 0 6px;
-    }
 
     & > div {
       box-sizing: border-box;
@@ -369,19 +338,22 @@ export default {
       margin-bottom: 20px;
 
       box-shadow: 0px 15px 24px 0px rgba(161, 153, 168, 0.18);
+
       &:nth-of-type(odd) {
         margin-right: 40px;
       }
-      img {
-        height: 150px;
+      .cover {
+        width: 263px;
+        border-radius: 6px 0 0 6px;
         margin-right: 12px;
+        height: 150px;
       }
+
       .main {
-        display: inline-block;
         display: flex;
         flex-direction: column;
         // padding: 20px 10px;
-        width: 100%;
+        width: 400px;
         box-sizing: border-box;
         position: relative;
         .main-title {

+ 6 - 23
src/pages/personal/components/Participate/index.vue

@@ -22,16 +22,8 @@
           <div class="content-bottom">
             {{ item.ug_brief }}
           </div>
-          <div
-            style="display: flex; position: absolute; bottom: 30px; left: 30px"
-          >
-            <img
-              class="yh-avatar"
-              v-for="(value, i) in item.users"
-              :key="i"
-              :src="getAvatarUrl(value)"
-              alt=""
-            />
+          <div style="display: flex; position: absolute; bottom: 30px; left: 30px">
+            <img class="yh-avatar" v-for="(value, i) in item.users" :key="i" :src="getAvatarUrl(value)" alt="" />
             <!-- <img class="yh-avatar one" src="/images/home/1.png" alt="" />
             <img class="yh-avatar two" src="/images/home/2.png" alt="" />
             <img class="yh-avatar three" src="/images/home/3.png" alt="" /> -->
@@ -40,17 +32,8 @@
       </div>
     </div>
     <div class="footer">
-      <div
-        style="width: 1400px; height: 50px; position: relative; margin: 0 auto"
-      >
-        <el-pagination
-          background
-          layout="total,prev, pager, next"
-          :total="total"
-          style="position: absolute; top: 0; right: 0"
-          @current-change="handleCurrentChange"
-          :page-size="limit"
-        >
+      <div style="width: 1400px; height: 50px; position: relative; margin: 0 auto">
+        <el-pagination background layout="total,prev, pager, next" :total="total" style="position: absolute; top: 0; right: 0" @current-change="handleCurrentChange" :page-size="limit">
         </el-pagination>
       </div>
     </div>
@@ -238,7 +221,7 @@ export default {
         width: 90px;
         height: 30px;
         line-height: 30px;
-        font-size: 14px;
+        font-size: 16px;
 
         text-align: center;
         color: #a1a5b7;
@@ -246,7 +229,7 @@ export default {
     }
     .content-middle {
       color: #181c32;
-      font-size: 16px;
+      font-size: 18px;
       font-weight: 800;
       text-align: left;
       margin: 23px 0;

+ 1 - 2
src/pages/personal/components/Participate/wxydz_add.vue

@@ -27,7 +27,7 @@
           </div>
           <el-form-item label="参与教研教师" style="margin-top: 15px">
             <div class="checkedjs">
-              <div v-for="js in isCheckedTeacher" class="checkedEach">
+              <div v-for="(js,index) in isCheckedTeacher" :key="index" class="checkedEach">
                 <span>{{ js.user_realname }}</span>
                 <img style="cursor: pointer" @click="deleteJs(js)" src="../../../../assets/img/del.png" alt="" />
               </div>
@@ -288,7 +288,6 @@ export default {
         this.pageData--;
       }
 
-
       let data = {
         page: this.pageData,
         limit: "20",

+ 28 - 3
src/pages/personal/components/sz/index.vue

@@ -32,10 +32,14 @@
           <el-form-item label="任教学科" prop="subject_id" v-if="this.wholeData.user_role_id!=76">
             <remote-select v-model="formline.subject_id" to="subject"></remote-select>
           </el-form-item>
-          <el-form-item label="学校" prop="ue_xxmc">
+          <!-- <el-form-item label="学校" prop="ue_xxmc">
             <el-input v-model="formline.ue_xxmc" placeholder="请输入学校" />
+          </el-form-item> -->
+          <el-form-item label="学校" prop="ue_xxmc">
+            <el-select v-model="formline.ue_xxmc" placeholder=" " size="large">
+              <el-option v-for="item in schoolData" :key="item.sm_name" :label="item.sm_name" :value="item.sm_name" />
+            </el-select>
           </el-form-item>
-
           <el-form-item>
             <el-checkbox class="read" v-model="isRead" label="已阅读并同意《课程上传协议》" size="large" />
           </el-form-item>
@@ -64,6 +68,7 @@ export default {
     return {
       https: window.GLOBAL_CONFIG.api,
       wholeData: {},
+      schoolData: [],
       formline: {
         user_avatar: "",
         user_realname: "",
@@ -93,12 +98,13 @@ export default {
             trigger: "submit",
           },
         ],
-        ue_xxmc: [{ required: true, message: "请输入学校", trigger: "blur" }],
+        ue_xxmc: [{ required: true, message: "请选择学校", trigger: "change" }],
       },
       fileList: [],
       mainFileData: ["png", "jpg", "jpeg"],
       isRead: true,
       loading: true,
+      mainTip: "",
     };
   },
   methods: {
@@ -151,6 +157,18 @@ export default {
         }
       });
     },
+    //学校
+    initSchoolData() {
+      this.schoolData = [];
+      request({
+        url: '/school/main/index',
+        data: {}
+      }).then(res => {
+        if (res.code == 1) {
+          this.schoolData = res.data.page_data;
+        }
+      })
+    },
     // 提交
     submitForm(formName) {
       if (!this.isRead) {
@@ -160,6 +178,7 @@ export default {
         });
         return;
       }
+
       var reg_ph = /^1[0-9]{10}$/
       if (this.formline.user_phone != '' && !reg_ph.test(this.formline.user_phone)) {
         return this.$message.error('请输入正确的手机号');
@@ -167,6 +186,11 @@ export default {
       let id = this.$route.query.id;
       this.$refs[formName].validate((valid) => {
         if (valid) {
+          if (this.formline.user_avatar == "") {
+            console.log(2222222);
+            this.mainTip = "请上传头像";
+            return;
+          }
           let data = {
             user_avatar: this.formline.user_avatar,
             user_realname: this.formline.user_realname,
@@ -202,6 +226,7 @@ export default {
 
   mounted() {
     this.editData();
+    this.initSchoolData();
   },
 };
 </script>

+ 1 - 0
src/pages/resourceMovReview.vue

@@ -147,6 +147,7 @@
 
 <script>
 import CommonHeader from "@/components/CommonHeader/index.vue";
+import { _debounce, _throttle } from "../utils/throttleWithDebounce";
 import {
   courseSourceDetail,
   evaluaList,

+ 8 - 54
src/pages/zhjy/index.vue

@@ -2,22 +2,11 @@
   <common-header />
   <div class="content">
     <div class="main-img">
-      <div
-        class="img-left"
-        v-for="(item, index) in adData"
-        :key="index"
-        v-show="index == 0 || index == 1"
-      >
+      <div class="img-left" v-for="(item, index) in adData" :key="index" v-show="index == 0 || index == 1">
         <img :src="https + item.am_img" alt="" />
       </div>
       <div class="img-right">
-        <img
-          v-for="(item, index) in adData"
-          :key="index"
-          v-show="index == 2 || index == 3"
-          :src="https + item.am_img"
-          alt=""
-        />
+        <img v-for="(item, index) in adData" :key="index" v-show="index == 2 || index == 3" :src="https + item.am_img" alt="" />
       </div>
     </div>
     <!-- 在线学习列表 -->
@@ -28,23 +17,11 @@
       </div>
 
       <div class="study-list">
-        <div
-          class="list-left"
-          v-for="(item, index) in zxxxData"
-          :key="index"
-          v-show="index == 0"
-          @click="zxxxxqDetail(item.zz_id)"
-        >
+        <div class="list-left" v-for="(item, index) in zxxxData" :key="index" v-show="index == 0" @click="zxxxxqDetail(item.zz_id)">
           <img :src="https + item.zz_img" alt="" />
         </div>
         <div class="list-right">
-          <div
-            class="r-right"
-            v-for="(item, index) in zxxxData"
-            :key="index"
-            v-show="index > 0"
-            @click="zxxxxqDetail(item.zz_id)"
-          >
+          <div class="r-right" v-for="(item, index) in zxxxData" :key="index" v-show="index > 0" @click="zxxxxqDetail(item.zz_id)">
             <img :src="https + item.zz_img" alt="" />
             <div class="wenzi">
               <p>{{ item.zz_name }}</p>
@@ -64,24 +41,11 @@
       </div>
 
       <div class="study-list">
-        <div
-          class="list-left"
-          v-for="(item, index) in xtbkData"
-          :key="index"
-          v-show="index == 0"
-          style="cursor: pointer"
-          @click="xtbknrDetail(item.zx_id)"
-        >
+        <div class="list-left" v-for="(item, index) in xtbkData" :key="index" v-show="index == 0" style="cursor: pointer" @click="xtbknrDetail(item.zx_id)">
           <img :src="https + item.zx_img" alt="" />
         </div>
         <div class="list-right">
-          <div
-            class="r-right"
-            v-for="(item, index) in xtbkData"
-            @click="xtbknrDetail(item.zx_id)"
-            :key="index"
-            v-show="index > 0"
-          >
+          <div class="r-right" v-for="(item, index) in xtbkData" @click="xtbknrDetail(item.zx_id)" :key="index" v-show="index > 0">
             <img :src="https + item.zx_img" alt="" />
             <div class="wenzi">
               <p>{{ item.zx_name }}</p>
@@ -101,21 +65,11 @@
       </div>
 
       <div class="study-list">
-        <div
-          class="list-left"
-          v-for="(item, index) in tbjyData"
-          :key="index"
-          v-show="index == 0"
-        >
+        <div class="list-left" v-for="(item, index) in tbjyData" :key="index" v-show="index == 0">
           <img :src="https + item.zt_img" alt="" />
         </div>
         <div class="list-right">
-          <div
-            class="r-right"
-            v-for="(item, index) in tbjyData"
-            :key="index"
-            v-show="index > 0"
-          >
+          <div class="r-right" v-for="(item, index) in tbjyData" :key="index" v-show="index > 0">
             <img :src="https + item.zt_img" alt="" />
             <div class="wenzi">
               <p>{{ item.zt_name }}</p>

+ 42 - 25
src/pages/zhjy/zhjyzxxx/index.vue

@@ -50,11 +50,17 @@
               <img v-for="star in Number(item.zz_star_num)" :key="star" src="@/assets/img/zhjyzxxx/star.png" alt="" />
             </div>
           </div>
-          <div class="zan">
-            <img src="@/assets/img/zhjyzxxx/zan.png" /> {{ item.zz_like_num }}
-            <img src="@/assets/img/zhjyzxxx/xin.png" alt="" />{{
-              item.zz_fav_num
-            }}
+
+          <div class="dataShow">
+
+            <div class="baseInfoPart">
+              <img src="/kczy/fingerIcon.png" alt="">
+              <span>{{item.zz_like_num}}</span>
+            </div>
+            <div class="baseInfoPart">
+              <img src="/kczy/cellectIcon.png" alt="">
+              <span>{{item.zz_fav_num}}</span>
+            </div>
           </div>
         </li>
       </ul>
@@ -166,6 +172,7 @@ export default {
       });
     },
     initSubject(value) {
+      console.log(value, 123);
       this.activeSubject = value.subject_id;
       this.getData();
     },
@@ -200,6 +207,36 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+.dataShow {
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 13;
+  width: 160px;
+  height: 32px;
+  line-height: 32px;
+  background: rgba(0, 0, 0, 0.5);
+  border-bottom-left-radius: 12px;
+  border-top-right-radius: 12px;
+  display: flex;
+  padding-left: 5px;
+  .baseInfoPart {
+    width: 50%;
+    box-sizing: border-box;
+    padding-left: 4px;
+    img {
+      display: inline-block;
+      vertical-align: middle;
+    }
+    span {
+      font-size: 14px;
+      font-weight: 400;
+      text-align: left;
+      color: #ffffff;
+      margin-left: 5px;
+    }
+  }
+}
 .search-list {
   display: flex;
   align-items: baseline;
@@ -400,26 +437,6 @@ export default {
           }
         }
       }
-      .zan {
-        position: absolute;
-        top: 0;
-        right: 0;
-        width: 150px;
-        height: 34px;
-        line-height: 34px;
-        font-size: 14px;
-        color: #fff;
-        display: flex;
-        padding-left: 20px;
-        background: rgba(0, 0, 0, 0.59);
-        border-radius: 0px 12px 0px 12px;
-        img {
-          display: inline-block;
-          width: 17px;
-          height: 16px;
-          margin: 8px 5px 0 10px;
-        }
-      }
     }
   }
 }

+ 6 - 3
src/pages/zhjy/zhjyzxxx/zxxxsp/api.js

@@ -76,7 +76,8 @@ export const zxxx_like_del = (data = {}) =>
   request({
     url: '/zhjy/zxxx_like/delete',
     data: {
-      zzl_id: data.zzl_id
+      zzl_id: data.zzl_id,
+      zz_id: data.zz_id
     }
   })
 //收藏
@@ -95,7 +96,8 @@ export const zxxx_fav_del = (data = {}) =>
   request({
     url: '/zhjy/zxxx_fav/delete',
     data: {
-      zzf_id: data.zzf_id
+      zzf_id: data.zzf_id,
+      zz_id: data.zz_id
     }
   })
 //关注
@@ -128,6 +130,7 @@ export const zxxx_attention_del = (data = {}) =>
   request({
     url: '/user/watch/delete',
     data: {
-      uw_id: data.uw_id
+      uw_id: data.uw_id,
+      uw_user_id: data.uw_user_id
     }
   })

+ 73 - 35
src/pages/zhjy/zhjyzxxx/zxxxsp/index.vue

@@ -90,12 +90,10 @@
               </div>
             </div>
             <div class="right">
-              <!-- <img src="@/assets/img/zhjy/bluezan.png" />
-              {{ detailData.zz_like_num }}
-              <img src="@/assets/img/zhjy/bluexin.png" alt="" />{{
-                detailData.zz_fav_num
-              }} -->
-              <span>关注</span>
+
+              <el-button type="primary" :plain="isFocus" @click="handleFocus">{{
+                !isFocus ? "关注" : "已关注"
+              }}</el-button>
             </div>
           </div>
         </div>
@@ -200,6 +198,7 @@ export default {
   },
   data() {
     return {
+      isFocus: true,
       detailData: {},
       evaluateInfo: {},
       evaluateListData: [],
@@ -217,13 +216,55 @@ export default {
       https: window.GLOBAL_CONFIG.api,
       shareLink: window.location.href,
       zz_id: "",
-      fingerNum: "0", //点赞数
+      fingerNum: 0, //点赞数
       fingerSwitch: 0, //0:关 1:开
-      loveNum: "0", //收藏
+      loveNum: 0, //收藏
       loveSwitch: 0, //0:关 1:开
     };
   },
   methods: {
+    handleFocus() {
+      this.isFocus = !this.isFocus;
+
+      // /**增加关注或取消*/
+
+      // if (this.attentionSwitch == 1) {//关注
+      //   let transObj = {
+      //     create_user_id: this.create_user_id,
+      //   };
+      //   zxxx_attention_del(transObj)
+      //     .then(res => {
+      //       console.log(res);
+      //     })
+      //     .catch(error => {
+      //       console.log(error)
+      //     });
+      // } else {
+      //   let transObj = {
+      //     create_user_id: this.create_user_id,
+      //   };
+      //   zxxx_attention_add(transObj)
+      //     .then((res) => {
+      //       if (res.code == "1") {
+      //         ElMessage({
+      //           message: res.msg,
+      //           type: "success",
+      //         });
+      //         this.getListData();
+      //       } else {
+      //         ElMessage({
+      //           message: res.msg,
+      //           type: "waring",
+      //         });
+      //       }
+      //     })
+      //     .catch((error) => {
+      //       console.log(error);
+      //     });
+      // }
+      // this.getDetailData();
+
+    },
     // shareLink = window.location.href;
     async copyLink() {
       await navigator.clipboard.writeText(window.location.href);
@@ -349,6 +390,7 @@ export default {
                 message: res.msg,
                 type: "success",
               });
+              this.getDetailData();
             } else {
               ElMessage({
                 message: res.msg,
@@ -361,7 +403,6 @@ export default {
       } else {
         let transObj = {
           zz_id: this.zz_id,
-
         };
         zxxx_like_add(transObj)
           .then((res) => {
@@ -370,6 +411,7 @@ export default {
                 message: res.msg,
                 type: "success",
               });
+              this.getDetailData();
             } else {
               ElMessage({
                 message: res.msg,
@@ -387,19 +429,30 @@ export default {
     loveIcon() {
       if (this.loveSwitch == 1) {//去掉收藏
         let transObj = {
-          zzf_id: this.zzf_id,
+          zz_id: this.zz_id,
         };
         zxxx_fav_del(transObj)
           .then(res => {
-            console.log(res);
+            if (res.code == "1") {
+              ElMessage({
+                message: res.msg,
+                type: "success",
+              });
+              this.getDetailData();
+            } else {
+              ElMessage({
+                message: res.msg,
+                type: "waring",
+              });
+            }
+
+            this.getDetailData();
           })
           .catch(error => {
             console.log(error)
           });
       } else {
         let transObj = {
-
-
           zz_id: this.zz_id,
 
         };
@@ -410,6 +463,7 @@ export default {
                 message: res.msg,
                 type: "success",
               });
+              this.getDetailData();
             } else {
               ElMessage({
                 message: res.msg,
@@ -673,33 +727,17 @@ export default {
     }
   }
   .right {
-    width: 200px;
     height: 100px;
     line-height: 100px;
-    font-size: 14px;
-    color: #00a3ff;
-    display: flex;
-    padding-left: 20px;
-    border-radius: 0px 12px 0px 12px;
-    // img {
-    //   display: inline-block;
-    //   width: 17px;
-    //   height: 16px;
-    //   margin: 40px 5px 0 20px;
-    // }
-    span {
+    .el-button {
       width: 100px;
       height: 40px;
-      background: rgba(0, 131, 197, 0.8);
-      border-radius: 6px;
-      font-size: 16px;
-      font-family: PingFangSC, PingFangSC-Regular;
-      font-weight: 400;
       text-align: center;
-      color: #ffffff;
-      line-height: 40px;
-      margin: 30px 20px 30px 0px;
-      cursor: pointer;
+
+      &.el-button--primary.is-plain {
+        background: transparent;
+        color: #409eff;
+      }
     }
   }
 }

+ 6 - 3
src/pages/zhjy/zhjyzxxx/zxxxxq/api.js

@@ -62,7 +62,8 @@ export const zxxx_like_del = (data = {}) =>
   request({
     url: '/zhjy/zxxx_like/delete',
     data: {
-      zzl_id: data.zzl_id
+      zzl_id: data.zzl_id,
+      zz_id: data.zz_id
     }
   })
 //收藏
@@ -81,7 +82,8 @@ export const zxxx_fav_del = (data = {}) =>
   request({
     url: '/zhjy/zxxx_fav/delete',
     data: {
-      zzf_id: data.zzf_id
+      zzf_id: data.zzf_id,
+      zz_id: data.zz_id
     }
   })
 //关注
@@ -114,6 +116,7 @@ export const zxxx_attention_del = (data = {}) =>
   request({
     url: '/user/watch/delete',
     data: {
-      uw_id: data.uw_id
+      uw_id: data.uw_id,
+      uw_user_id: data.uw_user_id
     }
   })

+ 86 - 77
src/pages/zhjy/zhjyzxxx/zxxxxq/index.vue

@@ -6,7 +6,7 @@
     </div>
     <div class="main">
       <p>{{ detailData.zz_name }}</p>
-      <div style="display: flex; justify-content: space-between">
+      <div style="display: flex; ">
         <div class="left">
           <img class="avatar" src="@/assets/img/zhjy/main_3.png" alt="" />
 
@@ -29,18 +29,23 @@
             <span class="posiA posi4">{{ loveNum }}</span>
           </div>
         </div>
-        <!-- <img src="@/assets/img/zhjy/bluezan.png" @click="finger" />
-          {{ detailData.zz_like_num }}
-          <img src="@/assets/img/zhjy/bluexin.png" alt="" @click="loveIcon" />{{
-            detailData.zz_fav_num
-          }} -->
         <div class="right">
-          <span @click="attention">关注</span>
+          <el-button type="primary" :plain="isFocus" @click="handleFocus">{{
+                !isFocus ? "关注" : "已关注"
+              }}</el-button>
         </div>
+        <!-- <div class="right" @click="handleFocus">
+          <el-button type="primary" v-if="attentionSwitch == '0'">
+            关注
+          </el-button>
+          <el-button :plain="isFocus" v-else>
+            已关注
+          </el-button>
+        </div> -->
       </div>
 
       <div class=" docx">
-        <div>{{ detailData.zz_fj }}</div>
+        <div>{{ detailData.zz_fj_name }}</div>
         <span v-if="detailData.zz_fj" @click="download(detailData.zz_fj)">下载附件</span>
       </div>
       <p class="jieshao">
@@ -77,6 +82,7 @@
 </template>
 
 <script>
+import { getAvatarUrl } from "@/utils/helper";
 import {
   zxxx_detail,
   zxxx_evaluate_add,
@@ -101,11 +107,11 @@ export default {
   },
   data() {
     return {
+      isFocus: true,
       detailData: {},
       evaluateInfo: {},
       evaluateListData: [],
       https: window.GLOBAL_CONFIG.api,
-
       pjInfo: {
         ke_star: "",
         ke_user_realname: "",
@@ -113,17 +119,60 @@ export default {
         kf_id: "",
       },
       zz_id: "",
-      fingerNum: "0", //点赞数
+      fingerNum: 0, //点赞数
       fingerSwitch: 0, //0:关 1:开
-      loveNum: "0", //收藏
+      loveNum: 0, //收藏
       loveSwitch: 0, //0:关 1:开
+      attentionSwitch: 0,
       limit: 10,
       total: 0,
       cur_page: 1,
-      listData: []
+      listData: [],
+      attention: "",
+      uw_user_id: ""
     };
   },
   methods: {
+    handleFocus() {
+      this.isFocus = !this.isFocus;
+      // // /**增加关注或取消*/
+      // if (this.attentionSwitch == 1) {//关注
+      //   let transObj = {
+      //     uw_user_id: this.uw_user_id,
+      //   };
+      //   zxxx_attention_del(transObj)
+      //     .then(res => {
+      //       console.log(res);
+      //     })
+      //     .catch(error => {
+      //       console.log(error)
+      //     });
+      // } else {
+      //   let transObj = {
+      //     uw_user_id: this.uw_user_id,
+      //   };
+      //   zxxx_attention_add(transObj)
+      //     .then((res) => {
+      //       if (res.code == "1") {
+      //         ElMessage({
+      //           message: res.msg,
+      //           type: "success",
+      //         });
+      //         this.getListData();
+      //       } else {
+      //         ElMessage({
+      //           message: res.msg,
+      //           type: "waring",
+      //         });
+      //       }
+      //     })
+      //     .catch((error) => {
+      //       console.log(error);
+      //     });
+      // }
+      // this.getDetailData();
+
+    },
     /**增加赞或取消*/
     finger() {
       if (this.fingerSwitch == "1") {//去掉赞
@@ -137,6 +186,7 @@ export default {
                 message: res.msg,
                 type: "success",
               });
+              this.getDetailData();
             } else {
               ElMessage({
                 message: res.msg,
@@ -146,9 +196,9 @@ export default {
 
           })
           .catch(error => { console.log(error) })
+        this.getDetailData();
       } else {
         let transObj = {
-
           zz_id: this.zz_id,
 
         };
@@ -159,6 +209,7 @@ export default {
                 message: res.msg,
                 type: "success",
               });
+              this.getDetailData();
             } else {
               ElMessage({
                 message: res.msg,
@@ -176,19 +227,28 @@ export default {
     loveIcon() {
       if (this.loveSwitch == 1) {//去掉收藏
         let transObj = {
-          zzf_id: this.zzf_id,
+          zz_id: this.zz_id,
         };
         zxxx_fav_del(transObj)
           .then(res => {
-            console.log(res);
+            if (res.code == "1") {
+              ElMessage({
+                message: res.msg,
+                type: "success",
+              });
+              this.getDetailData();
+            } else {
+              ElMessage({
+                message: res.msg,
+                type: "waring",
+              });
+            }
           })
           .catch(error => {
             console.log(error)
           });
       } else {
         let transObj = {
-
-
           zz_id: this.zz_id,
 
         };
@@ -199,6 +259,7 @@ export default {
                 message: res.msg,
                 type: "success",
               });
+              this.getDetailData();
             } else {
               ElMessage({
                 message: res.msg,
@@ -227,45 +288,7 @@ export default {
         this.total = Number(res.data.total_rows);
       });
     },
-    /**增加关注或取消*/
-    attention() {
-      // if (this.loveSwitch == 1) {//关注
-      //   let transObj = {
-      //     uw_user_id: this.uw_user_id,
-      //   };
-      //   zxxx_attention_del(transObj)
-      //     .then(res => {
-      //       console.log(res);
-      //     })
-      //     .catch(error => {
-      //       console.log(error)
-      //     });
-      // } else {
-      let transObj = {
-        uw_user_id: this.uw_user_id,
 
-      };
-      zxxx_attention_add(transObj)
-        .then((res) => {
-          if (res.code == "1") {
-            ElMessage({
-              message: res.msg,
-              type: "success",
-            });
-            this.getListData();
-          } else {
-            ElMessage({
-              message: res.msg,
-              type: "waring",
-            });
-          }
-        })
-      //     .catch((error) => {
-      //       console.log(error);
-      //     });
-      // }
-      this.getDetailData();
-    },
 
     getDetailData() {
       let data = {
@@ -278,6 +301,8 @@ export default {
         this.fingerSwitch = res.data.one_info.is_like; //0:关 1:开
         this.loveNum = res.data.one_info.zz_fav_num; //收藏
         this.loveSwitch = res.data.one_info.is_fav; //0:关 1:开
+        this.attentionSwitch = res.data.one_info.is_watch; //关注
+
       });
     },
 
@@ -559,33 +584,17 @@ export default {
   }
 }
 .right {
-  width: 400px;
   height: 100px;
   line-height: 100px;
-  font-size: 14px;
-  color: #00a3ff;
-  display: flex;
-  padding-left: 20px;
-  border-radius: 0px 12px 0px 12px;
-  img {
-    display: inline-block;
-    width: 17px;
-    height: 16px;
-    margin: 40px 5px 0 20px;
-  }
-  span {
+  .el-button {
     width: 100px;
     height: 40px;
-    background: rgba(0, 131, 197, 0.8);
-    border-radius: 6px;
-    font-size: 16px;
-    font-family: PingFangSC, PingFangSC-Regular;
-    font-weight: 400;
     text-align: center;
-    color: #ffffff;
-    line-height: 40px;
-    margin: 30px 20px;
-    cursor: pointer;
+
+    &.el-button--primary.is-plain {
+      background: transparent;
+      color: #409eff;
+    }
   }
 }
 .docx {

+ 30 - 0
src/utils/throttleWithDebounce.js

@@ -0,0 +1,30 @@
+//节流
+export const _throttle=(fn, wait = 200)=> {
+  let last, timer,now;
+  return function() {
+    now = Date.now();
+    if (last && now - last < wait) {
+      clearTimeout(timer);
+      timer = setTimeout(function() {
+        last = now;
+        fn.call(this, ...arguments);
+      }, wait);
+    } else {
+      last = now;
+      fn.call(this, ...arguments);
+    }
+  };
+};
+
+// 防抖
+export const _debounce=(fn, wait = 200)=> {
+  let timer;
+    return function () {
+      let context = this;
+      let args = arguments;
+      if (timer) clearTimeout(timer);
+      timer = setTimeout(() => {
+        fn.apply(context, args);
+      }, wait)
+    }
+}