|
|
@@ -0,0 +1,691 @@
|
|
|
+<template>
|
|
|
+ <div class="page_box">
|
|
|
+ <div class="panel">
|
|
|
+ <NavBar :go="{ type: 'push', path: '/resumption' }"/>
|
|
|
+ <van-panel :title="resumptionData.taskName">
|
|
|
+ <div class="tts">
|
|
|
+ <van-row>
|
|
|
+ <van-col span="12">
|
|
|
+ <div class="total_panel">
|
|
|
+ <div class="title">履职项</div>
|
|
|
+ <div class="content">
|
|
|
+ <span class="con_num ok">已查 {{ resumptionData.yesPointNums }}</span>
|
|
|
+ <span class="con_num no">未查 {{ resumptionData.noPointNums }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </van-col>
|
|
|
+ <van-col span="12">
|
|
|
+ <div class="total_panel" @click="showDetail()">
|
|
|
+ <div class="title">NFC</div>
|
|
|
+ <div class="content">
|
|
|
+ <span class="con_num ok">已扫 {{ resumptionData.yesNFCNums }}</span>
|
|
|
+ <span class="con_num no">未扫 {{ resumptionData.noNFCNums }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </van-col>
|
|
|
+ </van-row>
|
|
|
+ </div>
|
|
|
+ </van-panel>
|
|
|
+ </div>
|
|
|
+ <div class="progress">
|
|
|
+ <van-progress
|
|
|
+ :percentage="((resumptionData.yesPointNums + resumptionData.yesNFCNums)/ (resumptionData.yesPointNums + resumptionData.noPointNums + resumptionData.yesNFCNums + resumptionData.noNFCNums) * 100).toFixed(2)"/>
|
|
|
+ </div>
|
|
|
+ <!-- 检查区域 -->
|
|
|
+ <div class="card">
|
|
|
+ <van-panel title="巡检区域">
|
|
|
+ <div style="padding: 5px;">
|
|
|
+ <van-row>
|
|
|
+ <van-col span="8" v-for="(va,i) in areas" :key="va.areaId">
|
|
|
+ <div :class="{'active': i === 0 } " class="check-area" @click="clickArea(va,i)">
|
|
|
+ <div class="ysj">
|
|
|
+ <van-icon name="checked" :color="areaColor.complete" v-if="va.areaStatus === '1'"/>
|
|
|
+ <van-icon name="info" :color="areaColor.loading" v-if="va.areaStatus === '2'"/>
|
|
|
+ <van-icon name="info" :color="areaColor.noOpen" v-if="va.areaStatus === '0'"/>
|
|
|
+ </div>
|
|
|
+ {{ va.areaName }}
|
|
|
+ </div>
|
|
|
+ </van-col>
|
|
|
+ </van-row>
|
|
|
+ </div>
|
|
|
+ </van-panel>
|
|
|
+ </div>
|
|
|
+ <van-action-sheet v-model="total_show">
|
|
|
+ <div class="content">
|
|
|
+
|
|
|
+ <van-tabs>
|
|
|
+ <van-tab title="已扫描" name="a">
|
|
|
+ <van-list
|
|
|
+ finished-text="没有更多了"
|
|
|
+ @load="onLoad"
|
|
|
+ >
|
|
|
+ <van-cell v-for="item in yesList" :key="item.nfcCode" :title="item.nfcName">
|
|
|
+
|
|
|
+ </van-cell>
|
|
|
+ </van-list>
|
|
|
+ </van-tab>
|
|
|
+ <van-tab title="未扫描" name="b">
|
|
|
+ <van-list
|
|
|
+ finished-text="没有更多了"
|
|
|
+ @load="onLoad"
|
|
|
+ >
|
|
|
+ <van-cell v-for="item in noList" :key="item.nfcCode" :title="item.nfcName">
|
|
|
+ <img :src="require('../../../assets/svg/NFC.svg')" class="nfc-icon" @click="clickNFC"/>
|
|
|
+ </van-cell>
|
|
|
+ </van-list>
|
|
|
+ </van-tab>
|
|
|
+ </van-tabs>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </van-action-sheet>
|
|
|
+
|
|
|
+ <div class="card">
|
|
|
+ <van-row>
|
|
|
+ <van-col span="16">
|
|
|
+ <van-cell>
|
|
|
+ <template #title>
|
|
|
+ <span>NFC</span>
|
|
|
+ </template>
|
|
|
+ <template #extra>
|
|
|
+ <span style="display: inline-block;color:#26850c;">{{ yesNFCnums }}</span>
|
|
|
+ <span style="display: inline-block;color:#0e0e0e;">/</span>
|
|
|
+ <span style="display: inline-block;color:#0e0e0e;">{{ NFCnums }}</span>
|
|
|
+ <img :src="require('../../../assets/svg/NFC.svg')" class="nfc-icon" @click="clickNFC"/>
|
|
|
+ </template>
|
|
|
+ </van-cell>
|
|
|
+ </van-col>
|
|
|
+ <van-col span="8">
|
|
|
+ <van-cell>
|
|
|
+ <div class="okAll">
|
|
|
+ <van-radio-group v-if="enable" v-model="selectRadio" @change="changeSwitch">
|
|
|
+ <van-radio name="1" icon-size="20px">一键填充</van-radio>
|
|
|
+ </van-radio-group>
|
|
|
+ </div>
|
|
|
+ </van-cell>
|
|
|
+ </van-col>
|
|
|
+ </van-row>
|
|
|
+ <van-row>
|
|
|
+ <van-col span="24">
|
|
|
+ <van-cell v-show="currentImgNFC.length > 0" :border="false">
|
|
|
+ <div v-if="v.areaId === areaId && v.img" class="nfc-img" v-for="(v,i) in nfcs" :key="v.img"
|
|
|
+ @click="preViewNFC(i)">
|
|
|
+ <img :src="imgUrl(v.img)" alt="">
|
|
|
+ <span>{{ v.nfcName }}</span>
|
|
|
+ <div v-if="enable" class="cancel_icon" @click="cancelImg(v)">
|
|
|
+ <van-icon name="clear"/>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </van-cell>
|
|
|
+ </van-col>
|
|
|
+ </van-row>
|
|
|
+
|
|
|
+ <van-collapse v-model="activeNames">
|
|
|
+ <van-collapse-item v-show="areaId === item.areaId" v-for="(item) in checks"
|
|
|
+ :title="item.itemName + '(' + (item.points.length) + ')'"
|
|
|
+ :name="item.itemName">
|
|
|
+ <div v-for="(point,index) in item.points">
|
|
|
+ <van-cell :title="point.pointName">
|
|
|
+ <template #right-icon>
|
|
|
+ <van-switch
|
|
|
+ style="margin-left: 10px;"
|
|
|
+ v-model="point.resValue"
|
|
|
+ v-show="point.dataStatus === 2"
|
|
|
+ v-if="enable"
|
|
|
+ :active-value="1"
|
|
|
+ :inactive-value="0"
|
|
|
+ inactive-color="#4fc08d"
|
|
|
+ active-color="#ee0a24"
|
|
|
+ size="18"
|
|
|
+ />
|
|
|
+ <span v-else>
|
|
|
+ <van-tag v-if="item.resvalue" type="warning">隐患</van-tag>
|
|
|
+ <van-tag v-else type="success">正常</van-tag>
|
|
|
+ </span>
|
|
|
+ <van-switch
|
|
|
+ style="margin-left: 10px;"
|
|
|
+ v-model="point.dataStatus"
|
|
|
+ v-show="point.dataStatus === 1"
|
|
|
+ :active-value="2"
|
|
|
+ :inactive-value="1"
|
|
|
+ inactive-color="#fcfcfc"
|
|
|
+ active-color="#ee0a24"
|
|
|
+ size="18"
|
|
|
+ @change="changeCurrentSwitch(item.areaId)"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </van-cell>
|
|
|
+ <van-cell-group v-show="point.resValue">
|
|
|
+ <select-cell :required = enable :disabled="!enable" title="整改期限" v-model="point.rectificationDeadline"
|
|
|
+ :data-list="dayList"/>
|
|
|
+ <van-field
|
|
|
+ :required = enable
|
|
|
+ v-model="point.resRemark"
|
|
|
+ rows="1"
|
|
|
+ autosize
|
|
|
+ label="情况描述:"
|
|
|
+ type="textarea"
|
|
|
+ placeholder="请输入"/>
|
|
|
+ <div class="upload-box">
|
|
|
+ <uploader :maxCount="5" v-if="enable" v-model="point.imgs"/>
|
|
|
+ <van-cell v-else>
|
|
|
+ <div class="nfc-img van-hairline--surround" v-for="(v,i) in item.imgData" :key="v.imgPath" @click="clickWarnImage(item.imgData,i)">
|
|
|
+ <img :src="imgUrl(v.imgPath)" alt="" >
|
|
|
+ <span>{{v.checkName}}</span>
|
|
|
+ </div>
|
|
|
+ </van-cell>
|
|
|
+ </div>
|
|
|
+ </van-cell-group>
|
|
|
+ </div>
|
|
|
+ </van-collapse-item>
|
|
|
+ </van-collapse>
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+ <div class="bottomClass" v-if="enable">
|
|
|
+ <van-row>
|
|
|
+ <van-col span="12">
|
|
|
+ <van-button type="default" @click="resumptionDataSave">保存</van-button>
|
|
|
+ </van-col>
|
|
|
+ <van-col span="12">
|
|
|
+ <van-button type="info" @click="submitResumptionData">提交</van-button>
|
|
|
+ </van-col>
|
|
|
+ </van-row>
|
|
|
+ </div>
|
|
|
+ <!-- nfc弹窗 -->
|
|
|
+ <nfc-popup v-if="enable" ref="NfcPopup" @change="changeNfcImg"></nfc-popup>
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { ImagePreview, Dialog } from 'vant'
|
|
|
+import NavBar from '@/components/NavBar/index.vue'
|
|
|
+import Uploader from '@/components/upload/uploader.vue'
|
|
|
+import SelectCell from '@/components/selectCell/index.vue'
|
|
|
+import { getDict } from '@/api/toConsult'
|
|
|
+import { saveTask, taskDetail } from '@/views/menu/resumption/api'
|
|
|
+import NfcPopup from '@/components/nfcPopup/more'
|
|
|
+import { imgUrl } from '@/utils'
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ SelectCell,
|
|
|
+ Uploader,
|
|
|
+ NavBar,
|
|
|
+ NfcPopup,
|
|
|
+ imgUrl,
|
|
|
+ [Dialog.Component.name]: Dialog.Component
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ areaColor: {
|
|
|
+ // 已完成
|
|
|
+ complete: '#26850c',
|
|
|
+ // 未开始
|
|
|
+ noOpen: '#1989fa',
|
|
|
+ // 进行中
|
|
|
+ loading: '#ffa500'
|
|
|
+ },
|
|
|
+ NFCnums: 0,
|
|
|
+ yesNFCnums: 0,
|
|
|
+ currentImgNFC: [],
|
|
|
+ areaId: null,
|
|
|
+ resumptionData: {},
|
|
|
+ areas: [],
|
|
|
+ checks: [],
|
|
|
+ nfcs: [],
|
|
|
+ selectRadio: 0,
|
|
|
+ total_show: false,
|
|
|
+ enable: false,
|
|
|
+ activeNames: [],
|
|
|
+ dayList: [15, 30, 90, 180],
|
|
|
+ yesList: [],
|
|
|
+ noList: [],
|
|
|
+ loading: false,
|
|
|
+ finished: false,
|
|
|
+ selectArea: null,
|
|
|
+ preViewImages: {
|
|
|
+ images: [],
|
|
|
+ startPosition: 0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.getResumptionData()
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ getDict('rectification_deadline').then(res => {
|
|
|
+ let { data } = res
|
|
|
+ this.dayList = data
|
|
|
+ })
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ preViewNFC(i) {
|
|
|
+ this.preViewImages.images = this.currentImgNFC.map(v => imgUrl(v.img))
|
|
|
+ this.preViewImages.startPosition = i
|
|
|
+ ImagePreview(this.preViewImages)
|
|
|
+ },
|
|
|
+ getResumptionData() {
|
|
|
+ let data = {
|
|
|
+ taskId: this.$route.query.id,
|
|
|
+ taskDate:this.$route.query.taskDate
|
|
|
+ }
|
|
|
+ taskDetail(data).then(res => {
|
|
|
+ let { taskId, taskName, yesPointNums, noPointNums, yesNFCNums, noNFCNums,status } = res.data
|
|
|
+ this.resumptionData = {
|
|
|
+ taskId, taskName, yesPointNums, noPointNums, yesNFCNums, noNFCNums,status
|
|
|
+ }
|
|
|
+ this.enable = this.resumptionData.status === 1 || this.resumptionData.status === 2;
|
|
|
+ this.checks = res.data.checks
|
|
|
+ this.nfcs = res.data.nfcs
|
|
|
+ this.areas = res.data.areas
|
|
|
+ this.activeArea(this.areas[0], 0)
|
|
|
+
|
|
|
+ if(!this.enable){
|
|
|
+ this.openCollapseItems();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ openCollapseItems() {
|
|
|
+ let len = this.checks.length
|
|
|
+ for (let i = 0; i < len; i++) {
|
|
|
+ let title = this.checks[i].itemName
|
|
|
+ this.activeNames.push(title)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ changeSwitch() {
|
|
|
+ let num = 0
|
|
|
+ for (let i = 0; i < this.checks.length; i++) {
|
|
|
+ for (let j = 0; j < this.checks[i].points.length; j++) {
|
|
|
+ this.checks[i].points[j].dataStatus = 2
|
|
|
+ num++
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.resumptionData.yesPointNums = num
|
|
|
+ this.resumptionData.noPointNums = 0
|
|
|
+ this.areas.forEach((item, index) => {
|
|
|
+ this.validateArea(item.areaId)
|
|
|
+ })
|
|
|
+ this.openCollapseItems()
|
|
|
+ },
|
|
|
+ changeCurrentSwitch(areaId) {
|
|
|
+ this.resumptionData.yesPointNums = this.resumptionData.yesPointNums + 1
|
|
|
+ this.resumptionData.noPointNums = this.resumptionData.noPointNums - 1
|
|
|
+ this.validateArea(areaId)
|
|
|
+ },
|
|
|
+ validateArea(areaId) {
|
|
|
+ let total = 0
|
|
|
+ let yes = 0
|
|
|
+ this.checks.forEach((item) => {
|
|
|
+ let pointList = item.points
|
|
|
+
|
|
|
+ pointList.forEach((point) => {
|
|
|
+ if (item.areaId === areaId) {
|
|
|
+ total++
|
|
|
+ if (point.dataStatus === 2) {
|
|
|
+ yes++
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+ let noNfc = this.nfcs.filter((item, index) => {
|
|
|
+ return item.areaId === areaId && item.status === 0
|
|
|
+ })
|
|
|
+
|
|
|
+ let areaStatus = '0'
|
|
|
+ if (total === yes && noNfc.length === 0) {
|
|
|
+ areaStatus = '1'
|
|
|
+ } else if( yes === 0 && noNfc.length === this.NFCnums){
|
|
|
+ areaStatus = '0'
|
|
|
+ }else{
|
|
|
+ areaStatus = '2';
|
|
|
+ }
|
|
|
+
|
|
|
+ this.areas.forEach((item, index) => {
|
|
|
+ if (item.areaId === areaId) {
|
|
|
+ this.areas[index].areaStatus = areaStatus
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ clickNFC() {
|
|
|
+ let arr = this.nfcs.filter(item => {
|
|
|
+ return item.areaId === this.areaId && item.status === 0
|
|
|
+ })
|
|
|
+
|
|
|
+ if (arr.length > 0) {
|
|
|
+ let nfcs = []
|
|
|
+ for (const nfc of arr) {
|
|
|
+ let pro = {}
|
|
|
+ pro.checkName = nfc.nfcName
|
|
|
+ pro.nfccdoe = nfc.nfcCode
|
|
|
+ nfcs.push(pro)
|
|
|
+ }
|
|
|
+ this.$refs.NfcPopup.show(nfcs)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ cancelImg(imgItem) {
|
|
|
+ let areaId = null
|
|
|
+ this.nfcs.forEach(v => {
|
|
|
+ if (v.nfcCode === imgItem.nfcCode) {
|
|
|
+ areaId = v.areaId
|
|
|
+ v.img = imgItem.url
|
|
|
+ v.status = 0
|
|
|
+ v.scanMethod = null
|
|
|
+ }
|
|
|
+ })
|
|
|
+ let now = this.currentImgNFC.filter((v) => {
|
|
|
+ return v.nfcCode !== imgItem.nfcCode
|
|
|
+ })
|
|
|
+ this.currentImgNFC = now
|
|
|
+
|
|
|
+ this.yesNFCnums--
|
|
|
+ this.resumptionData.yesNFCNums--
|
|
|
+ this.resumptionData.noNFCNums++
|
|
|
+ this.validateArea(areaId)
|
|
|
+ },
|
|
|
+ changeNfcImg(imgItem) {
|
|
|
+ let areaId = null
|
|
|
+ this.nfcs.forEach(v => {
|
|
|
+ if (v.nfcCode === imgItem.nfcCode) {
|
|
|
+ areaId = v.areaId
|
|
|
+ v.img = imgItem.url
|
|
|
+ v.status = 1
|
|
|
+ v.scanMethod = 1
|
|
|
+ this.currentImgNFC.push(v)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.yesNFCnums++
|
|
|
+ this.resumptionData.yesNFCNums++
|
|
|
+ this.resumptionData.noNFCNums--
|
|
|
+ this.validateArea(areaId)
|
|
|
+ },
|
|
|
+ showDetail() {
|
|
|
+ this.total_show = true
|
|
|
+ },
|
|
|
+ onLoad() {
|
|
|
+ // 异步更新数据
|
|
|
+ // setTimeout 仅做示例,真实场景中一般为 ajax 请求
|
|
|
+ this.yesList = []
|
|
|
+ this.noList = []
|
|
|
+ this.nfcs.forEach((item, index) => {
|
|
|
+ if (item.status === 1) {
|
|
|
+ this.yesList.push(item)
|
|
|
+ } else {
|
|
|
+ this.noList.push(item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //点击区域
|
|
|
+ clickArea(area, index) {
|
|
|
+ this.activeArea(area, index)
|
|
|
+ },
|
|
|
+ //选中区域时数据变更
|
|
|
+ activeArea(area, index) {
|
|
|
+ //获取当前选中区域
|
|
|
+ this.areaId = area.areaId
|
|
|
+ //设置选中样式
|
|
|
+ this.$nextTick(() => {
|
|
|
+ let doms = document.getElementsByClassName('check-area')
|
|
|
+ Array.prototype.forEach.call(doms, item => {
|
|
|
+ item.classList.remove('active')
|
|
|
+ })
|
|
|
+ doms[index].classList.add('active')
|
|
|
+ })
|
|
|
+ let nfcs = 0
|
|
|
+ let yesNfc = 0
|
|
|
+ let current = []
|
|
|
+ for (let i = 0; i < this.nfcs.length; i++) {
|
|
|
+ let nfc = this.nfcs[i]
|
|
|
+ let areaId = nfc.areaId
|
|
|
+ if (areaId === area.areaId) {
|
|
|
+ nfcs++
|
|
|
+ if (nfc.status === 1) {
|
|
|
+ yesNfc++
|
|
|
+ }
|
|
|
+ if (nfc.img) {
|
|
|
+ current.push(nfc)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.currentImgNFC = current
|
|
|
+ this.yesNFCnums = yesNfc
|
|
|
+ this.NFCnums = nfcs
|
|
|
+ this.selectArea = area
|
|
|
+ },
|
|
|
+ //保存数据
|
|
|
+ resumptionDataSave() {
|
|
|
+ //组装数据
|
|
|
+ let data = {}
|
|
|
+ data.taskId = this.resumptionData.taskId
|
|
|
+ data.checks = this.checks
|
|
|
+ data.nfcs = this.nfcs
|
|
|
+ data.subType = 1
|
|
|
+
|
|
|
+ saveTask(data).then(res => {
|
|
|
+ this.$toast('保存成功')
|
|
|
+ this.$router.go(-1)
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ submitResumptionData() {
|
|
|
+ //验证数据
|
|
|
+ let noNfc = this.nfcs.filter((item, index) => {
|
|
|
+ return item.status === 0
|
|
|
+ })
|
|
|
+ if (noNfc.length > 0) {
|
|
|
+ Dialog.alert({
|
|
|
+ message: 'NFC标签还未扫描完成,请完成后提交!'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let isOk = true
|
|
|
+ this.checks.forEach((item) => {
|
|
|
+ let pointList = item.points
|
|
|
+ pointList.forEach((point) => {
|
|
|
+ if (point.dataStatus === 1) {
|
|
|
+ isOk = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ let data = {}
|
|
|
+ data.taskId = this.resumptionData.taskId
|
|
|
+ data.checks = this.checks
|
|
|
+ data.nfcs = this.nfcs
|
|
|
+ data.subType = 2
|
|
|
+ if (!isOk) {
|
|
|
+ Dialog.confirm({
|
|
|
+ message: '还有未完成的内容,是否提交?'
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ saveTask(data).then(res => {
|
|
|
+ this.$toast('提交成功')
|
|
|
+ this.$router.to("/resumption")
|
|
|
+ })
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ saveTask(data).then(res => {
|
|
|
+ this.$toast('提交成功')
|
|
|
+ this.$router.to("/resumption")
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.van-progress {
|
|
|
+ z-index: 999;
|
|
|
+ width: 98%;
|
|
|
+ left: 6px;
|
|
|
+ right: 6px;
|
|
|
+}
|
|
|
+
|
|
|
+.page_box {
|
|
|
+ height: calc(100vh - 60px);
|
|
|
+ overflow: scroll;
|
|
|
+}
|
|
|
+
|
|
|
+.content {
|
|
|
+ padding: 16px 16px 10px;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+.panel {
|
|
|
+ background-color: white;
|
|
|
+ border-radius: 10px;
|
|
|
+ border: 1px solid #ffffff;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ box-shadow: 0 8px 12px #ebedf0;
|
|
|
+ margin-bottom: 10px;
|
|
|
+
|
|
|
+ .van-cell__title {
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.total_panel {
|
|
|
+ text-align: center;
|
|
|
+
|
|
|
+ .title {
|
|
|
+ padding-top: 10px;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ .content {
|
|
|
+ padding-top: 10px;
|
|
|
+ padding-bottom: 10px;
|
|
|
+
|
|
|
+ .con_num {
|
|
|
+ padding: 15px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .ok {
|
|
|
+ color: #26850c;
|
|
|
+ }
|
|
|
+
|
|
|
+ .no {
|
|
|
+ color: #98632d;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.card {
|
|
|
+ box-shadow: 0 10px 10px #eaeaea;
|
|
|
+ height: 50px;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+.van-popup {
|
|
|
+ height: 50%;
|
|
|
+}
|
|
|
+
|
|
|
+.check-area {
|
|
|
+ //background-color: #f1f1f1;
|
|
|
+ text-align: center;
|
|
|
+ margin: 10px;
|
|
|
+ padding: 20px;
|
|
|
+ //color: #aaa;
|
|
|
+ border-radius: 6px;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ box-shadow: 0 2px 6px #ddd;
|
|
|
+ position: relative;
|
|
|
+
|
|
|
+ .ysj {
|
|
|
+ position: absolute;
|
|
|
+ right: 5px;
|
|
|
+ top: 5px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.active {
|
|
|
+ background-color: #bdbdbd;
|
|
|
+ color: #333;
|
|
|
+}
|
|
|
+
|
|
|
+.complete {
|
|
|
+ color: #fff;
|
|
|
+ background-color: #1989fa;
|
|
|
+}
|
|
|
+
|
|
|
+.nfc-icon {
|
|
|
+ width: 50px;
|
|
|
+ height: 50px;
|
|
|
+ margin-left: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.bottomClass {
|
|
|
+ position: fixed;
|
|
|
+ width: 100%;
|
|
|
+ bottom: 0;
|
|
|
+ z-index: 999;
|
|
|
+ background: #ebedf0;
|
|
|
+ text-align: center;
|
|
|
+
|
|
|
+ .van-button {
|
|
|
+ width: 95%;
|
|
|
+ margin-top: 10px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+.okAll {
|
|
|
+ background-color: #fff;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ height: 50px
|
|
|
+}
|
|
|
+
|
|
|
+.nfc-img {
|
|
|
+ display: inline-block;
|
|
|
+ width: 160px;
|
|
|
+ height: 160px;
|
|
|
+ margin: 0 10px;
|
|
|
+ position: relative;
|
|
|
+
|
|
|
+ > img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ border: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ > span {
|
|
|
+ position: absolute;
|
|
|
+ padding: 0 10px;
|
|
|
+ bottom: 0;
|
|
|
+ left: 0;
|
|
|
+ display: block;
|
|
|
+ width: 100%;
|
|
|
+ background-color: rgba(0, 0, 0, .2);
|
|
|
+ color: #eaeaea;
|
|
|
+ font-size: 5px;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ line-height: 30px;
|
|
|
+ white-space: break-spaces;
|
|
|
+ height: 30px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .cancel_icon {
|
|
|
+ position: absolute;
|
|
|
+ font-size: 30px;
|
|
|
+ right: 5px;
|
|
|
+ top: 2px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+</style>
|