版本回退,并做好代码备份
@@ -1,13 +1,48 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="album">
 | 
			
		||||
    <div class="tips">请确保以下信息全部由本人填写,本人对所填写内容的真实性和完整性负责</div>
 | 
			
		||||
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>返乡人员姓名</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <input placeholder="请输入" v-model="form.name" disabled :maxlength="20"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>身份证号</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <input placeholder="请输入" v-model="form.idNumber" disabled :maxlength="20"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>当前体温</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <input placeholder="请输入" v-model="form.temperature" :maxlength="20"/>
 | 
			
		||||
            <i>℃</i>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>个人健康状况(可多选)</h2>
 | 
			
		||||
            <h2>14天内是否接触新冠确诊或疑似患者</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiRadio style="width: 100%;" v-model="form.touchInFourteen" dict="epidemicTouchInFourteen"></AiRadio>
 | 
			
		||||
@@ -18,7 +53,48 @@
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>当前状况</h2>
 | 
			
		||||
            <h2>当前健康状况(可多选)</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiCheckbox style="width: 100%;" v-model="form.health" dict="epidemicRecentHealth"></AiCheckbox>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>核酸检测日期</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <div class="ai-area" @click="isShowDate = true">
 | 
			
		||||
              <div class="ai-area__wrapper">
 | 
			
		||||
                <span class="label" v-if="form.checkTime">{{ form.checkTime }}</span>
 | 
			
		||||
                <i v-else>请选择</i>
 | 
			
		||||
                <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>核酸检测结果</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiRadio style="width: 100%;" v-model="form.checkResult" dict="epidemicRecentTestResult"></AiRadio>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>健康码类型</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiRadio style="width: 100%;" v-model="form.healthCode" dict="epidemicHealthCode"></AiRadio>
 | 
			
		||||
@@ -29,16 +105,26 @@
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>备注说明</h2>
 | 
			
		||||
            <h2>已接种疫苗次数</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <textarea  placeholder="请补充说明健康监测情况" v-model="form.temperature"/>
 | 
			
		||||
            <AiRadio style="width: 100%;" v-model="form.vaccine" dict="epidemicVaccineTime"></AiRadio>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i style="margin-right: 8px"></i>
 | 
			
		||||
            <h2>本人健康码截图<span style="color: #999; font-size:14px;font-weight:normal;">(最多9张)</span></h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right" style="padding-left: 5px">
 | 
			
		||||
            <AiUploader v-model="form.checkPhoto" :limit="9" multiple></AiUploader>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- <u-picker mode="time" :params="dataParams" v-model="isShowDate" @confirm="onDateChange"></u-picker> -->
 | 
			
		||||
    <u-picker mode="time" :params="dataParams" v-model="isShowDate" @confirm="onDateChange"></u-picker>
 | 
			
		||||
    <div class="btn-wrapper">
 | 
			
		||||
      <div class="btn" hover-class="text-hover" @click="submit">提交</div>
 | 
			
		||||
    </div>
 | 
			
		||||
@@ -49,7 +135,7 @@
 | 
			
		||||
import {mapState} from 'vuex'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  appName:"上报今日状态",
 | 
			
		||||
  appName:"今日上报",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      isShowDate: false,
 | 
			
		||||
@@ -134,6 +220,10 @@ export default {
 | 
			
		||||
        return this.$toast('请选择已接种疫苗次数')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // if (!this.form.checkPhoto.length) {
 | 
			
		||||
      //   return this.$toast('请上传健康码截图')
 | 
			
		||||
      // }
 | 
			
		||||
      this.$loading()
 | 
			
		||||
      this.$instance.post(`/app/appepidemichealthreport/addOrUpdate`, {
 | 
			
		||||
        ...this.form,
 | 
			
		||||
        openid: this.user.openid,
 | 
			
		||||
@@ -148,6 +238,7 @@ export default {
 | 
			
		||||
            uni.navigateBack()
 | 
			
		||||
          }, 400)
 | 
			
		||||
        }
 | 
			
		||||
        this.$hideLoading()
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@@ -260,7 +351,7 @@ export default {
 | 
			
		||||
      input {
 | 
			
		||||
        flex: 1;
 | 
			
		||||
        height: 100%;
 | 
			
		||||
        text-align: left;
 | 
			
		||||
        text-align: right;
 | 
			
		||||
        color: #333;
 | 
			
		||||
        padding-right: 10px;
 | 
			
		||||
      }
 | 
			
		||||
@@ -270,21 +361,22 @@ export default {
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
 | 
			
		||||
        // .u-input {
 | 
			
		||||
        //   display: block;
 | 
			
		||||
        //   width: 100%;
 | 
			
		||||
        // }
 | 
			
		||||
        
 | 
			
		||||
        span {
 | 
			
		||||
          max-width: 400px;
 | 
			
		||||
          margin-right: 8px;
 | 
			
		||||
          color: #333333;
 | 
			
		||||
          overflow: hidden;
 | 
			
		||||
          white-space: nowrap;
 | 
			
		||||
          text-overflow: ellipsis;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        i {
 | 
			
		||||
          margin-right: 8px;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    .form-item__wrapper_input {
 | 
			
		||||
      display: block;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &:last-child {
 | 
			
		||||
      .form-item__wrapper {
 | 
			
		||||
        border-bottom: none;
 | 
			
		||||
@@ -309,10 +401,11 @@ export default {
 | 
			
		||||
        padding: 0 4px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        color: #666666;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    &.form-item__imgs, &.form-item__textarea {
 | 
			
		||||
      .form-item__wrapper {
 | 
			
		||||
        display: block;
 | 
			
		||||
@@ -323,7 +416,6 @@ export default {
 | 
			
		||||
      textarea {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 90px;
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .form-item__title {
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>联系方式</h2>
 | 
			
		||||
            <h2>手机号码</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <input placeholder="请输入" type="number" v-model="form.phone" :maxlength="11"/>
 | 
			
		||||
@@ -38,7 +38,7 @@
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>所属地区</h2>
 | 
			
		||||
            <h2>上报地区</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiAreaPicker class="ai-area" :areaId="$areaId" v-model="form.areaId" :fullName.sync="form.areaName">
 | 
			
		||||
@@ -58,7 +58,7 @@
 | 
			
		||||
            <h2>详细地址</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <textarea auto-height v-model="form.address" :maxlength="500" placeholder="如住所、酒店、单位等"
 | 
			
		||||
            <textarea auto-height v-model="form.address" :maxlength="500" placeholder="请输入详细地址"
 | 
			
		||||
                      placeholder-style="font-size: 16px;"></textarea>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,15 +9,11 @@
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="home-list">
 | 
			
		||||
      <div class="item" v-for="(item, index) in list" :key="index" >
 | 
			
		||||
        <div class="item-top" @click.stop="$linkTo('./Detail?id=' + item.id)">
 | 
			
		||||
      <div class="item" v-for="(item, index) in list" :key="index">
 | 
			
		||||
        <div class="item-top">
 | 
			
		||||
          <div class="item-top__left">
 | 
			
		||||
            <h2>{{ item.name }}<span :class="item.status == 1? 'status0':'status1'">返乡人员</span></h2>
 | 
			
		||||
            <!-- <p @click.stop="$linkTo('./UserInfo?id=' + item.id)" hover-class="text-hover">查看个人信息></p> -->
 | 
			
		||||
            <div>
 | 
			
		||||
              <p>登记于2021-10-15</p>
 | 
			
		||||
              <span :class="item.status == 1? 'status0':'status1'">异常</span>
 | 
			
		||||
            </div>
 | 
			
		||||
            <h2>{{ item.name }}</h2>
 | 
			
		||||
            <p @click.stop="$linkTo('./UserInfo?id=' + item.id)" hover-class="text-hover">查看个人信息></p>
 | 
			
		||||
          </div>
 | 
			
		||||
          <span v-if="item.status === '0'">健康数据异常</span>
 | 
			
		||||
        </div>
 | 
			
		||||
@@ -42,40 +38,8 @@
 | 
			
		||||
      <AiEmpty v-if="list.length==0"/>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="btn-wrapper">
 | 
			
		||||
      <div class="share" @click="show = true">分享</div>
 | 
			
		||||
      <div class="addBtn" @click="toReport" hover-class="text-hover">添加上报人员</div>
 | 
			
		||||
      <div class="btn" @click="toReport" hover-class="text-hover">添加上报人员</div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <u-popup  v-model="show" mode="bottom" border-radius="30">
 | 
			
		||||
			<div class="shareBox">
 | 
			
		||||
        <h2>分享到:</h2>
 | 
			
		||||
        <div class="card">
 | 
			
		||||
          <div class="itemCard" @click="registerCode()">
 | 
			
		||||
            <img src="./components/code.png" alt="" class="imgs" />
 | 
			
		||||
            <div class="names">扫码登记</div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="itemCard" @click="invitation()">
 | 
			
		||||
            <img src="./components/wechat.png" alt="" class="imgs" />
 | 
			
		||||
            <div class="names">微信邀请</div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="close" @click="show = false">取消</div>
 | 
			
		||||
      </div>
 | 
			
		||||
		</u-popup>
 | 
			
		||||
 | 
			
		||||
    <u-popup v-model="showCode" mode="center" border-radius="14" width="90%" height="450px">
 | 
			
		||||
			<div class="showCode">
 | 
			
		||||
        <div class="qrCode">
 | 
			
		||||
          <img src="./components/code.png" alt="">
 | 
			
		||||
        </div>
 | 
			
		||||
        <h2>健康上报</h2>
 | 
			
		||||
        <p>请使用微信扫码,上报本人健康情况</p>
 | 
			
		||||
        <div class="btn">
 | 
			
		||||
          <div class="cancel" @click="showCode = false">取消</div>
 | 
			
		||||
          <div class="save" @click="savePoster">保存海报</div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
		</u-popup>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
@@ -91,8 +55,6 @@ export default {
 | 
			
		||||
      pageShow: false,
 | 
			
		||||
      current: 1,
 | 
			
		||||
      total: 0,
 | 
			
		||||
      show: false,
 | 
			
		||||
      showCode: false,
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
@@ -119,18 +81,6 @@ export default {
 | 
			
		||||
      this.$linkTo('./AddUser')
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 扫码登记
 | 
			
		||||
    registerCode() {
 | 
			
		||||
      this.show = false;
 | 
			
		||||
      this.showCode = true;
 | 
			
		||||
    },
 | 
			
		||||
    // 微信邀请
 | 
			
		||||
    invitation() {
 | 
			
		||||
      console.log('222');
 | 
			
		||||
    },
 | 
			
		||||
    // 保存海报
 | 
			
		||||
    savePoster() {},
 | 
			
		||||
 | 
			
		||||
    getList() {
 | 
			
		||||
 | 
			
		||||
      this.$instance.post(`/app/appepidemicreportmember/list?openId=${this.user.openId}`, null, {
 | 
			
		||||
@@ -217,43 +167,17 @@ export default {
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
 | 
			
		||||
      .item-top__left {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        h2 {
 | 
			
		||||
          line-height: 44px;
 | 
			
		||||
          margin-bottom: 8px;
 | 
			
		||||
          color: #333;
 | 
			
		||||
          font-size: 32px;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          span {
 | 
			
		||||
            padding: 4px 8px;
 | 
			
		||||
            font-size: 26px;
 | 
			
		||||
            font-weight: normal;
 | 
			
		||||
            margin-left: 24px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        div {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          justify-content: space-between;
 | 
			
		||||
          p {
 | 
			
		||||
            color: #999999;
 | 
			
		||||
            font-size: 26px;
 | 
			
		||||
          }
 | 
			
		||||
          span {
 | 
			
		||||
            padding: 4px 8px;
 | 
			
		||||
            font-size: 26px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        .status0 {
 | 
			
		||||
          color: #FF4466;
 | 
			
		||||
          background: #FFF5F7;
 | 
			
		||||
        }
 | 
			
		||||
        .status1 {
 | 
			
		||||
          color: #1AAAFF;
 | 
			
		||||
          background: #E8F6FF;
 | 
			
		||||
        }
 | 
			
		||||
        .status2 {
 | 
			
		||||
          color: #42D784;
 | 
			
		||||
          background: #ECFBF2;
 | 
			
		||||
 | 
			
		||||
        p {
 | 
			
		||||
          color: #999999;
 | 
			
		||||
          font-size: 26px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
@@ -295,101 +219,5 @@ export default {
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .btn-wrapper {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    padding: 20px 32px !important;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    .addBtn,
 | 
			
		||||
    .share {
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      line-height: 88px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
    }
 | 
			
		||||
    .share {
 | 
			
		||||
      width: 35%;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      border: 1px solid #A0C0FF;
 | 
			
		||||
    }
 | 
			
		||||
    .addBtn {
 | 
			
		||||
      width: 60%;
 | 
			
		||||
      background: #4181FF;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      color: #fff;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .shareBox {
 | 
			
		||||
    padding-top: 32px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    h2 {
 | 
			
		||||
      padding: 0 32px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
    }
 | 
			
		||||
    .card {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      padding: 60px 32px 32px 32px;
 | 
			
		||||
      .itemCard {
 | 
			
		||||
        flex: 1;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        // width: 25%;
 | 
			
		||||
        img {
 | 
			
		||||
          width: 96px;
 | 
			
		||||
          height: 96px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    // ::v-deep .u-popup .u-drawer .u-drawer-bottom {
 | 
			
		||||
    //   bottom: 50px;
 | 
			
		||||
    // }
 | 
			
		||||
    .close {
 | 
			
		||||
      height: 112px;
 | 
			
		||||
      line-height: 112px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      border-top: 2px solid #EEEEEE;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .showCode {
 | 
			
		||||
    padding: 64px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    .qrCode {
 | 
			
		||||
      img {
 | 
			
		||||
        width: 320px;
 | 
			
		||||
        height: 320px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    h2 {
 | 
			
		||||
      font-size: 36px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      padding: 32px 0;
 | 
			
		||||
    }
 | 
			
		||||
    p {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      margin-bottom: 80px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .btn {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      .cancel, 
 | 
			
		||||
      .save {
 | 
			
		||||
        width: 45%;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        height: 80px;
 | 
			
		||||
        line-height: 80px;
 | 
			
		||||
        border-radius: 40px;
 | 
			
		||||
      }
 | 
			
		||||
      .cancel {
 | 
			
		||||
        background: #EFF2F7;
 | 
			
		||||
      }
 | 
			
		||||
      .save {
 | 
			
		||||
        background: #383A49;
 | 
			
		||||
        color: #FFF;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,52 +1,72 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="detail">
 | 
			
		||||
    <div class="detail-header">
 | 
			
		||||
      <div class="name">
 | 
			
		||||
        <h2>张三<span>返乡人员</span></h2>
 | 
			
		||||
        <p @click="call(info.phone)"><u-icon name="phone" color="#4181FF" size="28"></u-icon>拨打电话</p>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="idNumber">
 | 
			
		||||
        <span>身份证号:</span>
 | 
			
		||||
        <span>420107197309172837</span>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="phone">
 | 
			
		||||
        <span>手机号码:</span>
 | 
			
		||||
        <span>13827263092</span>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="address">
 | 
			
		||||
        <span>详细地址:</span>
 | 
			
		||||
        <span>辛店镇北靳楼-北靳楼大学学生宿舍560</span>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="detail-info">
 | 
			
		||||
      <div class="title">
 | 
			
		||||
      <h2>健康状况</h2>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <h2>上报记录</h2>
 | 
			
		||||
          <p>个人连续无异常上报<span>7</span>>天后自动解除风险</p>
 | 
			
		||||
          <label>当前体温</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>3</span>/<span>7</span>天
 | 
			
		||||
          <span :style="{color: info.temperature >= 37.3 ? '#FF4466' : '#42D784'}">{{ info.temperature }}℃</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="list">
 | 
			
		||||
        <div class="item">
 | 
			
		||||
          <div class="item_card">
 | 
			
		||||
            <div class="left">
 | 
			
		||||
              <span></span><span>2020-07-20</span><span>(自主上报)</span>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="right">
 | 
			
		||||
              <span :class="'status0'">异常</span>
 | 
			
		||||
              <!-- :class="item.check ? 'img-active' : ''" -->
 | 
			
		||||
              <img src="./components/down-icon.png" :class="checked == true ? '': 'img-active'" alt="" @click="putOn" />
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item_info" v-if="checked">
 | 
			
		||||
            <div class="items">
 | 
			
		||||
              <label>当前健康状况</label>
 | 
			
		||||
              <div>发烧、乏力、咳嗽</div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>14天内是否接触新冠确诊或疑似患者</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span :style="{color: info.touchInFourteen === '0' ? '#42D784' : '#FF4466'}">{{ $dict.getLabel('epidemicTouchInFourteen', info.touchInFourteen) }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>当前健康状况</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span :style="{color: !info.isHealth ? '#42D784' : '#FF4466'}">{{ info.healthName }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="detail-info">
 | 
			
		||||
      <h2>核酸检测信息</h2>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>核酸检测日期</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ info.checkTime.split(' ')[0] }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>核酸检测结果</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span :style="{color: info.checkResult === '0' ? '#42D784' : '#FF4466'}">{{ $dict.getLabel('epidemicRecentTestResult', info.checkResult) }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>健康码状态</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span :style="{color: info.healthCode === '0' || info.healthCode === '1' ? '#42D784' : '#FF4466'}">{{ $dict.getLabel('epidemicHealthCode', info.healthCode) }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>已接种疫苗次数</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ $dict.getLabel('epidemicVaccineTime', info.vaccine) }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item detail-info__item--img">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>本人健康码截图</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <image :src="item.url" @click="preview(item.url)" v-for="(item, index) in info.checkPhoto" :key="index" />
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
@@ -55,19 +75,19 @@
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  export default {
 | 
			
		||||
    appName:"上报记录",
 | 
			
		||||
    appName:"上报详情",
 | 
			
		||||
    data () {
 | 
			
		||||
      return {
 | 
			
		||||
        info: {},
 | 
			
		||||
        checked: true,
 | 
			
		||||
        pageShow: false
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    onLoad (query) {
 | 
			
		||||
      this.$loading()
 | 
			
		||||
      this.$dict.load(['epidemicTouchInFourteen', 'epidemicRecentHealth', 'epidemicRecentTestResult', 'epidemicHealthCode', 'epidemicVaccineTime']).then(() => {
 | 
			
		||||
        this.getInfo(query.id)
 | 
			
		||||
      })
 | 
			
		||||
      this.getInfo(query.id)
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    methods: {
 | 
			
		||||
@@ -78,17 +98,6 @@
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      // 收起展开
 | 
			
		||||
      putOn() {
 | 
			
		||||
        this.checked = !this.checked
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      call(phone) {
 | 
			
		||||
        uni.makePhoneCall({
 | 
			
		||||
          phoneNumber: phone
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      getInfo (id) {
 | 
			
		||||
        this.$instance.post(`/app/appepidemichealthreport/queryDetailById?id=${id}`).then(res => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
@@ -103,7 +112,13 @@
 | 
			
		||||
              healthName = healthName + this.$dict.getLabel('epidemicRecentHealth', v)
 | 
			
		||||
            })
 | 
			
		||||
            this.info.healthName = healthName
 | 
			
		||||
 | 
			
		||||
            this.$nextTick(() => {
 | 
			
		||||
              this.pageShow = true
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          this.$hideLoading()
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
@@ -122,146 +137,106 @@
 | 
			
		||||
 | 
			
		||||
    .detail-header {
 | 
			
		||||
      padding: 32px;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      background: #FFF;
 | 
			
		||||
      background: #fff;
 | 
			
		||||
 | 
			
		||||
      h2 {
 | 
			
		||||
        margin-bottom: 32px;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        font-size: 40px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .item-info {
 | 
			
		||||
        .item-info__item {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          align-items: center;
 | 
			
		||||
          margin-bottom: 8px;
 | 
			
		||||
 | 
			
		||||
          &:last-child {
 | 
			
		||||
            margin-bottom: 0;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          image {
 | 
			
		||||
            width: 32px;
 | 
			
		||||
            height: 32px;
 | 
			
		||||
            margin-right: 16px;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
      .name {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        h2 {
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          font-size: 40px;
 | 
			
		||||
          span {
 | 
			
		||||
            font-weight: normal;
 | 
			
		||||
            font-size: 26px;
 | 
			
		||||
            padding: 4px 8px;
 | 
			
		||||
            margin-left: 16px;
 | 
			
		||||
            background: #FFF5F7;
 | 
			
		||||
            color: #FF4466;
 | 
			
		||||
            color: #333;
 | 
			
		||||
            font-size: 28px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        p {
 | 
			
		||||
          font-size: 26px;
 | 
			
		||||
          color: #4181FF;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .idNumber, 
 | 
			
		||||
      .phone,
 | 
			
		||||
      .address {
 | 
			
		||||
        color: #999999;
 | 
			
		||||
        font-size: 26px;
 | 
			
		||||
        margin-top: 8px;
 | 
			
		||||
        
 | 
			
		||||
        span:first-child {
 | 
			
		||||
          display: inline-block;
 | 
			
		||||
          width: 130px;
 | 
			
		||||
          vertical-align: top;
 | 
			
		||||
        }
 | 
			
		||||
        span:last-child {
 | 
			
		||||
          display: inline-block;
 | 
			
		||||
          width: calc(100% - 130px);
 | 
			
		||||
          vertical-align: top;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      .idNumber {
 | 
			
		||||
        margin-top: 16px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .detail-info {
 | 
			
		||||
      margin-top: 24px;
 | 
			
		||||
      .title {
 | 
			
		||||
      padding: 0 32px;
 | 
			
		||||
      background: #fff;
 | 
			
		||||
 | 
			
		||||
      & > h2 {
 | 
			
		||||
        height: 116px;
 | 
			
		||||
        line-height: 116px;
 | 
			
		||||
        font-size: 38px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        color: #333;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .detail-info__item {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        background: #FFF;
 | 
			
		||||
        padding: 32px;
 | 
			
		||||
        box-sizing: border-box;
 | 
			
		||||
        padding: 34px 0;
 | 
			
		||||
        border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
 | 
			
		||||
        &:last-child {
 | 
			
		||||
          border: none;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .left {
 | 
			
		||||
          h2 {
 | 
			
		||||
            font-size: 38px;
 | 
			
		||||
            color: #333333;
 | 
			
		||||
            font-weight: 600;
 | 
			
		||||
          }
 | 
			
		||||
          p {
 | 
			
		||||
            font-size: 26px;
 | 
			
		||||
          display: flex;
 | 
			
		||||
          line-height: 1.3;
 | 
			
		||||
          max-width: 360px;
 | 
			
		||||
 | 
			
		||||
          label {
 | 
			
		||||
            position: relative;
 | 
			
		||||
            color: #999999;
 | 
			
		||||
            margin-top: 8px;
 | 
			
		||||
            font-size: 32px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .right {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
          span:first-child {
 | 
			
		||||
            color: #4181FF;
 | 
			
		||||
          max-width: 450px;
 | 
			
		||||
 | 
			
		||||
          span {
 | 
			
		||||
            color: #333333;
 | 
			
		||||
            font-size: 32px;
 | 
			
		||||
            text-align: right;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          image {
 | 
			
		||||
            width: 40px;
 | 
			
		||||
            height: 40px;
 | 
			
		||||
          }
 | 
			
		||||
          
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .list {
 | 
			
		||||
        .item {
 | 
			
		||||
          .item_card {
 | 
			
		||||
            display: flex;
 | 
			
		||||
            justify-content: space-between;
 | 
			
		||||
            align-items: center;
 | 
			
		||||
            padding: 26px 32px;
 | 
			
		||||
            background: #FFF;
 | 
			
		||||
            
 | 
			
		||||
            .left {
 | 
			
		||||
              span:first-child {
 | 
			
		||||
                display: inline-block;
 | 
			
		||||
                width: 4px;
 | 
			
		||||
                height: 24px;
 | 
			
		||||
                background: #1365DD;
 | 
			
		||||
                vertical-align: center;
 | 
			
		||||
                margin-right: 12px;
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            .right {
 | 
			
		||||
              span {
 | 
			
		||||
                display: inline-block;
 | 
			
		||||
                vertical-align: center;
 | 
			
		||||
                margin-right: 16px;
 | 
			
		||||
                padding: 4px 8px;
 | 
			
		||||
              }
 | 
			
		||||
              .status0 {
 | 
			
		||||
                color: #FF4466;
 | 
			
		||||
                background: #FFF5F7;
 | 
			
		||||
              }
 | 
			
		||||
              .status1 {
 | 
			
		||||
                color: #1AAAFF;
 | 
			
		||||
                background: #E8F6FF;
 | 
			
		||||
              }
 | 
			
		||||
              .status2 {
 | 
			
		||||
                color: #42D784;
 | 
			
		||||
                background: #ECFBF2;
 | 
			
		||||
              }
 | 
			
		||||
      .detail-info__item--img {
 | 
			
		||||
        display: block;
 | 
			
		||||
 | 
			
		||||
              img {
 | 
			
		||||
                width: 48px;
 | 
			
		||||
                height: 48px;
 | 
			
		||||
                transition: all 0.3s ease-in-out;
 | 
			
		||||
                transform: rotate(180deg);
 | 
			
		||||
                vertical-align: bottom;
 | 
			
		||||
              }
 | 
			
		||||
        .right {
 | 
			
		||||
          flex-wrap: wrap;
 | 
			
		||||
          max-width: 100%;
 | 
			
		||||
          margin-top: 34px;
 | 
			
		||||
 | 
			
		||||
              .img-active {
 | 
			
		||||
                transform: rotate(0deg);
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          image {
 | 
			
		||||
            width: 226px;
 | 
			
		||||
            height: 226px;
 | 
			
		||||
            margin: 0 9px 9px 0;
 | 
			
		||||
 | 
			
		||||
          .item_info {
 | 
			
		||||
            padding: 16px 32px;
 | 
			
		||||
            background: #FAFAFA;
 | 
			
		||||
            .items {
 | 
			
		||||
              display: flex;
 | 
			
		||||
              justify-content: space-between;
 | 
			
		||||
              align-items: center;
 | 
			
		||||
            &:nth-of-type(3n) {
 | 
			
		||||
              margin-right: 0;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										134
									
								
								src/mods/conv/AppHealthReport/UserInfo.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,134 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="userinfo" v-if="pageShow">
 | 
			
		||||
    <div class="cell-group">
 | 
			
		||||
      <div class="cell-item">
 | 
			
		||||
        <div class="cell-item__wrapper">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <span>上报人姓名</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.name }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="cell-item">
 | 
			
		||||
        <div class="cell-item__wrapper">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <span>身份证号</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.idNumber }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="cell-item">
 | 
			
		||||
        <div class="cell-item__wrapper">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <span>手机号码</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.phone }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="cell-item">
 | 
			
		||||
        <div class="cell-item__wrapper">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <span>上报地区</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.areaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="cell-item">
 | 
			
		||||
        <div class="cell-item__wrapper">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <span>详细地址</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.address }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  export default {
 | 
			
		||||
    appName:"个人信息",
 | 
			
		||||
    data () {
 | 
			
		||||
      return {
 | 
			
		||||
        info: {},
 | 
			
		||||
        pageShow: false
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    onLoad (query) {
 | 
			
		||||
      this.$loading()
 | 
			
		||||
      this.getInfo(query.id)
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    methods: {
 | 
			
		||||
      getInfo (id) {
 | 
			
		||||
        this.$instance.post(`/app/appepidemicreportmember/queryDetailById?id=${id}`).then(res => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            this.info = res.data
 | 
			
		||||
            if (res.data.eventStatus > 1) {
 | 
			
		||||
              this.result = res.data.processList[0]
 | 
			
		||||
            }
 | 
			
		||||
            this.$nextTick(() => {
 | 
			
		||||
              this.pageShow = true
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          this.$hideLoading()
 | 
			
		||||
        }).catch(() => {
 | 
			
		||||
          this.$hideLoading()
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
  .userinfo {
 | 
			
		||||
    .cell-group {
 | 
			
		||||
      background: #fff;
 | 
			
		||||
 | 
			
		||||
      .cell-item {
 | 
			
		||||
        padding-left: 32px;
 | 
			
		||||
 | 
			
		||||
        .cell-item__wrapper {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          justify-content: space-between;
 | 
			
		||||
          padding: 34px 32px 34px 0;
 | 
			
		||||
          border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
 | 
			
		||||
          .left {
 | 
			
		||||
            span {
 | 
			
		||||
              color: #999999;
 | 
			
		||||
              font-size: 32px;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          .right {
 | 
			
		||||
            max-width: 450px;
 | 
			
		||||
            text-align: right;
 | 
			
		||||
            span {
 | 
			
		||||
              color: #333333;
 | 
			
		||||
              font-size: 32px;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &:last-child {
 | 
			
		||||
          .cell-item__wrapper {
 | 
			
		||||
            border-bottom: none;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</style>
 | 
			
		||||
@@ -35,116 +35,35 @@
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <!-- <span style="color:#999; fontSize:14px; font-weight: normal;">(最多9张)</span> -->
 | 
			
		||||
            <h2>健康码截图</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right" style="padding-left: 5px;">
 | 
			
		||||
            <AiUploader v-model="form.checkPhoto" :limit="1"></AiUploader>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <!-- <span style="color:#999; fontSize:14px; font-weight: normal;">(最多9张)</span> -->
 | 
			
		||||
            <h2>48小时核酸证明</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right" style="padding-left: 5px;">
 | 
			
		||||
            <AiUploader v-model="form.checkPhoto" :limit="1"></AiUploader>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>出发地</h2>
 | 
			
		||||
            <h2>人员类别</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiAreaPicker class="ai-area" v-model="form.startAreaId" :fullName.sync="form.startAreaName" all>
 | 
			
		||||
              <div class="ai-area__wrapper">
 | 
			
		||||
                <span class="label" v-if="form.startAreaName">{{ form.startAreaName }}</span>
 | 
			
		||||
                <i v-else>请选择</i>
 | 
			
		||||
                <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
              </div>
 | 
			
		||||
            </AiAreaPicker>
 | 
			
		||||
            <AiSelect v-model="form.type" dict="epidemicRecentPersonType" class="select"></AiSelect>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>交通工具</h2>
 | 
			
		||||
            <h2>出行方式</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiSelect dict="epidemicRecentTravel" v-model="form.travelType" class="select"></AiSelect>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__textarea">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>火车车次/航班号/客运站</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <textarea auto-height v-model="form.arriveAddress" :maxlength="100" placeholder="如车次、座位号/车牌号等信息"
 | 
			
		||||
                      placeholder-style="font-size: 16px"></textarea>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>目的地</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiAreaPicker class="ai-area" v-model="form.startAreaId" :fullName.sync="form.startAreaName" all>
 | 
			
		||||
              <div class="ai-area__wrapper">
 | 
			
		||||
                <span class="label" v-if="form.startAreaName">{{ form.startAreaName }}</span>
 | 
			
		||||
                <i v-else>请选择</i>
 | 
			
		||||
                <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
              </div>
 | 
			
		||||
            </AiAreaPicker>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__textarea">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>居住地点</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <textarea auto-height v-model="form.arriveAddress" :maxlength="100" placeholder="如住所、酒店、单位等"
 | 
			
		||||
                      placeholder-style="font-size: 16px"></textarea>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <!-- 行程安排 -->
 | 
			
		||||
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>预计/实际抵达时间</h2>
 | 
			
		||||
            <h2>出发时间</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <div class="ai-area" @click="isShowStartTime = true">
 | 
			
		||||
@@ -161,7 +80,36 @@
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>预计离开时间</h2>
 | 
			
		||||
            <h2>出发地区</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiAreaPicker class="ai-area" v-model="form.startAreaId" :fullName.sync="form.startAreaName" all>
 | 
			
		||||
              <div class="ai-area__wrapper">
 | 
			
		||||
                <span class="label" v-if="form.startAreaName">{{ form.startAreaName }}</span>
 | 
			
		||||
                <i v-else>请选择</i>
 | 
			
		||||
                <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
              </div>
 | 
			
		||||
            </AiAreaPicker>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__textarea">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>出发地址</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <textarea auto-height v-model="form.startAddress" :maxlength="500" placeholder="请输入详细的出发地址"
 | 
			
		||||
                      placeholder-style="font-size: 16px"></textarea>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>到达时间</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <div class="ai-area" @click="isShowEndTime = true">
 | 
			
		||||
@@ -174,8 +122,125 @@
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>到达地区</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiAreaPicker class="ai-area" v-model="form.arriveAreaId" :fullName.sync="form.arriveAreaName" :areaId="$areaId">
 | 
			
		||||
              <div class="ai-area__wrapper">
 | 
			
		||||
                <span class="label" v-if="form.arriveAreaName">{{ form.arriveAreaName }}</span>
 | 
			
		||||
                <i v-else>请选择</i>
 | 
			
		||||
                <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
              </div>
 | 
			
		||||
            </AiAreaPicker>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__textarea">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>返乡地址</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <textarea auto-height v-model="form.arriveAddress" :maxlength="500" placeholder="请输入详细的返乡地址"
 | 
			
		||||
                      placeholder-style="font-size: 16px"></textarea>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__textarea">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>行程描述</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <textarea auto-height style="height: 90px" v-model="form.description" :maxlength="500" placeholder="请输入行程描述"
 | 
			
		||||
                      placeholder-style="font-size: 16px"></textarea>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>核酸检测日期</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <div class="ai-area" @click="isShowDate = true">
 | 
			
		||||
              <div class="ai-area__wrapper">
 | 
			
		||||
                <span class="label" v-if="form.checkTime">{{ form.checkTime }}</span>
 | 
			
		||||
                <i v-else>请选择</i>
 | 
			
		||||
                <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>本人健康码截图或核酸检测报告<span style="color:#999; fontSize:14px; font-weight: normal;">(最多9张)</span></h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right" style="padding-left: 5px;">
 | 
			
		||||
            <AiUploader v-model="form.checkPhoto" :limit="9" multiple></AiUploader>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>核酸检测结果</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiRadio style="width: 100%;" v-model="form.checkResult" dict="epidemicRecentTestResult"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>当前体温</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <input placeholder="请输入" v-model="form.temperature" :maxlength="20"/>
 | 
			
		||||
            <i>℃</i>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>14天内是否接触新冠确诊或疑似患者</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiRadio style="width: 100%;" v-model="form.touchInFourteen" dict="epidemicTouchInFourteen"></AiRadio>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>当前健康状况(可多选)</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiCheckbox style="width: 100%;" v-model="form.health" dict="epidemicRecentHealth"></AiCheckbox>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    
 | 
			
		||||
    <u-picker mode="time" :params="dataParams" v-model="isShowDate" @confirm="onDateChange"></u-picker>
 | 
			
		||||
    <u-picker mode="time" :params="params" v-model="isShowStartTime" @confirm="onStartChange"></u-picker>
 | 
			
		||||
    <u-picker mode="time" :params="params" v-model="isShowEndTime" @confirm="onEndChange"></u-picker>
 | 
			
		||||
@@ -366,12 +431,11 @@ export default {
 | 
			
		||||
        this.$hideLoading()
 | 
			
		||||
        this.flag = false
 | 
			
		||||
        if (res.code == 0) {
 | 
			
		||||
          // uni.$emit('update')
 | 
			
		||||
          // this.$toast('提交成功')
 | 
			
		||||
          // setTimeout(() => {
 | 
			
		||||
          //   uni.navigateBack()
 | 
			
		||||
          // }, 400)
 | 
			
		||||
          this.$linkTo('./result')
 | 
			
		||||
          uni.$emit('update')
 | 
			
		||||
          this.$toast('提交成功')
 | 
			
		||||
          setTimeout(() => {
 | 
			
		||||
            uni.navigateBack()
 | 
			
		||||
          }, 400)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="AppReturnHomeRegister">
 | 
			
		||||
    <div class="tips">
 | 
			
		||||
      <div>外地抵汉、来汉人员疫情防控政策通…</div>
 | 
			
		||||
      <div @click="$linkTo('./policyDetail')">查看详情></div>
 | 
			
		||||
    </div>
 | 
			
		||||
  <div class="returnHomeRegister">
 | 
			
		||||
    <div class="title">
 | 
			
		||||
      <h2>报备记录</h2>
 | 
			
		||||
      <h2>全部记录</h2>
 | 
			
		||||
      <div class="right">
 | 
			
		||||
        <span>共</span>
 | 
			
		||||
        <i>{{ total }}</i>
 | 
			
		||||
@@ -38,40 +34,8 @@
 | 
			
		||||
      <AiEmpty v-if="list.length==0"/>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="btn-wrapper">
 | 
			
		||||
      <div class="share" @click="show = true">分享</div>
 | 
			
		||||
      <div class="addbtn" @click="toReport" hover-class="text-hover">添加返乡报备</div>
 | 
			
		||||
      <div class="btn" @click="toReport" hover-class="text-hover">添加返乡记录</div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <u-popup  v-model="show" mode="bottom" border-radius="30">
 | 
			
		||||
			<div class="shareBox">
 | 
			
		||||
        <h2>分享到:</h2>
 | 
			
		||||
        <div class="card">
 | 
			
		||||
          <div class="itemCard" @click="registerCode()">
 | 
			
		||||
            <img src="./components/code.png" alt="" class="imgs" />
 | 
			
		||||
            <div class="names">扫码登记</div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="itemCard" @click="invitation()">
 | 
			
		||||
            <img src="./components/wechat.png" alt="" class="imgs" />
 | 
			
		||||
            <div class="names">微信邀请</div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="close" @click="show = false">取消</div>
 | 
			
		||||
      </div>
 | 
			
		||||
		</u-popup>
 | 
			
		||||
 | 
			
		||||
    <u-popup v-model="showCode" mode="center" border-radius="14" width="90%" height="450px">
 | 
			
		||||
			<div class="showCode">
 | 
			
		||||
        <div class="qrCode">
 | 
			
		||||
          <img src="./components/code.png" alt="">
 | 
			
		||||
        </div>
 | 
			
		||||
        <h2>返乡登记</h2>
 | 
			
		||||
        <p>请外来及返乡人员使用微信扫码主动报备行程</p>
 | 
			
		||||
        <div class="btn">
 | 
			
		||||
          <div class="cancel" @click="showCode = false">取消</div>
 | 
			
		||||
          <div class="save" @click="savePoster">保存海报</div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
		</u-popup>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
@@ -85,9 +49,7 @@ export default {
 | 
			
		||||
    return {
 | 
			
		||||
      list: [],
 | 
			
		||||
      current: 1,
 | 
			
		||||
      total: 0,
 | 
			
		||||
      show: false,
 | 
			
		||||
      showCode: false,
 | 
			
		||||
      total: 0
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
@@ -111,19 +73,6 @@ export default {
 | 
			
		||||
    toReport() {
 | 
			
		||||
      this.$linkTo('./Add')
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 扫码登记
 | 
			
		||||
    registerCode() {
 | 
			
		||||
      this.show = false;
 | 
			
		||||
      this.showCode = true;
 | 
			
		||||
    },
 | 
			
		||||
    // 微信邀请
 | 
			
		||||
    invitation() {
 | 
			
		||||
      console.log('222');
 | 
			
		||||
    },
 | 
			
		||||
    // 保存海报
 | 
			
		||||
    savePoster() {},
 | 
			
		||||
 | 
			
		||||
    getList() {
 | 
			
		||||
      this.$instance.post(`/app/appepidemicbackhomerecord/list`, null, {
 | 
			
		||||
        params: {
 | 
			
		||||
@@ -144,8 +93,7 @@ export default {
 | 
			
		||||
      }).catch(() => {
 | 
			
		||||
        uni.hideLoading()
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onReachBottom() {
 | 
			
		||||
@@ -156,28 +104,9 @@ export default {
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" socped>
 | 
			
		||||
.AppReturnHomeRegister {
 | 
			
		||||
.returnHomeRegister {
 | 
			
		||||
  padding: 0 0 150px 0;
 | 
			
		||||
 | 
			
		||||
  .tips {
 | 
			
		||||
    height: 106px;
 | 
			
		||||
    line-height: 106px;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    background: #FFF8F3;
 | 
			
		||||
    padding: 0 32px;
 | 
			
		||||
    div:first-child {
 | 
			
		||||
      width: 520px;
 | 
			
		||||
      color: #FF883C;
 | 
			
		||||
      overflow: hidden;
 | 
			
		||||
      text-overflow: ellipsis;
 | 
			
		||||
      white-space: nowrap;
 | 
			
		||||
    }
 | 
			
		||||
    div:last-child {
 | 
			
		||||
      color: #4181FF;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .title {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
@@ -264,99 +193,5 @@ export default {
 | 
			
		||||
      font-size: 28px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .btn-wrapper {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    padding: 20px 32px !important;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    .addbtn,
 | 
			
		||||
    .share {
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      line-height: 88px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
    }
 | 
			
		||||
    .share {
 | 
			
		||||
      width: 35%;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      border: 1px solid #A0C0FF;
 | 
			
		||||
    }
 | 
			
		||||
    .addbtn {
 | 
			
		||||
      width: 60%;
 | 
			
		||||
      background: #4181FF;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      color: #fff;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .shareBox {
 | 
			
		||||
    padding-top: 32px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    h2 {
 | 
			
		||||
      padding: 0 32px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
    }
 | 
			
		||||
    .card {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      padding: 60px 32px 32px 32px;
 | 
			
		||||
      .itemCard {
 | 
			
		||||
        flex: 1;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        img {
 | 
			
		||||
          width: 96px;
 | 
			
		||||
          height: 96px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .close {
 | 
			
		||||
      height: 112px;
 | 
			
		||||
      line-height: 112px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      border-top: 2px solid #EEEEEE;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .showCode {
 | 
			
		||||
    padding: 64px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    .qrCode {
 | 
			
		||||
      img {
 | 
			
		||||
        width: 320px;
 | 
			
		||||
        height: 320px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    h2 {
 | 
			
		||||
      font-size: 36px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      padding: 32px 0;
 | 
			
		||||
    }
 | 
			
		||||
    p {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      margin-bottom: 80px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .btn {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      .cancel, 
 | 
			
		||||
      .save {
 | 
			
		||||
        width: 45%;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        height: 80px;
 | 
			
		||||
        line-height: 80px;
 | 
			
		||||
        border-radius: 40px;
 | 
			
		||||
      }
 | 
			
		||||
      .cancel {
 | 
			
		||||
        background: #EFF2F7;
 | 
			
		||||
      }
 | 
			
		||||
      .save {
 | 
			
		||||
        background: #383A49;
 | 
			
		||||
        color: #FFF;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,135 +1,185 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="detail" v-if="pageShow">
 | 
			
		||||
 | 
			
		||||
    <div class="detail-header">
 | 
			
		||||
      <div class="user">
 | 
			
		||||
        <div class="header">
 | 
			
		||||
          <h3>{{ info.name }}</h3>
 | 
			
		||||
          <div style="color: #4181FF;" @click="call(info.phone)"><u-icon name="phone" color="#4181FF" size="28"></u-icon>拨打电话</div>
 | 
			
		||||
      <h2>{{ info.name }}的返乡登记信息</h2>
 | 
			
		||||
      <div class="item-info">
 | 
			
		||||
        <div class="item-info__item">
 | 
			
		||||
          <image src="/static/img/from-icon.png"/>
 | 
			
		||||
          <span>{{ info.startAreaName }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="idNumber">
 | 
			
		||||
          <span>身份证号:</span>
 | 
			
		||||
        <div class="item-info__item">
 | 
			
		||||
          <image src="/static/img/to-icon.png"/>
 | 
			
		||||
          <span>{{ info.arriveAreaName }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="item-info__item">
 | 
			
		||||
          <image src="/static/img/to-date.png"/>
 | 
			
		||||
          <span>{{ info.arriveTime && info.arriveTime.substr(0, info.arriveTime.length - 3) }} 到达</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="detail-info">
 | 
			
		||||
      <h2>基本信息</h2>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>姓名</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ info.name }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>身份证号</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ info.idNumber }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="phone">
 | 
			
		||||
          <span>手机号码:</span>
 | 
			
		||||
          <span>{{ info.phone }}</span>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>手机号码</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="picture">
 | 
			
		||||
          <div class="healthPic">
 | 
			
		||||
            <img src="./components/resultPic.png" alt="" @click="preview()">
 | 
			
		||||
            <span>健康码</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="nucleinPic">
 | 
			
		||||
            <img src="./components/resultPic.png" alt="" @click="preview()">
 | 
			
		||||
            <span>核酸证明</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        <div class="right" @click="call(info.phone)" hover-class="text-hover">
 | 
			
		||||
          <image src="https://cdn.cunwuyun.cn/dvcp/h5/common/phone.png"/>
 | 
			
		||||
          <span style="color: #4181FF">{{ info.phone }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="card">
 | 
			
		||||
        <div class="item-info">
 | 
			
		||||
          <div class="item-info__item">
 | 
			
		||||
            <div class="pic">
 | 
			
		||||
              <img class="img" src="./components/start.png"/>
 | 
			
		||||
              <div class="lines"></div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <span>{{ info.startAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item-info__item">
 | 
			
		||||
            <div class="pic">
 | 
			
		||||
              <img class="img" src="./components/end.png"/>
 | 
			
		||||
            </div>
 | 
			
		||||
            <span>{{ info.arriveAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item-info__item">
 | 
			
		||||
            <image class="image" src="/static/img/to-date.png"/>
 | 
			
		||||
            <span>{{ info.arriveTime && info.arriveTime.substr(0, info.arriveTime.length - 3) }} 到达</span>
 | 
			
		||||
          </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>人员类别</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span :style="{color: /[03]/.test(info.type) ? '#42D784' : '#FF4466'}">{{
 | 
			
		||||
              $dict.getLabel('epidemicMemberType', info.type)
 | 
			
		||||
            }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="info">
 | 
			
		||||
      <div class="detail-info">
 | 
			
		||||
        <h2>行程信息<span>省外高风险地区</span></h2>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>出发地</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span :style="{color: info.denger == 1 ? '#FF4466' : '#333'}">{{ info.startAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>交通工具</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ $dict.getLabel('epidemicRecentTravel', info.travelType) }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item_wrap">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>火车车次/航班号/汽车出发地</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ $dict.getLabel('epidemicRecentTravel', info.travelType) }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>目的地</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.arriveAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>居住地点</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.startAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>行程安排</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.startAddress }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>预计/实际抵达时间</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.startTime && info.startTime.substr(0, info.startTime.length - 3) }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>预计离开时间</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.arriveTime && info.arriveTime.substr(0, info.arriveTime.length - 3) }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="detail-info">
 | 
			
		||||
      <h2>行程信息</h2>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>出行方式</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ $dict.getLabel('epidemicRecentTravel', info.travelType) }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>出发时间</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ info.startTime && info.startTime.substr(0, info.startTime.length - 3) }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>出发地区</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span :style="{color: info.denger == 1 ? '#FF4466' : '#333'}">{{ info.startAreaName }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>出发地址</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ info.startAddress }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>到达时间</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ info.arriveTime && info.arriveTime.substr(0, info.arriveTime.length - 3) }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>返乡地区</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ info.arriveAreaName }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>返乡地址</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ info.arriveAddress }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>行程描述</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ info.description }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="detail-info">
 | 
			
		||||
      <h2>核酸检测信息</h2>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>核酸检测日期</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>{{ info.checkTime.split(' ')[0] }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>核酸检测结果</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span :style="{color: info.checkResult === '0' ? '#42D784' : '#FF4466'}">{{
 | 
			
		||||
              $dict.getLabel('epidemicRecentTestResult', info.checkResult)
 | 
			
		||||
            }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item detail-info__item--img">
 | 
			
		||||
        <div class="left" style="max-width: 100%;">
 | 
			
		||||
          <label>本人健康码截图或核酸检测报告</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <image :src="item.url" @click="preview(item.url)" v-for="(item, index) in info.checkPhoto" :key="index"/>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="detail-info">
 | 
			
		||||
      <h2>健康状况</h2>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>当前体温</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span :style="{color: info.temperature >= 37.3 ? '#FF4466' : '#42D784'}">{{ info.temperature }}℃</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>14天内是否接触新冠确诊或疑似患者</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span :style="{color: info.touchInFourteen === '0' ? '#42D784' : '#FF4466'}">{{
 | 
			
		||||
              $dict.getLabel('epidemicTouchInFourteen', info.touchInFourteen)
 | 
			
		||||
            }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="detail-info__item">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <label>当前健康状况</label>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span :style="{color: !info.isHealth ? '#42D784' : '#FF4466'}">{{ info.healthName }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
@@ -139,8 +189,7 @@ export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      info: {},
 | 
			
		||||
      pageShow: false,
 | 
			
		||||
      files: [],
 | 
			
		||||
      pageShow: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
@@ -159,13 +208,6 @@ export default {
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // previewImg(images, img) {
 | 
			
		||||
    //   uni.previewImage({
 | 
			
		||||
    //     urls: images.map((v) => v.url),
 | 
			
		||||
    //     current: img,
 | 
			
		||||
    //   })
 | 
			
		||||
    // },
 | 
			
		||||
 | 
			
		||||
    getInfo(id) {
 | 
			
		||||
      this.$instance.post(`/app/appepidemicbackhomerecord/queryDetailById?id=${id}`).then(res => {
 | 
			
		||||
        if (res.code === 0) {
 | 
			
		||||
@@ -204,197 +246,111 @@ export default {
 | 
			
		||||
  padding-bottom: 40px;
 | 
			
		||||
 | 
			
		||||
  .detail-header {
 | 
			
		||||
    padding: 32px 32px 100px 32px;
 | 
			
		||||
    background: linear-gradient(135deg, #6496FF 0%, #4F75FF 100%);
 | 
			
		||||
    position: relative;
 | 
			
		||||
    padding: 32px;
 | 
			
		||||
    background: #fff;
 | 
			
		||||
 | 
			
		||||
    .user {
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.02);
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      padding: 32px;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      .header {
 | 
			
		||||
    h2 {
 | 
			
		||||
      margin-bottom: 32px;
 | 
			
		||||
      color: #333333;
 | 
			
		||||
      font-size: 40px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .item-info {
 | 
			
		||||
      .item-info__item {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        h3 {
 | 
			
		||||
          font-size: 40px;
 | 
			
		||||
          color: #333333;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
        margin-bottom: 8px;
 | 
			
		||||
 | 
			
		||||
        &:last-child {
 | 
			
		||||
          margin-bottom: 0;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
      }
 | 
			
		||||
      .idNumber, 
 | 
			
		||||
      .phone {
 | 
			
		||||
        color: #999999;
 | 
			
		||||
        font-size: 26px;
 | 
			
		||||
        margin-top: 8px;
 | 
			
		||||
      }
 | 
			
		||||
      .picture {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        margin-top: 24px;
 | 
			
		||||
        .healthPic,
 | 
			
		||||
        .nucleinPic {
 | 
			
		||||
          width: 192px;
 | 
			
		||||
          height: 192px;
 | 
			
		||||
          border-radius: 8px;
 | 
			
		||||
          position: relative;
 | 
			
		||||
          img {
 | 
			
		||||
            width: 100%;
 | 
			
		||||
            height: 100%;
 | 
			
		||||
          }
 | 
			
		||||
          span {
 | 
			
		||||
            position: absolute;
 | 
			
		||||
            bottom: 0;
 | 
			
		||||
            left: 0;
 | 
			
		||||
            width: 100%;
 | 
			
		||||
            height: 40px;
 | 
			
		||||
            line-height: 40px;
 | 
			
		||||
            background: rgb(27, 27, 27, 0.85);
 | 
			
		||||
            color: #fff;
 | 
			
		||||
            font-size: 22px;
 | 
			
		||||
            text-align: center;
 | 
			
		||||
            border-radius: 0 0 8px 8px;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
        image {
 | 
			
		||||
          width: 32px;
 | 
			
		||||
          height: 32px;
 | 
			
		||||
          margin-right: 16px;
 | 
			
		||||
        }
 | 
			
		||||
        .healthPic {
 | 
			
		||||
          margin-right: 24px;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .card {
 | 
			
		||||
      margin-top: 32px;
 | 
			
		||||
      background: rgba(70, 106, 233);
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      padding: 32px;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      .item-info {
 | 
			
		||||
        .item-info__item {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          margin-bottom: 8px;
 | 
			
		||||
 | 
			
		||||
          &:last-child {
 | 
			
		||||
            margin-bottom: 0;
 | 
			
		||||
          }
 | 
			
		||||
          .pic {
 | 
			
		||||
            position: relative;
 | 
			
		||||
            .img {
 | 
			
		||||
              width: 12px;
 | 
			
		||||
              height: 12px;
 | 
			
		||||
            }
 | 
			
		||||
            .lines {
 | 
			
		||||
              position: absolute;
 | 
			
		||||
              top: 32px;
 | 
			
		||||
              left: 4px;
 | 
			
		||||
              width: 4px;
 | 
			
		||||
              height: 100%;
 | 
			
		||||
              border-left: 4px dotted #CCCCCC;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          .img {
 | 
			
		||||
              width: 12px;
 | 
			
		||||
              height: 12px;
 | 
			
		||||
              position: relative;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
          .image {
 | 
			
		||||
            width: 32px;
 | 
			
		||||
            height: 32px;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          span:last-child {
 | 
			
		||||
            color: #fff;
 | 
			
		||||
            font-size: 28px;
 | 
			
		||||
            margin-left: 16px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .info {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 93%;
 | 
			
		||||
      left: 50%;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      transform: translate(-50%, 1%);
 | 
			
		||||
      
 | 
			
		||||
      .detail-info {
 | 
			
		||||
        padding: 0 32px;
 | 
			
		||||
        background: #fff;
 | 
			
		||||
        border-radius: 16px 16px 0 0;
 | 
			
		||||
 | 
			
		||||
        & > h2 {
 | 
			
		||||
          height: 116px;
 | 
			
		||||
          line-height: 116px;
 | 
			
		||||
          font-size: 38px;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
        span {
 | 
			
		||||
          color: #333;
 | 
			
		||||
          span {
 | 
			
		||||
            float: right;
 | 
			
		||||
            font-size: 28px;
 | 
			
		||||
            color: #FF4466;
 | 
			
		||||
            font-weight: normal;
 | 
			
		||||
          }
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .detail-info {
 | 
			
		||||
    margin-top: 24px;
 | 
			
		||||
    padding: 0 32px;
 | 
			
		||||
    background: #fff;
 | 
			
		||||
 | 
			
		||||
    & > h2 {
 | 
			
		||||
      height: 116px;
 | 
			
		||||
      line-height: 116px;
 | 
			
		||||
      font-size: 38px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      color: #333;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .detail-info__item {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      padding: 34px 0;
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
 | 
			
		||||
      &:last-child {
 | 
			
		||||
        border: none;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .left {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        line-height: 1.3;
 | 
			
		||||
        max-width: 360px;
 | 
			
		||||
 | 
			
		||||
        label {
 | 
			
		||||
          position: relative;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
          font-size: 32px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .right {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        max-width: 450px;
 | 
			
		||||
 | 
			
		||||
        span {
 | 
			
		||||
          color: #333333;
 | 
			
		||||
          font-size: 32px;
 | 
			
		||||
          text-align: right;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .detail-info__item {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          justify-content: space-between;
 | 
			
		||||
          padding: 34px 0;
 | 
			
		||||
          border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
 | 
			
		||||
          &:last-child {
 | 
			
		||||
            border: none;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          .left {
 | 
			
		||||
            display: flex;
 | 
			
		||||
            line-height: 1.3;
 | 
			
		||||
            max-width: 360px;
 | 
			
		||||
 | 
			
		||||
            label {
 | 
			
		||||
              position: relative;
 | 
			
		||||
              color: #999999;
 | 
			
		||||
              font-size: 32px;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          .right {
 | 
			
		||||
            display: flex;
 | 
			
		||||
            max-width: 450px;
 | 
			
		||||
 | 
			
		||||
            span {
 | 
			
		||||
              color: #333333;
 | 
			
		||||
              font-size: 32px;
 | 
			
		||||
              text-align: right;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            image {
 | 
			
		||||
              width: 40px;
 | 
			
		||||
              height: 40px;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        image {
 | 
			
		||||
          width: 40px;
 | 
			
		||||
          height: 40px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        .detail-info__item_wrap {
 | 
			
		||||
          display: block;
 | 
			
		||||
          border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
          padding: 34px 0;
 | 
			
		||||
          .left {
 | 
			
		||||
            color: #999999;
 | 
			
		||||
            font-size: 32px;
 | 
			
		||||
          }
 | 
			
		||||
          .right {
 | 
			
		||||
            margin-top: 20px;
 | 
			
		||||
    .detail-info__item--img {
 | 
			
		||||
      display: block;
 | 
			
		||||
 | 
			
		||||
      .right {
 | 
			
		||||
        flex-wrap: wrap;
 | 
			
		||||
        max-width: 100%;
 | 
			
		||||
        margin-top: 34px;
 | 
			
		||||
 | 
			
		||||
        image {
 | 
			
		||||
          width: 226px;
 | 
			
		||||
          height: 226px;
 | 
			
		||||
          margin: 0 9px 9px 0;
 | 
			
		||||
 | 
			
		||||
          &:nth-of-type(3n) {
 | 
			
		||||
            margin-right: 0;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }   
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,35 +1,24 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="wrapper">
 | 
			
		||||
    <div class="tabs">
 | 
			
		||||
      <u-tabs
 | 
			
		||||
          :list="tabs"
 | 
			
		||||
          font-size="36"
 | 
			
		||||
          bg-color="transparent"
 | 
			
		||||
          :bold="false"
 | 
			
		||||
          inactive-color="#ccddff"
 | 
			
		||||
          :is-scroll="true"
 | 
			
		||||
          :gutter="16"
 | 
			
		||||
          active-color="#fff"
 | 
			
		||||
          :current="index"
 | 
			
		||||
          @change="onChange">
 | 
			
		||||
      </u-tabs>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="search-wrap">
 | 
			
		||||
      <div class="left">
 | 
			
		||||
        <AiSelect :dict="yesOrNo" v-model="search.typeName" placeholder="请选择">
 | 
			
		||||
          <span>{{ search.typeName ? search.typeName : "全部类型" }}</span>
 | 
			
		||||
          <u-icon name="arrow-down" color="#333333" size="20"></u-icon>
 | 
			
		||||
        </AiSelect>
 | 
			
		||||
      <div class="left" @click="show=true">
 | 
			
		||||
        <span>{{ search.typeName ? search.typeName : "全部" }}</span>
 | 
			
		||||
        <u-icon name="arrow-down" color="#ffffff" size="20"></u-icon>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="right">
 | 
			
		||||
        <u-icon name="search" size="32" color="#999999" :custom-style="{marginRight:'8px'}"></u-icon>
 | 
			
		||||
        <u-icon name="search" size="32" color="rgba(255,255,255,0.5)" :custom-style="{marginRight:'8px'}"></u-icon>
 | 
			
		||||
        <input placeholder="请输入需要搜索的内容" style="flex: 1;color:#fff;" confirm-type="search"
 | 
			
		||||
               placeholder-style="color:#999999" v-model="search.title"
 | 
			
		||||
               @confirm="current=1;getList()" />
 | 
			
		||||
               placeholder-style="color:rgba(255,255,255,0.5)" v-model="search.title"
 | 
			
		||||
               @confirm="current=1;getList()"></input>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="job-list" v-if="list.length">
 | 
			
		||||
      <header>
 | 
			
		||||
        <span>招工就业列表</span>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          共<em>{{ total }}</em>个职位
 | 
			
		||||
        </div>
 | 
			
		||||
      </header>
 | 
			
		||||
      <div class="card" v-for="(item,index) in list" :key="index">
 | 
			
		||||
        <template v-if="item.type == 1">
 | 
			
		||||
          <div class="top" @click="toDetail(0,item)">
 | 
			
		||||
@@ -73,8 +62,7 @@
 | 
			
		||||
    </div>
 | 
			
		||||
    <AiEmpty v-else></AiEmpty>
 | 
			
		||||
    <div class="btn-wrapper">
 | 
			
		||||
      <div class="perAdd" @click="$linkTo('./pubJob')" hover-class="text-hover">个人求职</div>
 | 
			
		||||
      <div class="compAdd" @click="$linkTo('./addCompJop')" hover-class="text-hover">企业招工</div>
 | 
			
		||||
      <div class="btn" @click="$linkTo('./pubJob')" hover-class="text-hover">我要找工作</div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <u-select v-model="show" :list="selectList" @confirm="onConfirm"></u-select>
 | 
			
		||||
  </div>
 | 
			
		||||
@@ -95,13 +83,9 @@ export default {
 | 
			
		||||
        title: "",
 | 
			
		||||
        type: "",
 | 
			
		||||
        typeName: "",
 | 
			
		||||
      },
 | 
			
		||||
      index: 0,
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  onLoad() {
 | 
			
		||||
    this.$dict.load('yesOrNo')
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    selectList() {
 | 
			
		||||
      return [{
 | 
			
		||||
@@ -115,39 +99,21 @@ export default {
 | 
			
		||||
          value: '1',
 | 
			
		||||
          label: '个人求职'
 | 
			
		||||
        }];
 | 
			
		||||
    },
 | 
			
		||||
    tabs() {
 | 
			
		||||
      return [{
 | 
			
		||||
        name: '全部'
 | 
			
		||||
      }, {
 | 
			
		||||
        name: '我的发布'
 | 
			
		||||
      }]
 | 
			
		||||
    },
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    preview(index) {
 | 
			
		||||
      this.$previewImage(this.list, index, "url");
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    phone({linkPhone: phoneNumber}) {
 | 
			
		||||
      uni.makePhoneCall({phoneNumber});
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    onConfirm(val) {
 | 
			
		||||
      this.search.typeName = val[0].label;
 | 
			
		||||
      this.search.type = val[0].value;
 | 
			
		||||
      this.current = 1;
 | 
			
		||||
      this.getList();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    onChange(val) {
 | 
			
		||||
      this.index = val;
 | 
			
		||||
      this.current = 1;
 | 
			
		||||
      // if (!!this.index) {
 | 
			
		||||
      //   this.getMine();
 | 
			
		||||
      // } else this.getAll();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    getList() {
 | 
			
		||||
      this.$instance.post("/app/appjob/list", null, {
 | 
			
		||||
        params: {
 | 
			
		||||
@@ -180,40 +146,31 @@ export default {
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.wrapper {
 | 
			
		||||
  padding-top: 96px;
 | 
			
		||||
  padding-top: 124px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.tabs {
 | 
			
		||||
  position: fixed;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  z-index: 11;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  padding: 10px 0 10px 16px;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  background: #4181FF;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.search-wrap {
 | 
			
		||||
  position: fixed;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  z-index: 11;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 124px;
 | 
			
		||||
  background: #F3F6F9;
 | 
			
		||||
  background: #4181FF;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  padding: 0 32px;
 | 
			
		||||
  display: flex;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  color: #333333;
 | 
			
		||||
 | 
			
		||||
  .left {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    font-size: 38px;
 | 
			
		||||
 | 
			
		||||
    & > span {
 | 
			
		||||
      font-size: 40px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      font-weight: 500;
 | 
			
		||||
      color: #FFFFFF;
 | 
			
		||||
      margin-right: 16px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@@ -221,7 +178,7 @@ export default {
 | 
			
		||||
  .right {
 | 
			
		||||
    flex: 1;
 | 
			
		||||
    height: 64px;
 | 
			
		||||
    background: #FFFFFF;
 | 
			
		||||
    background: rgba(0, 0, 0, .2);
 | 
			
		||||
    border-radius: 32px;
 | 
			
		||||
    margin-left: 32px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
@@ -392,25 +349,4 @@ export default {
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
.btn-wrapper {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  justify-content: space-between;
 | 
			
		||||
  padding: 20px 32px !important;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  .perAdd,
 | 
			
		||||
  .compAdd {
 | 
			
		||||
    height: 88px;
 | 
			
		||||
    line-height: 88px;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    border-radius: 16px;
 | 
			
		||||
    width: 47%;
 | 
			
		||||
  }
 | 
			
		||||
  .perAdd {
 | 
			
		||||
    border: 1px solid #A0C0FF;
 | 
			
		||||
  }
 | 
			
		||||
  .compAdd {
 | 
			
		||||
    background: #4181FF;
 | 
			
		||||
    color: #fff;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -29,11 +29,6 @@
 | 
			
		||||
        </div>
 | 
			
		||||
      </template>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="btn">
 | 
			
		||||
      <div>撤销发布</div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
@@ -76,103 +71,81 @@ export default {
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.wrapper {
 | 
			
		||||
  padding-bottom: 120px;
 | 
			
		||||
  .card {
 | 
			
		||||
    padding: 32px 0 32px 32px;
 | 
			
		||||
    background-color: #ffffff;
 | 
			
		||||
.card {
 | 
			
		||||
  padding: 32px 0 32px 32px;
 | 
			
		||||
  background-color: #ffffff;
 | 
			
		||||
 | 
			
		||||
    .post-info {
 | 
			
		||||
      padding-right: 32px;
 | 
			
		||||
  .post-info {
 | 
			
		||||
    padding-right: 32px;
 | 
			
		||||
 | 
			
		||||
      .post-name {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        line-height: 56px;
 | 
			
		||||
 | 
			
		||||
        & > span:first-child {
 | 
			
		||||
          font-size: 40px;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          color: #333333;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        & > span:last-child {
 | 
			
		||||
          font-size: 36px;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          color: #FF3521;
 | 
			
		||||
          flex-shrink: 0;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      & > p {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #999999;
 | 
			
		||||
        margin: 16px 0 32px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form {
 | 
			
		||||
      height: 112px;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
    .post-name {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
      padding-right: 32px;
 | 
			
		||||
      line-height: 56px;
 | 
			
		||||
 | 
			
		||||
      .label {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #999999;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .value {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
      & > span:first-child {
 | 
			
		||||
        font-size: 40px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .phone {
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        color: #4181FF;
 | 
			
		||||
      & > span:last-child {
 | 
			
		||||
        font-size: 36px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        color: #FF3521;
 | 
			
		||||
        flex-shrink: 0;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    header {
 | 
			
		||||
      font-size: 38px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      color: #333333;
 | 
			
		||||
      padding: 32px 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .post-require {
 | 
			
		||||
    & > p {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #333333;
 | 
			
		||||
      line-height: 56px;
 | 
			
		||||
      padding-right: 20px;
 | 
			
		||||
      color: #999999;
 | 
			
		||||
      margin: 16px 0 32px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .btn {
 | 
			
		||||
    position: fixed;
 | 
			
		||||
    bottom: 0;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 120px;
 | 
			
		||||
    background: #F3F6F9;
 | 
			
		||||
    padding: 16px 32px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    div {
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      line-height: 88px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      border: 1px solid #FF4466;
 | 
			
		||||
  .form {
 | 
			
		||||
    height: 112px;
 | 
			
		||||
    background: #FFFFFF;
 | 
			
		||||
    border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
    padding-right: 32px;
 | 
			
		||||
 | 
			
		||||
    .label {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #999999;
 | 
			
		||||
    }
 | 
			
		||||
  } 
 | 
			
		||||
 | 
			
		||||
    .value {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #333333;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .phone {
 | 
			
		||||
      font-size: 28px;
 | 
			
		||||
      color: #4181FF;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  header {
 | 
			
		||||
    font-size: 38px;
 | 
			
		||||
    font-weight: 600;
 | 
			
		||||
    color: #333333;
 | 
			
		||||
    padding: 32px 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .post-require {
 | 
			
		||||
    font-size: 32px;
 | 
			
		||||
    font-weight: 400;
 | 
			
		||||
    color: #333333;
 | 
			
		||||
    line-height: 56px;
 | 
			
		||||
    padding-right: 20px;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -26,11 +26,6 @@
 | 
			
		||||
      <div class="post-require">{{ detail.remark }}
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="btn">
 | 
			
		||||
      <div>撤销发布</div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
@@ -79,7 +74,6 @@ export default {
 | 
			
		||||
.padding {
 | 
			
		||||
  min-height: 100%;
 | 
			
		||||
  background-color: #ffffff;
 | 
			
		||||
  padding-bottom: 120px;
 | 
			
		||||
 | 
			
		||||
  .card {
 | 
			
		||||
    padding: 32px 0 32px 32px;
 | 
			
		||||
@@ -158,24 +152,5 @@ export default {
 | 
			
		||||
      padding-right: 20px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .btn {
 | 
			
		||||
    position: fixed;
 | 
			
		||||
    bottom: 0;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 120px;
 | 
			
		||||
    background: #F3F6F9;
 | 
			
		||||
    padding: 16px 32px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    div {
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      line-height: 88px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      border: 1px solid #FF4466;
 | 
			
		||||
    }
 | 
			
		||||
  } 
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										339
									
								
								src/project/grid/AppHealthReport/AddReport.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,339 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="album">
 | 
			
		||||
    <div class="tips">请确保以下信息全部由本人填写,本人对所填写内容的真实性和完整性负责</div>
 | 
			
		||||
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>个人健康状况(可多选)</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiRadio style="width: 100%;" v-model="form.touchInFourteen" dict="epidemicTouchInFourteen"></AiRadio>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>当前状况</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiRadio style="width: 100%;" v-model="form.healthCode" dict="epidemicHealthCode"></AiRadio>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>备注说明</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <textarea  placeholder="请补充说明健康监测情况" v-model="form.temperature"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- <u-picker mode="time" :params="dataParams" v-model="isShowDate" @confirm="onDateChange"></u-picker> -->
 | 
			
		||||
    <div class="btn-wrapper">
 | 
			
		||||
      <div class="btn" hover-class="text-hover" @click="submit">提交</div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import {mapState} from 'vuex'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  appName:"上报今日状态",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      isShowDate: false,
 | 
			
		||||
      dataParams: {
 | 
			
		||||
        year: true,
 | 
			
		||||
        month: true,
 | 
			
		||||
        day: true
 | 
			
		||||
      },
 | 
			
		||||
      form: {
 | 
			
		||||
        name: '',
 | 
			
		||||
        idNumber: '',
 | 
			
		||||
        checkPhoto: [],
 | 
			
		||||
        checkResult: '',
 | 
			
		||||
        health: '',
 | 
			
		||||
        healthCode: '',
 | 
			
		||||
        temperature: '',
 | 
			
		||||
        vaccine: '',
 | 
			
		||||
        checkTime: '',
 | 
			
		||||
        memberId: ''
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  computed: {
 | 
			
		||||
    ...mapState(['user'])
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onLoad(query) {
 | 
			
		||||
    this.form.memberId = query.id
 | 
			
		||||
    this.getInfo(query.id)
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    getInfo(id) {
 | 
			
		||||
      this.$instance.post(`/app/appepidemicreportmember/queryDetailById?id=${id}`).then(res => {
 | 
			
		||||
        if (res.code === 0) {
 | 
			
		||||
          this.form.name = res.data.name
 | 
			
		||||
          this.form.idNumber = res.data.idNumber
 | 
			
		||||
 | 
			
		||||
          this.form.checkTime = res.data.checkTime ? res.data.checkTime.split(' ')[0] : ''
 | 
			
		||||
          this.form.checkResult = res.data.checkResult || ''
 | 
			
		||||
          this.form.healthCode = res.data.healthCode || ''
 | 
			
		||||
          this.form.vaccine = res.data.vaccine || ''
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.$hideLoading()
 | 
			
		||||
      }).catch(() => {
 | 
			
		||||
        this.$hideLoading()
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    onDateChange(e) {
 | 
			
		||||
      this.form.checkTime = `${e.year}-${e.month}-${e.day}`
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    submit() {
 | 
			
		||||
      if (!this.form.temperature) {
 | 
			
		||||
        return this.$toast('请输入当前体温')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.touchInFourteen) {
 | 
			
		||||
        return this.$toast('请选择14天内是否接触新冠确诊或疑似患者')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.health.length) {
 | 
			
		||||
        return this.$toast('请选择当前健康状况')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.form.checkTime) {
 | 
			
		||||
        return this.$toast('请选择核酸检测日期')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.checkResult) {
 | 
			
		||||
        return this.$toast('请选择核酸检测结果')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.healthCode) {
 | 
			
		||||
        return this.$toast('请选择健康码类型')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.vaccine) {
 | 
			
		||||
        return this.$toast('请选择已接种疫苗次数')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.$instance.post(`/app/appepidemichealthreport/addOrUpdate`, {
 | 
			
		||||
        ...this.form,
 | 
			
		||||
        openid: this.user.openid,
 | 
			
		||||
        health: this.form.health.join(','),
 | 
			
		||||
        checkPhoto: JSON.stringify(this.form.checkPhoto),
 | 
			
		||||
        checkTime: this.form.checkTime + ' 00:00:00'
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res.code == 0) {
 | 
			
		||||
          uni.$emit('update')
 | 
			
		||||
          this.$toast('提交成功')
 | 
			
		||||
          setTimeout(() => {
 | 
			
		||||
            uni.navigateBack()
 | 
			
		||||
          }, 400)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
.album {
 | 
			
		||||
  padding-bottom: 140px;
 | 
			
		||||
 | 
			
		||||
  .tips {
 | 
			
		||||
    line-height: 1.3;
 | 
			
		||||
    padding: 32px 32px;
 | 
			
		||||
    color: #FF883C;
 | 
			
		||||
    font-size: 30px;
 | 
			
		||||
    text-align: justify;
 | 
			
		||||
    background: #FFF8F3;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .form-item__group {
 | 
			
		||||
    margin-bottom: 24px;
 | 
			
		||||
    background: #fff;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .form-item {
 | 
			
		||||
    padding-left: 32px;
 | 
			
		||||
 | 
			
		||||
    .form-item__checkbox {
 | 
			
		||||
      width: 100%;
 | 
			
		||||
 | 
			
		||||
      div {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 80px;
 | 
			
		||||
        line-height: 80px;
 | 
			
		||||
        margin-bottom: 24px;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        background: #FFFFFF;
 | 
			
		||||
        border-radius: 16px;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        border: 1px solid #CCCCCC;
 | 
			
		||||
 | 
			
		||||
        &.active {
 | 
			
		||||
          background: #4181FF;
 | 
			
		||||
          color: #fff;
 | 
			
		||||
          border-color: #4181FF;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form-item__radio {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      flex-wrap: wrap;
 | 
			
		||||
 | 
			
		||||
      div {
 | 
			
		||||
        width: 212px;
 | 
			
		||||
        height: 80px;
 | 
			
		||||
        line-height: 80px;
 | 
			
		||||
        margin-right: 16px;
 | 
			
		||||
        margin-bottom: 8px;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        background: #FFFFFF;
 | 
			
		||||
        border-radius: 16px;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        border: 1px solid #CCCCCC;
 | 
			
		||||
 | 
			
		||||
        &:nth-of-type(3n) {
 | 
			
		||||
          margin-right: 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &.active {
 | 
			
		||||
          background: #4181FF;
 | 
			
		||||
          color: #fff;
 | 
			
		||||
          border-color: #4181FF;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .ai-area__wrapper {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      padding-left: 100px;
 | 
			
		||||
 | 
			
		||||
      span {
 | 
			
		||||
        color: #333;
 | 
			
		||||
        font-size: 30px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      i {
 | 
			
		||||
        color: #999;
 | 
			
		||||
        font-size: 30px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      image {
 | 
			
		||||
        width: 16px;
 | 
			
		||||
        height: 8px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form-item__wrapper {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      height: 128px;
 | 
			
		||||
      padding-right: 28px;
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
 | 
			
		||||
      input {
 | 
			
		||||
        flex: 1;
 | 
			
		||||
        height: 100%;
 | 
			
		||||
        text-align: left;
 | 
			
		||||
        color: #333;
 | 
			
		||||
        padding-right: 10px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .form-item__right {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
 | 
			
		||||
        // .u-input {
 | 
			
		||||
        //   display: block;
 | 
			
		||||
        //   width: 100%;
 | 
			
		||||
        // }
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    .form-item__wrapper_input {
 | 
			
		||||
      display: block;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &:last-child {
 | 
			
		||||
      .form-item__wrapper {
 | 
			
		||||
        border-bottom: none;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form-item__title {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
 | 
			
		||||
      i {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        color: #FF4466;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      span {
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        color: #999999;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      h2 {
 | 
			
		||||
        padding: 0 4px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        color: #666666;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.form-item__imgs, &.form-item__textarea {
 | 
			
		||||
      .form-item__wrapper {
 | 
			
		||||
        display: block;
 | 
			
		||||
        height: auto;
 | 
			
		||||
        padding-bottom: 32px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      textarea {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 90px;
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .form-item__title {
 | 
			
		||||
        padding: 32px 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .form-item__right {
 | 
			
		||||
        padding-left: 18px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										327
									
								
								src/project/grid/AppHealthReport/AddUser.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,327 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="album">
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>上报人姓名</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <input placeholder="请输入" v-model="form.name" :maxlength="20"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>身份证号</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <input placeholder="请输入" type="idcard" v-model="form.idNumber" :maxlength="20"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>联系方式</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <input placeholder="请输入" type="number" v-model="form.phone" :maxlength="11"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>所属地区</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiAreaPicker class="ai-area" :areaId="$areaId" v-model="form.areaId" :fullName.sync="form.areaName">
 | 
			
		||||
              <div class="ai-area__wrapper">
 | 
			
		||||
                <span class="label" v-if="form.areaName">{{ form.areaName }}</span>
 | 
			
		||||
                <i v-else>请选择</i>
 | 
			
		||||
                <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
              </div>
 | 
			
		||||
            </AiAreaPicker>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__textarea">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>详细地址</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <textarea auto-height v-model="form.address" :maxlength="500" placeholder="如住所、酒店、单位等"
 | 
			
		||||
                      placeholder-style="font-size: 16px;"></textarea>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="btn-wrapper">
 | 
			
		||||
      <div class="btn" hover-class="text-hover" @click="submit">提交</div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import {mapState} from 'vuex'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  appName: "添加上报人员",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      form: {
 | 
			
		||||
        address: '',
 | 
			
		||||
        areaId: '',
 | 
			
		||||
        areaName: '',
 | 
			
		||||
        idNumber: '',
 | 
			
		||||
        name: '',
 | 
			
		||||
        phone: ''
 | 
			
		||||
      },
 | 
			
		||||
      $areaId: '',
 | 
			
		||||
      flag: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    ...mapState(['user'])
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    submit() {
 | 
			
		||||
      if (!this.form.name) {
 | 
			
		||||
        return this.$toast('请输入上报人姓名')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.idNumber) {
 | 
			
		||||
        return this.$toast('请输入上报人身份证号')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.form.idNumber)) {
 | 
			
		||||
        return this.$toast('请输入正确的身份证账号')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.form.phone) {
 | 
			
		||||
        return this.$toast('请选择上报人手机号码')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!/^1[0-9]{10,10}$/.test(this.form.phone)) {
 | 
			
		||||
        return this.$toast('请输入正确的手机号码')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.areaId) {
 | 
			
		||||
        return this.$toast('请选择上报地区')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (this.form.areaId.substr(this.form.areaId.length - 3, 3) === '000') {
 | 
			
		||||
        return this.$toast('上报地区必须选到村或社区')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.address) {
 | 
			
		||||
        return this.$toast('请输入详细地址')
 | 
			
		||||
      }
 | 
			
		||||
      if (this.flag) return
 | 
			
		||||
      this.flag = true
 | 
			
		||||
 | 
			
		||||
      this.$loading()
 | 
			
		||||
      this.$instance.post(`/app/appepidemicreportmember/addOrUpdate`, {
 | 
			
		||||
        ...this.form,
 | 
			
		||||
        openid: this.user.openid
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        this.$hideLoading()
 | 
			
		||||
        this.flag = false
 | 
			
		||||
        if (res.code == 0) {
 | 
			
		||||
          this.$toast('提交成功')
 | 
			
		||||
          uni.$emit('update')
 | 
			
		||||
          setTimeout(() => {
 | 
			
		||||
            uni.redirectTo({
 | 
			
		||||
              url: `./Result?id=${res.data.id}`
 | 
			
		||||
            })
 | 
			
		||||
          }, 400)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
.album {
 | 
			
		||||
  padding-bottom: 140px;
 | 
			
		||||
 | 
			
		||||
  .form-item__group {
 | 
			
		||||
    margin-bottom: 24px;
 | 
			
		||||
    background: #fff;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .form-item {
 | 
			
		||||
    padding-left: 32px;
 | 
			
		||||
 | 
			
		||||
    .form-item__checkbox {
 | 
			
		||||
      width: 100%;
 | 
			
		||||
 | 
			
		||||
      div {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 80px;
 | 
			
		||||
        line-height: 80px;
 | 
			
		||||
        margin-bottom: 24px;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        background: #FFFFFF;
 | 
			
		||||
        border-radius: 16px;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        border: 1px solid #CCCCCC;
 | 
			
		||||
 | 
			
		||||
        &.active {
 | 
			
		||||
          background: #4181FF;
 | 
			
		||||
          color: #fff;
 | 
			
		||||
          border-color: #4181FF;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form-item__radio {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      flex-wrap: wrap;
 | 
			
		||||
 | 
			
		||||
      div {
 | 
			
		||||
        width: 212px;
 | 
			
		||||
        height: 80px;
 | 
			
		||||
        line-height: 80px;
 | 
			
		||||
        margin-right: 16px;
 | 
			
		||||
        margin-bottom: 8px;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        background: #FFFFFF;
 | 
			
		||||
        border-radius: 16px;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        border: 1px solid #CCCCCC;
 | 
			
		||||
 | 
			
		||||
        &:nth-of-type(3n) {
 | 
			
		||||
          margin-right: 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &.active {
 | 
			
		||||
          background: #4181FF;
 | 
			
		||||
          color: #fff;
 | 
			
		||||
          border-color: #4181FF;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .ai-area__wrapper {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      padding-left: 100px;
 | 
			
		||||
 | 
			
		||||
      span {
 | 
			
		||||
        color: #333;
 | 
			
		||||
        font-size: 30px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      i {
 | 
			
		||||
        color: #999;
 | 
			
		||||
        font-size: 30px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      image {
 | 
			
		||||
        width: 16px;
 | 
			
		||||
        height: 8px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form-item__wrapper {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      height: 128px;
 | 
			
		||||
      padding-right: 28px;
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
 | 
			
		||||
      input {
 | 
			
		||||
        flex: 1;
 | 
			
		||||
        height: 100%;
 | 
			
		||||
        text-align: right;
 | 
			
		||||
        color: #333;
 | 
			
		||||
        padding-right: 10px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .form-item__right {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
 | 
			
		||||
        span {
 | 
			
		||||
          max-width: 400px;
 | 
			
		||||
          margin-right: 8px;
 | 
			
		||||
          color: #333333;
 | 
			
		||||
          overflow: hidden;
 | 
			
		||||
          white-space: nowrap;
 | 
			
		||||
          text-overflow: ellipsis;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        i {
 | 
			
		||||
          margin-right: 8px;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &:last-child {
 | 
			
		||||
      .form-item__wrapper {
 | 
			
		||||
        border-bottom: none;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form-item__title {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
 | 
			
		||||
      i {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        color: #FF4466;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      span {
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        color: #999999;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      h2 {
 | 
			
		||||
        padding: 0 4px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    &.form-item__imgs, &.form-item__textarea {
 | 
			
		||||
      .form-item__wrapper {
 | 
			
		||||
        display: block;
 | 
			
		||||
        height: auto;
 | 
			
		||||
        padding-bottom: 32px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      textarea {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 90px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .form-item__title {
 | 
			
		||||
        padding: 32px 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .form-item__right {
 | 
			
		||||
        padding-left: 18px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										395
									
								
								src/project/grid/AppHealthReport/AppHealthReport.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,395 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="returnHomeRegister" v-if="pageShow">
 | 
			
		||||
    <div class="title">
 | 
			
		||||
      <h2>上报人员</h2>
 | 
			
		||||
      <div class="right">
 | 
			
		||||
        <span>共</span>
 | 
			
		||||
        <i>{{ total }}</i>
 | 
			
		||||
        <span>名</span>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="home-list">
 | 
			
		||||
      <div class="item" v-for="(item, index) in list" :key="index" >
 | 
			
		||||
        <div class="item-top" @click.stop="$linkTo('./Detail?id=' + item.id)">
 | 
			
		||||
          <div class="item-top__left">
 | 
			
		||||
            <h2>{{ item.name }}<span :class="item.status == 1? 'status0':'status1'">返乡人员</span></h2>
 | 
			
		||||
            <!-- <p @click.stop="$linkTo('./UserInfo?id=' + item.id)" hover-class="text-hover">查看个人信息></p> -->
 | 
			
		||||
            <div>
 | 
			
		||||
              <p>登记于2021-10-15</p>
 | 
			
		||||
              <span :class="item.status == 1? 'status0':'status1'">异常</span>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <span v-if="item.status === '0'">健康数据异常</span>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="item-bottom">
 | 
			
		||||
          <div class="item-bottom__left">
 | 
			
		||||
            <span>上报第</span>
 | 
			
		||||
            <i>{{ item.diffNum || 0 }}</i>
 | 
			
		||||
            <span>天</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item-bottom__right" hover-class="text-hover" v-if="item.today === '0'"
 | 
			
		||||
               @click.stop="$linkTo('./AddReport?id=' + item.id)">
 | 
			
		||||
            <span style="color: #FF883C">今日未上报</span>
 | 
			
		||||
            <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item-bottom__right" hover-class="text-hover" v-else
 | 
			
		||||
               @click.stop="$linkTo('./RecordList?id=' + item.id)">
 | 
			
		||||
            <span style="color: #999999">今日已上报</span>
 | 
			
		||||
            <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <AiEmpty v-if="list.length==0"/>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="btn-wrapper">
 | 
			
		||||
      <div class="share" @click="show = true">分享</div>
 | 
			
		||||
      <div class="addBtn" @click="toReport" hover-class="text-hover">添加上报人员</div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <u-popup  v-model="show" mode="bottom" border-radius="30">
 | 
			
		||||
			<div class="shareBox">
 | 
			
		||||
        <h2>分享到:</h2>
 | 
			
		||||
        <div class="card">
 | 
			
		||||
          <div class="itemCard" @click="registerCode()">
 | 
			
		||||
            <img src="./components/code.png" alt="" class="imgs" />
 | 
			
		||||
            <div class="names">扫码登记</div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="itemCard" @click="invitation()">
 | 
			
		||||
            <img src="./components/wechat.png" alt="" class="imgs" />
 | 
			
		||||
            <div class="names">微信邀请</div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="close" @click="show = false">取消</div>
 | 
			
		||||
      </div>
 | 
			
		||||
		</u-popup>
 | 
			
		||||
 | 
			
		||||
    <u-popup v-model="showCode" mode="center" border-radius="14" width="90%" height="450px">
 | 
			
		||||
			<div class="showCode">
 | 
			
		||||
        <div class="qrCode">
 | 
			
		||||
          <img src="./components/code.png" alt="">
 | 
			
		||||
        </div>
 | 
			
		||||
        <h2>健康上报</h2>
 | 
			
		||||
        <p>请使用微信扫码,上报本人健康情况</p>
 | 
			
		||||
        <div class="btn">
 | 
			
		||||
          <div class="cancel" @click="showCode = false">取消</div>
 | 
			
		||||
          <div class="save" @click="savePoster">保存海报</div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
		</u-popup>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import {mapState} from 'vuex'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "AppHealthReport",
 | 
			
		||||
  appName: "健康上报",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      list: [],
 | 
			
		||||
      pageShow: false,
 | 
			
		||||
      current: 1,
 | 
			
		||||
      total: 0,
 | 
			
		||||
      show: false,
 | 
			
		||||
      showCode: false,
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  computed: {
 | 
			
		||||
    ...mapState(['user'])
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onLoad() {
 | 
			
		||||
    this.$loading()
 | 
			
		||||
    this.$dict.load(['villageActivityStatus']).then(() => {
 | 
			
		||||
      this.getList()
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    uni.$on('update', () => {
 | 
			
		||||
      this.current = 1
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.getList()
 | 
			
		||||
      })
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    toReport() {
 | 
			
		||||
      this.$linkTo('./AddUser')
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 扫码登记
 | 
			
		||||
    registerCode() {
 | 
			
		||||
      this.show = false;
 | 
			
		||||
      this.showCode = true;
 | 
			
		||||
    },
 | 
			
		||||
    // 微信邀请
 | 
			
		||||
    invitation() {
 | 
			
		||||
      console.log('222');
 | 
			
		||||
    },
 | 
			
		||||
    // 保存海报
 | 
			
		||||
    savePoster() {},
 | 
			
		||||
 | 
			
		||||
    getList() {
 | 
			
		||||
 | 
			
		||||
      this.$instance.post(`/app/appepidemicreportmember/list?openId=${this.user.openId}`, null, {
 | 
			
		||||
        params: {
 | 
			
		||||
          current: this.current,
 | 
			
		||||
          size: 15
 | 
			
		||||
        }
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res.code == 0) {
 | 
			
		||||
          this.total = res.data.total
 | 
			
		||||
          if (this.current > 1) {
 | 
			
		||||
            this.list = [...this.list, ...res.data.records]
 | 
			
		||||
          } else {
 | 
			
		||||
            this.list = res.data.records
 | 
			
		||||
          }
 | 
			
		||||
          uni.hideLoading()
 | 
			
		||||
          this.pageShow = true
 | 
			
		||||
          if (res.data.records.length < 15) {
 | 
			
		||||
 | 
			
		||||
            return false
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          this.current = this.current + 1
 | 
			
		||||
        } else {
 | 
			
		||||
          uni.hideLoading()
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => {
 | 
			
		||||
        uni.hideLoading()
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onReachBottom() {
 | 
			
		||||
    this.getList()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" socped>
 | 
			
		||||
.returnHomeRegister {
 | 
			
		||||
  padding: 0 0 150px 0;
 | 
			
		||||
 | 
			
		||||
  .title {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    margin-bottom: 32px;
 | 
			
		||||
    padding: 48px 32px 0 32px;
 | 
			
		||||
 | 
			
		||||
    & > h2 {
 | 
			
		||||
      font-size: 38px;
 | 
			
		||||
      color: #333;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .right {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
 | 
			
		||||
      span {
 | 
			
		||||
        color: #666666;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      i {
 | 
			
		||||
        color: #4181FF;
 | 
			
		||||
        font-style: normal;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .item {
 | 
			
		||||
    margin: 0 32px 24px;
 | 
			
		||||
    border-radius: 16px;
 | 
			
		||||
    background: #fff;
 | 
			
		||||
 | 
			
		||||
    .item-top {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      height: 152px;
 | 
			
		||||
      padding: 0 32px;
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
 | 
			
		||||
      .item-top__left {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        h2 {
 | 
			
		||||
          line-height: 44px;
 | 
			
		||||
          margin-bottom: 8px;
 | 
			
		||||
          color: #333;
 | 
			
		||||
          font-size: 32px;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          span {
 | 
			
		||||
            padding: 4px 8px;
 | 
			
		||||
            font-size: 26px;
 | 
			
		||||
            font-weight: normal;
 | 
			
		||||
            margin-left: 24px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        div {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          justify-content: space-between;
 | 
			
		||||
          p {
 | 
			
		||||
            color: #999999;
 | 
			
		||||
            font-size: 26px;
 | 
			
		||||
          }
 | 
			
		||||
          span {
 | 
			
		||||
            padding: 4px 8px;
 | 
			
		||||
            font-size: 26px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        .status0 {
 | 
			
		||||
          color: #FF4466;
 | 
			
		||||
          background: #FFF5F7;
 | 
			
		||||
        }
 | 
			
		||||
        .status1 {
 | 
			
		||||
          color: #1AAAFF;
 | 
			
		||||
          background: #E8F6FF;
 | 
			
		||||
        }
 | 
			
		||||
        .status2 {
 | 
			
		||||
          color: #42D784;
 | 
			
		||||
          background: #ECFBF2;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      & > span {
 | 
			
		||||
        font-size: 26px;
 | 
			
		||||
        color: #FF4466;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .item-bottom {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      height: 104px;
 | 
			
		||||
      padding: 0 32px;
 | 
			
		||||
 | 
			
		||||
      .item-bottom__right {
 | 
			
		||||
        span {
 | 
			
		||||
          color: #999999;
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .item-bottom__left {
 | 
			
		||||
        span {
 | 
			
		||||
          color: #999999;
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        i {
 | 
			
		||||
          color: #4181FF;
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      & > div {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .btn-wrapper {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    padding: 20px 32px !important;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    .addBtn,
 | 
			
		||||
    .share {
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      line-height: 88px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
    }
 | 
			
		||||
    .share {
 | 
			
		||||
      width: 35%;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      border: 1px solid #A0C0FF;
 | 
			
		||||
    }
 | 
			
		||||
    .addBtn {
 | 
			
		||||
      width: 60%;
 | 
			
		||||
      background: #4181FF;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      color: #fff;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .shareBox {
 | 
			
		||||
    padding-top: 32px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    h2 {
 | 
			
		||||
      padding: 0 32px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
    }
 | 
			
		||||
    .card {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      padding: 60px 32px 32px 32px;
 | 
			
		||||
      .itemCard {
 | 
			
		||||
        flex: 1;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        // width: 25%;
 | 
			
		||||
        img {
 | 
			
		||||
          width: 96px;
 | 
			
		||||
          height: 96px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    // ::v-deep .u-popup .u-drawer .u-drawer-bottom {
 | 
			
		||||
    //   bottom: 50px;
 | 
			
		||||
    // }
 | 
			
		||||
    .close {
 | 
			
		||||
      height: 112px;
 | 
			
		||||
      line-height: 112px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      border-top: 2px solid #EEEEEE;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .showCode {
 | 
			
		||||
    padding: 64px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    .qrCode {
 | 
			
		||||
      img {
 | 
			
		||||
        width: 320px;
 | 
			
		||||
        height: 320px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    h2 {
 | 
			
		||||
      font-size: 36px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      padding: 32px 0;
 | 
			
		||||
    }
 | 
			
		||||
    p {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      margin-bottom: 80px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .btn {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      .cancel,
 | 
			
		||||
      .save {
 | 
			
		||||
        width: 45%;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        height: 80px;
 | 
			
		||||
        line-height: 80px;
 | 
			
		||||
        border-radius: 40px;
 | 
			
		||||
      }
 | 
			
		||||
      .cancel {
 | 
			
		||||
        background: #EFF2F7;
 | 
			
		||||
      }
 | 
			
		||||
      .save {
 | 
			
		||||
        background: #383A49;
 | 
			
		||||
        color: #FFF;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										271
									
								
								src/project/grid/AppHealthReport/Detail.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,271 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="detail">
 | 
			
		||||
    <div class="detail-header">
 | 
			
		||||
      <div class="name">
 | 
			
		||||
        <h2>张三<span>返乡人员</span></h2>
 | 
			
		||||
        <p @click="call(info.phone)"><u-icon name="phone" color="#4181FF" size="28"></u-icon>拨打电话</p>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="idNumber">
 | 
			
		||||
        <span>身份证号:</span>
 | 
			
		||||
        <span>420107197309172837</span>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="phone">
 | 
			
		||||
        <span>手机号码:</span>
 | 
			
		||||
        <span>13827263092</span>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="address">
 | 
			
		||||
        <span>详细地址:</span>
 | 
			
		||||
        <span>辛店镇北靳楼-北靳楼大学学生宿舍560</span>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="detail-info">
 | 
			
		||||
      <div class="title">
 | 
			
		||||
        <div class="left">
 | 
			
		||||
          <h2>上报记录</h2>
 | 
			
		||||
          <p>个人连续无异常上报<span>7</span>>天后自动解除风险</p>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <span>3</span>/<span>7</span>天
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="list">
 | 
			
		||||
        <div class="item">
 | 
			
		||||
          <div class="item_card">
 | 
			
		||||
            <div class="left">
 | 
			
		||||
              <span></span><span>2020-07-20</span><span>(自主上报)</span>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="right">
 | 
			
		||||
              <span :class="'status0'">异常</span>
 | 
			
		||||
              <!-- :class="item.check ? 'img-active' : ''" -->
 | 
			
		||||
              <img src="./components/down-icon.png" :class="checked == true ? '': 'img-active'" alt="" @click="putOn" />
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item_info" v-if="checked">
 | 
			
		||||
            <div class="items">
 | 
			
		||||
              <label>当前健康状况</label>
 | 
			
		||||
              <div>发烧、乏力、咳嗽</div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  export default {
 | 
			
		||||
    appName:"上报记录",
 | 
			
		||||
    data () {
 | 
			
		||||
      return {
 | 
			
		||||
        info: {},
 | 
			
		||||
        checked: true,
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    onLoad (query) {
 | 
			
		||||
      this.$dict.load(['epidemicTouchInFourteen', 'epidemicRecentHealth', 'epidemicRecentTestResult', 'epidemicHealthCode', 'epidemicVaccineTime']).then(() => {
 | 
			
		||||
        this.getInfo(query.id)
 | 
			
		||||
      })
 | 
			
		||||
      this.getInfo(query.id)
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    methods: {
 | 
			
		||||
      preview (url) {
 | 
			
		||||
        uni.previewImage({
 | 
			
		||||
          urls: this.info.checkPhoto.map(v => v.url),
 | 
			
		||||
          current: url
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      // 收起展开
 | 
			
		||||
      putOn() {
 | 
			
		||||
        this.checked = !this.checked
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      call(phone) {
 | 
			
		||||
        uni.makePhoneCall({
 | 
			
		||||
          phoneNumber: phone
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      getInfo (id) {
 | 
			
		||||
        this.$instance.post(`/app/appepidemichealthreport/queryDetailById?id=${id}`).then(res => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            this.info = res.data
 | 
			
		||||
            this.info.checkPhoto = JSON.parse(res.data.checkPhoto)
 | 
			
		||||
            let healthName = ''
 | 
			
		||||
            this.info.isHealth = false
 | 
			
		||||
            res.data.health.split(',').forEach(v => {
 | 
			
		||||
              if (v > 0) {
 | 
			
		||||
                this.info.isHealth = true
 | 
			
		||||
              }
 | 
			
		||||
              healthName = healthName + this.$dict.getLabel('epidemicRecentHealth', v)
 | 
			
		||||
            })
 | 
			
		||||
            this.info.healthName = healthName
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      call (phone) {
 | 
			
		||||
        uni.makePhoneCall({
 | 
			
		||||
          phoneNumber: phone
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
  .detail {
 | 
			
		||||
    padding-bottom: 40px;
 | 
			
		||||
 | 
			
		||||
    .detail-header {
 | 
			
		||||
      padding: 32px;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      background: #FFF;
 | 
			
		||||
 | 
			
		||||
      .name {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        h2 {
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          font-size: 40px;
 | 
			
		||||
          span {
 | 
			
		||||
            font-weight: normal;
 | 
			
		||||
            font-size: 26px;
 | 
			
		||||
            padding: 4px 8px;
 | 
			
		||||
            margin-left: 16px;
 | 
			
		||||
            background: #FFF5F7;
 | 
			
		||||
            color: #FF4466;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        p {
 | 
			
		||||
          font-size: 26px;
 | 
			
		||||
          color: #4181FF;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .idNumber,
 | 
			
		||||
      .phone,
 | 
			
		||||
      .address {
 | 
			
		||||
        color: #999999;
 | 
			
		||||
        font-size: 26px;
 | 
			
		||||
        margin-top: 8px;
 | 
			
		||||
 | 
			
		||||
        span:first-child {
 | 
			
		||||
          display: inline-block;
 | 
			
		||||
          width: 130px;
 | 
			
		||||
          vertical-align: top;
 | 
			
		||||
        }
 | 
			
		||||
        span:last-child {
 | 
			
		||||
          display: inline-block;
 | 
			
		||||
          width: calc(100% - 130px);
 | 
			
		||||
          vertical-align: top;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      .idNumber {
 | 
			
		||||
        margin-top: 16px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .detail-info {
 | 
			
		||||
      margin-top: 24px;
 | 
			
		||||
      .title {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        background: #FFF;
 | 
			
		||||
        padding: 32px;
 | 
			
		||||
        box-sizing: border-box;
 | 
			
		||||
        .left {
 | 
			
		||||
          h2 {
 | 
			
		||||
            font-size: 38px;
 | 
			
		||||
            color: #333333;
 | 
			
		||||
            font-weight: 600;
 | 
			
		||||
          }
 | 
			
		||||
          p {
 | 
			
		||||
            font-size: 26px;
 | 
			
		||||
            color: #999999;
 | 
			
		||||
            margin-top: 8px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        .right {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
          span:first-child {
 | 
			
		||||
            color: #4181FF;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .list {
 | 
			
		||||
        .item {
 | 
			
		||||
          .item_card {
 | 
			
		||||
            display: flex;
 | 
			
		||||
            justify-content: space-between;
 | 
			
		||||
            align-items: center;
 | 
			
		||||
            padding: 26px 32px;
 | 
			
		||||
            background: #FFF;
 | 
			
		||||
 | 
			
		||||
            .left {
 | 
			
		||||
              span:first-child {
 | 
			
		||||
                display: inline-block;
 | 
			
		||||
                width: 4px;
 | 
			
		||||
                height: 24px;
 | 
			
		||||
                background: #1365DD;
 | 
			
		||||
                vertical-align: center;
 | 
			
		||||
                margin-right: 12px;
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            .right {
 | 
			
		||||
              span {
 | 
			
		||||
                display: inline-block;
 | 
			
		||||
                vertical-align: center;
 | 
			
		||||
                margin-right: 16px;
 | 
			
		||||
                padding: 4px 8px;
 | 
			
		||||
              }
 | 
			
		||||
              .status0 {
 | 
			
		||||
                color: #FF4466;
 | 
			
		||||
                background: #FFF5F7;
 | 
			
		||||
              }
 | 
			
		||||
              .status1 {
 | 
			
		||||
                color: #1AAAFF;
 | 
			
		||||
                background: #E8F6FF;
 | 
			
		||||
              }
 | 
			
		||||
              .status2 {
 | 
			
		||||
                color: #42D784;
 | 
			
		||||
                background: #ECFBF2;
 | 
			
		||||
              }
 | 
			
		||||
 | 
			
		||||
              img {
 | 
			
		||||
                width: 48px;
 | 
			
		||||
                height: 48px;
 | 
			
		||||
                transition: all 0.3s ease-in-out;
 | 
			
		||||
                transform: rotate(180deg);
 | 
			
		||||
                vertical-align: bottom;
 | 
			
		||||
              }
 | 
			
		||||
 | 
			
		||||
              .img-active {
 | 
			
		||||
                transform: rotate(0deg);
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          .item_info {
 | 
			
		||||
            padding: 16px 32px;
 | 
			
		||||
            background: #FAFAFA;
 | 
			
		||||
            .items {
 | 
			
		||||
              display: flex;
 | 
			
		||||
              justify-content: space-between;
 | 
			
		||||
              align-items: center;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										116
									
								
								src/project/grid/AppHealthReport/RecordList.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,116 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="record" v-if="pageShow">
 | 
			
		||||
    <div class="record-item" v-for="(item, index) in list" :key="index" @click="$linkTo('./Detail?id=' + item.id)"
 | 
			
		||||
         hover-class="bg-hover">
 | 
			
		||||
      <div class="left">{{ item.createTime.split(' ')[0] }}的健康上报</div>
 | 
			
		||||
      <div class="right">
 | 
			
		||||
        <i v-if="item.status === '0'">健康数据异常</i>
 | 
			
		||||
        <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <AiEmpty v-if="!list.length && isMore"/>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  appName: "上报记录",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      list: [],
 | 
			
		||||
      pageShow: false,
 | 
			
		||||
      current: 1,
 | 
			
		||||
      total: 0,
 | 
			
		||||
      isMore: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onLoad(query) {
 | 
			
		||||
    this.$loading()
 | 
			
		||||
    this.getList(query)
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    getList(query) {
 | 
			
		||||
      if (this.isMore) return
 | 
			
		||||
 | 
			
		||||
      this.$instance.post(`/app/appepidemichealthreport/list?memberId=${query.id}`, null, {
 | 
			
		||||
        params: {
 | 
			
		||||
          current: this.current,
 | 
			
		||||
          size: 15
 | 
			
		||||
        }
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res.code == 0) {
 | 
			
		||||
          this.total = res.data.total
 | 
			
		||||
          if (this.current > 1) {
 | 
			
		||||
            this.list = [...this.list, ...res.data.records]
 | 
			
		||||
          } else {
 | 
			
		||||
            this.list = res.data.records
 | 
			
		||||
          }
 | 
			
		||||
          uni.hideLoading()
 | 
			
		||||
          this.pageShow = true
 | 
			
		||||
          if (res.data.records.length < 15) {
 | 
			
		||||
            this.isMore = true
 | 
			
		||||
 | 
			
		||||
            return false
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          this.current = this.current + 1
 | 
			
		||||
        } else {
 | 
			
		||||
          uni.hideLoading()
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => {
 | 
			
		||||
        uni.hideLoading()
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onReachBottom() {
 | 
			
		||||
    this.getList()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
.record {
 | 
			
		||||
  padding: 32px 0;
 | 
			
		||||
 | 
			
		||||
  .record-item {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    width: 686px;
 | 
			
		||||
    height: 112px;
 | 
			
		||||
    margin: 0 auto 24px;
 | 
			
		||||
    padding: 0 28px 0 32px;
 | 
			
		||||
    background: #FFFFFF;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.02);
 | 
			
		||||
    border-radius: 16px;
 | 
			
		||||
 | 
			
		||||
    .left {
 | 
			
		||||
      color: #333333;
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .right {
 | 
			
		||||
      i {
 | 
			
		||||
        width: 158px;
 | 
			
		||||
        height: 36px;
 | 
			
		||||
        line-height: 36px;
 | 
			
		||||
        margin-right: 8px;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        font-size: 26px;
 | 
			
		||||
        color: #FF4466;
 | 
			
		||||
        background: #FFF5F7;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    & > div {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										83
									
								
								src/project/grid/AppHealthReport/Result.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,83 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="result">
 | 
			
		||||
    <image src="/static/img/result.png" />
 | 
			
		||||
    <h2>添加成功!</h2>
 | 
			
		||||
    <div class="result-btn" hover-class="text-hover" @click="toReport">上报今日状态</div>
 | 
			
		||||
    <div class="result-backBtn" @click="back">返回</div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  export default {
 | 
			
		||||
    data () {
 | 
			
		||||
      return {
 | 
			
		||||
        id: ''
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    onLoad (query) {
 | 
			
		||||
      this.id = query.id
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    methods: {
 | 
			
		||||
      back () {
 | 
			
		||||
        uni.navigateBack({
 | 
			
		||||
          delta: 1
 | 
			
		||||
        })
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      toReport () {
 | 
			
		||||
        uni.redirectTo({
 | 
			
		||||
          url: `./AddReport?id=${this.id}`
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
  .result {
 | 
			
		||||
    min-height: 100vh;
 | 
			
		||||
    padding-top: 160px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    background: #fff;
 | 
			
		||||
 | 
			
		||||
    image {
 | 
			
		||||
      width: 220px;
 | 
			
		||||
      height: 220px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .result-backBtn {
 | 
			
		||||
      width: 320px;
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      line-height: 88px;
 | 
			
		||||
      margin: 32px auto 0;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      border: 1px solid #4181FF;
 | 
			
		||||
      color: #4181FF;
 | 
			
		||||
      font-size: 34px;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    h2 {
 | 
			
		||||
      margin: 32px 0 80px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      font-size: 40px;
 | 
			
		||||
      color: #333;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .result-btn {
 | 
			
		||||
      width: 320px;
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      line-height: 88px;
 | 
			
		||||
      margin: 0 auto;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      background: #4181FF;
 | 
			
		||||
      color: #fff;
 | 
			
		||||
      font-size: 34px;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</style>
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB  | 
| 
		 Before Width: | Height: | Size: 486 B After Width: | Height: | Size: 486 B  | 
| 
		 Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB  | 
							
								
								
									
										434
									
								
								src/project/grid/AppJob/AppJob.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,434 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="wrapper">
 | 
			
		||||
 | 
			
		||||
    <div class="tab-select">
 | 
			
		||||
      <div class="item" :class="tabIndex == index ? 'active' : ''" v-for="(item, index) in tabs" :key="index" @click="tabClick(index)">{{item}}<span></span></div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="search-wrap">
 | 
			
		||||
      <div class="left">
 | 
			
		||||
        <!--  @click="show=true" -->
 | 
			
		||||
        <!-- <span>{{ search.typeName ? search.typeName : "全部" }}</span> -->
 | 
			
		||||
        <!-- <u-icon name="arrow-down" color="#ffffff" size="20"></u-icon> -->
 | 
			
		||||
        <AiSelect :dict="yesOrNo" v-model="search.typeName" placeholder="请选择">
 | 
			
		||||
          <span>{{ search.typeName ? search.typeName : "全部类型" }}</span>
 | 
			
		||||
          <u-icon name="arrow-down" color="#333333" size="20"></u-icon>
 | 
			
		||||
        </AiSelect>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="right">
 | 
			
		||||
        <u-icon name="search" size="32" color="#999999" :custom-style="{marginRight:'8px'}"></u-icon>
 | 
			
		||||
        <input placeholder="请输入需要搜索的内容" style="flex: 1;color:#fff;" confirm-type="search"
 | 
			
		||||
               placeholder-style="color:#999999" v-model="search.title"
 | 
			
		||||
               @confirm="current=1;getList()" />
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="job-list" v-if="list.length">
 | 
			
		||||
      <!-- <header>
 | 
			
		||||
        <span>招工就业列表</span>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          共<em>{{ total }}</em>个职位
 | 
			
		||||
        </div>
 | 
			
		||||
      </header> -->
 | 
			
		||||
      <div class="card" v-for="(item,index) in list" :key="index">
 | 
			
		||||
        <template v-if="item.type == 1">
 | 
			
		||||
          <div class="top" @click="toDetail(0,item)">
 | 
			
		||||
            <div class="title">{{ item.title }}</div>
 | 
			
		||||
            <div class="job-content">{{ item.remark || "" }}</div>
 | 
			
		||||
            <div class="photo">
 | 
			
		||||
              <img
 | 
			
		||||
                  :src="photo.url"
 | 
			
		||||
                  alt="" v-for="photo in item.files" :key="photo.id">
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="info">
 | 
			
		||||
              <div class="tag">个人求职</div>
 | 
			
		||||
              <div class="date">{{ item.createTime && item.createTime.slice(0, 16) }}</div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="bottom">
 | 
			
		||||
            <span class="name">{{ item.linkName }}</span>
 | 
			
		||||
            <div class="right" @click="phone(item)">
 | 
			
		||||
              <u-icon name="phone-fill" size="36" color="#4181FF" :custom-style="{marginRight:'8px'}"></u-icon>
 | 
			
		||||
              {{ item.linkPhone }}
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </template>
 | 
			
		||||
        <template v-if="item.type == 0">
 | 
			
		||||
          <div class="top" @click="toDetail(1,item)">
 | 
			
		||||
            <div class="post-info">
 | 
			
		||||
              <div class="post">{{ item.title }}</div>
 | 
			
		||||
              <div class="salary">{{ item.salary }}</div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="require">{{ item.remark || "" }}</div>
 | 
			
		||||
            <div class="info">
 | 
			
		||||
              <div class="tag" style="background-color:#1AAAFF">企业招工</div>
 | 
			
		||||
              <div class="date">{{ item.createTime && item.createTime.slice(0, 16) }}</div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="bottom">
 | 
			
		||||
            <div class="company">{{ item.companyName }}</div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </template>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <AiEmpty v-else></AiEmpty>
 | 
			
		||||
    <div class="btn-wrapper">
 | 
			
		||||
      <div class="perAdd" @click="$linkTo('./pubJob')" hover-class="text-hover">个人求职</div>
 | 
			
		||||
      <div class="compAdd" @click="$linkTo('./addCompJop')" hover-class="text-hover">企业招工</div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <u-select v-model="show" :list="selectList" @confirm="onConfirm"></u-select>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "AppJob",
 | 
			
		||||
  appName: "招工就业",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      show: false,
 | 
			
		||||
      current: 1,
 | 
			
		||||
      list: [],
 | 
			
		||||
      total: 0,
 | 
			
		||||
      search: {
 | 
			
		||||
        title: "",
 | 
			
		||||
        type: "",
 | 
			
		||||
        typeName: "",
 | 
			
		||||
      },
 | 
			
		||||
      tabs: ['全部','我的发布'],
 | 
			
		||||
      tabIndex: 0,
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  onLoad() {
 | 
			
		||||
    this.$dict.load('yesOrNo')
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    selectList() {
 | 
			
		||||
      return [{
 | 
			
		||||
        value: '',
 | 
			
		||||
        label: '全部'
 | 
			
		||||
      }, {
 | 
			
		||||
        value: '0',
 | 
			
		||||
        label: '企业招工'
 | 
			
		||||
      },
 | 
			
		||||
        {
 | 
			
		||||
          value: '1',
 | 
			
		||||
          label: '个人求职'
 | 
			
		||||
        }];
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    preview(index) {
 | 
			
		||||
      this.$previewImage(this.list, index, "url");
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    phone({linkPhone: phoneNumber}) {
 | 
			
		||||
      uni.makePhoneCall({phoneNumber});
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    onConfirm(val) {
 | 
			
		||||
      this.search.typeName = val[0].label;
 | 
			
		||||
      this.search.type = val[0].value;
 | 
			
		||||
      this.current = 1;
 | 
			
		||||
      this.getList();
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    tabClick(index) {
 | 
			
		||||
      this.current = 1,
 | 
			
		||||
      this.list = [],
 | 
			
		||||
      this.tabIndex = index
 | 
			
		||||
      // this.getList()
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    getList() {
 | 
			
		||||
      this.$instance.post("/app/appjob/list", null, {
 | 
			
		||||
        params: {
 | 
			
		||||
          ...this.search,
 | 
			
		||||
          current: this.current
 | 
			
		||||
        }
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.list = this.current > 1 ? [...this.list, ...res.data.records] : res.data.records;
 | 
			
		||||
          this.total = res.data.total;
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    toDetail(val, {id}) {
 | 
			
		||||
      uni.navigateTo({
 | 
			
		||||
        url: !!val ? `./compJob?id=${id}` : `./persJob?id=${id}`
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  onShow() {
 | 
			
		||||
    this.current = 1;
 | 
			
		||||
    this.getList();
 | 
			
		||||
  },
 | 
			
		||||
  onReachBottom() {
 | 
			
		||||
    this.current++;
 | 
			
		||||
    this.getList();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.wrapper {
 | 
			
		||||
  padding-top: 96px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.tab-select {
 | 
			
		||||
  position: fixed;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 96px;
 | 
			
		||||
  line-height: 96px;
 | 
			
		||||
  background: #4181FF;
 | 
			
		||||
  display: flex;
 | 
			
		||||
  z-index: 999;
 | 
			
		||||
 | 
			
		||||
  .item{
 | 
			
		||||
    flex: 1;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    font-size: 40px;
 | 
			
		||||
    font-family: PingFangSC-Regular, PingFang SC;
 | 
			
		||||
    color: #CDDCF0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .active{
 | 
			
		||||
    font-family: PingFangSC-Medium, PingFang SC;
 | 
			
		||||
    font-weight: 500;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    color: #fff;
 | 
			
		||||
    span{
 | 
			
		||||
      width: 48px;
 | 
			
		||||
      height: 4px;
 | 
			
		||||
      background: #FFF;
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      bottom: 14px;
 | 
			
		||||
      left: 50%;
 | 
			
		||||
      margin-left: -24px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.search-wrap {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 124px;
 | 
			
		||||
  background: #F3F6F9;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  padding: 0 32px;
 | 
			
		||||
  display: flex;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  color: #333333;
 | 
			
		||||
 | 
			
		||||
  .left {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    font-size: 38px;
 | 
			
		||||
 | 
			
		||||
    & > span {
 | 
			
		||||
      font-size: 40px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      // color: #FFFFFF;
 | 
			
		||||
      margin-right: 16px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .right {
 | 
			
		||||
    flex: 1;
 | 
			
		||||
    height: 64px;
 | 
			
		||||
    background: #FFFFFF;
 | 
			
		||||
    border-radius: 32px;
 | 
			
		||||
    margin-left: 32px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 0 32px;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.job-list {
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  padding: 0 32px 156px;
 | 
			
		||||
 | 
			
		||||
  & > header {
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 48px 0 32px;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
 | 
			
		||||
    & > span {
 | 
			
		||||
      font-size: 38px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      color: #333333;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .right {
 | 
			
		||||
      font-size: 28px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #666666;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
 | 
			
		||||
      & > em {
 | 
			
		||||
        color: #4181FF;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .card {
 | 
			
		||||
    background: #FFFFFF;
 | 
			
		||||
    box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.02);
 | 
			
		||||
    border-radius: 16px;
 | 
			
		||||
    margin-bottom: 24px;
 | 
			
		||||
 | 
			
		||||
    .top {
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      padding: 32px;
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
 | 
			
		||||
      .title {
 | 
			
		||||
        font-size: 36px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        line-height: 50px;
 | 
			
		||||
        margin-bottom: 24px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .job-content {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #999999;
 | 
			
		||||
        line-height: 44px;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
        text-overflow: ellipsis;
 | 
			
		||||
        display: -webkit-box;
 | 
			
		||||
        -webkit-box-orient: vertical;
 | 
			
		||||
        -webkit-line-clamp: 3;
 | 
			
		||||
        margin-bottom: 24px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .photo {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        flex-wrap: wrap;
 | 
			
		||||
        gap: 4px;
 | 
			
		||||
 | 
			
		||||
        & > img {
 | 
			
		||||
          width: 204px;
 | 
			
		||||
          height: 204px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .info {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        margin-top: 24px;
 | 
			
		||||
 | 
			
		||||
        .tag {
 | 
			
		||||
          width: 144px;
 | 
			
		||||
          height: 48px;
 | 
			
		||||
          background: #42D784;
 | 
			
		||||
          border-radius: 24px;
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
          font-weight: 400;
 | 
			
		||||
          color: #FFFFFF;
 | 
			
		||||
          line-height: 50px;
 | 
			
		||||
          text-align: center;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .date {
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
          font-weight: 400;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .post-info {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
 | 
			
		||||
        .post {
 | 
			
		||||
          font-size: 36px;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          color: #333333;
 | 
			
		||||
          flex: 1;
 | 
			
		||||
          overflow: hidden;
 | 
			
		||||
          text-overflow: ellipsis;
 | 
			
		||||
          white-space: nowrap;
 | 
			
		||||
          margin-right: 16px;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .salary {
 | 
			
		||||
          font-size: 36px;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          color: #FF3521;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .require {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #999999;
 | 
			
		||||
        margin-top: 24px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .bottom {
 | 
			
		||||
      height: 104px;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      padding: 0 32px;
 | 
			
		||||
 | 
			
		||||
      .name {
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .right {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #4181FF;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .company {
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        line-height: 40px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
.btn-wrapper {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  justify-content: space-between;
 | 
			
		||||
  padding: 20px 32px !important;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  .perAdd,
 | 
			
		||||
  .compAdd {
 | 
			
		||||
    height: 88px;
 | 
			
		||||
    line-height: 88px;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    border-radius: 16px;
 | 
			
		||||
    width: 47%;
 | 
			
		||||
  }
 | 
			
		||||
  .perAdd {
 | 
			
		||||
    border: 1px solid #A0C0FF;
 | 
			
		||||
  }
 | 
			
		||||
  .compAdd {
 | 
			
		||||
    background: #4181FF;
 | 
			
		||||
    color: #fff;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -168,7 +168,7 @@ export default {
 | 
			
		||||
 | 
			
		||||
    .forms {
 | 
			
		||||
      padding: 24px 0;
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
      label {
 | 
			
		||||
        color: #666666;
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
@@ -190,4 +190,4 @@ export default {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										178
									
								
								src/project/grid/AppJob/compJob.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,178 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="wrapper">
 | 
			
		||||
    <div class="card">
 | 
			
		||||
      <div class="post-info">
 | 
			
		||||
        <div class="post-name">
 | 
			
		||||
          <span>{{ detail.title }}</span>
 | 
			
		||||
          <span>{{ detail.salary }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
        <p>{{ detail.education }} | {{ detail.gender }} | {{ detail.age }}岁</p>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form">
 | 
			
		||||
        <div class="label">招聘企业</div>
 | 
			
		||||
        <div class="value">{{ detail.companyName }}</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form">
 | 
			
		||||
        <div class="label">招聘联系人</div>
 | 
			
		||||
        <div class="value">{{ detail.linkName }}</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form">
 | 
			
		||||
        <div class="label">联系方式</div>
 | 
			
		||||
        <div class="value phone" @click="phone">
 | 
			
		||||
          <u-icon name="phone-fill" color="#4181FF" size="32" :custom-stype="{marginRight:'8px'}"></u-icon>
 | 
			
		||||
          {{ detail.linkPhone }}
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <template v-if="detail.remark">
 | 
			
		||||
        <header>岗位要求</header>
 | 
			
		||||
        <div class="post-require">{{ detail.remark }}
 | 
			
		||||
        </div>
 | 
			
		||||
      </template>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="btn">
 | 
			
		||||
      <div>撤销发布</div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  name: "compJob",
 | 
			
		||||
  appName: "企业招工详情",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      id: null,
 | 
			
		||||
      detail: {},
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  onLoad({id}) {
 | 
			
		||||
    this.id = id;
 | 
			
		||||
    this.getDetail();
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    phone() {
 | 
			
		||||
      uni.makePhoneCall({phoneNumber: this.detail.linkPhone});
 | 
			
		||||
    },
 | 
			
		||||
    getDetail() {
 | 
			
		||||
      this.$instance.post("/app/appjob/detail", null, {
 | 
			
		||||
        params: {id: this.id}
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.detail = res.data;
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onShareAppMessage() {
 | 
			
		||||
    return {
 | 
			
		||||
      title: "企业招工",
 | 
			
		||||
      path: "/mods/AppJob/compJob?id=" + this.id
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.wrapper {
 | 
			
		||||
  padding-bottom: 120px;
 | 
			
		||||
  .card {
 | 
			
		||||
    padding: 32px 0 32px 32px;
 | 
			
		||||
    background-color: #ffffff;
 | 
			
		||||
 | 
			
		||||
    .post-info {
 | 
			
		||||
      padding-right: 32px;
 | 
			
		||||
 | 
			
		||||
      .post-name {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        line-height: 56px;
 | 
			
		||||
 | 
			
		||||
        & > span:first-child {
 | 
			
		||||
          font-size: 40px;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          color: #333333;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        & > span:last-child {
 | 
			
		||||
          font-size: 36px;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          color: #FF3521;
 | 
			
		||||
          flex-shrink: 0;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      & > p {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #999999;
 | 
			
		||||
        margin: 16px 0 32px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form {
 | 
			
		||||
      height: 112px;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
      padding-right: 32px;
 | 
			
		||||
 | 
			
		||||
      .label {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #999999;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .value {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .phone {
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        color: #4181FF;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    header {
 | 
			
		||||
      font-size: 38px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      color: #333333;
 | 
			
		||||
      padding: 32px 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .post-require {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #333333;
 | 
			
		||||
      line-height: 56px;
 | 
			
		||||
      padding-right: 20px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .btn {
 | 
			
		||||
    position: fixed;
 | 
			
		||||
    bottom: 0;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 120px;
 | 
			
		||||
    background: #F3F6F9;
 | 
			
		||||
    padding: 16px 32px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    div {
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      line-height: 88px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      border: 1px solid #FF4466;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										181
									
								
								src/project/grid/AppJob/persJob.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,181 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="padding">
 | 
			
		||||
    <div class="card">
 | 
			
		||||
      <div class="post-info">{{ detail.title }}
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="date">{{ detail.createTime }}</div>
 | 
			
		||||
      <div class="form border">
 | 
			
		||||
        <div class="label">求职联系人</div>
 | 
			
		||||
        <div class="value">{{ detail.linkName }}</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form border">
 | 
			
		||||
        <div class="label">联系方式</div>
 | 
			
		||||
        <div class="value phone" @click="phone">
 | 
			
		||||
          <u-icon name="phone-fill" color="#4181FF" size="32" :custom-stype="{marginRight:'8px'}"></u-icon>
 | 
			
		||||
          {{ detail.linkPhone }}
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form">
 | 
			
		||||
        <div class="label">图片</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="photo border">
 | 
			
		||||
        <img :src="item.url" alt=""
 | 
			
		||||
             v-for="(item,index) in detail.files" :key="index" @click="preview(index)">
 | 
			
		||||
      </div>
 | 
			
		||||
      <header>详细描述</header>
 | 
			
		||||
      <div class="post-require">{{ detail.remark }}
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="btn">
 | 
			
		||||
      <div>撤销发布</div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  name: "persJob",
 | 
			
		||||
  appName:"个人求职详情",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      id: null,
 | 
			
		||||
      detail: {},
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  onLoad({id}) {
 | 
			
		||||
    this.id = id;
 | 
			
		||||
    this.getDetail();
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    preview(index) {
 | 
			
		||||
      this.$previewImage(this.detail.files, index, "url");
 | 
			
		||||
    },
 | 
			
		||||
    phone() {
 | 
			
		||||
      uni.makePhoneCall({phoneNumber: this.detail.linkPhone});
 | 
			
		||||
    },
 | 
			
		||||
    getDetail() {
 | 
			
		||||
      this.$instance.post("/app/appjob/detail", null, {
 | 
			
		||||
        params: {id: this.id}
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.detail = res.data;
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onShareAppMessage() {
 | 
			
		||||
    return {
 | 
			
		||||
      title: "个人求职",
 | 
			
		||||
      path: "/mods/AppJob/persJob?id=" + this.id
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.padding {
 | 
			
		||||
  min-height: 100%;
 | 
			
		||||
  background-color: #ffffff;
 | 
			
		||||
  padding-bottom: 120px;
 | 
			
		||||
 | 
			
		||||
  .card {
 | 
			
		||||
    padding: 32px 0 32px 32px;
 | 
			
		||||
    background-color: #ffffff;
 | 
			
		||||
 | 
			
		||||
    .post-info {
 | 
			
		||||
      font-size: 40px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      color: #333333;
 | 
			
		||||
      line-height: 56px;
 | 
			
		||||
      padding-right: 32px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .date {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #999999;
 | 
			
		||||
      margin: 16px 0 32px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form {
 | 
			
		||||
      height: 112px;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      padding-right: 32px;
 | 
			
		||||
 | 
			
		||||
      .label {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #999999;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .value {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .phone {
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        color: #4181FF;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .border {
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .photo {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      flex-wrap: wrap;
 | 
			
		||||
      gap: 4px;
 | 
			
		||||
      padding-bottom: 48px;
 | 
			
		||||
 | 
			
		||||
      & > img {
 | 
			
		||||
        width: 225px;
 | 
			
		||||
        height: 225px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    header {
 | 
			
		||||
      font-size: 38px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      color: #333333;
 | 
			
		||||
      padding: 32px 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .post-require {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #333333;
 | 
			
		||||
      line-height: 56px;
 | 
			
		||||
      padding-right: 20px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .btn {
 | 
			
		||||
    position: fixed;
 | 
			
		||||
    bottom: 0;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 120px;
 | 
			
		||||
    background: #F3F6F9;
 | 
			
		||||
    padding: 16px 32px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    div {
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      line-height: 88px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      border: 1px solid #FF4466;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										158
									
								
								src/project/grid/AppJob/pubJob.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,158 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="wrapper">
 | 
			
		||||
    <div class="card">
 | 
			
		||||
      <div class="form">
 | 
			
		||||
        <em>*</em>
 | 
			
		||||
        <label>标题</label>
 | 
			
		||||
      </div>
 | 
			
		||||
      <u-input type="textarea" trim placeholder="请输入标题" maxlength="100" v-model="form.title"
 | 
			
		||||
               placeholder-style="color: #999999;font-size: 17px;font-weight:normal;"
 | 
			
		||||
               :custom-style="{color:'#333',fontSize:'17px',paddingLeft:'12px'}"/>
 | 
			
		||||
      <div class="form border-top">
 | 
			
		||||
        <em>*</em>
 | 
			
		||||
        <label>详细描述</label>
 | 
			
		||||
      </div>
 | 
			
		||||
      <u-input type="textarea" trim placeholder="请输入详细描述信息…" maxlength="500" v-model="form.remark"
 | 
			
		||||
               placeholder-style="color: #999999;font-size: 17px;font-weight:normal;"
 | 
			
		||||
               :custom-style="{color:'#333',fontSize:'17px',paddingLeft:'12px'}"/>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="card" style="padding-bottom: 20px">
 | 
			
		||||
      <div class="form">
 | 
			
		||||
        <label>图片上传
 | 
			
		||||
          <span>(最多9张)</span>
 | 
			
		||||
        </label>
 | 
			
		||||
      </div>
 | 
			
		||||
      <AiUploader :limit="9" v-model="form.files"></AiUploader>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="card">
 | 
			
		||||
      <div class="form border">
 | 
			
		||||
        <em>*</em>
 | 
			
		||||
        <label>联系人</label>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <u-input trim placeholder="请输入" input-align="right"
 | 
			
		||||
                   placeholder-style="color:#999;font-size: 17px;font-weight:normal;" v-model="form.linkName"
 | 
			
		||||
                   :custom-style="{fontWeight:600,color:'#333',fontSize:'17px'}"></u-input>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form">
 | 
			
		||||
        <em>*</em>
 | 
			
		||||
        <label>联系方式</label>
 | 
			
		||||
        <div class="right">
 | 
			
		||||
          <u-input trim placeholder="请输入" input-align="right"
 | 
			
		||||
                   placeholder-style="color:#999;font-size: 17px;font-weight:normal;" v-model="form.linkPhone"
 | 
			
		||||
                   :custom-style="{fontWeight:600,color:'#333',fontSize:'17px'}" maxlength="11"></u-input>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="btn-wrapper">
 | 
			
		||||
      <div class="btn" @click="submit" hover-class="text-hover">提交</div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "pubJob",
 | 
			
		||||
  appName: "我要找工作",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      form: {
 | 
			
		||||
        title: "",
 | 
			
		||||
        remark: "",
 | 
			
		||||
        files: [],
 | 
			
		||||
        linkName: "",
 | 
			
		||||
        linkPhone: "",
 | 
			
		||||
        type: 1,
 | 
			
		||||
      },
 | 
			
		||||
      flag: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    submit() {
 | 
			
		||||
      if (!!!this.form.title) return this.$u.toast("请输入标题");
 | 
			
		||||
      if (!!!this.form.remark) return this.$u.toast("请输入详细描述");
 | 
			
		||||
      if (!!!this.form.linkName) return this.$u.toast("请输入联系人");
 | 
			
		||||
      if (!!!this.form.linkPhone) return this.$u.toast("请输入联系方式");
 | 
			
		||||
      if (this.flag) return
 | 
			
		||||
      this.flag = true
 | 
			
		||||
      this.$loading()
 | 
			
		||||
      this.$instance.post("/app/appjob/addOrUpdate", {
 | 
			
		||||
        ...this.form
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        this.$hideLoading()
 | 
			
		||||
        this.flag = false
 | 
			
		||||
        if (res.code == 0) {
 | 
			
		||||
          this.$u.toast("提交成功");
 | 
			
		||||
          setTimeout(_ => {
 | 
			
		||||
            uni.navigateBack();
 | 
			
		||||
          }, 500)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.wrapper {
 | 
			
		||||
  padding-bottom: 150px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.card {
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  padding-left: 32px;
 | 
			
		||||
  background-color: #fff;
 | 
			
		||||
  margin-bottom: 24px;
 | 
			
		||||
 | 
			
		||||
  .form {
 | 
			
		||||
    height: 112px;
 | 
			
		||||
    background: #FFFFFF;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
 | 
			
		||||
    & > em {
 | 
			
		||||
      width: 16px;
 | 
			
		||||
      height: 44px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #FF4466;
 | 
			
		||||
      line-height: 54px;
 | 
			
		||||
      font-style: normal;
 | 
			
		||||
      margin-right: 8px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    & > label {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      color: #666666;
 | 
			
		||||
 | 
			
		||||
      & > span {
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #999999;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .right {
 | 
			
		||||
      flex: 1;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      flex-direction: row-reverse;
 | 
			
		||||
      margin-right: 32px;
 | 
			
		||||
 | 
			
		||||
      .value {
 | 
			
		||||
        font-size: 34px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .border-top {
 | 
			
		||||
    border-top: 1px solid #DDDDDD;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .border {
 | 
			
		||||
    border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										571
									
								
								src/project/grid/AppReturnHomeRegister/Add.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,571 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="album">
 | 
			
		||||
    <div class="tips">请确保以下信息全部由本人填写,本人对所填写内容的真实性和完整性负责</div>
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>返乡人员姓名</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <input placeholder="请输入" v-model="form.name" :maxlength="20"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>身份证号</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <input placeholder="请输入" type="idcard" v-model="form.idNumber" :maxlength="20"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>手机号码</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <input placeholder="请输入" type="number" v-model="form.phone" :maxlength="11"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <!-- <span style="color:#999; fontSize:14px; font-weight: normal;">(最多9张)</span> -->
 | 
			
		||||
            <h2>健康码截图</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right" style="padding-left: 5px;">
 | 
			
		||||
            <AiUploader v-model="form.checkPhoto" :limit="1"></AiUploader>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item form-item__imgs">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <!-- <span style="color:#999; fontSize:14px; font-weight: normal;">(最多9张)</span> -->
 | 
			
		||||
            <h2>48小时核酸证明</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right" style="padding-left: 5px;">
 | 
			
		||||
            <AiUploader v-model="form.checkPhoto" :limit="1"></AiUploader>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="form-item__group">
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>出发地</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiAreaPicker class="ai-area" v-model="form.startAreaId" :fullName.sync="form.startAreaName" all>
 | 
			
		||||
              <div class="ai-area__wrapper">
 | 
			
		||||
                <span class="label" v-if="form.startAreaName">{{ form.startAreaName }}</span>
 | 
			
		||||
                <i v-else>请选择</i>
 | 
			
		||||
                <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
              </div>
 | 
			
		||||
            </AiAreaPicker>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>交通工具</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiSelect dict="epidemicRecentTravel" v-model="form.travelType" class="select"></AiSelect>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__textarea">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>火车车次/航班号/客运站</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <textarea auto-height v-model="form.arriveAddress" :maxlength="100" placeholder="如车次、座位号/车牌号等信息"
 | 
			
		||||
                      placeholder-style="font-size: 16px"></textarea>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>目的地</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <AiAreaPicker class="ai-area" v-model="form.startAreaId" :fullName.sync="form.startAreaName" all>
 | 
			
		||||
              <div class="ai-area__wrapper">
 | 
			
		||||
                <span class="label" v-if="form.startAreaName">{{ form.startAreaName }}</span>
 | 
			
		||||
                <i v-else>请选择</i>
 | 
			
		||||
                <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
              </div>
 | 
			
		||||
            </AiAreaPicker>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item form-item__textarea">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>居住地点</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <textarea auto-height v-model="form.arriveAddress" :maxlength="100" placeholder="如住所、酒店、单位等"
 | 
			
		||||
                      placeholder-style="font-size: 16px"></textarea>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <!-- 行程安排 -->
 | 
			
		||||
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>预计/实际抵达时间</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <div class="ai-area" @click="isShowStartTime = true">
 | 
			
		||||
              <div class="ai-area__wrapper">
 | 
			
		||||
                <span class="label" v-if="form.startTime">{{ form.startTime }}</span>
 | 
			
		||||
                <i v-else>请选择</i>
 | 
			
		||||
                <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="form-item">
 | 
			
		||||
        <div class="form-item__wrapper">
 | 
			
		||||
          <div class="form-item__title">
 | 
			
		||||
            <i>*</i>
 | 
			
		||||
            <h2>预计离开时间</h2>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="form-item__right">
 | 
			
		||||
            <div class="ai-area" @click="isShowEndTime = true">
 | 
			
		||||
              <div class="ai-area__wrapper">
 | 
			
		||||
                <span class="label" v-if="form.arriveTime">{{ form.arriveTime }}</span>
 | 
			
		||||
                <i v-else>请选择</i>
 | 
			
		||||
                <u-icon name="arrow-right" color="#ddd"/>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <u-picker mode="time" :params="dataParams" v-model="isShowDate" @confirm="onDateChange"></u-picker>
 | 
			
		||||
    <u-picker mode="time" :params="params" v-model="isShowStartTime" @confirm="onStartChange"></u-picker>
 | 
			
		||||
    <u-picker mode="time" :params="params" v-model="isShowEndTime" @confirm="onEndChange"></u-picker>
 | 
			
		||||
    <div class="btn-wrapper">
 | 
			
		||||
      <div class="btn" hover-class="text-hover" @click="submit">提交</div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import {mapState} from 'vuex'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  appName: "添加返乡记录",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      isShowType: false,
 | 
			
		||||
      isShowEndTime: false,
 | 
			
		||||
      isShowStartTime: false,
 | 
			
		||||
      isShowDate: false,
 | 
			
		||||
      params: {
 | 
			
		||||
        year: true,
 | 
			
		||||
        month: true,
 | 
			
		||||
        day: true,
 | 
			
		||||
        hour: true,
 | 
			
		||||
        minute: true
 | 
			
		||||
      },
 | 
			
		||||
      dataParams: {
 | 
			
		||||
        year: true,
 | 
			
		||||
        month: true,
 | 
			
		||||
        day: true
 | 
			
		||||
      },
 | 
			
		||||
      form: {
 | 
			
		||||
        arriveAddress: '',
 | 
			
		||||
        arriveAreaId: '',
 | 
			
		||||
        arriveAreaName: '',
 | 
			
		||||
        arriveTime: '',
 | 
			
		||||
        checkPhoto: [],
 | 
			
		||||
        checkResult: '',
 | 
			
		||||
        checkTime: '',
 | 
			
		||||
        description: '',
 | 
			
		||||
        health: [],
 | 
			
		||||
        idNumber: '',
 | 
			
		||||
        name: '',
 | 
			
		||||
        phone: '',
 | 
			
		||||
        startAddress: '',
 | 
			
		||||
        startAreaId: '',
 | 
			
		||||
        startAreaName: '',
 | 
			
		||||
        startTime: '',
 | 
			
		||||
        temperature: '',
 | 
			
		||||
        touchInFourteen: '',
 | 
			
		||||
        travelType: '',
 | 
			
		||||
        type: '',
 | 
			
		||||
        unusual: '',
 | 
			
		||||
      },
 | 
			
		||||
      dictList: [],
 | 
			
		||||
      arr: [],
 | 
			
		||||
      gridList: [[], [], []],
 | 
			
		||||
      flag: false,
 | 
			
		||||
      $areaId: ''
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  computed: {
 | 
			
		||||
    ...mapState(['user'])
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onLoad() {
 | 
			
		||||
    this.$areaId = this.user.$areaId
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    onDateChange(e) {
 | 
			
		||||
      this.form.checkTime = `${e.year}-${e.month}-${e.day}`
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    onStartChange(e) {
 | 
			
		||||
      this.form.startTime = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}`
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    onEndChange(e) {
 | 
			
		||||
      this.form.arriveTime = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}`
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    submit() {
 | 
			
		||||
      if (!this.form.name) {
 | 
			
		||||
        return this.$toast('请输入返乡人员姓名')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.idNumber) {
 | 
			
		||||
        return this.$toast('请输入返乡人员身份证号')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(this.form.idNumber)) {
 | 
			
		||||
        return this.$toast('请输入正确的身份证账号')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.phone) {
 | 
			
		||||
        return this.$toast('请输入返乡人员手机号码')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!/^1[0-9]{10,10}$/.test(this.form.phone)) {
 | 
			
		||||
        return this.$toast('请输入正确的手机号码')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.type) {
 | 
			
		||||
        return this.$toast('请选择人员类别')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.travelType) {
 | 
			
		||||
        return this.$toast('请选择出行方式')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.startTime) {
 | 
			
		||||
        return this.$toast('请选择出发时间')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // if (new Date(this.form.startTime.replace(/-/g, '/')).getTime() > new Date().getTime()) {
 | 
			
		||||
      //   return this.$toast('出发时间不得晚于当前时间')
 | 
			
		||||
      // }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.startAreaName) {
 | 
			
		||||
        return this.$toast('请选择出发地区')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (this.form.startAreaId.substr(this.form.startAreaId.length - 3, 3) === '000') {
 | 
			
		||||
        return this.$toast('出发地区必须选到村或社区')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.form.startAddress) {
 | 
			
		||||
        return this.$toast('请输入出发详细地址')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.arriveTime) {
 | 
			
		||||
        return this.$toast('请选择到达时间')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (new Date(this.form.startTime.replace(/-/g, '/')).getTime() >= new Date(this.form.arriveTime.replace(/-/g, '/')).getTime()) {
 | 
			
		||||
        return this.$toast('到达时间不得早于出发时间')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.arriveAreaName) {
 | 
			
		||||
        return this.$toast('请选择到达地区')
 | 
			
		||||
      }
 | 
			
		||||
      if (this.form.arriveAreaId.substr(this.form.arriveAreaId.length - 3, 3) === '000') {
 | 
			
		||||
        return this.$toast('到达地区必须选到村或社区')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.form.arriveAddress) {
 | 
			
		||||
        return this.$toast('请输入返乡地址')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.description) {
 | 
			
		||||
        return this.$toast('请输入行程描述')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.form.checkTime) {
 | 
			
		||||
        return this.$toast('请选择核酸检测日期')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.form.checkPhoto.length) {
 | 
			
		||||
        return this.$toast('请上传本人健康码截图或核酸检测报告')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.checkResult) {
 | 
			
		||||
        return this.$toast('请选择核酸检测结果')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.form.temperature) {
 | 
			
		||||
        return this.$toast('请输入当前体温')
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.form.touchInFourteen) {
 | 
			
		||||
        return this.$toast('请选择14天内是否接触新冠确诊或疑似患者')
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!this.form.health.length) {
 | 
			
		||||
        return this.$toast('请选择当前健康状况')
 | 
			
		||||
      }
 | 
			
		||||
      if (this.flag) return
 | 
			
		||||
      this.flag = true
 | 
			
		||||
 | 
			
		||||
      this.$loading()
 | 
			
		||||
      this.$instance.post(`/app/appepidemicbackhomerecord/addOrUpdate`, {
 | 
			
		||||
        ...this.form,
 | 
			
		||||
        openid: this.user.openid,
 | 
			
		||||
        startTime: this.form.startTime + ':00',
 | 
			
		||||
        arriveTime: this.form.arriveTime + ':00',
 | 
			
		||||
        checkTime: this.form.checkTime + ' 00:00:00',
 | 
			
		||||
        health: this.form.health.join(','),
 | 
			
		||||
        checkPhoto: JSON.stringify(this.form.checkPhoto)
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        this.$hideLoading()
 | 
			
		||||
        this.flag = false
 | 
			
		||||
        if (res.code == 0) {
 | 
			
		||||
          // uni.$emit('update')
 | 
			
		||||
          // this.$toast('提交成功')
 | 
			
		||||
          // setTimeout(() => {
 | 
			
		||||
          //   uni.navigateBack()
 | 
			
		||||
          // }, 400)
 | 
			
		||||
          this.$linkTo('./result')
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
.album {
 | 
			
		||||
  padding-bottom: 140px;
 | 
			
		||||
 | 
			
		||||
  .tips {
 | 
			
		||||
    line-height: 1.3;
 | 
			
		||||
    padding: 32px 32px;
 | 
			
		||||
    color: #FF883C;
 | 
			
		||||
    font-size: 30px;
 | 
			
		||||
    text-align: justify;
 | 
			
		||||
    background: #FFF8F3;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .form-item__group {
 | 
			
		||||
    margin-bottom: 24px;
 | 
			
		||||
    background: #fff;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .form-item {
 | 
			
		||||
    padding-left: 32px;
 | 
			
		||||
 | 
			
		||||
    .form-item__checkbox {
 | 
			
		||||
      width: 100%;
 | 
			
		||||
 | 
			
		||||
      div {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 80px;
 | 
			
		||||
        line-height: 80px;
 | 
			
		||||
        margin-bottom: 24px;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        background: #FFFFFF;
 | 
			
		||||
        border-radius: 16px;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        border: 1px solid #CCCCCC;
 | 
			
		||||
 | 
			
		||||
        &.active {
 | 
			
		||||
          background: #4181FF;
 | 
			
		||||
          color: #fff;
 | 
			
		||||
          border-color: #4181FF;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form-item__radio {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      flex-wrap: wrap;
 | 
			
		||||
 | 
			
		||||
      div {
 | 
			
		||||
        width: 212px;
 | 
			
		||||
        height: 80px;
 | 
			
		||||
        line-height: 80px;
 | 
			
		||||
        margin-right: 16px;
 | 
			
		||||
        margin-bottom: 8px;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        background: #FFFFFF;
 | 
			
		||||
        border-radius: 16px;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        border: 1px solid #CCCCCC;
 | 
			
		||||
 | 
			
		||||
        &:nth-of-type(3n) {
 | 
			
		||||
          margin-right: 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &.active {
 | 
			
		||||
          background: #4181FF;
 | 
			
		||||
          color: #fff;
 | 
			
		||||
          border-color: #4181FF;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .ai-area__wrapper {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      padding-left: 100px;
 | 
			
		||||
 | 
			
		||||
      span {
 | 
			
		||||
        color: #333;
 | 
			
		||||
        font-size: 30px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      i {
 | 
			
		||||
        color: #999;
 | 
			
		||||
        font-size: 30px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      image {
 | 
			
		||||
        width: 16px;
 | 
			
		||||
        height: 8px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form-item__wrapper {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      height: 128px;
 | 
			
		||||
      padding-right: 28px;
 | 
			
		||||
      border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
 | 
			
		||||
      input {
 | 
			
		||||
        flex: 1;
 | 
			
		||||
        height: 100%;
 | 
			
		||||
        text-align: right;
 | 
			
		||||
        color: #333;
 | 
			
		||||
        padding-right: 10px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .form-item__right {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
 | 
			
		||||
        .select {
 | 
			
		||||
          ._i {
 | 
			
		||||
            padding-left: 100px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        span {
 | 
			
		||||
          max-width: 400px;
 | 
			
		||||
          margin-right: 8px;
 | 
			
		||||
          color: #333333;
 | 
			
		||||
          overflow: hidden;
 | 
			
		||||
          white-space: nowrap;
 | 
			
		||||
          text-overflow: ellipsis;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        i {
 | 
			
		||||
          margin-right: 8px;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &:last-child {
 | 
			
		||||
      .form-item__wrapper {
 | 
			
		||||
        border-bottom: none;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .form-item__title {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
 | 
			
		||||
      i {
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        color: #FF4466;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      span {
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        color: #999999;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      h2 {
 | 
			
		||||
        padding: 0 4px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    &.form-item__imgs, &.form-item__textarea {
 | 
			
		||||
      .form-item__wrapper {
 | 
			
		||||
        display: block;
 | 
			
		||||
        height: auto;
 | 
			
		||||
        padding-bottom: 32px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      textarea {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 90px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .form-item__title {
 | 
			
		||||
        padding: 32px 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .form-item__right {
 | 
			
		||||
        padding-left: 18px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										362
									
								
								src/project/grid/AppReturnHomeRegister/AppReturnHomeRegister.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,362 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="AppReturnHomeRegister">
 | 
			
		||||
    <div class="tips">
 | 
			
		||||
      <div>外地抵汉、来汉人员疫情防控政策通…</div>
 | 
			
		||||
      <div @click="$linkTo('./policyDetail')">查看详情></div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="title">
 | 
			
		||||
      <h2>报备记录</h2>
 | 
			
		||||
      <div class="right">
 | 
			
		||||
        <span>共</span>
 | 
			
		||||
        <i>{{ total }}</i>
 | 
			
		||||
        <span>条</span>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="home-list">
 | 
			
		||||
      <div class="item" hover-class="bg-hover" @click="$linkTo(`./Detail?id=${item.id}`)"
 | 
			
		||||
           v-for="(item, index) in list" :key="index">
 | 
			
		||||
        <div class="item-top">
 | 
			
		||||
          <h2>{{ item.name }}</h2>
 | 
			
		||||
          <span v-if="item.status === '0'">有异常情况</span>
 | 
			
		||||
        </div>
 | 
			
		||||
        <p>{{ item.idNumber.replace(/^(\d{6})\d{8}(.{4}$)/g, `$1${Array(9).join('*')}$2`) }}</p>
 | 
			
		||||
        <div class="item-info">
 | 
			
		||||
          <div class="item-info__item">
 | 
			
		||||
            <image src="/static/img/from-icon.png"/>
 | 
			
		||||
            <span>{{ item.startAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item-info__item">
 | 
			
		||||
            <image src="/static/img/to-icon.png"/>
 | 
			
		||||
            <span>{{ item.arriveAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item-info__item">
 | 
			
		||||
            <image src="/static/img/to-date.png"/>
 | 
			
		||||
            <span>{{ item.arriveTime && item.arriveTime.substr(0, item.arriveTime.length - 3) }} 到达</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <AiEmpty v-if="list.length==0"/>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="btn-wrapper">
 | 
			
		||||
      <div class="share" @click="show = true">分享</div>
 | 
			
		||||
      <div class="addbtn" @click="toReport" hover-class="text-hover">添加返乡报备</div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <u-popup  v-model="show" mode="bottom" border-radius="30">
 | 
			
		||||
			<div class="shareBox">
 | 
			
		||||
        <h2>分享到:</h2>
 | 
			
		||||
        <div class="card">
 | 
			
		||||
          <div class="itemCard" @click="registerCode()">
 | 
			
		||||
            <img src="./components/code.png" alt="" class="imgs" />
 | 
			
		||||
            <div class="names">扫码登记</div>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="itemCard" @click="invitation()">
 | 
			
		||||
            <img src="./components/wechat.png" alt="" class="imgs" />
 | 
			
		||||
            <div class="names">微信邀请</div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="close" @click="show = false">取消</div>
 | 
			
		||||
      </div>
 | 
			
		||||
		</u-popup>
 | 
			
		||||
 | 
			
		||||
    <u-popup v-model="showCode" mode="center" border-radius="14" width="90%" height="450px">
 | 
			
		||||
			<div class="showCode">
 | 
			
		||||
        <div class="qrCode">
 | 
			
		||||
          <img src="./components/code.png" alt="">
 | 
			
		||||
        </div>
 | 
			
		||||
        <h2>返乡登记</h2>
 | 
			
		||||
        <p>请外来及返乡人员使用微信扫码主动报备行程</p>
 | 
			
		||||
        <div class="btn">
 | 
			
		||||
          <div class="cancel" @click="showCode = false">取消</div>
 | 
			
		||||
          <div class="save" @click="savePoster">保存海报</div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
		</u-popup>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import {mapState} from 'vuex'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "AppReturnHomeRegister",
 | 
			
		||||
  appName: "返乡登记",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      list: [],
 | 
			
		||||
      current: 1,
 | 
			
		||||
      total: 0,
 | 
			
		||||
      show: false,
 | 
			
		||||
      showCode: false,
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  computed: {
 | 
			
		||||
    ...mapState(['user'])
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onLoad() {
 | 
			
		||||
    this.$loading()
 | 
			
		||||
    this.getList()
 | 
			
		||||
    this.$dict.load('villageActivityStatus')
 | 
			
		||||
    uni.$on('update', () => {
 | 
			
		||||
      this.current = 1
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.getList()
 | 
			
		||||
      })
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    toReport() {
 | 
			
		||||
      this.$linkTo('./Add')
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 扫码登记
 | 
			
		||||
    registerCode() {
 | 
			
		||||
      this.show = false;
 | 
			
		||||
      this.showCode = true;
 | 
			
		||||
    },
 | 
			
		||||
    // 微信邀请
 | 
			
		||||
    invitation() {
 | 
			
		||||
      console.log('222');
 | 
			
		||||
    },
 | 
			
		||||
    // 保存海报
 | 
			
		||||
    savePoster() {},
 | 
			
		||||
 | 
			
		||||
    getList() {
 | 
			
		||||
      this.$instance.post(`/app/appepidemicbackhomerecord/list`, null, {
 | 
			
		||||
        params: {
 | 
			
		||||
          openId: this.user.openId,
 | 
			
		||||
          current: this.current,
 | 
			
		||||
          size: 15
 | 
			
		||||
        }
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        uni.hideLoading()
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.total = res.data.total
 | 
			
		||||
          if (this.current > 1) {
 | 
			
		||||
            this.list = [...this.list, ...res.data.records]
 | 
			
		||||
          } else {
 | 
			
		||||
            this.list = res.data.records
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(() => {
 | 
			
		||||
        uni.hideLoading()
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onReachBottom() {
 | 
			
		||||
    this.current++
 | 
			
		||||
    this.getList()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" socped>
 | 
			
		||||
.AppReturnHomeRegister {
 | 
			
		||||
  padding: 0 0 150px 0;
 | 
			
		||||
 | 
			
		||||
  .tips {
 | 
			
		||||
    height: 106px;
 | 
			
		||||
    line-height: 106px;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    background: #FFF8F3;
 | 
			
		||||
    padding: 0 32px;
 | 
			
		||||
    div:first-child {
 | 
			
		||||
      width: 520px;
 | 
			
		||||
      color: #FF883C;
 | 
			
		||||
      overflow: hidden;
 | 
			
		||||
      text-overflow: ellipsis;
 | 
			
		||||
      white-space: nowrap;
 | 
			
		||||
    }
 | 
			
		||||
    div:last-child {
 | 
			
		||||
      color: #4181FF;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .title {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    margin-bottom: 32px;
 | 
			
		||||
    padding: 48px 32px 0 32px;
 | 
			
		||||
 | 
			
		||||
    & > h2 {
 | 
			
		||||
      font-size: 38px;
 | 
			
		||||
      color: #333;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .right {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
 | 
			
		||||
      span {
 | 
			
		||||
        color: #666666;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      i {
 | 
			
		||||
        color: #4181FF;
 | 
			
		||||
        font-style: normal;
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .item {
 | 
			
		||||
    margin: 0 32px 24px;
 | 
			
		||||
    padding: 32px;
 | 
			
		||||
    border-radius: 16px;
 | 
			
		||||
    background: #fff;
 | 
			
		||||
 | 
			
		||||
    .item-info {
 | 
			
		||||
      .item-info__item {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        margin-bottom: 8px;
 | 
			
		||||
        line-height: 1.3;
 | 
			
		||||
 | 
			
		||||
        &:last-child {
 | 
			
		||||
          margin-bottom: 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        image {
 | 
			
		||||
          position: relative;
 | 
			
		||||
          top: 2px;
 | 
			
		||||
          width: 32px;
 | 
			
		||||
          height: 32px;
 | 
			
		||||
          margin-right: 16px;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        span {
 | 
			
		||||
          flex: 1;
 | 
			
		||||
          color: #333;
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .item-top {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      height: 50px;
 | 
			
		||||
 | 
			
		||||
      h2 {
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        font-size: 36px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      span {
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        color: #FF4466;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    p {
 | 
			
		||||
      margin: 14px 0 20px;
 | 
			
		||||
      color: #999999;
 | 
			
		||||
      font-size: 28px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .btn-wrapper {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    padding: 20px 32px !important;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    .addbtn,
 | 
			
		||||
    .share {
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      line-height: 88px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
    }
 | 
			
		||||
    .share {
 | 
			
		||||
      width: 35%;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      border: 1px solid #A0C0FF;
 | 
			
		||||
    }
 | 
			
		||||
    .addbtn {
 | 
			
		||||
      width: 60%;
 | 
			
		||||
      background: #4181FF;
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      color: #fff;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .shareBox {
 | 
			
		||||
    padding-top: 32px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    h2 {
 | 
			
		||||
      padding: 0 32px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
    }
 | 
			
		||||
    .card {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      padding: 60px 32px 32px 32px;
 | 
			
		||||
      .itemCard {
 | 
			
		||||
        flex: 1;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        img {
 | 
			
		||||
          width: 96px;
 | 
			
		||||
          height: 96px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .close {
 | 
			
		||||
      height: 112px;
 | 
			
		||||
      line-height: 112px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      border-top: 2px solid #EEEEEE;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .showCode {
 | 
			
		||||
    padding: 64px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    .qrCode {
 | 
			
		||||
      img {
 | 
			
		||||
        width: 320px;
 | 
			
		||||
        height: 320px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    h2 {
 | 
			
		||||
      font-size: 36px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      padding: 32px 0;
 | 
			
		||||
    }
 | 
			
		||||
    p {
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      margin-bottom: 80px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .btn {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      .cancel,
 | 
			
		||||
      .save {
 | 
			
		||||
        width: 45%;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        height: 80px;
 | 
			
		||||
        line-height: 80px;
 | 
			
		||||
        border-radius: 40px;
 | 
			
		||||
      }
 | 
			
		||||
      .cancel {
 | 
			
		||||
        background: #EFF2F7;
 | 
			
		||||
      }
 | 
			
		||||
      .save {
 | 
			
		||||
        background: #383A49;
 | 
			
		||||
        color: #FFF;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										400
									
								
								src/project/grid/AppReturnHomeRegister/Detail.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,400 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="detail" v-if="pageShow">
 | 
			
		||||
 | 
			
		||||
    <div class="detail-header">
 | 
			
		||||
      <div class="user">
 | 
			
		||||
        <div class="header">
 | 
			
		||||
          <h3>{{ info.name }}</h3>
 | 
			
		||||
          <div style="color: #4181FF;" @click="call(info.phone)"><u-icon name="phone" color="#4181FF" size="28"></u-icon>拨打电话</div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="idNumber">
 | 
			
		||||
          <span>身份证号:</span>
 | 
			
		||||
          <span>{{ info.idNumber }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="phone">
 | 
			
		||||
          <span>手机号码:</span>
 | 
			
		||||
          <span>{{ info.phone }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="picture">
 | 
			
		||||
          <div class="healthPic">
 | 
			
		||||
            <img src="./components/resultPic.png" alt="" @click="preview()">
 | 
			
		||||
            <span>健康码</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="nucleinPic">
 | 
			
		||||
            <img src="./components/resultPic.png" alt="" @click="preview()">
 | 
			
		||||
            <span>核酸证明</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="card">
 | 
			
		||||
        <div class="item-info">
 | 
			
		||||
          <div class="item-info__item">
 | 
			
		||||
            <div class="pic">
 | 
			
		||||
              <img class="img" src="./components/start.png"/>
 | 
			
		||||
              <div class="lines"></div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <span>{{ info.startAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item-info__item">
 | 
			
		||||
            <div class="pic">
 | 
			
		||||
              <img class="img" src="./components/end.png"/>
 | 
			
		||||
            </div>
 | 
			
		||||
            <span>{{ info.arriveAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="item-info__item">
 | 
			
		||||
            <image class="image" src="/static/img/to-date.png"/>
 | 
			
		||||
            <span>{{ info.arriveTime && info.arriveTime.substr(0, info.arriveTime.length - 3) }} 到达</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="info">
 | 
			
		||||
      <div class="detail-info">
 | 
			
		||||
        <h2>行程信息<span>省外高风险地区</span></h2>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>出发地</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span :style="{color: info.denger == 1 ? '#FF4466' : '#333'}">{{ info.startAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>交通工具</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ $dict.getLabel('epidemicRecentTravel', info.travelType) }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item_wrap">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>火车车次/航班号/汽车出发地</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ $dict.getLabel('epidemicRecentTravel', info.travelType) }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>目的地</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.arriveAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>居住地点</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.startAreaName }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>行程安排</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.startAddress }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>预计/实际抵达时间</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.startTime && info.startTime.substr(0, info.startTime.length - 3) }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <div class="detail-info__item">
 | 
			
		||||
          <div class="left">
 | 
			
		||||
            <label>预计离开时间</label>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="right">
 | 
			
		||||
            <span>{{ info.arriveTime && info.arriveTime.substr(0, info.arriveTime.length - 3) }}</span>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  appName: "返乡登记详情",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      info: {},
 | 
			
		||||
      pageShow: false,
 | 
			
		||||
      files: [],
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onLoad(query) {
 | 
			
		||||
    this.$loading()
 | 
			
		||||
    this.$dict.load(['epidemicRecentHealth', 'epidemicRecentTravel', 'epidemicTouchInFourteen', 'epidemicMemberType', 'epidemicRecentTestResult']).then(() => {
 | 
			
		||||
      this.getInfo(query.id)
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    preview(url) {
 | 
			
		||||
      uni.previewImage({
 | 
			
		||||
        urls: this.info.checkPhoto.map(v => v.url),
 | 
			
		||||
        current: url
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // previewImg(images, img) {
 | 
			
		||||
    //   uni.previewImage({
 | 
			
		||||
    //     urls: images.map((v) => v.url),
 | 
			
		||||
    //     current: img,
 | 
			
		||||
    //   })
 | 
			
		||||
    // },
 | 
			
		||||
 | 
			
		||||
    getInfo(id) {
 | 
			
		||||
      this.$instance.post(`/app/appepidemicbackhomerecord/queryDetailById?id=${id}`).then(res => {
 | 
			
		||||
        if (res.code === 0) {
 | 
			
		||||
          this.info = res.data
 | 
			
		||||
          this.info.checkPhoto = JSON.parse(res.data.checkPhoto)
 | 
			
		||||
          let healthName = ''
 | 
			
		||||
          this.info.isHealth = false
 | 
			
		||||
          res.data.health.split(',').forEach(v => {
 | 
			
		||||
            if (v > 0) {
 | 
			
		||||
              this.info.isHealth = true
 | 
			
		||||
            }
 | 
			
		||||
            healthName = healthName + this.$dict.getLabel('epidemicRecentHealth', v)
 | 
			
		||||
          })
 | 
			
		||||
          this.info.healthName = healthName
 | 
			
		||||
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.pageShow = true
 | 
			
		||||
          })
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.$hideLoading()
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    call(phone) {
 | 
			
		||||
      uni.makePhoneCall({
 | 
			
		||||
        phoneNumber: phone
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss">
 | 
			
		||||
.detail {
 | 
			
		||||
  padding-bottom: 40px;
 | 
			
		||||
 | 
			
		||||
  .detail-header {
 | 
			
		||||
    padding: 32px 32px 100px 32px;
 | 
			
		||||
    background: linear-gradient(135deg, #6496FF 0%, #4F75FF 100%);
 | 
			
		||||
    position: relative;
 | 
			
		||||
 | 
			
		||||
    .user {
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.02);
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      padding: 32px;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      .header {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        h3 {
 | 
			
		||||
          font-size: 40px;
 | 
			
		||||
          color: #333333;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
      .idNumber,
 | 
			
		||||
      .phone {
 | 
			
		||||
        color: #999999;
 | 
			
		||||
        font-size: 26px;
 | 
			
		||||
        margin-top: 8px;
 | 
			
		||||
      }
 | 
			
		||||
      .picture {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        margin-top: 24px;
 | 
			
		||||
        .healthPic,
 | 
			
		||||
        .nucleinPic {
 | 
			
		||||
          width: 192px;
 | 
			
		||||
          height: 192px;
 | 
			
		||||
          border-radius: 8px;
 | 
			
		||||
          position: relative;
 | 
			
		||||
          img {
 | 
			
		||||
            width: 100%;
 | 
			
		||||
            height: 100%;
 | 
			
		||||
          }
 | 
			
		||||
          span {
 | 
			
		||||
            position: absolute;
 | 
			
		||||
            bottom: 0;
 | 
			
		||||
            left: 0;
 | 
			
		||||
            width: 100%;
 | 
			
		||||
            height: 40px;
 | 
			
		||||
            line-height: 40px;
 | 
			
		||||
            background: rgb(27, 27, 27, 0.85);
 | 
			
		||||
            color: #fff;
 | 
			
		||||
            font-size: 22px;
 | 
			
		||||
            text-align: center;
 | 
			
		||||
            border-radius: 0 0 8px 8px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        .healthPic {
 | 
			
		||||
          margin-right: 24px;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .card {
 | 
			
		||||
      margin-top: 32px;
 | 
			
		||||
      background: rgba(70, 106, 233);
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      padding: 32px;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      .item-info {
 | 
			
		||||
        .item-info__item {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          margin-bottom: 8px;
 | 
			
		||||
 | 
			
		||||
          &:last-child {
 | 
			
		||||
            margin-bottom: 0;
 | 
			
		||||
          }
 | 
			
		||||
          .pic {
 | 
			
		||||
            position: relative;
 | 
			
		||||
            .img {
 | 
			
		||||
              width: 12px;
 | 
			
		||||
              height: 12px;
 | 
			
		||||
            }
 | 
			
		||||
            .lines {
 | 
			
		||||
              position: absolute;
 | 
			
		||||
              top: 32px;
 | 
			
		||||
              left: 4px;
 | 
			
		||||
              width: 4px;
 | 
			
		||||
              height: 100%;
 | 
			
		||||
              border-left: 4px dotted #CCCCCC;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          .img {
 | 
			
		||||
              width: 12px;
 | 
			
		||||
              height: 12px;
 | 
			
		||||
              position: relative;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
          .image {
 | 
			
		||||
            width: 32px;
 | 
			
		||||
            height: 32px;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          span:last-child {
 | 
			
		||||
            color: #fff;
 | 
			
		||||
            font-size: 28px;
 | 
			
		||||
            margin-left: 16px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .info {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 93%;
 | 
			
		||||
      left: 50%;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      transform: translate(-50%, 1%);
 | 
			
		||||
 | 
			
		||||
      .detail-info {
 | 
			
		||||
        padding: 0 32px;
 | 
			
		||||
        background: #fff;
 | 
			
		||||
        border-radius: 16px 16px 0 0;
 | 
			
		||||
 | 
			
		||||
        & > h2 {
 | 
			
		||||
          height: 116px;
 | 
			
		||||
          line-height: 116px;
 | 
			
		||||
          font-size: 38px;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          color: #333;
 | 
			
		||||
          span {
 | 
			
		||||
            float: right;
 | 
			
		||||
            font-size: 28px;
 | 
			
		||||
            color: #FF4466;
 | 
			
		||||
            font-weight: normal;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .detail-info__item {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          justify-content: space-between;
 | 
			
		||||
          padding: 34px 0;
 | 
			
		||||
          border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
 | 
			
		||||
          &:last-child {
 | 
			
		||||
            border: none;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          .left {
 | 
			
		||||
            display: flex;
 | 
			
		||||
            line-height: 1.3;
 | 
			
		||||
            max-width: 360px;
 | 
			
		||||
 | 
			
		||||
            label {
 | 
			
		||||
              position: relative;
 | 
			
		||||
              color: #999999;
 | 
			
		||||
              font-size: 32px;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          .right {
 | 
			
		||||
            display: flex;
 | 
			
		||||
            max-width: 450px;
 | 
			
		||||
 | 
			
		||||
            span {
 | 
			
		||||
              color: #333333;
 | 
			
		||||
              font-size: 32px;
 | 
			
		||||
              text-align: right;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            image {
 | 
			
		||||
              width: 40px;
 | 
			
		||||
              height: 40px;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .detail-info__item_wrap {
 | 
			
		||||
          display: block;
 | 
			
		||||
          border-bottom: 1px solid #DDDDDD;
 | 
			
		||||
          padding: 34px 0;
 | 
			
		||||
          .left {
 | 
			
		||||
            color: #999999;
 | 
			
		||||
            font-size: 32px;
 | 
			
		||||
          }
 | 
			
		||||
          .right {
 | 
			
		||||
            margin-top: 20px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB  | 
| 
		 Before Width: | Height: | Size: 502 B After Width: | Height: | Size: 502 B  | 
| 
		 Before Width: | Height: | Size: 351 B After Width: | Height: | Size: 351 B  | 
| 
		 Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB  | 
| 
		 Before Width: | Height: | Size: 346 B After Width: | Height: | Size: 346 B  | 
| 
		 Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB  | 
@@ -40,4 +40,4 @@ export default {
 | 
			
		||||
    margin-top: 64px;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
</style>
 | 
			
		||||
@@ -29,7 +29,7 @@ export default {
 | 
			
		||||
      this.showPage = true
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    myAdd() {
 | 
			
		||||