Procházet zdrojové kódy

修复漏洞,新增其他平台全部导出

Tang před 2 roky
rodič
revize
4f7898a452

+ 3 - 0
src/components/tableList.vue

@@ -1733,6 +1733,7 @@
       </div>
       <div style="max-height: 600px; overflow: auto">
         <el-tree
+        v-if="diaviosOpen"
           default-expand-all
           :key="Math.random()"
           :props="props1"
@@ -1837,6 +1838,7 @@
       </div>
       <div style="max-height: 600px; overflow: auto">
         <el-tree
+        v-if="diaviosTKOpen"
           default-expand-all
           :key="Math.random()"
           :props="props2"
@@ -2421,6 +2423,7 @@ export default {
       }
     },
     diavios(ids) {
+      console.log(ids,"触发")
       this.$api.obtainCourseSgoodsId(ids).then((res) => {
         res.rows.forEach((item) => {
           item.TypeId = "0-" + item.courseId;

+ 1 - 0
src/newApi/classTab.js

@@ -289,4 +289,5 @@ export default {
         })
     },
     
+    
 }

+ 18 - 1
src/views/Marketing/goods/commodityManageMent/add/index.vue

@@ -10,7 +10,7 @@
       <h5>商品信息</h5>
       <div class="boxBorderStyle">
         <h5 class="segmentationStyle">基本信息</h5>
-        <product-information ref="productInformation" :listData="listData" />
+        <product-information ref="productInformation" :listData="listData" @activeExternalLinkStatus="activeExternalLinkStatus" />
         <h5 class="segmentationStyle">商品价格和有效期</h5>
         <price-period ref="pricePeriod" :listData="listData" />
         <div
@@ -203,6 +203,7 @@ export default {
         status: 1,
         certificateTypeId: "",
         showStatus: 1,
+        externalLinkStatus:0,
       },
       rules: {
         year: [
@@ -235,6 +236,13 @@ export default {
             trigger: "blur",
           },
         ],
+        externalLink: [
+          {
+            required: false,
+            message: "请输入外链地址",
+            trigger: "blur",
+          },
+        ],
         educationTypeId: [
           {
             type: "number",
@@ -485,6 +493,15 @@ export default {
   },
   activated() {},
   methods: {
+    //判断是否必填外链
+    activeExternalLinkStatus(e){
+      if(e){
+        this.rules.externalLink[0].required = true
+      }else{
+        this.rules.externalLink[0].required = false
+      }
+      this.$refs["listData"].validateField("externalLink");
+    },
     /**
      * 动态字段模板
      */

+ 27 - 8
src/views/Marketing/goods/commodityManageMent/add/productInformation.vue

@@ -101,17 +101,13 @@
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item
-          label="科目"
-          prop="subjectIds"
-          v-if="listData.businessId"
-        >
+        <el-form-item label="科目" prop="subjectIds" v-if="listData.businessId">
           <el-select
             v-model="listData.subjectIds"
             placeholder="请选择科目"
             multiple
             collapse-tags
-          @change="subjectChanges"
+            @change="subjectChanges"
           >
             <el-option
               v-for="(item, index) in newSubjectOption"
@@ -128,10 +124,17 @@
             v-model="listData.goodsName"
           ></el-input>
         </el-form-item>
+        <el-form-item label="是否外链商品" prop="externalLinkStatus">
+          <el-radio-group v-model="listData.externalLinkStatus" @change="activeExternalLinkStatus">
+            <el-radio :label="1">是</el-radio>
+            <el-radio :label="0">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
         <el-form-item label="商品外链" prop="externalLink">
           <el-input
             :style="`max-width: ${inputWidth}px`"
             v-model.trim="listData.externalLink"
+            @change="judgeUrl"
           ></el-input>
         </el-form-item>
         <el-form-item
@@ -242,7 +245,6 @@ export default {
       this.$set(this.listData, "majorId", "");
       this.$set(this.listData, "subjectIds", "");
       this.$set(this.listData, "handoutsId", "");
-      console.log("sendBybus", val);
       this.$bus.$emit("sendBybus");
       this.$bus.$emit("sendBybusBank");
       if (val) {
@@ -258,8 +260,25 @@ export default {
   },
   computed: { ...mapGetters(["paysupply", "educationType"]) },
   methods: {
+    //校验外链格式
+    judgeUrl(val) {
+      var regUrl = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$/;
+      let flag = new RegExp(regUrl).test(val);
+      if (!flag) {
+        this.$message({
+          type: "warning",
+          message: "请输入正确的外链地址格式",
+          duration: 2000,
+        });
+        this.listData.externalLink = "";
+        return 0;
+      }
+      return 1;
+    },
+    activeExternalLinkStatus(e){
+      this.$emit('activeExternalLinkStatus',e)
+    },
     subjectChanges() {
-      console.log(123)
       this.$bus.$emit("sendBybus");
       this.$bus.$emit("sendBybusBank");
     },

+ 20 - 0
src/views/Marketing/goods/commodityManageMent/edit/index.vue

@@ -14,6 +14,7 @@
           ref="productInformation"
           :listData="listData"
           :submitStatusInfo="submitStatusInfo"
+          @activeExternalLinkStatus="activeExternalLinkStatus"
         />
         <h5 class="segmentationStyle">商品价格和有效期</h5>
         <price-period ref="pricePeriod" :listData="listData" />
@@ -268,6 +269,13 @@ export default {
             trigger: "blur",
           },
         ],
+        externalLink: [
+          {
+            required: false,
+            message: "请输入外链地址",
+            trigger: "blur",
+          },
+        ],
         educationTypeId: [
           {
             type: "number",
@@ -552,6 +560,17 @@ export default {
     this.getInit();
   },
   methods: {
+    //判断是否必填外链
+    activeExternalLinkStatus(e) {
+      if (e) {
+        this.rules.externalLink[0].required = true;
+      } else {
+        this.rules.externalLink[0].required = false;
+      }
+      this.$nextTick(() => {
+        this.$refs["listData"].validateField("externalLink");
+      });
+    },
     /**
      * 动态字段模板
      */
@@ -662,6 +681,7 @@ export default {
       this.$api.obtainGoods(this.goodsId).then((res) => {
         var auditionList;
         var examConfigList;
+        this.activeExternalLinkStatus(res.data.externalLinkStatus);
         //年份转字符串-防止报错
         if (res.data.year) {
           res.data.year = res.data.year.toString();

+ 26 - 0
src/views/Marketing/goods/commodityManageMent/edit/productInformation.vue

@@ -121,10 +121,18 @@
             v-model="listData.goodsName"
           ></el-input>
         </el-form-item>
+        
+        <el-form-item label="是否外链商品" prop="externalLinkStatus">
+          <el-radio-group v-model="listData.externalLinkStatus" @change="activeExternalLinkStatus">
+            <el-radio :label="1">是</el-radio>
+            <el-radio :label="0">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
         <el-form-item label="商品外链" prop="externalLink">
           <el-input
             :style="`max-width: ${inputWidth}px`"
             v-model.trim="listData.externalLink"
+            @change="judgeUrl"
           ></el-input>
         </el-form-item>
         <el-form-item
@@ -249,6 +257,24 @@ export default {
   },
   computed: { ...mapGetters(["paysupply", "educationType"]) },
   methods: {
+    //校验外链格式
+    judgeUrl() {
+      var regUrl = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$/;
+      let flag = new RegExp(regUrl).test(val);
+      if (!flag) {
+        this.$message({
+          type: "warning",
+          message: "请输入正确的外链地址格式",
+          duration: 2000,
+        });
+        this.listData.externalLink = "";
+        return 0;
+      }
+      return 1;
+    },
+    activeExternalLinkStatus(e){
+      this.$emit('activeExternalLinkStatus',e)
+    },
     /**
      *科目切换清楚列表
      */

+ 25 - 2
src/views/education/classManageMent/otherPlatformsChild/index.vue

@@ -46,11 +46,16 @@
       :studentTable="true"
       :loading="loading"
     >
-      <template slot="btn" slot-scope="props">
+      <template slot="customize">
+        <el-button size="medium" @click="exportDataAll"
+          >导出学员数据</el-button
+        >
+      </template>
+      <!-- <template slot="btn" slot-scope="props">
         <el-button type="text" @click="exportData(props.scope.row)"
           >导出数据</el-button
         >
-      </template>
+      </template> -->
     </table-list>
     <pagination
       :total="total"
@@ -84,6 +89,7 @@ export default {
         gftsStatus: false,
         gfUserStatus: false,
         xssbStatus: false,
+        tableHide:true,
         backFatherBtn: {
           status: false,
           title: "未定义",
@@ -257,6 +263,23 @@ export default {
         }
       });
     },
+    exportDataAll(){
+      this.$api.inquireGradegradeotherClassuserexport(this.formData).then((res) => {
+        if (res.msg) {
+          let url = baseUrls.baseURL + "common/download?fileName=" + res.msg;
+          let link = document.createElement("a");
+          let fileName = "班级学员数据" + ".xlsx";
+          document.body.appendChild(link);
+          link.href = url;
+          link.dowmload = fileName;
+          link.click();
+          link.remove();
+          this.$message.success("导出成功");
+        } else {
+          this.$message.error("导出失败");
+        }
+      });
+    },
     handleSizeChange(v) {
       this.formData.pageSize = v;
       this.formData.pageNum = 1;

+ 18 - 7
src/views/resource/handoutManagement/handoutList/add/index.vue

@@ -155,6 +155,7 @@
               style="display: none"
               id="uplose"
               @change="getImgFile"
+              multiple
             />
             <span style="margin-left: 10px"
               >注:只能上传PDF文件,且不超过100MB</span
@@ -526,8 +527,14 @@ export default {
       this.sujectApis.splice(index, 1);
     },
     getImgFile(e) {
+      var fileArry = [];
+      for (let i = 0; i < e.target.files.length; i++) {
+        fileArry.push(e.target.files[i]);
+      }
+      console.log(fileArry);
       var self = this;
-      var file = self.$refs.file.files[0];
+      for(let i = 0; i < fileArry.length;i++){
+      var file = fileArry[i]
       if (file === undefined) {
         // self.$set(self.listData, "handoutsUrl", "");
         return;
@@ -536,10 +543,10 @@ export default {
         self.$message.error("pdf文件不得大于100MB");
         return;
       }
-      var type = self.$refs.file.value.toLowerCase().split(".").splice(-1);
+      var type = file.name.toLowerCase().split(".").splice(-1);
       if (type[0] != "pdf") {
         self.$message.error("上传格式需为:.pdf");
-        self.$refs.file.value = "";
+        // self.$refs.file.value = "";
         return;
       }
       const imgURL = window.URL.createObjectURL(file);
@@ -551,6 +558,7 @@ export default {
         urlName: file.name,
         sort: self.backNowMathMax(),
       });
+      }
       e.target.value = "";
     },
     //返回当前数组sort最大值+1,用于自动sort排序
@@ -559,8 +567,8 @@ export default {
         let list = this.fileList.map((item) => {
           if (item.sort >= 0) {
             return Number(item.sort);
-          }else{
-            return 0
+          } else {
+            return 0;
           }
         });
         return Math.max(...list) + 1;
@@ -627,9 +635,12 @@ export default {
       display: flex;
       align-items: center;
       margin-bottom: 6px;
+      a {
+        display: inherit;
+      }
       img {
-        height: 40px;
-        width: 30px;
+        height: 28px;
+        width: 20px;
         cursor: pointer;
         transition: all 0.3s;
         margin-right: 10px;

+ 31 - 23
src/views/resource/handoutManagement/handoutList/edit/index.vue

@@ -115,6 +115,7 @@
               style="display: none"
               id="uplose"
               @change="getImgFile"
+              multiple
             />
             <span style="margin-left: 10px"
               >注:只能上传PDF文件,且不超过100MB</span
@@ -522,31 +523,38 @@ export default {
       this.sujectApis.splice(index, 1);
     },
     getImgFile(e) {
-      var self = this;
-      var file = self.$refs.file.files[0];
-      if (file === undefined) {
-        // self.$set(self.listData, "handoutsUrl", "");
-        return;
-      }
-      if (file.size > 100 * 1024 * 1024) {
-        self.$message.error("pdf文件不得大于100MB");
-        return;
+      var fileArry = [];
+      for (let i = 0; i < e.target.files.length; i++) {
+        fileArry.push(e.target.files[i]);
       }
-      var type = self.$refs.file.value.toLowerCase().split(".").splice(-1);
-      if (type[0] != "pdf") {
-        self.$message.error("上传格式需为:.pdf");
-        self.$refs.file.value = "";
-        return;
+      console.log(fileArry);
+      var self = this;
+      for (let i = 0; i < fileArry.length; i++) {
+        var file = fileArry[i];
+        if (file === undefined) {
+          // self.$set(self.listData, "handoutsUrl", "");
+          return;
+        }
+        if (file.size > 100 * 1024 * 1024) {
+          self.$message.error("pdf文件不得大于100MB");
+          return;
+        }
+        var type = file.name.toLowerCase().split(".").splice(-1);
+        if (type[0] != "pdf") {
+          self.$message.error("上传格式需为:.pdf");
+          // self.$refs.file.value = "";
+          return;
+        }
+        const imgURL = window.URL.createObjectURL(file);
+        self.fileList.push({
+          blob: imgURL,
+          url: "",
+          file: file,
+          status: 1,
+          urlName: file.name,
+          sort: self.backNowMathMax(),
+        });
       }
-      const imgURL = window.URL.createObjectURL(file);
-      self.fileList.push({
-        blob: imgURL,
-        url: "",
-        file: file,
-        status: 1,
-        urlName: file.name,
-        sort: self.backNowMathMax(),
-      });
       e.target.value = "";
     },