ソースを参照

Merge branch 'web-v2' into nhkd-web

dedsudiyu 2 年 前
コミット
b1bcfb398e

+ 1 - 1
src/api/laboratory/subject.js

@@ -393,7 +393,7 @@ export function abnormalLogOrderByList(query) {
 //消息推送记录
 export function viewWarnMessage(query) {
   return request({
-    url: '/laboratory/bigview/'+query+'/warn/message',
+    url: '/laboratory/bigview/'+query+'/warn/getRiskLog',
     method: 'get',
   })
 }

BIN
src/assets/ZDimages/bigData3_2/icon_znjc_hwcw.png


BIN
src/assets/ZDimages/bigData3_2/icon_znjc_hwcw_yc.png


BIN
src/assets/ZDimages/subject/icon_syspz_hwcw.png


+ 19 - 7
src/utils/ruoyi.js

@@ -251,12 +251,24 @@ export function spaceJudgmentHTML(rule, value, callback) {
  * 预览地址判断
  */
 export function urlJudge(url) {
-  let src = '';
-  if(url.indexOf('http') !== -1){
-    let text =  window.location.href.split('://')[0]+'://' + url.split('://')[1]
-    src = localStorage.getItem('filePreviewUrl') + '/onlinePreview?url='+encodeURIComponent(btoa(unescape(encodeURIComponent(text))));
-  }else{
-    src = localStorage.getItem('filePreviewUrl') + '/onlinePreview?url='+encodeURIComponent(btoa(unescape(encodeURIComponent(window.location.href.split('://')[0]+'://' +process.env.VUE_APP_BASE_API +'/admin/'+ url))));
+  // let src = '';
+  url = '/admin/statics'+url.split('statics')[1]
+  // console.log('url',url);
+  let location = window.location.href
+  // console.log('location',location)
+  if (location.indexOf('?#/') !== -1){
+    location = location.split('?#/')[0]
+    // console.log('location1',location)
+  }else if(location.indexOf('/#/') !== -1){
+    location = location.split('/#/')[0]
+    // console.log('location2',location)
   }
-  return src
+  // console.log('src',src)
+  // if(url.indexOf('http') !== -1){
+  //   let text =  window.location.href.split('://')[0]+'://' + url.split('://')[1]
+  //   src = localStorage.getItem('filePreviewUrl') + '/onlinePreview?url='+encodeURIComponent(btoa(unescape(encodeURIComponent(text))));
+  // }else{
+  //   src = localStorage.getItem('filePreviewUrl') + '/onlinePreview?url='+encodeURIComponent(btoa(unescape(encodeURIComponent(window.location.href.split('://')[0]+'://' +process.env.VUE_APP_BASE_API +'/admin/'+ url))));
+  // }
+  return location + url
 }

+ 9 - 8
src/views/comprehensive/laboratoryManagement/subject/index.vue

@@ -118,6 +118,7 @@
                     <img src="@/assets/ZDimages/subject/guangqi.png" v-if="item.funNum == 'guangqi'">
                     <img src="@/assets/ZDimages/subject/lvqi.png" v-if="item.funNum == 'lvqi'">
                     <img src="@/assets/ZDimages/subject/icon_syspz_jiaquan.png" v-if="item.funNum == 'jiaquan'">
+                    <img src="@/assets/ZDimages/subject/icon_syspz_hwcw.png" v-if="item.funNum == 'hwcwy'">
                     <div>
                       <el-tooltip class="item" effect="dark" :content="item.describe" placement="bottom">
                         <p>{{item.describe|ellipsis}}</p>
@@ -559,12 +560,12 @@ export default {
           if(urlText.indexOf(localStorage.getItem('ipIdentify')) != -1){
             startUrl(obj).then(res => {
               if(res.code == 200){
-                if(!res.data.data[0]){
+                if(!res.data[0]){
                   this.msgError("视频配置异常请联系管理员")
                   this.newData.videoData = [];
                   this.pageType = 6;
                 }else{
-                  let newData = res.data.data;
+                  let newData = res.data;
                   let videoList = [];
                   for(let i=0;i<newData.length;i++){
                     let obj = {
@@ -583,12 +584,12 @@ export default {
           }else{
             startUrl(obj).then(res => {
               if(res.code == 200){
-                if(!res.data.data[0]){
+                if(!res.data[0]){
                   this.msgError("视频配置异常请联系管理员")
                   this.newData.videoData = [];
                   this.pageType = 6;
                 }else{
-                  let newData = res.data.data;
+                  let newData = res.data;
                   let videoList = [];
                   for(let i=0;i<newData.length;i++){
                     let text = localStorage.getItem('cameraUrl');
@@ -673,11 +674,11 @@ export default {
                 startUrl(obj).then(res => {
                   console.log('res',res)
                   if(res.code == 200){
-                    if(!res.data.data[0]){
+                    if(!res.data[0]){
                       this.msgError("视频配置异常请联系管理员")
                       return
                     }
-                    let newData = res.data.data;
+                    let newData = res.data;
                     let videoList = [];
                     for(let i=0;i<newData.length;i++){
                       let obj = {
@@ -700,11 +701,11 @@ export default {
                 startUrl(obj).then(res => {
                   console.log('res',res)
                   if(res.code == 200){
-                    if(!res.data.data[0]){
+                    if(!res.data[0]){
                       this.msgError("视频配置异常请联系管理员")
                       return
                     }
-                    let newData = res.data.data;
+                    let newData = res.data;
                     let videoList = [];
                     for(let i=0;i<newData.length;i++){
                       let text = localStorage.getItem('cameraUrl');

+ 9 - 1
src/views/emergencyManagement/plan/index.vue

@@ -125,6 +125,13 @@ export default {
   },
   name: "Plan",
   data() {
+    const exportconstvalidateContacts  = (rule, value, callback) => {
+      if(!/^[\u0391-\uFFE50-9]+$/.test(value)) {
+        callback(new Error("只可输入中文与数字"));
+      } else {
+        callback()
+      }
+    };
     return {
       tableButtonType:this.hasPermiDom(['laboratory:plan:query','laboratory:planjoin:edit','laboratory:distribution:list','laboratory:plan:query','laboratory:plan:edit','laboratory:plan:remove']),
       //页面状态
@@ -162,7 +169,8 @@ export default {
       rules: {
         name: [
           { required: true, message: "请输入预案名称", trigger: "change" },
-          { required: true, message: "请输入预案名称", validator: this.spaceJudgment, trigger: "change" }
+          { required: true, message: "请输入预案名称", validator: this.spaceJudgment, trigger: "change" },
+          { required: true, validator: exportconstvalidateContacts, trigger: "blur" },
         ],
       },
       //关联页面传参数据

+ 62 - 13
src/views/emergencyManagement/plan/newAddPlan.vue

@@ -119,11 +119,13 @@
               </div>
               <div style="flex:1;display: flex">
                 <el-form-item label="监测区间:" :prop="'riskPlanSensorList.'+index+'.minMonitor'" :rules="rules.minMonitor">
-                  <el-input-number  v-model="item.minMonitor" style="width:90px;" :min="1" :max="99999" :controls="false" placeholder="监测区间"></el-input-number>
+                  <el-input-number  v-model="item.minMonitor" style="width:90px;" :disabled="item.suoType"
+                                    :min="1" :max="99999" :controls="false" placeholder="监测区间"></el-input-number>
                 </el-form-item>
                 <p style="width:30px;text-align: center;line-height:40px;">-</p>
                 <el-form-item label="" :prop="'riskPlanSensorList.'+index+'.maxMonitor'" :rules="rules.maxMonitor" label-width="0">
-                  <el-input-number  v-model="item.maxMonitor" style="width:90px;" :min="1" :max="99999" :controls="false" placeholder="监测区间"></el-input-number>
+                  <el-input-number  v-model="item.maxMonitor" style="width:90px;" :disabled="item.suoType"
+                                    :min="1" :max="99999" :controls="false" placeholder="监测区间"></el-input-number>
                 </el-form-item>
                 <p class="el-icon-delete"
                    @click="delMinData(1,index)"
@@ -131,7 +133,7 @@
               </div>
             </div>
             <p style="cursor: pointer;width:200px;line-height:30px;border-radius:4px;border: 1px dashed #E0E0E0;color:#333333;text-align: center;margin:20px auto;"
-               @click="addMinData(1)">+ 新增监测规则</p>
+               @click="addMinData(1)" :class="dialogForm.riskPlanSensorList.length>8?'add-plan-max-button-color':''">+ 新增监测规则</p>
           </div>
           <div style="border-top:1px solid #e0e0e0;">
             <p style="line-height:60px;font-size:14px;margin-left:19px;">执行动作:</p>
@@ -173,7 +175,7 @@
               </div>
             </div>
             <p style="cursor: pointer;width:200px;line-height:30px;border-radius:4px;border: 1px dashed #E0E0E0;color:#333333;text-align: center;margin:20px auto;"
-               @click="addMinData(2)">+ 新增执行动作</p>
+               @click="addMinData(2)" :class="dialogForm.riskPlanHardwareList.length>8?'add-plan-max-button-color':''">+ 新增执行动作</p>
           </div>
         </el-form>
       </div>
@@ -201,6 +203,13 @@
       addPlanData:{},
     },
     data() {
+      const exportconstvalidateContacts  = (rule, value, callback) => {
+        if(!/^[\u0391-\uFFE50-9]+$/.test(value)) {
+          callback(new Error("只可输入中文与数字"));
+        } else {
+          callback()
+        }
+      };
       return {
         form:{
           name:"",
@@ -214,7 +223,8 @@
         rules: {
           name: [
             { required: true, message: "请输入预案名称", trigger: "change" },
-            { required: true, message: "请输入预案名称", validator: this.spaceJudgment, trigger: "change" }
+            { required: true, message: "请输入预案名称", validator: this.spaceJudgment, trigger: "change" },
+            { required: true, validator: exportconstvalidateContacts, trigger: "blur" },
           ],
           riskPlanLevel: [
             { required: true, message: "请选择预案等级", trigger: "change" },
@@ -275,6 +285,17 @@
         for(let i=0;i<self.sensorList.length;i++){
           if(self.sensorList[i].hardwareTypeCode == val){
             this.$set(self.dialogForm.riskPlanSensorList[index],'funNum',self.sensorList[i].hardwareTypeName);
+            if(self.sensorList[i].enumName == "FLAME"){
+              console.log('self.sensorList[i].enumName',self.sensorList[i].enumName)
+              self.dialogForm.riskPlanSensorList[index].minMonitor = 1;
+              self.dialogForm.riskPlanSensorList[index].maxMonitor = 2;
+              self.$set(self.dialogForm.riskPlanSensorList[index],'minMonitor',1);
+              self.$set(self.dialogForm.riskPlanSensorList[index],'maxMonitor',2);
+              self.$set(self.dialogForm.riskPlanSensorList[index],'suoType',true);
+              console.log('self.dialogForm.riskPlanSensorList.riskPlanSensorList',self.dialogForm.riskPlanSensorList)
+            }else{
+              self.$set(self.dialogForm.riskPlanSensorList[index],'suoType',false);
+            }
           }
         }
       },
@@ -287,10 +308,14 @@
           this.$set(this,'inputType',true);
           this.$set(this.form,'name',this.inputName);
         }else if(type == 3){
-          putPlan({ id:this.addPlanData.id, name:this.form.name }).then((response) => {
-            this.msgSuccess(response.msg)
-            this.$set(this,'inputType',true);
-          });
+          this.$refs["form"].validate(valid => {
+              if (valid) {
+                putPlan({ id:this.addPlanData.id, name:this.form.name }).then((response) => {
+                  this.msgSuccess(response.msg)
+                  this.$set(this,'inputType',true);
+                });
+              }
+          })
         }
       },
       //提交
@@ -395,6 +420,9 @@
       //提交
       submitForm(){
         let self = this;
+
+        this.$refs["dialogForm"].validate(valid => {
+          if (valid) {
         if(!this.dialogForm.riskPlanSensorList[0]){
           this.msgError('请添加至少一个启动条件')
           return
@@ -499,8 +527,8 @@
             }
           }
         }
-        this.$refs["dialogForm"].validate(valid => {
-          if (valid) {
+        // this.$refs["dialogForm"].validate(valid => {
+        //   if (valid) {
             if(this.dialogIndex != null){
               //修改预案级别数据
               let text = [];
@@ -565,6 +593,8 @@
                 this.$set(this,'dialogOpen',false);
               });
             }
+        //   }
+        // })
           }
         })
       },
@@ -576,10 +606,25 @@
       buttonClick(type,item,index){
         let self = this;
         if(type == 1){
+          let a = 0;
+          let b = 0;
+          let c = 0;
+          let d = 0;
+          for(let i=0;i<self.form.labRiskPlanLevels.length;i++){
+            if(self.form.labRiskPlanLevels[i].riskPlanLevel == 1){
+              a++
+            }else if(self.form.labRiskPlanLevels[i].riskPlanLevel == 2){
+              b++
+            }else if(self.form.labRiskPlanLevels[i].riskPlanLevel == 3){
+              c++
+            }else if(self.form.labRiskPlanLevels[i].riskPlanLevel == 4){
+              d++
+            }
+          }
           this.$set(this,'dialogIndex',null);
           this.$set(this,'dialogTitle','新增预案规则');
           this.$set(this,'dialogForm',{
-            riskPlanLevel:null,
+            riskPlanLevel:a==0?1:(b==0?2:(c==0?3:(d==0?4:''))),
             ifExit:null,
             riskPlanSensorList:[],
             riskPlanHardwareList:[],
@@ -649,7 +694,11 @@
     }
   }
 </script>
-
+<style lang="scss">
+  .add-plan-max-button-color{
+    color:#dedede!important;
+  }
+</style>
 <style scoped lang="scss">
   .newAddPlan {
     flex: 1;

+ 16 - 6
src/views/emergencyManagement/plan/newAssociatedPage.vue

@@ -64,12 +64,20 @@
 
       <el-table v-loading="loading" border :data="tableData">
         <el-table-column label="实验室" align="left" prop="name" width="300" show-overflow-tooltip/>
-        <el-table-column label="安全分类" align="left" prop="typeName" width="140"/>
-        <el-table-column label="安全分级" align="left" prop="leveName" width="140"/>
+        <el-table-column label="安全分类" align="left" prop="typeName" width="140">
+          <template slot-scope="scope">
+            <span v-for="(item,index) in typeList" :key="index" v-if="item.id == scope.row.typeId">{{item.typeName}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="安全分级" align="left" prop="leveName" width="140">
+          <template slot-scope="scope">
+            <span v-for="(item,index) in levelList" :key="index" v-if="item.id == scope.row.level">{{item.classifiedName}}</span>
+          </template>
+        </el-table-column>
         <el-table-column label="危险源" align="left" prop="labSensorHazardRelationsList" show-overflow-tooltip>
           <template slot-scope="scope">
             <span style="margin-right:10px;" v-for="(item,index) in scope.row.labSensorHazardRelationsList" :key="index">
-              {{item.hazardName}}-{{item.sensorName}}
+              {{item.hazardName}} - {{item.sensorName}}
             </span>
           </template>
         </el-table-column>
@@ -402,11 +410,13 @@
         }else if(type == 2){
           item.buttonType = 0;
         }else if(type == 3){
-          if(item.sensorId == null){
+          console.log('sensorId',item.sensorId)
+          console.log('hazardSubjectId',item.hazardSubjectId)
+          if(item.hazardSubjectId == null){
             this.msgError('请选择要添加的危险源')
             return
           }
-          if(item.hazardSubjectId == null){
+          if(item.sensorId == null){
             this.msgError('请选择要添加的传感器')
             return
           }
@@ -459,7 +469,7 @@
       //删除关联实验室
       handleDelete(item){
         let self = this;
-        this.$confirm('确定要删除该预案规则吗?', "警告", {
+        this.$confirm('您确定要移除该实验室吗?', "警告", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"

+ 16 - 11
src/views/newEvacuationBigData.vue

@@ -314,7 +314,8 @@
           <div class="user-max-box scrollbar-box" id="user-max-box">
             <div class="user-box" v-for="(item,index) in userList" :key="index">
               <div>
-                <img :src="item.avatar">
+                <img v-if="item.avatar" :src="item.avatar">
+                <img v-if="!item.avatar" src="@/assets/ZDimages/tx_cion.png">
                 <p>{{item.nickName}}</p>
               </div>
             </div>
@@ -1165,14 +1166,12 @@
       subOnlineUser(id){
         let self = this;
         subOnlineUser({subId:this.subId}).then(response => {
-          if(response.rows[0]){
-            this.$set(this,'userList',response.rows);
-            if(id){
-              for(let i=0;i<self.mapList.length;i++){
-                if(self.mapList[i].type == '1'){
-                  if(self.mapList[i].subId == id){
-                    this.$set(self.mapList[i],'online',response.rows.length);
-                  }
+          this.$set(this,'userList',response.rows);
+          if(id){
+            for(let i=0;i<self.mapList.length;i++){
+              if(self.mapList[i].type == '1'){
+                if(self.mapList[i].subId == id){
+                  this.$set(self.mapList[i],'online',response.rows.length);
                 }
               }
             }
@@ -1406,8 +1405,8 @@
         };
         const { data } = await startUrl(obj);
         console.log('data',data);
-        if(data.data){
-          let newData = data.data;
+        if(data){
+          let newData = data;
           let urlText = window.location.href;
           if(urlText.indexOf(localStorage.getItem('ipIdentify')) != -1){
             console.log('本地');
@@ -2206,6 +2205,8 @@
           jiaquan_yc : require('@/assets/ZDimages/bigData3_2/icon_znjc_jq_yc.png'),
           huoyan_zc : require('@/assets/ZDimages/bigData3_2/icon_zdmh_hyjc_zc.png'),
           huoyan_yc : require('@/assets/ZDimages/bigData3_2/icon_zdmh_hyjc_yc.png'),
+          hwcw_zc : require('@/assets/ZDimages/bigData3_2/icon_znjc_hwcw.png'),
+          hwcw_yc : require('@/assets/ZDimages/bigData3_2/icon_znjc_hwcw_yc.png'),
           nullClass : require('@/assets/ZDimages/evacuation3_2/icon_znwl_sybz.png'),
           });
         }
@@ -2288,6 +2289,10 @@
               obj.zcImg = this.sensorIconData.huoyan_zc;
               obj.ycImg = this.sensorIconData.huoyan_yc;
               break;
+            case 'hwcwy':
+              obj.zcImg = this.sensorIconData.hwcw_zc;
+              obj.ycImg = this.sensorIconData.hwcw_yc;
+              break;
             default:
               obj.zcImg = this.sensorIconData.nullClass;
               obj.ycImg = this.sensorIconData.nullClass;

+ 2 - 2
src/views/newEvacuationBigDataHome.vue

@@ -755,8 +755,8 @@
             deviceIds:this.monitorNumList[index].hardwareList+'',
           };
           const { data } = await startUrl(obj);
-          if(data.data){
-            let newData = data.data;
+          if(data){
+            let newData = data;
             let urlText = window.location.href;
             let videoList = [];
             if(urlText.indexOf(localStorage.getItem('ipIdentify')) != -1){

+ 113 - 18
src/views/oneKeyOutfire/planExecuteRecord/planExecuteRecordDetail.vue

@@ -12,10 +12,10 @@
           <div class="small_title">风险概况</div>
           <div class="addPage_b_t_l_b" v-if="form">
             <li><i>事故原因:</i><i>{{form.riskReason?form.riskReason:''}}</i></li>
-            <li v-if="form.riskReason==1"><i>风险级别:</i><i>低风险</i></li>
-            <li v-if="form.riskReason==2"><i>风险级别:</i><i>中风险</i></li>
-            <li v-if="form.riskReason==3"><i>风险级别:</i><i>较高风险</i></li>
-            <li v-if="form.riskReason==4"><i>风险级别:</i><i>高风险</i></li>
+            <li v-if="form.riskLevel==1"><i>风险级别:</i><i>低风险</i></li>
+            <li v-if="form.riskLevel==2"><i>风险级别:</i><i>中风险</i></li>
+            <li v-if="form.riskLevel==3"><i>风险级别:</i><i>较高风险</i></li>
+            <li v-if="form.riskLevel==4"><i>风险级别:</i><i>高风险</i></li>
             <li><i>发生时间:</i><i>{{form.startDate?form.startDate:''}} - {{form.endDate?form.endDate:''}}</i></li>
             <li><i>持续时间:</i><i>{{form.riskDuration?form.riskDuration:''}}秒</i></li>
             <li><i>风险响应人员:</i><i>{{form.handledPerson?form.handledPerson:'-'}}</i></li>
@@ -33,7 +33,7 @@
           <div class="small_title">消息推送记录</div>
           <div class="addPage_b_t_r_b" v-if="msgsPush.length>0">
             <li v-for="(item,index3) in msgsPush" :key="index3">
-              <i>{{item.createTime}}</i>
+              <i>{{item.createTimeStr}}</i>
               <i>{{item.pushType.code==0?'语音播报':'短信推送'}}</i>
               <i>{{item.showInfo}}</i></li>
           </div>
@@ -43,11 +43,16 @@
         <div class="small_title">风险轨迹</div>
         <div class="addPage_b_b_b">
           <div class="time-box">
-            <ul  >
-              <li class="active" v-for="(item,index2) in planAxis" :key="index2">
-                <p>发生风险:{{item.riskPlanName}}</p>
+            <ul>
+              <li :class="(item.riskStatus==1||item.riskStatus==2)?'risk_trend':'hardware'" v-for="(item,index2) in planAxis" :key="index2">
+                <p v-if="(index2 !=0 && index2 !=planAxis.length-1)" :class="(item.riskStatus==1||item.riskStatus==2)?'dot':'dot_tow'"></p>
+
+                <p v-if="(item.riskStatus==1||item.riskStatus==2)">{{item.riskPlanLevelName}}: {{item.riskPlanName}}</p>
+                <p v-if="(item.riskStatus!=1&& item.riskStatus!=2)">{{item.riskPlanName}}</p>
                 <p>{{item.sensorJsonName}}:<i>{{item.sensorJsonValue}}</i></p>
                 <p>时间:<i>{{item.createTime}}</i></p>
+
+                <p v-if="index2 !=planAxis.length-1" :class="(item.riskStatus==1||item.riskStatus==2)?'ledgement':'ledgement_tow'"></p>
               </li>
             </ul>
           </div>
@@ -252,9 +257,9 @@ export default {
               font-family: Source Han Sans CN-Regular, Source Han Sans CN;
               font-weight: 400;
               color: #666666;
-              line-height: 14px;
-
+              line-height: 18px;
               display: inline-block;
+              vertical-align: top;
             }
             >i:nth-of-type(1){
               width: 148px;
@@ -276,7 +281,7 @@ export default {
         overflow-y: auto;
         >ul{
           position: relative;
-          height:255px;
+          height:355px;
           white-space: nowrap;
           display: inline-flex;
           >li{
@@ -309,27 +314,117 @@ export default {
               }
             }
           }
-          >li:after{
+          /*横线*/
+          .ledgement{
+            width:250px;
+            background: #d2d2d2;
+            height: 1px;
+            position: absolute;
+            left:0;
+            bottom:-48%;
+          }
+          .ledgement_tow{
+            width:250px;
+            background: #d2d2d2;
+            height: 1px;
+            position: absolute;
+            left:0;
+            top:-48%;
+          }
+          >li:nth-child(2n){
+            margin-top:160px;
+          }
+          /*点*/
+          .dot{
             content: "";
             width: 56px;
             height: 56px;
             border-radius: 28px;
             background: #0183FA;
             position: absolute;
-            left:50%;margin-left:-64px;
+            left:20%;
+            margin-left:-64px;
             bottom: 0;
-            bottom:-60px;
+            bottom:-74px;
+            z-index: 1;
+            border: 20px solid #fff;
+          }
+          .dot_tow{
+            content: "";
+            width: 56px;
+            height: 56px;
+            border-radius: 28px;
+            background: #0183FA;
+            position: absolute;
+            left:20%;
+            margin-left:-64px;
+            top:-74px;
             z-index: 1;
             border: 20px solid #fff;
           }
-          >li:nth-child(2n):after{
-            bottom: auto;top:-60px;
+          //>li:before{
+          //  content: "";
+          //  width: 56px;
+          //  height: 56px;
+          //  border-radius: 28px;
+          //  background: #0183FA;
+          //  position: absolute;
+          //  left:20%;
+          //  margin-left:-64px;
+          //  bottom: 0;
+          //  bottom:-60px;
+          //  z-index: 1;
+          //  border: 20px solid #fff;
+          //}
+          //>li:nth-child(2n):before{
+          //  bottom: auto;top:-60px;
+          //}
+          /*风险趋势*/
+          .risk_trend{
+
           }
-          >li:nth-child(2n){
+          /*硬件执行动作*/
+          .hardware{
             margin-top:160px;
           }
+          //>li:after{
+          //  content: "";  display: block; background: #d2d2d2;height: 1px;width: 100%;position: absolute;left:0;bottom:-32%;
+          //}
+          //>li:nth-child(2n):after{
+          //  top:-32%;
+          //}
+          //>li:last-child:after{
+          //  content: "";  display: block; background: none;height: 1px;width: 100%;position: absolute;left:0;bottom:-32%;
+          //}
+          >li:first-child:before{
+            content: "";
+            width: 26px;
+            height: 26px;
+            border: 2px solid #0183FA;
+            border-radius: 28px;
+            background: #fff;
+            position: absolute;
+            left:20%;
+            margin-left:-64px;
+            bottom:-44px;
+            z-index: 1;
+          }
+          >li:last-child:before{
+            content: "";
+            width: 26px;
+            height: 26px;
+            border: 2px solid #0183FA;
+            border-radius: 28px;
+            background: #fff;
+            position: absolute;
+            left:20%;
+            margin-left:-64px;
+            top:-44px;
+            z-index: 1;
+          }
+
         }
-        >ul:after{content: "";  display: block;background: #d2d2d2;height: 1px;width: 100%;position: absolute;left:0;top:50%;}
+
 
 
       }

+ 16 - 16
src/views/system/apkfile/index.vue

@@ -207,22 +207,22 @@
 
 
 
-                  <el-form-item label="安装包" prop="apkFileUpload" label-width="90px">
-                    <el-upload
-                      style="margin:0 auto;width:120px;"
-                      class="avatar-uploader"
-                      :action="uploadImgUrl"
-                      accept="application/vnd.android.package-archive"
-                      :show-file-list="false"
-                      :on-progress="progressUp"
-                      :on-success="handleAvatarSuccess"
-                      :on-error="errorUp"
-                      :headers="headers"
-                      :before-upload="beforeAvatarUpload">
-                      <img v-if="upForm.apkFileUpload" src="@/assets/ZDimages/icon_apk.png">
-                      <i v-if="!upForm.apkFileUpload" class="el-icon-plus avatar-uploader-icon" style="height:40px;line-height:40px;width:40px;text-align: center"></i>
-                    </el-upload>
-                  </el-form-item>
+            <el-form-item label="安装包" prop="apkFileUpload" label-width="90px">
+              <el-upload
+                style="margin:0 auto;width:120px;"
+                class="avatar-uploader"
+                :action="uploadImgUrl"
+                accept="application/vnd.android.package-archive"
+                :show-file-list="false"
+                :on-progress="progressUp"
+                :on-success="handleAvatarSuccess"
+                :on-error="errorUp"
+                :headers="headers"
+                :before-upload="beforeAvatarUpload">
+                <img v-if="upForm.apkFileUpload" src="@/assets/ZDimages/icon_apk.png">
+                <i v-if="!upForm.apkFileUpload" class="el-icon-plus avatar-uploader-icon" style="height:40px;line-height:40px;width:40px;text-align: center"></i>
+              </el-upload>
+            </el-form-item>
         </el-form>
       </div>
       <div slot="footer" class="dialog-footer">