Browse Source

监控调阅按区域调阅

zhulu 1 year ago
parent
commit
ded0d247ac

+ 1 - 1
src/api/toConsult.js

@@ -112,7 +112,7 @@ export function getEditInfo(query) {
   })
 }
 //结束调阅
-export function getEndInfo(data) {
+export function finishRegistration(data) {
   return request({
     url: `/core/registration`,
     method: 'put',

+ 184 - 0
src/views/menu/monitoringCall/components/areaMonitoringList.vue

@@ -0,0 +1,184 @@
+<template>
+  <div>
+    <div class="topBox">
+      <div class="title" style="padding-top: 10px; margin-top: 0px">硬盘录像机:{{ list.hostName }}</div>
+      <div class="title">摄像机:{{ list.videoChannelName }}</div>
+      <van-row class="List titleList">
+        <van-col class="vancol" span="10">项目</van-col>
+        <van-col class="vancol" span="14">检查情况</van-col>
+      </van-row>
+      <div v-for="item in list.coreMonitoringTaskMonitorInfoList" :key="item.id">
+        <van-row>
+          <van-col :class="item.situation == 1 ? 'vancol borderClsyc' : 'vancol borderCls'" span="10">{{
+            item.project | proJectListFilter(this_)
+          }}</van-col>
+          <van-col :class="item.situation == 1 ? 'vancol borderClsyc' : 'vancol borderCls'" span="14"
+            ><span :style="{ color: item.situation == 1 ? '#12b533' : '#12b533' }">{{
+              item.situation | dictFilter(this_)
+            }}</span></van-col
+          >
+        </van-row>
+        <van-row v-if="item.situation == 1" class="borderyc">
+          <van-col class="abnorText yctextleft" span="10" >异常情况描述:</van-col>
+          <van-col class="abnorText yctext" span="14">{{ item.abnormalIllustrate }}</van-col>
+        </van-row>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  name: 'SocAppMonitoringList',
+  props: {
+    list: {
+      type: Object,
+      default: {}
+    },
+    //调阅状态
+    taskStatus: {
+      type: String
+    }
+  },
+  data() {
+    return {
+      this_: this,
+      proJectList: [],
+      dictList: [] //字典情况数组
+    }
+  },
+  filters: {
+    dictFilter: function (value, that) {
+      let label = ''
+      if (that.dictList && that.dictList.length > 0) {
+        that.dictList.filter(item => {
+          if (value == item.dictValue) {
+            label = item.dictLabel
+          }
+        })
+      }
+      return label
+    },
+    proJectListFilter: function (value, that) {
+      let label = ''
+      if (that.proJectList && that.proJectList.length > 0) {
+        that.proJectList.filter(item => {
+          if (value == item.dictValue) {
+            label = item.dictLabel
+          }
+        })
+      }
+      return label
+    }
+  },
+  created() {
+    //获取异常情况字典
+    this.getDictHandler('core_check_type', res => {
+      this.dictList = res
+    })
+    //获取项目字典
+    this.getDictHandler('core_registration_project', res => {
+      this.proJectList = JSON.parse(JSON.stringify(res))
+      this.proJectList.forEach(item => {})
+    })
+  },
+  mounted() {},
+
+  methods: {
+    //编辑项目
+    // editHandler(isEdit) {
+    //   let path = ''
+    //   if (isEdit === 1) {
+    //     path = 'info'
+    //   } else {
+    //     path = 'update'
+    //   }
+    //   // isEdit 1查看 0编辑
+    //   console.log()
+    //   this.$router.push(`/${path}/` + this.$route.params.id.split('_')[0] + '_' + this.list.id + '_edit' + '_' + isEdit)
+    // }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.topBox {
+  position: relative;
+  background-color: #fff;
+  // width: 100%;
+  // border-radius: 10px;
+  margin-left: 20px;
+  margin-right: 20px;
+
+  font-size: 26px;
+  // box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+}
+.title {
+  margin-top: 10px;
+  margin-bottom: 10px;
+  margin-left: 20px;
+}
+.van-row {
+  // padding-left: 10px;
+}
+
+.List {
+  background-color: #e8e8e8;
+  margin-bottom: -1px;
+  text-align: left;
+  height: 100%;
+}
+.titleList {
+  font-size: 26px;
+  text-align: left;
+  font-weight: bold;
+}
+.vancol {
+  height: 100%;
+
+  line-height: 60px;
+
+  padding-left: 20px;
+}
+.borderCls {
+  border: 1px solid #ccc;
+  border-top: none;
+}
+.borderClsyc{
+  border: 1px solid #ccc;
+  border-bottom: none;
+}
+
+.borderyc {
+  font-size: 20px;
+  border-right: 1px solid #ccc;
+  border-left: 1px solid #ccc;
+  border-bottom: 1px solid #ccc;
+}
+.yctextleft{
+  border-right: 1px solid #ccc;
+}
+.yctext {
+  border-left: 2px solid #ccc;
+  
+ 
+}
+.abnorText {
+  // font-size: 20px;
+  color: #ff0202;
+  padding-left: 10px;
+  word-wrap: break-word;
+  padding-left: 10px;
+}
+.img {
+  width: 50px;
+  height: 50px;
+  position: absolute;
+  right: 20px;
+}
+.buttoncls {
+  width: 100px;
+  height: 50px;
+  position: absolute;
+  right: 20px;
+  top: 5%;
+}
+</style>

+ 124 - 0
src/views/menu/monitoringCall/components/areaPassage.vue

@@ -0,0 +1,124 @@
+<template>
+  <div>
+    <van-row v-if="list && list.length > 0">
+      <van-col
+        span="11"
+        @click="passageEdit(item.dictValue,item.dictLabel)"
+        :class="'passageIcon' + ' ' + classlist[item.type]"
+        v-for="item in list"
+        :key="item.name"
+      >
+        <span class="pors success" v-if="item.type == '1'">
+          <van-icon name="success" size="14" color="#fff" />
+        </span>
+        <span class="pors success" v-if="item.type == '2'">
+          <van-icon name="success" size="14" color="#fff" />
+        </span>
+        
+       <span :class="item.dictLabel.length<=10? 'textClass':'textClassLength10'">
+        {{ item.dictLabel }}        
+       </span> 
+       
+        
+      </van-col>
+    </van-row>
+    <!-- 添加或编辑调阅任务弹框 -->
+    <!-- @resetList="" -->
+    <areaTaskInfo ref="areaTaskInfo" @resetList="resetList"></areaTaskInfo>
+  </div>
+</template>
+<script>
+//调阅弹框组件
+// import taskInfo from './taskInfo.vue'
+import areaTaskInfo from './areaTaskInfo.vue'
+
+export default {
+  name: 'SocAppPassage',
+  components: {
+    areaTaskInfo
+  },
+  props: {
+    //区域列表
+    list: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    },
+    //任务ID
+    taskId: {
+      type: String,
+      default: ''
+    },
+  },
+  data() {
+    return {
+      classlist: ['cls0', 'cls1', 'cls2']
+    }
+  },
+
+  mounted() {},
+
+  methods: {
+    passageEdit(areaValue,areaName) {
+      console.log("passageEdit",areaValue,areaName)
+      //添加或者编辑调阅
+      this.$refs.areaTaskInfo.init(this.taskId,areaValue,areaName)
+    },
+    resetList(){
+        this.$emit('resetList',0)
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.passageIcon {
+  position: relative;
+  text-align: center;
+  margin: 10px 10px 0px 10px;
+  box-sizing: border-box;
+  border-radius: 10px;
+  min-height: 100px;
+  .textClass{
+    line-height: 100px;
+    
+  }
+  .textClassLength10{
+  text-align: left !important;
+  }
+
+  
+}
+.cls0 {
+  background-color: #e6e6e6;
+  border: 1px solid #fff;
+}
+.cls1 {
+  background-color: #fff;
+  border: 1px solid #3cbda9;
+  color: #3cbda9;
+}
+.cls2 {
+  background-color: #fff;
+  // background-color: #ff6b00;
+  border: 1px solid #3cbda9;
+  color: #3cbda9;
+}
+.pors {
+  position: absolute;
+  border-radius: 50%;
+  width: 36px;
+  text-align: center;
+  height: 36px;
+  top: -20px;
+  right: -12px;
+  // transform: translate();
+}
+.success {
+  background-color: #3cbda9;
+}
+.error {
+  background-color: #3cbda9;
+}
+// 'cls0', 'cls1', 'cls2']
+</style>

+ 361 - 0
src/views/menu/monitoringCall/components/areaTaskInfo.vue

@@ -0,0 +1,361 @@
+<template>
+  <div>
+    <van-overlay :show="show" :lock-scroll="false">
+      <div class="wrapper">
+        <div class="block">
+          <!-- 标题信息 -->
+          <van-row>
+            <van-col span="24">
+              <div class="textTitle">调阅记录</div>
+            </van-col>
+            <van-col span="24">
+              <div class="text">{{ areaName }}</div>
+            </van-col>
+          </van-row>
+          <!-- //主体内容 -->
+          <div class="mainBox">
+            <van-row class="titleList">
+              <van-col class="itemCol" span="8"> 项目</van-col>
+              <van-col class="itemCol" span="8"> 正常</van-col>
+              <van-col class="itemCol" span="8"> 异常</van-col>
+            </van-row>
+            <div class="mainItem">
+              <van-row class="rowItem" v-for="item in dataList" :key="item.id">
+                <van-col class="itemCls" span="10" style="display: flex"
+                ><van-checkbox
+                  v-model="item.isChecked"
+                  @change="checkedFc($event, item)"
+                  :disabled="disabled"
+                  icon-size="16px"
+                  shape="square"
+                >
+                </van-checkbox>
+                  <span class="info"
+                  >{{ item.dictLabel }}<van-icon class="info-o" name="info-o" @click="textTitleHandler(item.remark)"
+                  /></span>
+                </van-col>
+                <van-radio-group v-model="item.situation" @change="checkHandler($event, item)">
+                  <van-col class="itemCls radioItem" span="7" v-for="itemDict in dictList" :key="itemDict.dictValue">
+                    <van-radio icon-size="16px" :name="itemDict.dictValue">{{ itemDict.dictLabel }}</van-radio></van-col
+                  >
+                </van-radio-group>
+
+                <van-col span="24" v-if="item.situation == '1'">
+                  <van-field
+                    v-model="item.abnormalIllustrate"
+                    rows="2"
+                    required
+                    autosize
+                    label=""
+                    type="textarea"
+                    maxlength="200"
+                    placeholder="请输入异常描述"
+                    show-word-limit
+                    :rules="[{ required: true, message: '异常描述不能为空' }]"
+                  /></van-col>
+              </van-row>
+            </div>
+            <!-- 文字描述弹框 -->
+            <van-dialog v-model="showDialog" title="提示">
+              <div class="showtext" >
+                {{ showText }}
+                <!--<div v-for="item in showText" :key="item">{{ item }}</div>-->
+              </div>
+            </van-dialog>
+            <!-- 底部按钮 -->
+            <div>
+              <van-row>
+                <van-col span="12">
+                  <van-button class="btn" size="small" @click="show = false" type="default">取消</van-button></van-col
+                >
+                <van-col span="12">
+                  <van-button class="btn" size="small" type="info" v-if="!disabled" @click="submitHadnler">{{
+                    '确定'
+                    }}</van-button></van-col
+                >
+              </van-row>
+            </div>
+          </div>
+        </div>
+      </div>
+    </van-overlay>
+  </div>
+</template>
+<script>
+  import { updateInfo, getEditInfo } from '@/api/toConsult.js'
+  import { Toast, Dialog } from 'vant'
+
+  export default {
+    name: 'SocAppTaskInfo',
+
+    data() {
+      return {
+        showText:'',
+        showDialog: false,
+        taskId: '', //任务ID
+        show: false,
+        // host: '',
+        // hostId: '',
+        // videoChannelName: '',
+        // videoChannel: '',
+        areaCode:'',
+        areaName:'',
+        taskRegistrationId: '',
+        id: '',
+        falg: false,
+        checked: '',
+        message: '',
+        radio: '0',
+        dictList: [],
+        dataList: [] //列表
+      }
+    },
+    created() {
+      this.disabled = +this.$route.params.id.split('_')[3] ? true : false
+    },
+
+    mounted() {
+      // let list = document.querySelector('.mainItem')
+      // list.addEventListener('touchmove', e => e.stopPropagation(), false)
+    },
+
+    methods: {
+      //组件初始化
+      init(taskId, areaValue,areaName) {
+        // Toast(`当前为调阅项目选择界面,仅需部分登记发现调阅项目填写正常或者异常项,无需全部填写。`,{duration:5000});
+        Dialog.alert({
+            message: '当前为调阅项目选择界面,请根据实际调阅情况选择,无需全部填写。',
+          }).then(() => {
+          });
+        
+        
+        this.taskId = taskId
+        this.show = true
+        //获取调阅字典
+        this.getDictHandler('core_registration_project', res => {
+          this.dataList = JSON.parse(JSON.stringify(res))
+          this.dataList.forEach(item => {
+            this.$set(item, 'situation', '') //异常情况初始化默认值
+            this.$set(item, 'isChecked', false) //选中初始值
+            this.$set(item, 'abnormalIllustrate', '') //情况说明初始化默认值
+          })
+          //获取异常情况字典
+          this.getDictHandler('core_check_type', res => {
+            this.dictList = res
+            this.dictList.forEach(item => {
+              item.text = item.dictLabel
+              item.value = item.dictValue
+            })
+          })
+          this.getInfoHandler(taskId, areaValue,areaName) //获取详情
+        })
+      },
+      //复选框选中变化
+      checkHandler(val, item) {
+        if (val) {
+          item.isChecked = true
+        }
+        if (val && item.situation == '0') {
+          item.abnormalIllustrate = ''
+        }
+      },
+      checkedFc(val, item) {
+        if (val) {
+          if (!item.situation) {
+            item.situation = '0'
+          }
+        } else {
+          item.situation = ''
+          item.abnormalIllustrate = ''
+        }
+      },
+      getInfoHandler(id, areaValue,areaName) {
+        //获取卡片详情数据
+        getEditInfo({ taskId: id + '', areaValue: areaValue + '',areaName:areaName}).then(res => {
+          let { data, msg, code } = res
+          if (code == 200) {
+            this.dataList.forEach(item => {
+              data.coreMonitoringTaskMonitorInfoList.forEach(i => {
+                if (i.project === item.dictValue) {
+                  //查询赋值
+                  this.$set(item, 'isChecked', true)
+                  this.$set(item, 'situation', i.situation)
+                  this.$set(item, 'abnormalIllustrate', i.abnormalIllustrate)
+                }
+              })
+            })
+            console.log(this.dataList)
+            //赋值主机&通道名称
+            // this.host = data.hostName
+            // this.hostId = data.host
+            // this.videoChannelName = data.videoChannelName
+            // this.videoChannel = data.videoChannel
+            this.areaCode=data.areaCode;
+            this.areaName=data.areaName;
+            this.taskRegistrationId = data.registrationId
+            this.id = data.id
+          }
+        })
+      },
+
+      //表单提交前校验
+      beforSubmitV() {
+        this.falg = false
+
+        this.dataList.forEach(item => {
+          if (item.isChecked) {
+            console.log(item)
+            if (item.situation == '1' && item.abnormalIllustrate == '') {
+              Toast(`${item.dictLabel}的情况描述不能为空!`)
+
+              this.falg = true
+            }
+          }
+        })
+      },
+      submitHadnler() {
+        this.beforSubmitV()
+        if (this.falg) {
+          //校验不通过
+        } else {
+          let list = []
+
+          this.dataList.forEach(item => {
+            if (item.isChecked) {
+              item.project = item.dictValue
+              list.push(item)
+            }
+          })
+          if(list.length==0){
+            return Toast(`单通道调阅项至少勾选一项!`)
+          }
+          //编辑提交
+          updateInfo({
+            // host: this.hostId,
+            // videoChannel: this.videoChannel,
+            areaCode:this.areaCode,  
+            areaName:this.areaName,          
+            taskRegistrationId: this.taskRegistrationId,
+            id: this.id || '',
+            coreMonitoringTaskMonitorInfoList: list
+          }).then(res => {
+            let { data, msg, code } = res
+            if (code == 200) {
+              Toast('编辑成功!')
+              this.show = false
+              this.$emit('resetList')
+            }
+            this.falg = false
+          })
+        }
+      },
+      //文字提示
+      textTitleHandler(text) {
+        if(!text){
+          text='可参照相关部门管理办法!'
+        }
+        // text='1.挖掘第哦啊uiOS多i,2.是多久啊了多久哦'
+        this.showDialog = true
+        // this.showText = text.split(',')
+        this.showText = text;
+      }
+    }
+  }
+</script>
+<style lang="scss" scoped>
+  .mainItem {
+    height: 95%;
+    overflow: scroll;
+  }
+  .rowItem {
+    min-height: 100px;
+    line-height: 100px;
+    border: 1px solid #e8e8e8;
+    border-bottom:none;
+
+  }
+  .block {
+    width: 90vw;
+    height: 98%;
+    background-color: #fff;
+    margin: auto;
+    position: absolute;
+    top: 1%;
+    bottom: 1%;
+    left: 5%;
+    right: 5%;
+    padding: 20px;
+  }
+  .textTitle {
+    font-size: 30px;
+    font-weight: bold;
+    padding: 10px;
+    color: black;
+    text-align: center;
+
+  }
+
+  .text {
+    text-align: center;
+
+    color: black;
+  }
+  .mainBox {
+    height: 80vh;
+    .titleList {
+      background-color: #e8e8e8;
+      margin-top: 20px;
+      font-size: 22px;
+      text-align: left;
+      font-weight: bold;
+      .itemCol {
+        padding: 10px;
+        color: black;
+
+        font-size: 4vw;
+        text-align: center;
+      }
+    }
+  }
+  .itemCls {
+    padding-left: 10px;
+    border-right: 1px solid #e8e8e8;
+    height: 100%;
+    .van-radio{
+
+
+    }
+
+  }
+  .radioItem{
+    height: 100px;
+    line-height: 100px;
+    align-items: center;
+    display: flex;
+  }
+  .btn {
+    width: 90%;
+  }
+  .info {
+    color: #1989fa;
+    margin-left: 10px;
+    // text-decoration: underline;
+    .info-o{
+      margin-left: 10px;
+    }
+  }
+  .showtext{
+    text-align: left;
+    color: #0e0e0e;
+    padding-left: 20px;
+    padding-right: 15px;
+    margin-top: 50px;
+    margin-bottom: 50px;
+    max-height: 135vw;
+    overflow: auto;
+    white-space: pre-wrap;
+  }
+  .van-overlay{
+    z-index: 200;
+  }
+</style>

+ 120 - 33
src/views/menu/monitoringCall/components/consultInfo.vue

@@ -21,7 +21,7 @@
         </div>
 
         <div v-else>
-          <van-collapse-item :name="item.hostId" v-for="item in hostList" :key="item.hostId">
+          <!-- <van-collapse-item :name="item.hostId" v-for="item in hostList" :key="item.hostId">
             <template #title>
               <div class="textTitle">{{ item.hostName }}</div>
             </template>
@@ -32,7 +32,18 @@
               :hostId="item.hostId"
               @resetList="getHostHandlerA"
             ></passage>
-          </van-collapse-item>
+          </van-collapse-item> -->
+          <van-collapse-item>
+            <template #title>
+              <div class="textTitle">区域列表</div>
+            </template>
+          <areaPassage
+              ref="passage"
+              :list="retrievalAreaList"
+              :taskId="$route.params.id.split('_')[0]"            
+              @resetList="getHostHandlerA"
+            ></areaPassage>   
+          </van-collapse-item>       
         </div>
       </van-collapse>
 
@@ -43,13 +54,16 @@
             <van-button type="info" @click="addInfoHandler">添加调阅记录</van-button>
           </van-col>
         </van-row> -->
-        <van-row v-if="hostList && hostList.length > 0">
+        <van-row v-if="retrievalAreaList && retrievalAreaList.length > 0">
           <van-col span="24">
             <van-button type="info" @click="endMontor">结束调阅</van-button>
           </van-col>
         </van-row>
       </div>
     </div>
+    <van-action-sheet v-model="showSign" :title="shwoSignTitle" class="sheet">
+            <writingPad ref="esign" @resultImg="resultSginImg"></writingPad>
+    </van-action-sheet>
     <!-- 扫描弹框 -->
     <scandialog ref="scandialog" @input="resultImg" @changeNFC="getNFC"></scandialog>
   </div>
@@ -58,12 +72,15 @@
 import NavBar from '@/components/NavBar'
 //通道列表
 import passage from './passage.vue'
+import areaPassage from './areaPassage.vue'
 // 主机列表组件
 import MonitoingList from './monitoringList.vue'
 import { upload } from '@/api/public'
 import { Col, Row, Dialog, Toast, Icon, Picker } from 'vant'
-import { registrationList, getEndInfo, login, getSysDeviceByTaskId, registration } from '@/api/toConsult.js'
+import { registrationList, finishRegistration, login, getSysDeviceByTaskId, registration } from '@/api/toConsult.js'
 import scandialog from '@/components/nfcPopup/alone.vue'
+import writingPad from '@/components/writingPad/index.vue'
+import imgCom from '@/components/imgCom/index.vue'
 import { base64ToBlob } from '@/utils/base64TurnImg.js'
 export default {
   data() {
@@ -71,12 +88,16 @@ export default {
       endNum: false, //判断是否能结束调阅
       taskData: {},
       hostList: [], //主机列表
-      activeNames: []
+      retrievalAreaList:[], // 监控调阅区域名称
+      activeNames: [],
+      showSign:false,
+      shwoSignTitle:"签署名字",
+      signImgUrl:"",
     }
   },
   components: {
     scandialog,
-
+    areaPassage,
     passage,
     NavBar,
     Dialog,
@@ -84,7 +105,9 @@ export default {
     Picker,
     Col,
     Row,
-    MonitoingList
+    MonitoingList,
+    writingPad,
+    imgCom,
   },
 
   created() {
@@ -102,7 +125,7 @@ export default {
             }
           if(num === 1 && data.taskStatus !=2){
             Dialog.alert({
-            message: '当前为调阅通道选择界面,仅需选择实际调阅通道,无需全选。',
+            message: '当前为监控调阅区域选择界面,请根据实际调阅情况选择,无需全部填写。',
             }).then(() => {
 
             });
@@ -116,17 +139,56 @@ export default {
     getHostHandler(num = 0) {
       // num//判断是不是第一次初始化
       console.log(num);
-      getSysDeviceByTaskId({ taskId: this.$route.params.id.split('_')[0] }).then(res => {
-        let { code, data, msg } = res
-        if (code == 200) {
-          this.hostList = data
-          if (num == 1) {
-            this.activeNames = [this.hostList[0].hostId]
-          } else {
-            console.log(this.activeNames, '////')
-          }
-        }
-      })
+      // getSysDeviceByTaskId({ taskId: this.$route.params.id.split('_')[0] }).then(res => {
+      //   let { code, data, msg } = res
+      //   if (code == 200) {
+      //     this.hostList = data
+      //     if (num == 1) {
+      //       this.activeNames = [this.hostList[0].hostId]
+      //     } else {
+      //       console.log(this.activeNames, '////')
+      //     }
+      //   }
+      // })
+
+       //获取调阅字典
+       this.getDictHandler('video_retrieval_area', res => {
+           let areaList = JSON.parse(JSON.stringify(res));
+
+           if(this.taskData.coreMonitoringTaskRegistrationMonitorVOList){
+            areaList.forEach(area=>{
+             let tempList= this.taskData.coreMonitoringTaskRegistrationMonitorVOList.filter(item=>item.areaCode == area.dictValue);
+             if(tempList && tempList.length>0)
+             {
+                console.log("tempList",tempList);
+                console.log("tempList",tempList[0].coreMonitoringTaskMonitorInfoList.findIndex(x=>{
+                 return x.situation=="1"})>-1);
+                if(tempList[0].coreMonitoringTaskMonitorInfoList && tempList[0].coreMonitoringTaskMonitorInfoList.findIndex(x=>{
+                 return x.situation=="1";
+                })>-1)
+                {
+                  this.$set(area, 'type', 2)
+                }
+                else{
+                  this.$set(area, 'type', 1)
+                }              
+             }
+             else{
+              this.$set(area, 'type', 0)
+             }
+
+            });
+           }
+
+           console.log("areaList",areaList);
+           this.retrievalAreaList=areaList;
+          // this.dataList.forEach(item => {
+          //   this.$set(item, 'situation', '') //异常情况初始化默认值
+          //   this.$set(item, 'isChecked', false) //选中初始值
+          //   this.$set(item, 'abnormalIllustrate', '') //情况说明初始化默认值
+          // })
+        })
+
     },
     addInfoHandler() {
       this.$router.push('/addInfo/' + this.$route.params.id.split('_')[0] + '_' + this.taskData.id + '_add')
@@ -146,17 +208,20 @@ export default {
         let endDate = Date.parse(new Date())
 
         if (endDate - startDate) {
-          Dialog.confirm({
-            title: '提示',
-            message: `当前调阅时长为${this.dateTime(endDate - startDate)},是否结束调阅?`
-          })
-            .then(() => {
-              this.$refs.scandialog.visible = true
-        this.globalLoading = true
-            })
-            .catch(() => {
-              // on cancel
-            })
+          this.shwoSignTitle= `调阅时长为${this.dateTime(endDate - startDate)},是否结束调阅?`;
+          this.showSign=true;
+         
+
+          // Dialog.confirm({
+          //   title: '提示',
+          //   message: `当前调阅时长为${this.dateTime(endDate - startDate)},是否结束调阅?`
+          // }).then(() => {
+          //     this.$refs.scandialog.visible = true
+          //     this.globalLoading = true
+          //   })
+          //   .catch(() => {
+          //     // on cancel
+          //   })
         }
 
       } else {
@@ -196,6 +261,27 @@ export default {
       }
       return time
     },
+     //上传签名图到服务器
+    resultSginImg(img) {
+      let obj = base64ToBlob(img)
+      let formData = new FormData()
+
+      obj.name = '签名.jpg'
+      formData.append('file', base64ToBlob(img))
+
+      upload(formData, 'image')
+        .then(res => {
+          console.log(process.env.NODE_ENV)
+          /*上传成功*/
+          this.signImgUrl = process.env.NODE_ENV === 'development' ? res.data.url : res.data.url
+          this.showSign=false;
+          this.$refs.scandialog.visible = true
+          this.globalLoading = true
+        })
+        .catch(err => {
+          /*上传失败*/
+        })
+    },
     //文件上传
     resultImg(img) {
       this.photoHandler(img[0].url)
@@ -210,7 +296,7 @@ export default {
       //开始调阅上传
       let obj = {
         endPicture: img,
-        endNfc: nfc,
+        endNfc: nfc,        
         taskId: this.$route.params.id.split('_')[0]
       }
       registration(obj).then(res => {
@@ -222,8 +308,9 @@ export default {
       })
     },
     endHandler() {
-      getEndInfo({
-        id: this.taskData.id,
+      finishRegistration({
+        id: this.taskData.id,        
+        signImgUrl:this.signImgUrl,
         taskId: this.$route.params.id.split('_')[0]
       }).then(res => {
         this.$router.go(-1)

+ 1 - 1
src/views/menu/monitoringCall/components/taskInfo.vue

@@ -122,7 +122,7 @@
       init(taskId, videoId, hostId) {
         // Toast(`当前为调阅项目选择界面,仅需部分登记发现调阅项目填写正常或者异常项,无需全部填写。`,{duration:5000});
         Dialog.alert({
-            message: '当前为调阅项目选择界面,仅需部分登记发现调阅项目填写正常或者异常项,无需全部填写。',
+            message: '当前为调阅项目选择界面,请根据实际调阅情况选择,无需全部填写。',
           }).then(() => {
           });