提交 e0416766 authored 作者: zs's avatar zs
...@@ -283,7 +283,8 @@ LIMIT 1;` ...@@ -283,7 +283,8 @@ LIMIT 1;`
} }
let sql = `UPDATE ${table.inspectionRecordName} SET let sql = `UPDATE ${table.inspectionRecordName} SET
signImg = '${data.signImg}', signImg = '${data.signImg}',
synFlag = '${data.synFlag}' synFlag = '${data.synFlag}',
isException = '${data.isException}',
WHERE id = ${data.id}`; WHERE id = ${data.id}`;
await sqllitedb.executeSQL(sql); await sqllitedb.executeSQL(sql);
} catch (e) { } catch (e) {
......
<template> <template>
<!-- 井道巡检列表 --> <!-- 井道巡检列表 -->
<view class="container"> <view class="container">
<uni-nav-bar <uni-nav-bar
:fixed="true" :fixed="true"
background-color="rgba(214, 240, 255, 0.0)" background-color="rgba(214, 240, 255, 0.0)"
status-bar status-bar
rightWidth="300" rightWidth="300"
> >
<block slot="left"> <block slot="left">
<view class="" @click="back"> <view class="" @click="back">
<text class="iconfont icon-fanhui"></text> <text class="iconfont icon-fanhui"></text>
</view> </view>
</block> </block>
<block slot="right" class="nav-right"> <block slot="right" class="nav-right">
<view class="header-buttons"> <view class="header-buttons">
<view class="button" @click="lookTable">查看样表</view> <view class="button" @click="lookTable">查看样表</view>
</view> </view>
</block> </block>
</uni-nav-bar> </uni-nav-bar>
<!-- 第二个模块 --> <!-- 第二个模块 -->
<view class="profile-section"> <view class="profile-section">
<view class="profile-box"> <view class="profile-box">
<view class="profile-left"> <view class="profile-left">
<view class="avatar"> <view class="avatar">
<image <image
src="@/static/img/add-img/defaultAvatar.png" src="@/static/img/add-img/defaultAvatar.png"
mode="aspectFit" mode="aspectFit"
></image> ></image>
</view> </view>
<view class="info"> <view class="info">
<view class="username">{{ userInfo.user }}</view> <view class="username">{{ userInfo.user }}</view>
<view class="number" <view class="number"
>巡检编号:<text class="value">{{ inspectionCode }}</text></view >巡检编号:<text class="value">{{ inspectionCode }}</text></view
> >
</view> </view>
</view> </view>
<!-- {{ isSubmit }} {{ isSign }} --> <!-- {{ isSubmit }} {{ isSign }} -->
<view v-if="isSubmit" class="profile-right"> <view class="profile-right">
<button v-if="!isSign" class="record-button" @click="toSign"> <button
巡检人签字 v-if="!isSign"
</button> :disabled="!isSubmit"
<view v-else-if="detailsInfo.synchronization != 1" class="action-container"> :class="{
<image 'record-button': true,
class="sign-img" 'disabled-btn': !isSubmit,
:src="detailsInfo.signImg" }"
mode="aspectFit"> @click="toSign"
</image> >
<button class="record-button small" @click="toSign"> 巡检人签字
重签 </button>
</button> <view
<view class="inspection-button" @click="openDialog(true)">数据同步</view> v-else-if="detailsInfo.synchronization != 1"
</view> class="action-container"
</view> >
</view> <image class="sign-img" :src="detailsInfo.signImg" mode="aspectFit">
</view> </image>
<view v-if="!isSign" class="content-box"> <button class="record-button small" @click="toSign">重签</button>
<!-- 左侧模块 --> <view class="inspection-button" @click="openDialog(true)"
<view class="left-side"> >数据同步</view
<view >
v-for="(tab, index) in tabs.slice(0, 7)" </view>
:key="index" </view>
:class="['tab-item', { active: activeTab === index }]" </view>
@click="getActiveTab(index)" </view>
> <view v-if="!isSign" class="content-box">
{{ tab }} <!-- 左侧模块 -->
</view> <view class="left-side">
</view> <view
v-for="(tab, index) in tabs.slice(0, 7)"
<!-- 右侧模块 --> :key="index"
<view class="right-side"> :class="['tab-item', { active: activeTab === index }]"
<!-- 第一部分:按钮 --> @click="getActiveTab(index)"
<view class="button-group"> >
<view class="button" {{ tab }}
>已巡检<text class="number">{{ inspectionNumber }}</text </view>
>个井道</view </view>
>
<view class="button"> <!-- 右侧模块 -->
<text class="iconfont icon-tixing"></text <view class="right-side">
>请点击“需巡检井道”执行巡检</view <!-- 第一部分:按钮 -->
> <view class="button-group">
</view> <view class="button"
>已巡检<text class="number">{{ inspectionNumber }}</text
<!-- 第二部分:卡片组 --> >个井道</view
<view class="card-box"> >
<view <view class="button">
class="card-group" <text class="iconfont icon-tixing"></text
v-for="(item, index) in cardsInfo" >请点击“需巡检井道”执行巡检</view
:key="index" >
> </view>
<view class="card-title">{{ item.name }}</view>
<view class="card-list"> <!-- 第二部分:卡片组 -->
<view <view class="card-box">
v-for="position in item.position" <view
:key="position.dictValue" class="card-group"
class="card" v-for="(item, index) in cardsInfo"
:class="{ :key="index"
status1: position.status == 1, >
status2: position.status == 2, <view class="card-title">{{ item.name }}</view>
}" <view class="card-list">
@click=" <view
toShaftInspection( v-for="position in item.position"
item.value, :key="position.dictValue"
position.dictValue, class="card"
item.name + position.dictLabel :class="{
) status1: position.status == 1,
" status2: position.status == 2,
> }"
<view class="card-content"> @click="
<view class="status-line"> toShaftInspection(
<text item.value,
v-if="position.status == 0" position.dictValue,
class="iconfont icon-weixunjian" item.name + position.dictLabel
></text> )
<text "
v-if="position.status == 1" >
class="iconfont icon-wancheng" <view class="card-content">
></text> <view class="status-line">
<text <text
v-if="position.status == 2" v-if="position.status == 0"
class="iconfont icon-shibai1" class="iconfont icon-weixunjian"
></text> ></text>
<text v-if="position.isSubmit === 0" class="status-text">草稿</text> <text
<text v-else class="status-text">{{ position.statusLable }}</text> v-if="position.status == 1"
</view> class="iconfont icon-wancheng"
<view class="info-line"> ></text>
<text class="info-text" <text
>{{ item.name }}{{ position.dictLabel }}</text v-if="position.status == 2"
> class="iconfont icon-shibai1"
</view> ></text>
</view> <text v-if="position.isSubmit === 0" class="status-text"
</view> >草稿</text
</view> >
</view> <text v-else class="status-text">{{
</view> position.statusLable
</view> }}</text>
</view> </view>
<view v-else class="content-box"> <view class="info-line">
<!-- 左侧模块 --> <text class="info-text"
<view class="left-side"> >{{ item.name }}{{ position.dictLabel }}</text
<view >
v-for="(tab, index) in tabsDetail.slice(0, 7)" </view>
:key="index" </view>
:class="['tab-item', { active: activeTab === index }]" </view>
@click="getActiveTabDetails(index, tab)" </view>
> </view>
{{ tab }} </view>
</view> </view>
</view> </view>
<view v-else class="content-box">
<!-- 右侧模块 --> <!-- 左侧模块 -->
<view class="right-side"> <view class="left-side">
<!-- 第二部分:卡片组 --> <view
<view class="card-box"> v-for="(tab, index) in tabsDetail.slice(0, 7)"
<view :key="index"
class="card-group" :class="['tab-item', { active: activeTab === index }]"
v-for="(item, index) in cardsInfo" @click="getActiveTabDetails(index, tab)"
:key="index" >
> {{ tab }}
<view class="card-title">{{ item.name }}</view> </view>
<view class="card-list"> </view>
<view
v-for="position in item.position" <!-- 右侧模块 -->
:key="position.dictValue" <view class="right-side">
class="card" <!-- 第二部分:卡片组 -->
:class="{ <view class="card-box">
status1: position.status == 1, <view
status2: position.status == 2, class="card-group"
}" v-for="(item, index) in cardsInfo"
@click="getDetailsItem(item.value, position.dictCode)" :key="index"
> >
<view class="card-content"> <view class="card-title">{{ item.name }}</view>
<view class="status-line"> <view class="card-list">
<text <view
v-if="position.status == 0" v-for="position in item.position"
class="iconfont icon-weixunjian" :key="position.dictValue"
></text> class="card"
<text :class="{
v-if="position.status == 1" status1: position.status == 1,
class="iconfont icon-wancheng" status2: position.status == 2,
></text> }"
<text @click="getDetailsItem(item.value, position.dictCode)"
v-if="position.status == 2" >
class="iconfont icon-shibai1" <view class="card-content">
></text> <view class="status-line">
<text v-if="position.isSubmit === 0" class="status-text">草稿</text> <text
<text v-else class="status-text">{{ position.statusLable }}</text> v-if="position.status == 0"
</view> class="iconfont icon-weixunjian"
<view class="info-line"> ></text>
<text class="info-text" <text
>{{ item.name }}{{ position.dictLabel }}</text v-if="position.status == 1"
> class="iconfont icon-wancheng"
</view> ></text>
</view> <text
</view> v-if="position.status == 2"
</view> class="iconfont icon-shibai1"
</view> ></text>
<view v-if="isShow" class="card-group"> <text v-if="position.isSubmit === 0" class="status-text"
<detail ref="detail" :detailsItem="detailsItem"></detail >草稿</text
></view> >
</view> <text v-else class="status-text">{{
</view> position.statusLable
</view> }}</text>
<signDialog ref="signDialog" @confirm="handlePopupConfirm"></signDialog> </view>
<Dialog v-show="showSyncDialog" :list="list" @close="openDialog(false)"></Dialog> <view class="info-line">
</view> <text class="info-text"
</template> >{{ item.name }}{{ position.dictLabel }}</text
>
<script> </view>
import moment from "moment"; </view>
import { pad_2_1_inspection_position, pad_2_1_floor } from "@/utils/dict.js"; </view>
import { </view>
writeInspectionData, </view>
addLog, <view v-if="isShow" class="card-group">
getLogContent, <detail ref="detail" :detailsItem="detailsItem"></detail
LOG_TYPE_ENUM, ></view>
} from "@/utils/IoReadingAndWriting.js"; </view>
import { getInspectionDetails } from "@/request/index.js"; </view>
import inspectApi from "@/api/inspect"; </view>
import signDialog from "@/components/signDialog.vue"; <signDialog ref="signDialog" @confirm="handlePopupConfirm"></signDialog>
import detail from "./model/detail.vue"; <Dialog
import Dialog from '@/pages/inspectionManagement/dialog.vue' v-show="showSyncDialog"
import { sqlToData, dataToSql } from "./shared"; :list="list"
export default { @close="openDialog(false)"
components: { ></Dialog>
signDialog, </view>
detail, </template>
Dialog
}, <script>
data() { import moment from "moment";
return { import { pad_2_1_inspection_position, pad_2_1_floor } from "@/utils/dict.js";
tabs: ["所有井道"], // 选项卡内容 import {
tabsDetail: ["所有井道"], writeInspectionData,
activeTab: 0, // 默认选中的选项卡 addLog,
inspectionNumber: 0, // 已巡检的井道数量 getLogContent,
cards: [ LOG_TYPE_ENUM,
"A座-1楼", } from "@/utils/IoReadingAndWriting.js";
"A座-2楼", import { getInspectionDetails } from "@/request/index.js";
"A座-3楼", import inspectApi from "@/api/inspect";
"A座-4楼", import signDialog from "@/components/signDialog.vue";
"A座-5楼", import detail from "./model/detail.vue";
"A座-6楼", import Dialog from "@/pages/inspectionManagement/dialog.vue";
"A座-7楼", import { sqlToData, dataToSql } from "./shared";
"A座-8楼", export default {
], // 卡片内容 components: {
inspectionCode: "", signDialog,
cardsInfo: [], //卡片数据 detail,
tabList: [], Dialog,
activeTabIndex: 0, },
baseInfo: {}, // 基础信息 data() {
tempForm: { return {
// 对应每个tab下的数据 [示例 0: 数据] tabs: ["所有井道"], // 选项卡内容
}, tabsDetail: ["所有井道"],
detailsInfo: {}, // 详情 activeTab: 0, // 默认选中的选项卡
isDisable: false, // 禁用 inspectionNumber: 0, // 已巡检的井道数量
isSign: false, //签名状态 cards: [
isSubmit: 0, //提交状态 "A座-1楼",
uid: "", "A座-2楼",
options: {}, //存储数据 "A座-3楼",
backValue: "", "A座-4楼",
all_data: [], //所有数据 "A座-5楼",
detailsItem: {}, //单个井道详情 "A座-6楼",
isShow: false, "A座-7楼",
showSyncDialog: false, "A座-8楼",
list: [] ], // 卡片内容
}; inspectionCode: "",
}, cardsInfo: [], //卡片数据
computed: { tabList: [],
userInfo() { activeTabIndex: 0,
return this.$store.state.now_user || {}; baseInfo: {}, // 基础信息
}, tempForm: {
isOperationPermissions() { // 对应每个tab下的数据 [示例 0: 数据]
// 是否有操作权限 },
const { uid, createByName } = this.detailsInfo; detailsInfo: {}, // 详情
return !uid || (uid && createByName == this.userInfo.user); isDisable: false, // 禁用
}, isSign: false, //签名状态
}, isSubmit: 0, //提交状态
onLoad(options) { uid: "",
this.options = options; options: {}, //存储数据
this.backValue = this.options.backValue || ""; backValue: "",
this.isDisable = this.options.isDisable == 1 ? true : false; all_data: [], //所有数据
console.log("options.uid", this.options.uid); detailsItem: {}, //单个井道详情
this.uid = this.options.uid || ""; isShow: false,
}, showSyncDialog: false,
onShow() { list: [],
if (this.uid) { };
this.getDetails(this.uid); },
} else { computed: {
this.init(); userInfo() {
} return this.$store.state.now_user || {};
this.all_data = this.$store.state.all_data; },
}, isOperationPermissions() {
mounted() {}, // 是否有操作权限
methods: { const { uid, createByName } = this.detailsInfo;
init() { return !uid || (uid && createByName == this.userInfo.user);
return new Promise((resolve, reject) => { },
this.tabList = pad_2_1_inspection_position.rows.map((item, index) => { },
this.tabs.push(item.dictLabel); onLoad(options) {
return { this.options = options;
name: item.dictLabel, this.backValue = this.options.backValue || "";
value: item.dictValue, this.isDisable = this.options.isDisable == 1 ? true : false;
isVaild: false, // 校验通过 console.log("options.uid", this.options.uid);
// type: 1, // 枚举值 this.uid = this.options.uid || "";
position: pad_2_1_floor.rows, },
refName: `TabContentItem_${index}`, onShow() {
descript: "检查内容包括门禁、卫生、设备告警。", if (this.uid) {
}; this.getDetails(this.uid);
}); } else {
this.cardsInfo = this.tabList; this.init();
this.inspectionCode = `JDXJ${moment().format("yyyyMMDDHHmmss")}${ }
Math.floor(Math.random() * 900) + 100 this.all_data = this.$store.state.all_data;
}`; },
console.log("this.tabList", this.tabList); mounted() {},
if (this.detailsInfo.inspectionType) { methods: {
const fillCheck = this.detailsInfo.fillCheck.split(","); init() {
return new Promise((resolve, reject) => {
setTimeout(() => { this.tabList = pad_2_1_inspection_position.rows.map((item, index) => {
this.tabList.forEach((item, index) => { this.tabs.push(item.dictLabel);
item.isVaild = fillCheck.includes(item.value); return {
this.tempForm[index] && name: item.dictLabel,
this.setComponentData(item.refName, this.tempForm[index]); value: item.dictValue,
}); isVaild: false, // 校验通过
}, 500); // type: 1, // 枚举值
} else { position: pad_2_1_floor.rows,
this.baseInfo = this.$store.state.temp_data; refName: `TabContentItem_${index}`,
} descript: "检查内容包括门禁、卫生、设备告警。",
resolve(); };
}); });
}, this.cardsInfo = this.tabList;
// 获取井道详情 this.inspectionCode = `JDXJ${moment().format("yyyyMMDDHHmmss")}${
getDetailsItem(value, dictCode) { Math.floor(Math.random() * 900) + 100
let item = this.detailsInfo.originData.find(building => building.value === value)?.position.find(pos => pos.dictCode === dictCode) }`;
console.log("this.tabList", this.tabList);
if (item.status < 1) { if (this.detailsInfo.inspectionType) {
uni.showToast({ const fillCheck = this.detailsInfo.fillCheck.split(",");
title: "该井道暂无数据",
icon: "none", setTimeout(() => {
}); this.tabList.forEach((item, index) => {
} item.isVaild = fillCheck.includes(item.value);
this.detailsItem = item.details; this.tempForm[index] &&
this.isShow = true; this.setComponentData(item.refName, this.tempForm[index]);
console.log("this.detailsItem", this.detailsItem); });
}, }, 500);
getActiveTab(index) { } else {
this.activeTab = index; this.baseInfo = this.$store.state.temp_data;
console.log("this.activeTab", this.activeTab); }
if (this.activeTab == 0) { resolve();
this.cardsInfo = this.tabList; });
} else { },
this.cardsInfo = [this.tabList[index - 1]]; // 获取井道详情
} getDetailsItem(value, dictCode) {
}, let item = this.detailsInfo.originData
getActiveTabDetails(index, tab) { .find((building) => building.value === value)
this.activeTab = index; ?.position.find((pos) => pos.dictCode === dictCode);
// this.cardsInfo = [selected]; if (item.status < 1) {
// this.cardsInfo = [this.tabList[index]]; uni.showToast({
if (this.activeTab == 0) { title: "该井道暂无数据",
this.cardsInfo = this.tabList; icon: "none",
} else { });
let selected = this.tabList.find( t => t.name === tab) }
this.cardsInfo = [selected]; this.detailsItem = item.details;
} this.isShow = true;
this.isShow = false; console.log("this.detailsItem", this.detailsItem);
}, },
// 回显数据 getActiveTab(index) {
getDetails(uid) { this.activeTab = index;
uni.showLoading(); console.log("this.activeTab", this.activeTab);
inspectApi if (this.activeTab == 0) {
.info(uid) this.cardsInfo = this.tabList;
.then((res) => { } else {
console.log(res) this.cardsInfo = [this.tabList[index - 1]];
const detailsInfo = sqlToData(res); }
console.log("detailsInfo", detailsInfo); },
getActiveTabDetails(index, tab) {
this.detailsInfo = detailsInfo; this.activeTab = index;
this.inspectionNumber = detailsInfo.inspectionNumber;
if(detailsInfo.synchronization === 1) { // this.cardsInfo = [selected];
// 已同步数据的查看详情时,只展示'已巡检'的井道信息,过滤未巡检的井道 // this.cardsInfo = [this.tabList[index]];
let defaultList = detailsInfo.originData if (this.activeTab == 0) {
this.cardsInfo = this.tabList = defaultList.filter(building => { this.cardsInfo = this.tabList;
building.position = building.position.filter(pos => pos.status === 1) } else {
return building.position.length let selected = this.tabList.find((t) => t.name === tab);
}) this.cardsInfo = [selected];
} else { }
this.cardsInfo = this.tabList = detailsInfo.originData; this.isShow = false;
} },
this.inspectionCode = detailsInfo.inspectionCode; // 回显数据
// this.cardsInfo = this.tabList = detailsInfo.originData; getDetails(uid) {
this.isSubmit = this.detailsInfo.originData.reduce((acc,cur) => { uni.showLoading();
acc.push(...cur.position) inspectApi
return acc .info(uid)
}, []).every(pos => pos.isSubmit === '' || pos.isSubmit === 1); .then((res) => {
this.isSign = !!this.detailsInfo.signImg; console.log(res);
this.cardsInfo.forEach((item) => { const detailsInfo = sqlToData(res);
this.tabs.push(item.name); console.log("detailsInfo", detailsInfo);
this.tabsDetail.push(item.name);
}); this.detailsInfo = detailsInfo;
if (this.isSign) { this.inspectionNumber = detailsInfo.inspectionNumber;
this.getActiveTabDetails(0); if (detailsInfo.synchronization === 1) {
} // 已同步数据的查看详情时,只展示'已巡检'的井道信息,过滤未巡检的井道
this.isDisable = this.isDisable || detailsInfo.synchronization == 1; // 是否禁用 1:已同步数据 0: 未同步数据 let defaultList = detailsInfo.originData;
uni.hideLoading(); this.cardsInfo = this.tabList = defaultList.filter((building) => {
}) building.position = building.position.filter(
.catch((error) => { (pos) => pos.status === 1
uni.showToast({ );
title: error.msg, return building.position.length;
icon: "none", });
duration: 1000, } else {
}); this.cardsInfo = this.tabList = detailsInfo.originData;
uni.hideLoading(); }
}); this.inspectionCode = detailsInfo.inspectionCode;
}, // this.cardsInfo = this.tabList = detailsInfo.originData;
// 回显组件数据 this.isSubmit = this.detailsInfo.originData
setComponentData(refName, componentData) { .reduce((acc, cur) => {
this.$refs[refName][0] && this.$refs[refName][0].setForm(componentData); acc.push(...cur.position);
}, return acc;
// 删除 }, [])
deleteClick() { .every((pos) => pos.isSubmit === "" || pos.isSubmit === 1);
this.$refs.inputDialog2.open(); this.isSign = !!this.detailsInfo.signImg;
}, this.cardsInfo.forEach((item) => {
toSign() { this.tabs.push(item.name);
this.$refs.signDialog.open(); this.tabsDetail.push(item.name);
}, });
// tab选中change 时间 if (this.isSign) {
changeTab(index, item) { this.getActiveTabDetails(0);
this.draft(this.activeTabIndex, false, false).then(() => { }
this.activeTabIndex = index; this.isDisable = this.isDisable || detailsInfo.synchronization == 1; // 是否禁用 1:已同步数据 0: 未同步数据
}); uni.hideLoading();
}, })
// 处理弹窗确认 .catch((error) => {
handlePopupConfirm(summary) { uni.showToast({
this.detailsInfo.isSign = this.isSign = true; // 回显到文字显示区域 title: error.msg,
this.detailsInfo.signImg = summary; // 回显到文字显示区域 icon: "none",
this.submit("sign", this.detailsInfo.signImg); duration: 1000,
}, });
uni.hideLoading();
// 提交 });
submit(type = "sign", value = "") { },
const all_data = this.all_data; //获取全部数据 // 回显组件数据
let params = this.detailsInfo; setComponentData(refName, componentData) {
params.signImg = value; this.$refs[refName][0] && this.$refs[refName][0].setForm(componentData);
console.log("all_data", all_data); },
const index = all_data.findIndex((element) => element.uid == this.uid); // 删除
console.log("签字获取数据", params); deleteClick() {
all_data[index] = params; this.$refs.inputDialog2.open();
const logContent = getLogContent(LOG_TYPE_ENUM.sign, "签字", "机房巡检"); },
// 更新巡检list toSign() {
console.log("all_data存储", all_data); this.$refs.signDialog.open();
console.log("all_data一个", all_data[index]); },
this.$store.commit("SET_ALL_DATA", all_data); // tab选中change 时间
const userInfo = this.userInfo; changeTab(index, item) {
const inspectList = all_data.filter( this.draft(this.activeTabIndex, false, false).then(() => {
(item) => item.createByName == userInfo.user this.activeTabIndex = index;
); });
writeInspectionData(inspectList, userInfo.user); },
// 处理弹窗确认
// 更新日志 handlePopupConfirm(summary) {
const log_list = this.$store.state.log_list; this.detailsInfo.isSign = this.isSign = true; // 回显到文字显示区域
logContent.inspectionType = params.inspectionType; this.detailsInfo.signImg = summary; // 回显到文字显示区域
log_list.push(logContent); // const isException = this.detailsInfo.originData.some(
this.$store.commit("SET_LOG_LIST", log_list); // (item) => item.status == 2
addLog(log_list).then((res) => { // );
console.log("日志文件写入成功"); // this.detailsInfo.isException = isException ? 1 : 0; // 巡检异常
}); this.submit(
if(type === 'sign') { "sign",
inspectApi.updateSignImg({ this.detailsInfo.signImg,
id: params.id, this.detailsInfo.isException
signImg: params.signImg, );
synFlag: 0 },
})
} // 提交
uni.showToast({ submit(type = "sign", value = "", isException) {
title: type == "sign" ? "签字成功" : "同步成功", const all_data = this.all_data; //获取全部数据
icon: "success", let params = this.detailsInfo;
}); params.signImg = value;
console.log("all_data", all_data);
this.getActiveTabDetails(0); const index = all_data.findIndex((element) => element.uid == this.uid);
}, console.log("签字获取数据", params);
lookTable() { all_data[index] = params;
uni.navigateTo({ const logContent = getLogContent(LOG_TYPE_ENUM.sign, "签字", "机房巡检");
url: "/pages/report/sampleTable?isJF=0", // 更新巡检list
}); console.log("all_data存储", all_data);
}, console.log("all_data一个", all_data[index]);
// 跳转到具体的井道 this.$store.commit("SET_ALL_DATA", all_data);
toShaftInspection(value, dictValue, location) { const userInfo = this.userInfo;
uni.navigateTo({ const inspectList = all_data.filter(
url: `/pages/shaftInspection/shaftInspectionNew?value=${value}&dictValue=${dictValue}&inspectionCode=${this.inspectionCode}&location=${location}&uid=${this.uid}&backValue=${this.backValue}`, (item) => item.createByName == userInfo.user
}); );
}, writeInspectionData(inspectList, userInfo.user);
back() {
if (this.backValue === "home") { // 更新日志
uni.navigateTo({ const log_list = this.$store.state.log_list;
url: "/pages/home/home", logContent.inspectionType = params.inspectionType;
}); log_list.push(logContent);
} else { this.$store.commit("SET_LOG_LIST", log_list);
uni.navigateTo({ addLog(log_list).then((res) => {
url: `/pages/inspectionManagement/index`, console.log("日志文件写入成功");
}); });
} if (type === "sign") {
}, inspectApi.updateSignImg({
openDialog(val) { id: params.id,
if(val) { signImg: params.signImg,
let data = dataToSql(this.detailsInfo) synFlag: 0,
this.list = [{ isException,
...data, });
id: this.uid }
}] uni.showToast({
} else { title: type == "sign" ? "签字成功" : "同步成功",
this.list = [] icon: "success",
} });
this.showSyncDialog = val
} this.getActiveTabDetails(0);
}, },
}; lookTable() {
</script> uni.navigateTo({
url: "/pages/report/sampleTable?isJF=0",
<style lang="less" scoped> });
/* 导航栏样式 */ },
// 跳转到具体的井道
.nav-right { toShaftInspection(value, dictValue, location) {
width: 192px; uni.navigateTo({
} url: `/pages/shaftInspection/shaftInspectionNew?value=${value}&dictValue=${dictValue}&inspectionCode=${this.inspectionCode}&location=${location}&uid=${this.uid}&backValue=${this.backValue}`,
});
.header-buttons { },
display: flex; back() {
align-items: center; if (this.backValue === "home") {
margin-left: auto; // 将按钮组推到最右侧 uni.navigateTo({
url: "/pages/home/home",
.button { });
width: 89.6px; } else {
height: 28.8px; uni.navigateTo({
background: #ffffff; url: `/pages/inspectionManagement/index`,
border-radius: 14.4px; });
margin-left: 12.8px; }
font-family: PingFangSC-Regular; },
font-size: 12.8px; openDialog(val) {
color: #000000; if (val) {
line-height: 28.8px; let data = dataToSql(this.detailsInfo);
font-weight: 400; this.list = [
text-align: center; {
} ...data,
} id: this.uid,
},
.container { ];
background-image: linear-gradient(115deg, #e8f0fb 0%, #e1ebfa 100%); } else {
padding: 0 25.6px; this.list = [];
height: 100vh; }
overflow: hidden; this.showSyncDialog = val;
},
.profile-section { },
width: 100%; };
margin-bottom: 12.8px; </script>
.profile-box { <style lang="less" scoped>
background-color: #fff; /* 导航栏样式 */
border-radius: 9.6px;
padding: 12.8px 25.6px; .nav-right {
display: flex; width: 192px;
justify-content: space-between; }
align-items: center;
.header-buttons {
.profile-left { display: flex;
display: flex; align-items: center;
align-items: center; margin-left: auto; // 将按钮组推到最右侧
.avatar { .button {
position: relative; width: 89.6px;
width: 51.2px; height: 28.8px;
height: 51.2px; background: #ffffff;
border-radius: 50%; border-radius: 14.4px;
overflow: hidden; margin-left: 12.8px;
margin-right: 9.6px; font-family: PingFangSC-Regular;
font-size: 12.8px;
image { color: #000000;
width: 100%; line-height: 28.8px;
height: 100%; font-weight: 400;
} text-align: center;
}
.change-password { }
position: absolute;
bottom: 0; .container {
left: 0; background-image: linear-gradient(115deg, #e8f0fb 0%, #e1ebfa 100%);
right: 0; padding: 0 25.6px;
background-color: rgba(0, 0, 0, 0.5); height: 100vh;
text-align: center; overflow: hidden;
height: 17.6px;
font-family: PingFangSC-Regular; .profile-section {
font-size: 9.6px; width: 100%;
color: #ffffff; margin-bottom: 12.8px;
line-height: 16px;
font-weight: 400; .profile-box {
} background-color: #fff;
} border-radius: 9.6px;
padding: 12.8px 25.6px;
.info { display: flex;
margin-right: 9.6px; justify-content: space-between;
.username { align-items: center;
font-size: 16px;
color: #000000; .profile-left {
line-height: 22.4px; display: flex;
font-weight: 500; align-items: center;
margin-bottom: 7.2px;
} .avatar {
position: relative;
.number { width: 51.2px;
font-size: 12.8px; height: 51.2px;
color: #4a4a4a; border-radius: 50%;
line-height: 22.4px; overflow: hidden;
font-weight: 400; margin-right: 9.6px;
.value { image {
color: #000000; width: 100%;
} height: 100%;
} }
}
} .change-password {
position: absolute;
.profile-right { bottom: 0;
display: flex; left: 0;
right: 0;
.inspection-button { background-color: rgba(0, 0, 0, 0.5);
width: 89.6px; text-align: center;
height: 28.8px; height: 17.6px;
background-image: linear-gradient(105deg, #68acfb 0%, #3774f6 100%); font-family: PingFangSC-Regular;
border-radius: 14.4px; font-size: 9.6px;
font-family: PingFangSC-Regular; color: #ffffff;
font-size: 12.8px; line-height: 16px;
color: #ffffff; font-weight: 400;
line-height: 28.8px; }
font-weight: 400; }
margin-right: 12.8px;
} .info {
margin-right: 9.6px;
.record-button { .username {
width: 115.2px; font-size: 16px;
height: 28.8px; color: #000000;
background: #ffffff; line-height: 22.4px;
border: 0.8px solid rgba(55, 116, 246, 1); font-weight: 500;
border-radius: 14.4px; margin-bottom: 7.2px;
font-family: PingFangSC-Regular; }
font-size: 12.8px;
color: #3774f6; .number {
line-height: 28.8px; font-size: 12.8px;
font-weight: 400; color: #4a4a4a;
} line-height: 22.4px;
.action-container { font-weight: 400;
display: flex;
.record-button.small { .value {
width: 75px; color: #000000;
margin-right: 10px; }
} }
.inspection-button { }
display: flex; }
align-items: center;
justify-content: center; .profile-right {
width: 115.2px; display: flex;
height: 28.8px;
color: #fff; .inspection-button {
background-image: linear-gradient(180deg, #3773f6 0%, #2c57f6 99%); width: 89.6px;
box-shadow: 0px 8px 19.2px 0px rgba(51, 104, 246, 0.24); height: 28.8px;
border-radius: 14.4px; background-image: linear-gradient(105deg, #68acfb 0%, #3774f6 100%);
} border-radius: 14.4px;
.sign-img { font-family: PingFangSC-Regular;
width: 80px; font-size: 12.8px;
height: 28.8px; color: #ffffff;
margin-right: 10px; line-height: 28.8px;
border: 1px solid #ccc; font-weight: 400;
// border-right: none; margin-right: 12.8px;
border-radius: 3px; }
}
} .record-button {
} width: 115.2px;
} height: 28.8px;
} background: #ffffff;
border: 0.8px solid rgba(55, 116, 246, 1);
/* 页面容器 */ border-radius: 14.4px;
.content-box { font-family: PingFangSC-Regular;
width: 100%; font-size: 12.8px;
height: calc(100vh - 190px); color: #3774f6;
border-radius: 9.6px; line-height: 28.8px;
overflow: hidden; font-weight: 400;
background-color: #ffffff; &.disabled-btn {
display: flex; color: #c7c7c7;
border-color: #c7c7c7;
/* 左侧模块 */ }
.left-side { }
width: 120px; .action-container {
height: 100%; display: flex;
background-color: #f9f9f9; .record-button.small {
display: flex; width: 75px;
flex-direction: column; margin-right: 10px;
align-items: center; }
padding-top: 12.8px; .inspection-button {
display: flex;
.tab-item { align-items: center;
width: 100%; justify-content: center;
height: 38.4px; width: 115.2px;
display: flex; height: 28.8px;
align-items: center; color: #fff;
justify-content: center; background-image: linear-gradient(180deg, #3773f6 0%, #2c57f6 99%);
font-size: 12px; box-shadow: 0px 8px 19.2px 0px rgba(51, 104, 246, 0.24);
color: #333333; border-radius: 14.4px;
cursor: pointer; }
.sign-img {
&.active { width: 80px;
background-color: #ffffff; height: 28.8px;
} margin-right: 10px;
} border: 1px solid #ccc;
} // border-right: none;
border-radius: 3px;
/* 右侧模块 */ }
.right-side { }
flex: 1; }
padding: 12.8px 18.4px; }
display: flex; }
flex-direction: column;
/* 页面容器 */
.button-group { .content-box {
display: flex; width: 100%;
margin-bottom: 12.8px; height: calc(100vh - 190px);
.button { border-radius: 9.6px;
height: 27.2px; overflow: hidden;
background-color: rgba(55, 116, 246, 0.08); background-color: #ffffff;
display: flex; display: flex;
align-items: center;
justify-content: center; /* 左侧模块 */
font-size: 11.2px; .left-side {
color: #3774f6; width: 120px;
border-radius: 3.2px; height: 100%;
background-color: #f9f9f9;
&:first-child { display: flex;
width: 97.6px; flex-direction: column;
font-size: 11.2px; align-items: center;
color: #4a4a4a; padding-top: 12.8px;
letter-spacing: 0;
font-weight: 400; .tab-item {
.number { width: 100%;
color: #000000; height: 38.4px;
font-weight: 500; display: flex;
} align-items: center;
} justify-content: center;
font-size: 12px;
&:last-child { color: #333333;
flex: 1; cursor: pointer;
margin-left: 9.6px;
padding: 0 9.6px; &.active {
text-align: left; background-color: #ffffff;
display: flex; }
justify-content: flex-start; }
font-size: 11.2px; }
color: #4a4a4a;
letter-spacing: 0; /* 右侧模块 */
font-weight: 400; .right-side {
.icon-tixing { flex: 1;
color: #3774f6; padding: 12.8px 18.4px;
font-size: 9.6px; display: flex;
margin-right: 6.4px; flex-direction: column;
}
} .button-group {
} display: flex;
} margin-bottom: 12.8px;
.button {
.card-box { height: 27.2px;
overflow: auto; background-color: rgba(55, 116, 246, 0.08);
display: flex;
.card-group { align-items: center;
flex: 1; justify-content: center;
font-size: 11.2px;
.card-title { color: #3774f6;
font-size: 12.8px; border-radius: 3.2px;
font-weight: bold;
color: #333333; &:first-child {
margin: 12.8px 0; width: 97.6px;
} font-size: 11.2px;
color: #4a4a4a;
.card-list { letter-spacing: 0;
display: flex; font-weight: 400;
flex-wrap: wrap; .number {
gap: 12.8px; color: #000000;
font-weight: 500;
.card { }
width: 105.6px; }
height: 51.2px;
background-color: #f9f9f9; &:last-child {
border-radius: 6.4px; flex: 1;
padding: 6.4px 10.312px; margin-left: 9.6px;
box-sizing: border-box; padding: 0 9.6px;
&.status1 { text-align: left;
background: #f3f7ff; display: flex;
} justify-content: flex-start;
&.status2 { font-size: 11.2px;
background: #fff5f4; color: #4a4a4a;
} letter-spacing: 0;
font-weight: 400;
.card-content { .icon-tixing {
display: flex; color: #3774f6;
flex-direction: column; font-size: 9.6px;
justify-content: space-between; margin-right: 6.4px;
}
.status-line { }
display: flex; }
align-items: center; }
margin-bottom: 3px;
.card-box {
.iconfont { overflow: auto;
font-size: 12px;
margin-right: 6.4px; .card-group {
&.icon-weixunjian { flex: 1;
color: #959595;
} .card-title {
&.icon-shibai1 { font-size: 12.8px;
color: #ff4a34; font-weight: bold;
} color: #333333;
&.icon-wancheng { margin: 12.8px 0;
color: #3774f6; }
}
} .card-list {
display: flex;
.status-text { flex-wrap: wrap;
font-size: 12px; gap: 12.8px;
color: #7c7c7c;
text-align: center; .card {
line-height: 16.5px; width: 105.6px;
font-weight: 400; height: 51.2px;
} background-color: #f9f9f9;
} border-radius: 6.4px;
padding: 6.4px 10.312px;
.info-line { box-sizing: border-box;
margin-left: 20px; &.status1 {
font-size: 12px; background: #f3f7ff;
color: #000000; }
line-height: 16.5px; &.status2 {
font-weight: 400; background: #fff5f4;
} }
}
} .card-content {
} display: flex;
} flex-direction: column;
} justify-content: space-between;
}
} .status-line {
} display: flex;
</style> align-items: center;
margin-bottom: 3px;
.iconfont {
font-size: 12px;
margin-right: 6.4px;
&.icon-weixunjian {
color: #959595;
}
&.icon-shibai1 {
color: #ff4a34;
}
&.icon-wancheng {
color: #3774f6;
}
}
.status-text {
font-size: 12px;
color: #7c7c7c;
text-align: center;
line-height: 16.5px;
font-weight: 400;
}
}
.info-line {
margin-left: 20px;
font-size: 12px;
color: #000000;
line-height: 16.5px;
font-weight: 400;
}
}
}
}
}
}
}
}
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论