dedsudiyu hai 1 ano
pai
achega
cc89911479

+ 129 - 59
src/api/creditViolation/index.js

@@ -115,66 +115,7 @@ export function listNegativeListHistory(query) {
   })
 }
 
-// 查询用户积分记录列表
-export function examPointsRecordGetPointsLoglist(data) {
-  return request({
-    url: '/exam/points/record/getPointsLoglist',
-    method: 'post',
-    data: data
-  })
-}
-
-// 查询用户积分记录列表
-export function examPointsRecordList(data) {
-  return request({
-    url: '/exam/points/record/list',
-    method: 'post',
-    data: data
-  })
-}
-
-// 查询用户积分记录详细
-export function getRecord(id) {
-  return request({
-    url: '/exam/points/record/' + id,
-    method: 'get'
-  })
-}
-
-// 删除用户积分记录
-export function delRecord(id) {
-  return request({
-    url: '/exam/points/record/' + id,
-    method: 'delete'
-  })
-}
-
-// 新增用户积分记录
-export function addRecord(data) {
-  return request({
-    url: '/exam/points/record',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改用户积分记录
-export function updateRecord(data) {
-  return request({
-    url: '/exam/points/record',
-    method: 'put',
-    data: data
-  })
-}
 
-// 查询用户积分记录列表
-export function examPointsRecordGetPointsLoglistByReward(data) {
-  return request({
-    url: '/exam/points/record/getPointsLoglistByReward',
-    method: 'post',
-    data: data
-  })
-}
 
 // 查询奖励分设置列表
 export function listRewardconfig(query) {
@@ -379,3 +320,132 @@ export function violationSite(data) {
     data: data
   })
 }
+/************* 积分列表 *************/
+
+// 查询用户积分记录列表
+export function examPointsRecordList(data) {
+  return request({
+    url: '/exam/points/record/list',
+    method: 'post',
+    data: data
+  })
+}
+
+// 查询用户积分记录详细
+export function getRecord(id) {
+  return request({
+    url: '/exam/points/record/' + id,
+    method: 'get'
+  })
+}
+
+// 删除用户积分记录
+export function delRecord(id) {
+  return request({
+    url: '/exam/points/record/' + id,
+    method: 'delete'
+  })
+}
+
+// 新增用户积分记录
+export function addRecord(data) {
+  return request({
+    url: '/exam/points/record',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改用户积分记录
+export function updateRecord(data) {
+  return request({
+    url: '/exam/points/record',
+    method: 'put',
+    data: data
+  })
+}
+// 查询用户积分记录列表
+export function examPointsRecordGetPointsLoglist(data) {
+  return request({
+    url: '/exam/points/record/getPointsLoglist',
+    method: 'post',
+    data: data
+  })
+}
+
+// 查询用户积分记录列表
+export function examPointsRecordGetPointsLoglistByReward(data) {
+  return request({
+    url: '/exam/points/record/getPointsLoglistByReward',
+    method: 'post',
+    data: data
+  })
+}
+/************* 违规设置 *************/
+// 违规设置-获取
+export function examViolationSiteList(query) {
+  return request({
+    url: '/exam/violationSite/list',
+    method: 'get',
+    params: query
+  })
+}
+// 违规设置-提交
+export function examViolationSiteAdd(data) {
+  return request({
+    url: '/exam/violationSite/add',
+    method: 'post',
+    data: data
+  })
+}
+/************* 信用分设置 *************/
+// 信用分设置-获取
+export function examMarkConfigList(data) {
+  return request({
+    url: '/exam/markConfig/list',
+    method: 'post',
+    data: data
+  })
+}
+// 信用分设置-提交
+export function examMarkConfigAdd(data) {
+  return request({
+    url: '/exam/markConfig/add',
+    method: 'post',
+    data: data
+  })
+}
+// 信用分设置-修改
+export function examMarkConfigEdit(data) {
+  return request({
+    url: '/exam/markConfig/edit',
+    method: 'post',
+    data: data
+  })
+}
+/************* 奖励分设置 *************/
+// 奖励分设置-获取
+export function examRewardConfigList(data) {
+  return request({
+    url: '/exam/rewardConfig/list',
+    method: 'post',
+    data: data
+  })
+}
+// 奖励分设置-提交
+export function examRewardConfigEdit(data) {
+  return request({
+    url: '/exam/rewardConfig/edit',
+    method: 'post',
+    data: data
+  })
+}
+/************* 个人违规记录 *************/
+// 个人违规记录-获取
+export function examViolationMyList(data) {
+  return request({
+    url: '/exam/violation/myList',
+    method: 'post',
+    data: data
+  })
+}

+ 1 - 1
src/views/chemicalManage/basicManagement/chemicalsCabinetManage/listPage.vue

@@ -106,7 +106,7 @@
           <el-table-column label="归属人" prop="belongName" width="150" show-overflow-tooltip/>
           <el-table-column label="状态" prop="useStatusName" width="120" show-overflow-tooltip>
             <template slot-scope="scope">
-              <span v-if="scope.row.useStatus==-1" style="color: #0183FA">{{scope.row.useStatusName}}</span>
+              <span v-if="scope.row.useStatus==0" style="color: #0183FA">{{scope.row.useStatusName}}</span>
               <span v-if="scope.row.useStatus==1" style="color: #11932F">{{scope.row.useStatusName}}</span>
               <span v-if="scope.row.useStatus==2" style="color: #E80000">{{scope.row.useStatusName}}</span>
             </template>

+ 50 - 60
src/views/creditViolation/credit/markconfig/index.vue

@@ -1,7 +1,12 @@
 <!--信用分设置-->
 <template>
   <div class="app-container Markconfig">
-    <p class="title-p">信用分设置</p>
+    <div class="page-top-title-box">
+      <p class="page-top-title-name-p">信用分设置</p>
+      <p class="page-top-title-button-p" style="width:100px;" v-hasPermi="['exam:markconfig:edit']" @click="addObj">添加分值段</p>
+      <p class="page-top-title-out-p" v-hasPermi="['exam:markconfig:edit']" @click="getList">重置</p>
+      <p class="page-top-title-submit-p" v-hasPermi="['exam:markconfig:edit']" @click="submitForm">保存</p>
+    </div>
     <el-form class="form-content scrollbar-box" ref="form" :model="form" :rules="rules" v-if="pageType">
       <div style="display: flex">
         <el-form-item label="信用分合格分值:" prop="passMark" label-width="160px">
@@ -150,24 +155,13 @@
             </el-form-item>
           </div>
         </div>
-        <p class="add-button-one-90"
-           style="margin-left:20px;width:140px;"
-           @click="addObj"
-        >添加分值段</p>
       </div>
     </el-form>
-    <div class="form-bottom-button-box"
-         v-hasPermi="['exam:markconfig:edit']">
-      <p class="null-p-button"></p>
-      <el-button @click="getList">重 置</el-button>
-      <el-button type="primary" @click="submitForm">保 存</el-button>
-      <p class="null-p-button"></p>
-    </div>
   </div>
 </template>
 
 <script>
-import { listMarkconfig, addpassmark, editpassmark } from "@/api/creditViolation/index";
+import { examMarkConfigList, examMarkConfigAdd, examMarkConfigEdit } from "@/api/creditViolation/index";
 
 export default {
   name: "Markconfig",
@@ -292,10 +286,10 @@ export default {
     /** 查询数据 */
     getList() {
       this.pageType = false;
-      listMarkconfig({pageNum:"1",pageSize:"1"}).then( response => {
-        if(response.rows[0]){
+      examMarkConfigList({pageNum:"1",pageSize:"1"}).then( response => {
+        if(response.data.records[0]){
           //修改
-          let newObj = JSON.parse(JSON.stringify(response.rows[0]));
+          let newObj = JSON.parse(JSON.stringify(response.data.records[0]));
           let obj = {
             id:newObj.id,
             passMark:newObj.passMark,
@@ -304,17 +298,17 @@ export default {
             configDetailList:[],
           };
           //处理一级数据
-          if(newObj.gainSafeCert == 1){
-            obj.gainSafeCert = 1;
+          if(newObj.gainSafeCert){
+            obj.gainSafeCert = true;
             obj.gainSafeCertList.push('gainSafeCert');
           }else{
-            obj.gainSafeCert = ""
+            obj.gainSafeCert = false
           }
-          if(newObj.gainSubSafeCert == 1){
-            obj.gainSubSafeCert = 1;
+          if(newObj.gainSubSafeCert){
+            obj.gainSubSafeCert = true;
             obj.gainSafeCertList.push('gainSubSafeCert');
           }else{
-            obj.gainSubSafeCert = ""
+            obj.gainSubSafeCert = false
           }
           //处理二级数据
           for(let i=0;i<newObj.configDetailList.length;i++){
@@ -326,48 +320,48 @@ export default {
               checkListTwo:[],
             };
             //警告
-            if(newObj.configDetailList[i].warningStatus == 1){
-              minObj.warningStatus = 1;
+            if(newObj.configDetailList[i].warningStatus){
+              minObj.warningStatus = true;
               minObj.checkList.push('warningStatus');
             }else{
-              minObj.warningStatus = 0;
+              minObj.warningStatus = false;
             }
             //约谈
-            if(newObj.configDetailList[i].interviewStatus == 1){
-              minObj.interviewStatus = 1;
+            if(newObj.configDetailList[i].interviewStatus){
+              minObj.interviewStatus = true;
               minObj.checkList.push('interviewStatus');
             }else{
-              minObj.interviewStatus = 0;
+              minObj.interviewStatus = false;
             }
             //考试
-            if(newObj.configDetailList[i].testStatus == 1){
-              minObj.testStatus = 1;
+            if(newObj.configDetailList[i].testStatus){
+              minObj.testStatus = true;
               minObj.checkListTwo.push('testStatus');
             }else{
-              minObj.testStatus = 0;
+              minObj.testStatus = false;
             }
             //学习
-            if(newObj.configDetailList[i].learnStatus == 1){
-              minObj.learnStatus = 1;
+            if(newObj.configDetailList[i].learnStatus){
+              minObj.learnStatus = true;
               minObj.learnHour = newObj.configDetailList[i].learnHour;
               minObj.learnMinute = newObj.configDetailList[i].learnMinute;
               minObj.learnStatusType = true;
               minObj.checkListTwo.push('learnStatus');
             }else{
-              minObj.learnStatus = 0;
+              minObj.learnStatus = false;
               minObj.learnHour = "";
               minObj.learnMinute = "";
               minObj.learnStatusType = false;
             }
             //做题
-            if(newObj.configDetailList[i].practiceStatus == 1){
-              minObj.practiceStatus = 1;
+            if(newObj.configDetailList[i].practiceStatus){
+              minObj.practiceStatus = true;
               minObj.numberTopics = newObj.configDetailList[i].numberTopics;
               minObj.numberAccuracy = newObj.configDetailList[i].numberAccuracy;
               minObj.practiceStatusType = true;
               minObj.checkListTwo.push('practiceStatus');
             }else{
-              minObj.practiceStatus = 0;
+              minObj.practiceStatus = false;
               minObj.numberTopics = "";
               minObj.numberAccuracy = "";
               minObj.practiceStatusType = false;
@@ -435,14 +429,14 @@ export default {
             }
           }
           if(gainSafeCertNum == 0){
-            obj.gainSafeCert = "";
+            obj.gainSafeCert = false;
           }else{
-            obj.gainSafeCert = 1;
+            obj.gainSafeCert = true;
           }
           if(gainSubSafeCertNum == 0){
-            obj.gainSubSafeCert = "";
+            obj.gainSubSafeCert = false;
           }else{
-            obj.gainSubSafeCert = 1;
+            obj.gainSubSafeCert = true;
           }
           //处理二级子项
           for(let i=0;i<newObj.configDetailList.length;i++){
@@ -463,14 +457,14 @@ export default {
               }
             }
             if(warningStatusNum == 0){
-              minObj.warningStatus = "";
+              minObj.warningStatus = false;
             }else{
-              minObj.warningStatus = 1;
+              minObj.warningStatus = true;
             }
             if(interviewStatusNum == 0){
-              minObj.interviewStatus = "";
+              minObj.interviewStatus = false;
             }else{
-              minObj.interviewStatus = 1;
+              minObj.interviewStatus = true;
             }
             //处理二级多选--考试
             let testStatusNum = 0;
@@ -480,39 +474,39 @@ export default {
               }
             }
             if(testStatusNum == 0){
-              minObj.testStatus = "";
+              minObj.testStatus = false;
             }else{
-              minObj.testStatus = 1;
+              minObj.testStatus = true;
             }
             //处理二级多选--学习
             if(newObj.configDetailList[i].learnStatusType){
-              minObj.learnStatus = 1;
+              minObj.learnStatus = true;
               minObj.learnHour = newObj.configDetailList[i].learnHour;
               minObj.learnMinute = newObj.configDetailList[i].learnMinute;
             }else{
-              minObj.learnStatus = "";
+              minObj.learnStatus = false;
               minObj.learnHour = "";
               minObj.learnMinute = "";
             }
             //处理二级多选--做题
             if(newObj.configDetailList[i].practiceStatusType){
-              minObj.practiceStatus = 1;
+              minObj.practiceStatus = true;
               minObj.numberTopics = newObj.configDetailList[i].numberTopics;
               minObj.numberAccuracy = newObj.configDetailList[i].numberAccuracy;
             }else{
-              minObj.practiceStatus = "";
+              minObj.practiceStatus = false;
               minObj.numberTopics = "";
               minObj.numberAccuracy = "";
             }
             obj.configDetailList.push(minObj);
           }
           if(this.form.id){
-            editpassmark(obj).then( response => {
+            examMarkConfigEdit(obj).then( response => {
               this.getList();
               this.msgSuccess("保存成功");
             });
           }else{
-            addpassmark(obj).then( response => {
+            examMarkConfigAdd(obj).then( response => {
               this.msgSuccess("保存成功");
             });
           }
@@ -525,10 +519,6 @@ export default {
 
 <style scoped lang="scss">
   .Markconfig {
-    display: flex!important;
-    flex-direction: column;
-    box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
-    padding:0 20px 0 20px!important;
     .title-p{
       margin:0;
       line-height:80px;
@@ -581,9 +571,9 @@ export default {
           position: relative;
           .position-del-p{
             position: absolute;
-            right:20px;
-            top:0;
-            font-size:20px;
+            right:10px;
+            top:10px;
+            font-size:24px;
             color:#999;
             cursor:pointer;
           }

+ 1 - 1
src/views/creditViolation/credit/pointsRecord/index.vue

@@ -1,4 +1,4 @@
-<!--积分管理-->
+<!--积分列表-->
 <template>
   <div class="app-container points-record">
     <div class="page-form-title-box" v-if="pageType == 1">

+ 9 - 9
src/views/creditViolation/credit/rewardconfig/index.vue

@@ -9,7 +9,7 @@
           placeholder="请输入一个月无违规记录奖励分值"
           maxLength="5"
           clearable
-          size="small">
+          style="width:260px;">
           <template slot="append">分</template>
         </el-input>
       </el-form-item>
@@ -19,7 +19,7 @@
           placeholder="请输入模拟练习做题奖励分值"
           maxLength="5"
           clearable
-          size="small">
+          style="width:260px;">
           <template slot="append">分</template>
         </el-input>
       </el-form-item>
@@ -29,7 +29,7 @@
           placeholder="请输入模拟考试得分值"
           maxLength="5"
           clearable
-          size="small">
+          style="width:260px;">
           <template slot="prepend">1奖励分等于</template>
           <template slot="append">分</template>
         </el-input>
@@ -40,7 +40,7 @@
           placeholder="请输入学习时长奖励分换算值"
           maxLength="5"
           clearable
-          size="small">
+          style="width:260px;">
           <template slot="prepend">1奖励分等于</template>
           <template slot="append">分钟</template>
         </el-input>
@@ -51,7 +51,7 @@
           placeholder="请输入完成签到考勤获得奖励分值"
           maxLength="5"
           clearable
-          size="small">
+          style="width:260px;">
           <template slot="append">分</template>
         </el-input>
       </el-form-item>
@@ -61,7 +61,7 @@
           placeholder="请输入完成离开考勤获得奖励分值"
           maxLength="5"
           clearable
-          size="small">
+          style="width:260px;">
           <template slot="append">分</template>
         </el-input>
       </el-form-item>
@@ -77,7 +77,7 @@
 </template>
 
 <script>
-import { listRewardconfig, updateRewardconfig } from "@/api/creditViolation/index";
+import { examRewardConfigList, examRewardConfigEdit } from "@/api/creditViolation/index";
 
 export default {
   name: "Rewardconfig",
@@ -125,7 +125,7 @@ export default {
   methods: {
     /** 查询数据 */
     getList() {
-      listRewardconfig({}).then( response => {
+      examRewardConfigList({}).then( response => {
         this.$set(this,'form',response.data[0])
       });
     },
@@ -133,7 +133,7 @@ export default {
     submitForm() {
       this.$refs["form"].validate(valid => {
         if (valid) {
-          updateRewardconfig(this.form).then( response => {
+          examRewardConfigEdit(this.form).then( response => {
             this.getList();
             this.msgSuccess("保存成功")
           });

+ 1 - 1
src/views/creditViolation/credit/violation/index.vue

@@ -1,4 +1,4 @@
-<!--违规记录管理-->
+<!--违规记录列表-->
 <template>
   <div class="app-container violation">
     <div class="violationPage" v-if="pageType==1">

+ 24 - 31
src/views/creditViolation/credit/violationSite/index.vue

@@ -3,9 +3,9 @@
   <div class="app-container violation-site">
     <p class="title-p">违规设置</p>
     <el-form class="form-content scrollbar-box" ref="form" :model="form" label-width="100px" :rules="rules">
-      <el-form-item label="负面清单次数设置:" prop="remake" label-width="240px">
+      <el-form-item label="负面清单次数设置:" prop="violationNumber" label-width="240px">
         <el-input
-          v-model="form.remake"
+          v-model="form.violationNumber"
           placeholder="请输入负面清单次数"
           maxLength="5"
           clearable
@@ -22,7 +22,7 @@
             maxLength="14"
             size="small"
           />
-          <p class="add-button-two-90"
+          <p class="page-add-common-style-button"
              style="margin-left:20px;width:140px;"
              @click="addViolationMeth"
           ><i class="el-icon-plus"></i>添加违规项</p>
@@ -54,7 +54,7 @@
 </template>
 
 <script>
-import { listSite, violationSite } from "@/api/creditViolation/index";
+import { examViolationSiteList, examViolationSiteAdd } from "@/api/creditViolation/index";
 
 export default {
   name: "Site",
@@ -66,7 +66,7 @@ export default {
       ],
       form:{
         violationType:[],
-        remake:"",
+        violationNumber:"",
         violationMeth:[
           {
             violationName:"",
@@ -78,7 +78,7 @@ export default {
       violationName:"",
       // 表单校验
       rules: {
-        remake: [
+        violationNumber: [
           { required: true, message: "请输入负面清单次数", trigger: "blur" },
           { required: true, message: "请输入负面清单次数", validator: this.spaceJudgment, trigger: "blur" },
           { required: true, message: "只能输入数字", validator: this.isNum, trigger: "blur" },
@@ -95,29 +95,6 @@ export default {
     this.getList();
   },
   methods: {
-    //添加处理方式
-    addViolationVal(){
-      let self = this;
-      if(!this.violationVal){
-        this.msgError("请先输入处理方式名称")
-        return
-      }
-      for(let i=0;i<self.form.violationType.length;i++){
-        if(self.violationVal == self.form.violationType[i].violationVal){
-          self.msgError("已存在相同名称的处理方式");
-          return
-        }
-      }
-      let obj = {
-        violationVal:this.violationVal,
-      };
-      this.form.violationType.push(obj);
-      this.violationVal = "";
-    },
-    //删除处理方式
-    delViolationVal(index){
-      this.form.violationType.splice(index,1);
-    },
     //添加违规项
     addViolationMeth(){
       let self = this;
@@ -144,7 +121,7 @@ export default {
     },
     /** 查询数据 */
     getList() {
-      listSite({}).then( response => {
+      examViolationSiteList({}).then( response => {
         this.$set(this,'form',response.data)
       });
     },
@@ -152,7 +129,23 @@ export default {
     submitForm() {
       this.$refs["form"].validate(valid => {
         if (valid) {
-          violationSite(this.form).then( response => {
+          let obj = {
+            violationMeth: [
+              {
+                violationVal: this.form.violationNumber,
+                violationName: "负面清单次数",
+                violationType: 0,
+              }
+            ]
+          }
+          this.form.violationMeth.forEach((item)=>{
+            obj.violationMeth.push({
+              violationVal:item.violationVal,
+              violationName:item.violationName,
+              violationType:1,
+            })
+          })
+          examViolationSiteAdd(obj).then( response => {
             this.getList();
             this.msgSuccess("保存成功")
           });

+ 4 - 10
src/views/creditViolation/myViolation/violation_my/index.vue

@@ -106,7 +106,7 @@
 </template>
 
 <script>
-import { getByIdlist,getSemesterList } from "@/api/creditViolation/index";
+import { examViolationMyList } from "@/api/creditViolation/index";
 
 export default {
   name: "Violation",
@@ -163,14 +163,8 @@ export default {
   },
   mounted(){
     this.getList();
-    // this.getSemesterList();
   },
   methods: {
-    getSemesterList(){
-      getSemesterList(this.queryParams).then( res => {
-        this.semesterList = res.data;
-      });
-    },
     //立即考试
     goPage(type,row){
       if (type == 1){
@@ -198,13 +192,13 @@ export default {
     getList() {
       this.loading = true;
       if(this.dateRange[0]){
-        this.queryParams.beginTime = this.dateRange[0];
-        this.queryParams.endTime = this.dateRange[1];
+        this.queryParams.beginTime = this.dateRange[0]+'T00:00:00';
+        this.queryParams.endTime = this.dateRange[1]+'T23:59:59';
       }else {
         this.queryParams.beginTime=null;
         this.queryParams.endTime=null
       }
-      getByIdlist(this.queryParams).then(response => {
+      examViolationMyList(this.queryParams).then(response => {
         this.violationList = response.rows;
         this.total = response.total;
         this.loading = false;

+ 422 - 31
src/views/serviceCenter/externalLink/index.vue

@@ -76,14 +76,10 @@
                 <p class="table-button-null"></p>
                 <p class="table-button-p"
                    @click="tableButton(2,scope.row)"
-                   v-hasPermiRouter="['demo:demo:detail']"
-                >详情</p>
-                <p class="table-button-p"
-                   @click="tableButton(3,scope.row)"
                    v-hasPermiRouter="['demo:demo:edit']"
                 >编辑</p>
                 <p class="table-button-p"
-                   @click="tableButton(4,scope.row)"
+                   @click="tableButton(3,scope.row)"
                    v-hasPermiRouter="['demo:demo:del']"
                 >删除</p>
                 <p class="table-button-null"></p>
@@ -100,21 +96,128 @@
         />
       </div>
     </div>
-    <el-dialog class="externalLink-dialog" :title="externalLinkDialogTitle"
+    <el-dialog class="externalLink-dialog" :title="dialogForm.id?'编辑':'新增'"
                :visible.sync="externalLinkDialogType" v-if="externalLinkDialogType" width="1240px" height="700"
                append-to-body :close-on-click-modal="false" @close="dialogOff()">
       <div class="externalLink-dialog-max-big-box">
         <el-form :model="dialogForm" class="dialogForm" ref="dialogForm"
-                 :rules="rules" style="width:100%;" label-width="90px">
-          <el-form-item label="名称:" prop="name">
-            <el-input
-              maxLength="20"
-              v-model="dialogForm.linkName"
-              placeholder="请输入名称"
-              clearable
-              style="width: 360px"
-            />
-          </el-form-item>
+                 :rules="rules" style="width:100%;" label-width="100px">
+          <div class="externalLink-dialog-big-box">
+            <div class="externalLink-dialog-left-box">
+              <el-form-item label="名称:" prop="linkName">
+                <el-input
+                  maxLength="20"
+                  v-model="dialogForm.linkName"
+                  placeholder="请输入名称"
+                  clearable
+                  style="width: 280px"
+                />
+              </el-form-item>
+              <el-form-item label="链接地址:" prop="linkUrl">
+                <el-input
+                  maxLength="50"
+                  v-model="dialogForm.linkUrl"
+                  placeholder="请输入链接地址"
+                  clearable
+                  style="width: 280px"
+                />
+              </el-form-item>
+              <el-form-item label="跳转类型:" prop="skipType">
+                <el-radio-group v-model="dialogForm.skipType">
+                  <el-radio :label="false" style="width:70px;">当前窗口</el-radio>
+                  <el-radio :label="true" style="width:70px;">新窗口</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item label="登录验证:" prop="isAuth">
+                <el-radio-group v-model="dialogForm.isAuth">
+                  <el-radio :label="false" style="width:70px;">否</el-radio>
+                  <el-radio :label="true" style="width:70px;">是</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item label="认证方式:" prop="authMode">
+                <el-radio-group v-model="dialogForm.authMode">
+                  <el-radio :label=0 style="width:70px;">无</el-radio>
+                  <el-radio :label=2 style="width:70px;">cookie</el-radio>
+                  <el-radio :label=1 style="width:70px;">携参</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item label="请求地址:" prop="reqApi" v-if="dialogForm.isAuth">
+                <el-input
+                  maxLength="20"
+                  v-model="dialogForm.reqApi"
+                  placeholder="请输入请求地址"
+                  clearable
+                  style="width: 280px"
+                />
+              </el-form-item>
+              <el-form-item label="请求类型:" prop="reqMethod" v-if="dialogForm.isAuth">
+                <el-radio-group v-model="dialogForm.reqMethod">
+                  <el-radio label="post" style="width:60px;">POST</el-radio>
+                  <el-radio label="get" style="width:60px;">GET</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </div>
+            <div class="externalLink-dialog-center-box scrollbar-box" v-if="dialogForm.isAuth">
+              <el-form-item label="请求参数:" prop="authMode">
+                <div class="for-custom-parameter-max-big-box" v-for="(item,index) in dialogForm.requestArgument" :key="index">
+                  <div class="input-box">
+                    <el-select v-model="item.type" placeholder="请选择参数类型" clearable size="small">
+                      <el-option
+                        v-for="dict in typeOptions"
+                        :key="dict.value"
+                        :label="dict.name"
+                        :value="dict.value"
+                      />
+                    </el-select>
+                    <el-input class="top-border" v-if="item.type != 5" maxLength="20"
+                              v-model="item.key" placeholder="请输入key"/>
+                    <el-input class="top-border" v-if="item.type == 1" maxLength="50"
+                              v-model="item.value" placeholder="请输入value"/>
+                    <el-select class="top-border" v-model="item.num" v-if="item.type == 5" placeholder="请选择时间戳长度" clearable size="small">
+                      <el-option key="10" label="10位时间戳" value="10"/>
+                      <el-option key="13" label="13位时间戳" value="13"/>
+                    </el-select>
+                  </div>
+                  <div class="del-button-box" @click="delRequestArgument(index)">
+                    <p class="del-button-null"></p>
+                    <p class="del-button el-icon-remove"></p>
+                    <p class="del-button-null"></p>
+                  </div>
+                </div>
+                <p class="el-icon-circle-plus-outline add-button" @click="addRequestArgument" v-if="!dialogForm.requestArgument[4]"></p>
+              </el-form-item>
+            </div>
+            <div class="externalLink-dialog-right-box scrollbar-box" v-if="dialogForm.authMode == '1'">
+              <el-form-item label="携带参数:" prop="authMode">
+                <div class="for-custom-parameter-max-big-box" v-for="(item,index) in dialogForm.carryArgument" :key="index">
+                  <div class="input-box">
+                    <el-select v-model="item.type" placeholder="请选择参数类型" clearable size="small">
+                      <el-option
+                        v-for="dict in typeOptions"
+                        :key="dict.value"
+                        :label="dict.name"
+                        :value="dict.value"
+                      />
+                    </el-select>
+                    <el-input class="top-border" v-if="item.type != 5" maxLength="20"
+                              v-model="item.key" placeholder="请输入key"/>
+                    <el-input class="top-border" v-if="item.type == 1"  maxLength="50"
+                              v-model="item.value" placeholder="请输入value"/>
+                    <el-select class="top-border" v-model="item.num" v-if="item.type == 5" placeholder="请选择时间戳长度" clearable size="small">
+                      <el-option key="10" label="10位时间戳" value="10"/>
+                      <el-option key="13" label="13位时间戳" value="13"/>
+                    </el-select>
+                  </div>
+                  <div class="del-button-box" @click="delCarryArgument(index)">
+                    <p class="del-button-null"></p>
+                    <p class="del-button el-icon-remove"></p>
+                    <p class="del-button-null"></p>
+                  </div>
+                </div>
+                <p class="el-icon-circle-plus-outline add-button" @click="addCarryArgument" v-if="!dialogForm.carryArgument[4]"></p>
+              </el-form-item>
+            </div>
+          </div>
         </el-form>
       </div>
       <div slot="footer" class="dialog-footer dialog-footer-box">
@@ -155,7 +258,6 @@
         //组件传参
         propsData:{},
         //弹窗参数
-        externalLinkDialogTitle:'',
         externalLinkDialogType:false,
         dialogForm:{},
         rules:{
@@ -163,7 +265,38 @@
             { required: true, message: '请输入名称', trigger: 'blur' },
             { required: true, message: "请输入名称", validator: this.spaceJudgment, trigger: "blur" }
           ],
+          linkUrl:[
+            { required: true, message: '请输入链接地址', trigger: 'blur' },
+            { required: true, message: "请输入链接地址", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          skipType:[
+            { required: true, message: '请选择跳转类型', trigger: 'blur' },
+            { required: true, message: "请选择跳转类型", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          isAuth:[
+            { required: true, message: '请选择登录验证', trigger: 'blur' },
+            { required: true, message: "请选择登录验证", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          authMode:[
+            { required: true, message: '请选择认证方式', trigger: 'blur' },
+            { required: true, message: "请选择认证方式", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          reqMethod:[
+            { required: true, message: '请选择请求类型', trigger: 'blur' },
+            { required: true, message: "请选择请求类型", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          reqApi:[
+            { required: true, message: '请输入请求地址', trigger: 'blur' },
+            { required: true, message: "请输入请求地址", validator: this.spaceJudgment, trigger: "blur" }
+          ],
         },
+        typeOptions:[
+          {name:'数据',value:'1'},
+          {name:'cookie',value:'2'},
+          {name:'localStorage',value:'3'},
+          {name:'sessionStorage',value:'4'},
+          {name:'timestamp',value:'5'},//13位10位
+        ],
       }
     },
     created () {
@@ -204,21 +337,25 @@
         let self = this;
         if(type == 1){
           //新增
-          this.$set(this,'dialogForm',{});
+          this.dialogFormReset();
           this.$set(this,'externalLinkDialogType',true);
         }else if(type == 2){
           //详情
-          this.$set(this,'pageType',2);
-          let obj = JSON.parse(JSON.stringify(row))
-          obj.showType = true;
-          this.$set(this,'propsData',obj);
+          let params = JSON.parse(row.params)
+          let obj = {
+            linkName:row.linkName,
+            linkUrl:row.linkUrl,
+            skipType:row.skipType,
+            isAuth:row.isAuth,
+            authMode:row.authMode,
+            reqApi:row.isAuth?row.reqApi:'',
+            reqMethod:row.isAuth?row.reqMethod:'',
+            requestArgument:params.requestArgument,
+            carryArgument:params.carryArgument,
+          };
+          this.$set(this,'dialogForm',JSON.parse(JSON.stringify(obj)));
+          this.$set(this,'externalLinkDialogType',true);
         }else if(type == 3){
-          //编辑
-          this.$set(this,'pageType',2);
-          let obj = JSON.parse(JSON.stringify(row))
-          obj.showType = false;
-          this.$set(this,'propsData',obj);
-        }else if(type == 4){
           //删除
           this.$confirm('是否确认删除?', "警告", {
             confirmButtonText: "确定",
@@ -226,7 +363,7 @@
             type: "warning"
           }).then(function() {
           }).then(() => {
-            deleteFunction({id:row.id}).then(response => {
+            systemLinkDelete({id:row.id}).then(response => {
               self.msgSuccess(response.message)
               self.getList();
             });
@@ -235,7 +372,187 @@
       },
       //弹窗关闭
       dialogOff(){
-
+        this.$set(this,'externalLinkDialogType',false);
+      },
+      //提交接口
+      dialogSubmit(){
+        let self = this;
+        this.$refs["dialogForm"].validate(valid => {
+          if (valid) {
+            //检查请求参数
+            if(this.dialogForm.isAuth){
+              if(!this.dialogForm.requestArgument[0]){
+                this.msgError('请添加请求参数')
+                return
+              }
+              for(let i=0;i<self.dialogForm.requestArgument.length;i++){
+                if(!self.dialogForm.requestArgument[i].type){
+                  this.msgError('请选择第 '+(i+1)+' 条,请求参数的参数类型')
+                  return
+                }else if(self.dialogForm.requestArgument[i].type == 1){
+                  if(!self.dialogForm.requestArgument[i].key){
+                    this.msgError('请输入第 '+(i+1)+' 条,请求参数的key')
+                    return
+                  }else if(!self.dialogForm.requestArgument[i].value){
+                    this.msgError('请输入第 '+(i+1)+' 条,请求参数的value')
+                    return
+                  }
+                }else if(self.dialogForm.requestArgument[i].type == 2 ||
+                  self.dialogForm.requestArgument[i].type == 3 ||
+                  self.dialogForm.requestArgument[i].type == 4){
+                  if(!self.dialogForm.requestArgument[i].key){
+                    this.msgError('请输入第 '+(i+1)+' 条,请求参数的key')
+                    return
+                  }
+                }else if(self.dialogForm.requestArgument[i].type == 5){
+                  if(!self.dialogForm.requestArgument[i].num){
+                    this.msgError('请选择第 '+(i+1)+' 条,请求参数的时间戳长度')
+                    return
+                  }
+                }
+              }
+            }
+            //检查携带参数
+            if(this.dialogForm.authMode == 1){
+              if(!this.dialogForm.carryArgument[0]){
+                this.msgError('请添加携带参数')
+                return
+              }
+              for(let i=0;i<self.dialogForm.carryArgument.length;i++){
+                if(!self.dialogForm.carryArgument[i].type){
+                  this.msgError('请选择第 '+(i+1)+' 条,携带参数的参数类型')
+                  return
+                }else if(self.dialogForm.carryArgument[i].type == 1){
+                  if(!self.dialogForm.carryArgument[i].key){
+                    this.msgError('请输入第 '+(i+1)+' 条,携带参数的key')
+                    return
+                  }else if(!self.dialogForm.carryArgument[i].value){
+                    this.msgError('请输入第 '+(i+1)+' 条,携带参数的value')
+                    return
+                  }
+                }else if(self.dialogForm.carryArgument[i].type == 2 ||
+                  self.dialogForm.carryArgument[i].type == 3 ||
+                  self.dialogForm.carryArgument[i].type == 4){
+                  if(!self.dialogForm.carryArgument[i].key){
+                    this.msgError('请输入第 '+(i+1)+' 条,携带参数的key')
+                    return
+                  }
+                }else if(self.dialogForm.carryArgument[i].type == 5){
+                  if(!self.dialogForm.carryArgument[i].num){
+                    this.msgError('请选择第 '+(i+1)+' 条,携带参数的时间戳长度')
+                    return
+                  }
+                }
+              }
+            }
+            //数据处理
+            let requestArgument = [];
+            let carryArgument = [];
+            this.dialogForm.requestArgument.forEach((item)=>{
+              let minObj = {
+                type:item.type
+              }
+              if(item.type == 1){
+                minObj.key = item.key;
+                minObj.value = item.value;
+              }else if(item.type == 2 || item.type == 3 || item.type == 4){
+                minObj.key = item.key;
+              }else if(item.type == 5){
+                minObj.num = item.num;
+              }
+              requestArgument.push(minObj)
+            })
+            this.dialogForm.carryArgument.forEach((item)=>{
+              let minObj = {
+                type:item.type
+              }
+              if(item.type == 1){
+                minObj.key = item.key;
+                minObj.value = item.value;
+              }else if(item.type == 2 || item.type == 3 || item.type == 4){
+                minObj.key = item.key;
+              }else if(item.type == 5){
+                minObj.num = item.num;
+              }
+              carryArgument.push(minObj)
+            })
+            let params = {
+              requestArgument:requestArgument,
+              carryArgument:carryArgument,
+            }
+            let obj = {
+              linkName:this.dialogForm.linkName,
+              linkUrl:this.dialogForm.linkUrl,
+              skipType:this.dialogForm.skipType,
+              isAuth:this.dialogForm.isAuth,
+              authMode:this.dialogForm.authMode,
+              reqApi:this.dialogForm.isAuth?this.dialogForm.reqApi:'',
+              reqMethod:this.dialogForm.isAuth?this.dialogForm.reqMethod:'',
+              params:JSON.stringify(params),
+            };
+            if(this.dialogForm.id){
+              obj.id = this.dialogForm.id
+              this.systemLinkUpdate(obj);
+            }else{
+              this.systemLinkAdd(obj);
+            }
+          }
+        })
+      },
+      //重置弹窗数据
+      dialogFormReset(){
+        this.$set(this,'dialogForm',{
+          linkName:'',
+          linkUrl:'',
+          skipType:false,
+          isAuth:false,
+          reqApi:'',
+          reqMethod:'post',
+          authMode:0,
+          requestArgument:[],
+          carryArgument:[],
+        });
+      },
+      //新增请求参数
+      addRequestArgument(){
+        this.dialogForm.requestArgument.push({
+          type:'',
+        })
+      },
+      //删除请求参数
+      delRequestArgument(index){
+        this.dialogForm.requestArgument.splice(index,1);
+      },
+      //新增携带参数
+      addCarryArgument(){
+        this.dialogForm.carryArgument.push({
+          type:'',
+          key:'',
+          value:'',
+          num:'',
+        })
+      },
+      //删除携带参数
+      delCarryArgument(index){
+        this.dialogForm.carryArgument.splice(index,1);
+      },
+      //新增接口
+      systemLinkAdd(obj){
+        systemLinkAdd(obj).then(response => {
+          this.msgSuccess(response.message)
+          this.$set(this,'externalLinkDialogType',false);
+          this.dialogFormReset();
+          this.getList();
+        });
+      },
+      //编辑接口
+      systemLinkUpdate(obj){
+        systemLinkUpdate(obj).then(response => {
+          this.msgSuccess(response.message)
+          this.$set(this,'externalLinkDialogType',false);
+          this.dialogFormReset();
+          this.getList();
+        });
       },
     },
   }
@@ -243,7 +560,81 @@
 <style scoped lang="scss">
   .externalLink{
     .externalLinkPage{
-
+    }
+  }
+</style>
+<style lang="scss">
+  .externalLink-dialog{
+    .externalLink-dialog-max-big-box{
+      .externalLink-dialog-big-box{
+        display: flex;
+        height:520px;
+        .externalLink-dialog-left-box{
+          width:400px;
+        }
+        .externalLink-dialog-center-box{
+          padding-left:20px;
+          width:400px;
+          border-left:1px dashed #dedede;
+        }
+        .externalLink-dialog-right-box{
+          padding-left:20px;
+          width:400px;
+          border-left:1px dashed #dedede;
+        }
+        .for-custom-parameter-max-big-box{
+          display: flex;
+          width:260px;
+          margin-bottom:20px;
+          .input-box{
+            flex:1;
+            border: 1px solid #999;
+            border-right:none;
+            border-top-left-radius:4px;
+            border-bottom-left-radius:4px;
+            .top-border{
+              border-top:1px solid #999;
+            }
+            .el-input--suffix{
+              border:none;
+            }
+            .el-input__inner{
+              border:none;
+            }
+          }
+          .del-button-box{
+            display: flex;
+            flex-direction: column;
+            width:30px;
+            background-color: #FF6666;
+            border:1px solid #FF6666;
+            border-top-right-radius:4px;
+            border-bottom-right-radius:4px;
+            cursor: pointer;
+            .del-button-null{
+              flex:1;
+            }
+            .del-button{
+              line-height:83px;
+              text-align: center;
+              font-size:20px;
+              color:#fff;
+            }
+          }
+        }
+        .add-button{
+          width:260px;
+          height:40px;
+          line-height:40px;
+          text-align: center;
+          font-size:20px;
+          color:#fff;
+          background-color: #0183FA;
+          border:1px solid #0183FA;
+          border-radius:4px;
+          cursor: pointer;
+        }
+      }
     }
   }
 </style>