Explorar o código

添加保存和提交按钮

凉纪 %!s(int64=2) %!d(string=hai) anos
pai
achega
0a7dfa2058

+ 0 - 6
package-lock.json

@@ -2775,12 +2775,6 @@
         "lodash.uniq": "^4.5.0"
       }
     },
-    "caniuse-lite": {
-      "version": "1.0.30001518",
-      "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001518.tgz",
-      "integrity": "sha512-rup09/e3I0BKjncL+FesTayKtPrdwKhUufQFd3riFw1hHg8JmIFoInYfB102cFcY/pPgGmdyl/iy+jgiDi2vdA==",
-      "dev": true
-    },
     "case-sensitive-paths-webpack-plugin": {
       "version": "2.4.0",
       "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz",

+ 2 - 1
src/components/dateCell/index.vue

@@ -21,6 +21,7 @@
 <script>
 
 import dayjs from "dayjs";
+import {formatDate} from "@/filters/filter";
 
 export default {
   props:{
@@ -59,7 +60,7 @@ export default {
         if(!val){
           this.selected = null
         }else{
-          this.selected = val;
+          this.selected =  formatDate(val,'YYYY-MM-DD HH:mm:ss');
         }
       },
       immediate: true

+ 4 - 2
src/components/upload/index.vue

@@ -13,6 +13,7 @@
 <script>
 import {upload} from "@/api/public";
 import ImageCompressor from "js-image-compressor";
+import config from '@/config/index';
 export default {
     props:{
       //最大上传数量
@@ -69,16 +70,17 @@ export default {
         let formData = new FormData();
         formData.append("file", fileObj.file);
         upload(formData, "image").then((res) => {
+          console.log( config,'222')
           /*上传成功*/
           let imgUrl =
             process.env.NODE_ENV === "development"
-              ? process.env.VUE_APP_BASE_API + res.data.url
+              ?  config.baseUrl + res.data.url
               : window.origin + res.data.url;
           let arr = [];
           arr.push({ name: res.data.name, url: imgUrl });
           this.fileList = arr;
           //emit完整图片URL路径
-          this.$emit("input", this.listToString(this.fileList));
+          this.$emit("input", this.fileList);
           // //非完整图片URL路径
           // this.$emit("imgUrl", res.data.url);
         }).catch((err) => {

+ 1 - 1
src/config/env.development.js

@@ -2,7 +2,7 @@
 module.exports = {
   title: 'soc-app-dev',
   baseUrl: 'http://localhost:9018', // 项目地址
-  baseApi: '/luojun', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
+  baseApi: '/yuanjingchao', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
   APPID: 'xxx',
   APPSECRET: 'xxx',
   $cdn: 'https://www.sunniejs.cn/static'  //静态资源

+ 1 - 1
src/config/env.production.js

@@ -2,7 +2,7 @@
 module.exports = {
   title: 'vue-h5-online',
   baseUrl: 'https://www.xxx.com/', // 正式项目地址
-  baseApi: 'https://www.xxx.com/api', // 正式api请求地址
+  baseApi: '/', // 正式api请求地址
   APPID: 'xxx',
   APPSECRET: 'xxx',
   $cdn: 'https://www.sunniejs.cn/static' //静态资源

+ 5 - 22
src/filters/filter.js

@@ -1,29 +1,12 @@
+import dayjs from "dayjs";
+
 /**
  *格式化时间
  *yyyy-MM-dd hh:mm:ss
  */
-export function formatDate(time, fmt) {
-  if (time === undefined || '') {
-    return
-  }
-  const date = new Date(time)
-  if (/(y+)/.test(fmt)) {
-    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
-  }
-  const o = {
-    'M+': date.getMonth() + 1,
-    'd+': date.getDate(),
-    'h+': date.getHours(),
-    'm+': date.getMinutes(),
-    's+': date.getSeconds()
-  }
-  for (const k in o) {
-    if (new RegExp(`(${k})`).test(fmt)) {
-      const str = o[k] + ''
-      fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : padLeftZero(str))
-    }
-  }
-  return fmt
+export function formatDate(date, format) {
+  if(!format) format = 'YYYY-MM-DD HH:mm:ss'
+  return dayjs(date).format(format);
 }
 
 function padLeftZero(str) {

+ 1 - 0
src/utils/globalMixins.js

@@ -1,4 +1,5 @@
 import { getDict } from '@/api/toConsult.js'
+import dayjs from 'dayjs'
 
 export default {
   data() {

+ 10 - 1
src/views/menu/LZRegister/api.js

@@ -14,8 +14,17 @@ export function taskDetails(data) {
   return request({
     url: '/core/api/resumption/toTaskDetails',
     method: 'post',
-    showLoading:true,
     data
   })
 }
+//保存
+export function saveTaskData(data) {
+  return request({
+    url: '/core/api/resumption/submitTaskData',
+    method: 'post',
+    data
+  })
+}
+
+
 

+ 82 - 67
src/views/menu/LZRegister/edit.vue

@@ -10,14 +10,18 @@
               <van-cell title="检查内容:" value="1" />
               <van-cell title="NFC:"  >
                 <template #extra>
-                  <span >已扫{{1}}</span>
-                  <span >未扫{{2}}</span>
+                  <p class="flex-box">
+                    <span >已扫 {{taskInfo.areaScanY}}</span>
+                    <span >未扫 {{taskInfo.areaScanN}}</span>
+                  </p>
                 </template>
               </van-cell>
               <van-cell title="检查区域:">
                 <template #extra>
-                  <span >已查{{1}}</span>
-                  <span >未查{{2}}</span>
+                  <p class="flex-box">
+                    <span >已查 {{taskInfo.nfcScanY}}</span>
+                    <span >未查 {{taskInfo.nfcScanN}}</span>
+                  </p>
                 </template>
               </van-cell>
             </van-collapse-item>
@@ -85,83 +89,38 @@
               <van-cell :border="false" :title="item.pointname">
                 <template #right-icon>
                   <van-switch
-                    v-model="v.checked"
+                    v-model="v.resvalue"
                     inactive-color="#4fc08d"
                     active-color="orange"
                     size="20" />
                 </template>
               </van-cell>
-              <van-cell-group v-show="v.checked">
+              <van-cell-group v-show="v.resvalue">
                 <van-field
-                  v-model="v.info"
+                  v-model="v.resremark"
                   rows="1"
                   autosize
                   label="情况描述:"
                   type="textarea"
                   placeholder="请输入"/>
                 <div class="upload-box">
-                  <uploader v-model="v.fileList" multiple />
+                  <uploader v-model="v.img" multiple />
                 </div>
-                <select-cell title="整改期限" v-model="v.endDate"  :dict="'rectification_period'" is-link/>
-
-<!--                <date-cell title="客户区" date-type="date" v-model="v.date1"/>-->
-<!--                <date-cell title="整改期限" dateType="date" />-->
-<!--                <select-cell title="测试" v-model="v.sss" :dict="'sys_business_type'" is-link/>-->
+                <select-cell title="整改期限" v-model="v.rectificationDeadline"  :dict="'rectification_deadline'" is-link/>
               </van-cell-group>
-              <date-cell v-for="(val,ind) in item.protectionVo" :title="val.name"  v-model="val.statusUpdateTime" :key="val.id" date-type="datetime" />
+              <date-cell v-if="item.businessType === 1" v-for="(val,ind) in item.protectionVo" :title="val.name"  v-model="val.statusUpdateTime" :key="val.id" date-type="datetime" />
             </div>
           </van-collapse-item>
-<!--          <van-collapse-item title="技防设备检查" name="2">-->
-<!--            <van-cell title="报警及通信设备状态是否良好:">-->
-<!--              <template #right-icon>-->
-<!--                <van-switch-->
-<!--                  v-model="checked"-->
-<!--                  active-color="#4fc08d"-->
-<!--                  inactive-color="orange"-->
-<!--                  size="20" />-->
-<!--              </template>-->
-<!--            </van-cell>-->
-<!--            <van-field-->
-<!--              v-model="info"-->
-<!--              rows="1"-->
-<!--              autosize-->
-<!--              label="情况描述:"-->
-<!--              type="textarea"-->
-<!--              placeholder="请输入"-->
-<!--            />-->
-<!--            <div class="upload-box">-->
-<!--              <van-uploader v-model="fileList" multiple />-->
-<!--            </div>-->
-<!--            <van-cell title="整改期限" is-link/>-->
-<!--          </van-collapse-item>-->
-<!--          <van-collapse-item title="技防设备检查" name="2">-->
-<!--            <van-cell title="报警及通信设备状态是否良好:">-->
-<!--              <template #right-icon>-->
-<!--                <van-switch-->
-<!--                  v-model="checked"-->
-<!--                  active-color="#4fc08d"-->
-<!--                  inactive-color="orange"-->
-<!--                  size="20" />-->
-<!--              </template>-->
-<!--            </van-cell>-->
-<!--            <van-field-->
-<!--              v-model="info"-->
-<!--              rows="1"-->
-<!--              autosize-->
-<!--              label="情况描述:"-->
-<!--              type="textarea"-->
-<!--              placeholder="请输入"-->
-<!--            />-->
-<!--            <div class="upload-box">-->
-<!--              <van-uploader v-model="fileList" multiple />-->
-<!--            </div>-->
-<!--            <van-cell title="整改期限" is-link/>-->
-<!--          </van-collapse-item>-->
+
         </van-collapse>
       </div >
 
       <p class="warning-msg">需要完成所有区域的履职内容才能提交内容</p>
-      <div class=""></div>
+      <div class="flex-box">
+        <van-button type="default" style="width: 28%;" plain  @click="goBack">取消</van-button>
+        <van-button type="info" style="width: 28%;" plain hairline @click="saveData">保存</van-button>
+        <van-button type="info" style="width: 28%;"  @click="submitData">提交</van-button>
+      </div>
     </div>
 
   </div>
@@ -172,7 +131,7 @@ import NavBar from '@/components/NavBar';
 import SelectCell from '@/components/selectCell';
 import DateCell from '@/components/dateCell';
 import Uploader from '@/components/upload';
-import {taskDetails} from "@/views/menu/LZRegister/api";
+import {taskDetails,saveTaskData} from "@/views/menu/LZRegister/api";
 export default {
   components:{NavBar,SelectCell,DateCell,Uploader},
   data(){
@@ -182,8 +141,6 @@ export default {
       areaList:[],
       //基本信息
       taskInfo:[],
-      //
-      fileList:[],
       //字典
       dicts: ['resumption_status'],
       //选中的区域
@@ -219,7 +176,15 @@ export default {
         taskId:this.$route.query.id,
       }
       taskDetails(data).then(res=>{
-        this.taskInfo = res.data.taskObj;
+        let {areaScanN,areaScanY,nfcScanN,nfcScanY} = res.data;
+        this.taskInfo = {
+          areaScanN,
+          areaScanY,
+          nfcScanN,
+          nfcScanY,
+          ...res.data.taskObj
+        }
+
         this.taskInfo.nfcScaning = res.data.nfcScaning;
         this.areaList = res.data.taskarealist;
         this.activeArea(this.areaList[0],0);
@@ -242,6 +207,47 @@ export default {
       this.checkList = area.checklist;
       this.NFCList = area.nfclist;
     },
+    submitData(){
+      let data = {
+        taskId:this.$route.query.id,
+        taskAreaId:this.selectArea.taskareaid,
+        taskAreaName:this.selectArea.areaname,
+        taskAreaStatus:this.selectArea.status,
+        taskAreaRemark:this.selectArea.remark,
+        taskAreaCheckList:this.checkList,
+      }
+      saveTaskData(data).then(res=>{
+        this.$toast('提交成功');
+        this.$router.go(-1);
+      })
+    },
+    saveData(){
+      let data = {
+        taskId:this.$route.query.id,
+        taskAreaId:this.selectArea.taskareaid,
+        taskAreaName:this.selectArea.areaname,
+        taskAreaStatus:this.selectArea.status,
+        taskAreaRemark:this.selectArea.remark,
+        taskAreaCheckList:this.checkList,
+      }
+      saveTaskData(data).then(res=>{
+        this.$toast('提交成功');
+        this.$router.go(-1);
+      })
+    },
+    goBack(){
+      this.$router.go(-1);
+      this.clearData();
+    },
+    clearData(){
+      this.areaList = [];
+      this.taskInfo= [];
+      this.selectArea = [];
+      this.NFCList = [];
+      this.checkList = [];
+      this.checkItemList = [];
+      this.NFCNum = 0;
+    },
     openTime(){
 
     },
@@ -257,9 +263,18 @@ export default {
     overflow: hidden;
   }
   .page-container{
+    height: calc(100vh - 90px);
     overflow: auto;
     padding: 20px;
   }
+  .flex-box{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    >span{
+      margin: 0 20px;
+    }
+  }
   .card{
     margin-bottom: 20px;
     box-shadow: 0 10px 10px #eaeaea;
@@ -292,8 +307,8 @@ export default {
   .warning-msg{
     color: orange;
     text-align: center;
-    height: 40px;
-    line-height: 40px;
+    height: 80px;
+    line-height: 80px;
   }
   .active{
     color: #fff;

+ 8 - 6
src/views/menu/LZRegister/index.vue

@@ -1,10 +1,10 @@
 <template>
-  <div class="lvzhi" ref="container"  @scroll="handleScroll" >
+  <div class="lvzhi" ref="container">
     <nav-bar></nav-bar>
     <van-sticky :container="container">
-      <DatePicker @change="changeDate"></DatePicker>
+      <DatePicker ref="DatePicker" @change="changeDate"></DatePicker>
     </van-sticky>
-    <div class="lz-container"  >
+    <div class="lz-container" id="lz-container" @scroll="handleScroll">
       <div class="lz-list">
         <div class="list-item">
           <p>今日履职</p>
@@ -153,7 +153,8 @@ export default {
   },
   methods:{
     handleScroll(e){
-      let scrollTop = document.getElementById('container');
+      let scrollTop = document.getElementById('lz-container').scrollTop;
+      this.$refs.DatePicker.showPicker = false;
       console.log(scrollTop,'555')
     },
     //格式化时间范围
@@ -218,10 +219,11 @@ export default {
 <style lang="scss" scoped>
   .lvzhi{
     height: 100%;
-    overflow: scroll;
+    overflow: hidden;
   }
   .lz-container{
-    overflow: auto;
+    height: calc(100vh - 190px);
+    overflow: scroll;
   }
   .top-date-box{
     padding: 0 20px;