提交 95bfd4aa authored 作者: 邓文彬's avatar 邓文彬

fix(巡检检查): 存草稿数据

上级 9081532d
...@@ -92,6 +92,13 @@ ...@@ -92,6 +92,13 @@
{ {
"navigationBarTitleText" : "" "navigationBarTitleText" : ""
} }
},
{
"path" : "pages/shaftInspection/shaftInspection",
"style" :
{
"navigationBarTitleText" : ""
}
} }
], ],
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<view class="user-info"> <view class="user-info">
<image class="user-img" src="@/static/img/add-img/home1.png"></image> <image class="user-img" src="@/static/img/add-img/home1.png"></image>
<text class="text" @click="toIndex">巡检员</text> <text class="text" @click="toIndex">{{ userName }}</text>
</view> </view>
<view class="tab-list"> <view class="tab-list">
...@@ -43,8 +43,6 @@ ...@@ -43,8 +43,6 @@
<SynchronousManagement v-if="activeTabIndex == 2" /> <SynchronousManagement v-if="activeTabIndex == 2" />
<!-- 日志 -->
<!-- <OperLog v-if="activeTabIndex == 4" /> -->
<RouterView /> <RouterView />
...@@ -102,6 +100,8 @@ export default { ...@@ -102,6 +100,8 @@ export default {
text: "同步管理", text: "同步管理",
}, },
], ],
userName: this.$store.state.now_user.user
}; };
}, },
methods: { methods: {
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<view class="content"> <view class="content">
<view class="main box-shaow-box"> <view class="main box-shaow-box">
<view class="content_header">例行巡检</view> <view class="content_header">机房巡检</view>
<uni-forms <uni-forms
class="formClass" class="formClass"
...@@ -87,7 +87,7 @@ export default { ...@@ -87,7 +87,7 @@ export default {
init() { init() {
this.formData = { this.formData = {
inspectionType: "1", inspectionType: "1",
inspectionCode: moment().format("yyyyMMDDhhmm"), inspectionCode: `JFXJ${moment().format("yyyyMMDDhhmm")}`,
recordName: `${moment().format("yyyyMMDD")}-机房巡检记录`, recordName: `${moment().format("yyyyMMDD")}-机房巡检记录`,
inspectionTime: moment().format("yyyy-MM-DD HH:MM:ss"), inspectionTime: moment().format("yyyy-MM-DD HH:MM:ss"),
inspectionBy: this.$store.state.now_user.name, inspectionBy: this.$store.state.now_user.name,
...@@ -99,6 +99,11 @@ export default { ...@@ -99,6 +99,11 @@ export default {
val.detail.data.text val.detail.data.text
}`; }`;
this.formData.inspectionType = val.detail.value; this.formData.inspectionType = val.detail.value;
const inspectionCode = `${
val.detail.value == 1 ? "JFXJ" : "JDXJ"
}${moment().format("yyyyMMDDhhmm")}`;
this.formData.inspectionCode = inspectionCode;
}, },
back() { back() {
...@@ -132,13 +137,28 @@ export default { ...@@ -132,13 +137,28 @@ export default {
clickNext() { clickNext() {
this.$store.commit("SET_TEMP_DATA", this.formData); // 缓存[巡检信息] this.$store.commit("SET_TEMP_DATA", this.formData); // 缓存[巡检信息]
if (this.formData.inspectionType == 2) {
// 井道巡检
uni.redirectTo({
url: "/pages/shaftInspection/shaftInspection",
success() {
uni.hideLoading();
},
});
} else {
// 机房巡检
uni.redirectTo({ uni.redirectTo({
url: "/pages/inspectionContent/inspectionContent", url: "/pages/inspectionContent/inspectionContent",
success() { success() {
uni.hideLoading(); uni.hideLoading();
}, },
}); });
}
return; return;
this.$refs.forms this.$refs.forms
.validate() .validate()
.then((res) => { .then((res) => {
......
...@@ -28,15 +28,30 @@ ...@@ -28,15 +28,30 @@
<view class="content_header">巡检项目(pm)</view> <view class="content_header">巡检项目(pm)</view>
<!-- tabls --> <!-- tabls -->
<Tabs class="tabs" @change="changeTab" /> <Tabs class="tabs" ref="tabs" @change="changeTab" />
<GatherDataCenter v-show="activeTabIndex == 0" /> <GatherDataCenter v-show="activeTabIndex == 0" ref="GatherDataCenter" />
<ShieldedComputerRoom v-show="activeTabIndex == 1" /> <ShieldedComputerRoom
<BatteryRoom v-show="activeTabIndex == 2" /> ref="ShieldedComputerRoom"
v-show="activeTabIndex == 1"
/>
<BatteryRoom ref="BatteryRoom" v-show="activeTabIndex == 2" />
<ComputerRoomDuty
ref="ComputerRoomDuty"
v-show="activeTabIndex == 3"
></ComputerRoomDuty>
<DutyHandover
ref="DutyHandover"
v-show="activeTabIndex == 4"
></DutyHandover>
<view class="button-group"> <view class="button-group">
<view class="btn-draft btn-class" @tap="draft"> 保存草稿 </view> <view class="btn-draft btn-class" @tap="draft(activeTabIndex)">
<view class="btn-class" @tap="clickNext"> 提交 </view> 保存草稿
</view>
<view class="btn-class" @tap="submit"> 提交 </view>
</view> </view>
</view> </view>
</view> </view>
...@@ -49,6 +64,14 @@ import Tabs from "./model/tabs.vue"; ...@@ -49,6 +64,14 @@ import Tabs from "./model/tabs.vue";
import BatteryRoom from "./model/batteryRoom.vue"; import BatteryRoom from "./model/batteryRoom.vue";
import GatherDataCenter from "./model/gatherDataCenter.vue"; import GatherDataCenter from "./model/gatherDataCenter.vue";
import ShieldedComputerRoom from "./model/shieldedComputerRoom.vue"; import ShieldedComputerRoom from "./model/shieldedComputerRoom.vue";
import ComputerRoomDuty from "./model/computerRoomDuty.vue";
import DutyHandover from "./model/dutyHandover.vue";
import {
addLog,
getLogContent,
LOG_TYPE_ENUM,
writeDarf
} from "@/utils/IoReadingAndWriting.js";
export default { export default {
components: { components: {
...@@ -56,28 +79,146 @@ export default { ...@@ -56,28 +79,146 @@ export default {
BatteryRoom, BatteryRoom,
GatherDataCenter, GatherDataCenter,
ShieldedComputerRoom, ShieldedComputerRoom,
ComputerRoomDuty,
DutyHandover,
}, },
data() { data() {
return { return {
activeTabIndex: 0, activeTabIndex: 0,
baseInfo: {}, // 基础信息
tempForm: {
// 对应每个tab下的数据 [示例 0: 数据]
},
}; };
}, },
onLoad() {}, onLoad() {},
mounted() { mounted() {
this.baseInfo = this.$store.state.temp_data;
}, },
methods: { methods: {
// tab选中change 时间 // tab选中change 时间
changeTab(index, item) { changeTab(index, item) {
this.draft(this.activeTabIndex, false, false).then(() => {
this.activeTabIndex = index; this.activeTabIndex = index;
});
}, },
back() { back() {
uni.navigateBack(); uni.navigateBack();
}, },
clickNext() {},
// clickNext() { // 提交按钮
submit() {
this.draft(this.activeTabIndex, false, false).then(() => {
const vaild = this.$refs.tabs.isAllVails();
uni.showToast({
icon: `${vaild ? "success" : "error"}`,
title: `${vaild ? "校验通过" : "请完善填写内容"}`,
});
if (vaild) {
/**
* 校验通过,
* 1.更新 store数据,
* 2. 巡检list文件
* 3.清空草稿文件数据、store草稿数据
*/
}
console.log("基础信息", this.baseInfo);
console.log("巡检信息", this.baseInfo);
});
},
// // 表单填写结果
// isAllVails(vaild, formData) {
// console.log("--this.activeTabIndex---", this.$refs.tabs.setTabVaild);
// switch (this.activeTabIndex) {
// case 0:
// this.$refs.tabs.setTabVaild(this.activeTabIndex, vaild); // 给tab栏设置状态,全部填写会高亮icon图标
// console.log("--formData", formData);
// break;
// case 1:
// this.$refs.tabs.setTabVaild(this.activeTabIndex, vaild);
// break;
// case 2:
// this.$refs.tabs.setTabVaild(this.activeTabIndex, vaild);
// break;
// case 3:
// this.$refs.tabs.setTabVaild(this.activeTabIndex, vaild);
// break;
// case 4:
// this.$refs.tabs.setTabVaild(this.activeTabIndex, vaild);
// break;
// }
// },
// 保存草稿按钮
draft(activeTabIndex, isSave = true, iSwtich = true) {
let refName = "";
return new Promise((resolve, reject) => {
switch (activeTabIndex) {
case 0:
refName = "GatherDataCenter";
break;
case 1:
refName = "ShieldedComputerRoom";
break;
case 2:
refName = "BatteryRoom";
break;
case 3:
refName = "ComputerRoomDuty";
break;
case 4:
refName = "DutyHandover";
break;
}
this.$refs[refName].vaildForm().then(({ vaild, formData }) => {
this.$refs.tabs
.setTabVaild(activeTabIndex, vaild, iSwtich)
.then(() => {
this.tempForm[activeTabIndex] = formData;
console.log("--this.tempForm--", formData);
if (isSave) {
// 更新store 和 [草稿文件] 日志数据
console.log("--保存草稿--");
this.$store.commit("SET_DARF_DATA", this.tempForm); // 缓存[巡检信息]
// // 新增日志信息
const logContent = getLogContent(LOG_TYPE_ENUM.darf);
const log_list = this.$store.state.log_list;
log_list.push(logContent);
this.$store.commit("SET_LOG_LIST", log_list);
addLog(log_list).then((res) => {
console.log("日志文件写入成功");
});
// 写入草稿文件
// ...BatteryRoom..
writeDarf(this.tempForm).then((res) => {
console.log("写入草稿文件成功");
uni.showToast({
icon: "success",
title: "保存草稿成功",
});
});
}
resolve();
});
});
});
},
// submit() {
// this.$refs.forms // this.$refs.forms
// .validate() // .validate()
// .then((res) => { // .then((res) => {
......
<template> <template>
<view>电池间</view> <view class="gather-dataCenter">
</template> <uni-forms
<script> v-for="(item, parentIndex) in list"
/** :key="item.dictLabel"
:modelValue="item"
label-width="82px"
class="inspection-item"
:ref="`forms_${parentIndex}`"
:rules="rules"
>
<uni-forms-item class="row-item" label="巡检项" >
<view class="text">{{ item.dictLabel }}</view>
</uni-forms-item>
<uni-forms-item required class="row-item" label="巡检结论" >
<view class="tags">
<view
v-for="(ele, eleIndex) in item.resultArr"
class="tag"
@click="tagClick(parentIndex, eleIndex, ele.isActive)"
:class="ele.isActive ? 'active-tag' : ''"
>{{ ele.label }}
</view>
</view>
</uni-forms-item>
<!-- 异常状态时显示 -->
<uni-forms-item
required
class="row-item"
label="异常定位"
name="measuredDataArr"
v-if="item.inspectionResult == 1"
>
<view class="tags">
<view
v-for="(ele, eleIndex) in item.postionList"
class="tag"
@click="postionChange(parentIndex, eleIndex, ele.isActive)"
:class="
item.measuredDataArr.includes(ele.dictValue) ? 'active-tag' : ''
"
>{{ ele.dictLabel }}
</view>
</view>
</uni-forms-item>
<!-- 异常状态时显示 -->
<uni-forms-item
v-if="item.inspectionResult == 1"
required
class="row-item"
label="情况摘要"
name="notes"
>
<input type="text" v-model="item.notes" placeholder="请输入内容" />
</uni-forms-item>
</uni-forms>
</view>
</template>
<script>
import {
pad_1_1_inspection_items,
pad_1_1_inspection_position,
pad_room_type,
} from "@/utils/dict.js";
/**
* 电池间 * 电池间
*/ */
export default { export default {
props:{ props: {
form:{ form: {
type: Object, type: Object,
}
}, },
data(){ },
return{ data() {
return {
list: [],
rules: {
// 对notes字段进行必填验证
notes: {
rules: [
{
required: true,
errorMessage: "请输入情况摘要",
},
],
},
measuredDataArr: {
rules: [
{
required: true,
errorMessage: "请选择",
},
],
},
},
} roomTypeLabel: "电池间巡检", // 用于获取类型值
};
},
mounted() {
this.coverlist();
}, },
methods: { methods: {
// 回显数据 // tag 点击事件
setForm(){ tagClick(parentIndex, eleIndex, isActive) {
if (isActive) {
return;
}
this.list[parentIndex].resultArr.forEach((element) => {
element.isActive = false;
});
const item = this.list[parentIndex].resultArr[eleIndex];
item.isActive = !isActive;
this.list[parentIndex].resultArr[eleIndex] = item;
// 赋值数据
this.list[parentIndex].inspectionResult = item.value; // 记录结论
this.list[parentIndex].postionList.forEach(
(item) => (item.isActive = false)
);
this.list[parentIndex].measuredDataArr = []; // 重置异常位置
this.list[parentIndex].notes = ""; // 重置摘要信息
},
// tag 点击事件
postionChange(parentIndex, eleIndex, isActive) {
const postionList = this.list[parentIndex].postionList;
const item = postionList[eleIndex];
item.isActive = !isActive;
postionList[eleIndex] = item;
this.list[parentIndex].postionList = postionList;
this.list[parentIndex].measuredDataArr = postionList
.filter((item) => item.isActive)
.map((item) => item.dictValue);
},
// 数据结构重组
coverlist() {
const roomTypeLabel = this.roomTypeLabel;
const roomType = pad_room_type.rows.filter(
(item) => item.dictLabel == roomTypeLabel
)[0].dictValue;
const temp = pad_1_1_inspection_items.rows.map((item) => {
return {
// ...item,
dictLabel: item.dictLabel,
dictValue: item.dictValue,
notes: "", // 情况摘要
inspectionResult: 0, // 异常
itemCode: item.dictValue, // 检查项 如:门禁
roomType, // 机房类型
resultArr: [
{
value: 0,
label: "正常",
isActive: true,
},
{
value: 1,
label: "异常",
isActive: false,
}, },
],
measuredData: "", // 逗号分隔字符串
measuredDataArr: [], // 前端本地使用
postionList: pad_1_1_inspection_position.rows.map((item) => {
return {
...item,
isActive: false,
};
}),
};
});
this.list = temp;
console.log("---temp", temp);
},
// 回显数据
setForm() {},
// 获取数据 // 获取数据
getForm(){ getForm() {
const temp = this.list.map((item) => {
return {
...item,
measuredData: item.measuredDataArr.join(","),
};
});
return temp;
},
// 校验数据 所有表单
async vaildForm() {
const temp = this.list.map((item, index) => {
return this.$refs[`forms_${index}`][0]
.validate()
.then(() => {
return {
result: true,
index,
};
})
.catch(() => {
return {
result: false,
item,
};
});
});
return Promise.all(temp).then((res) => {
const allVaildList = res.filter((item) => item.result);
const formData= this.getForm();
return {
vaild: this.list.length == allVaildList.length,
formData
};
});
},
}, },
// 校验数据 };
vaildForm(){ </script>
<style lang="less" scoped>
.gather-dataCenter {
.inspection-item {
border: 1px solid;
margin-bottom: 12px;
background: #ffffff;
border: 0.4px solid rgba(224, 224, 224, 1);
border-radius: 12px;
padding: 24px 24px 8px 24px;
.text {
font-size: 16px;
color: #000000;
line-height: 24px;
font-weight: bold;
} }
}, .row-item {
} border-bottom: 1px solid #eee;
</script> // border: 1px solid;
\ No newline at end of file padding-bottom: 18px;
margin-bottom: 12px;
&:last-of-type {
border-bottom: none;
margin-bottom: 0;
}
.tags {
display: flex;
align-items: center;
.tag {
background: #f2f3f5;
width: 80px;
height: 36px;
border-radius: 10px;
text-align: center;
line-height: 36px;
margin-right: 12px;
font-size: 16px;
color: #4a4a4a;
text-align: center;
font-weight: 400;
}
.active-tag {
background: #3774f6;
color: #fff;
}
}
}
}
/deep/ .uni-forms-item__content {
display: flex;
align-items: center;
}
}
</style>
\ No newline at end of file
<template>
<view class="gather-dataCenter">
<uni-forms
:modelValue="form"
label-width="82px"
class="inspection-item"
ref="forms"
:rules="rules"
label-position="top"
>
<uni-forms-item
class="row-item"
required
label="机房值班"
name="roomWatch"
>
<textarea
class="textarea"
v-model="form.roomWatch"
placeholder-style="color:#C7C7C7"
placeholder="请输入需求文字"
/>
<view class="quick-input"> 快捷输入 </view>
<view>
<text
class="qucik-text"
v-for="item in quickTextList"
:key="item.text"
@click="clickQuick(item)"
>{{ item.text }}</text
>
</view>
</uni-forms-item>
</uni-forms>
</view>
</template>
<script>
import {
pad_room_type,
} from "@/utils/dict.js";
/**
* 机房值班
*/
export default {
props: {},
data() {
return {
list: [],
rules: {
// 对notes字段进行必填验证
roomWatch: {
rules: [
{
required: true,
errorMessage: "请输入内容",
},
],
},
},
form: {
roomWatch: "", // 机房值班
},
quickTextList: [
{
text: "门禁异常",
isActive: false,
},
{
text: "已处理",
isActive: false,
},
{
text: "需派单维修",
isActive: false,
},
{
text: "进出总人数:",
isActive: false,
},
{
text: "访客记录:",
isActive: false,
},
{
text: "有",
isActive: false,
},
{
text: "无",
isActive: false,
},
],
roomTypeLabel: "机房值班", // 用于获取类型值
};
},
mounted() {
const roomTypeLabel = this.roomTypeLabel;
const roomType = pad_room_type.rows.filter(
(item) => item.dictLabel == roomTypeLabel
)[0].dictValue;
this.form.roomType = roomType;
},
methods: {
// 回显数据
setForm() {},
clickQuick(item) {
this.form.roomWatch = `${this.form.roomWatch}${item.text}`;
},
// 校验数据 所有表单
async vaildForm() {
return new Promise((resolve, reject) => {
this.$refs.forms
.validate()
.then((res) => {
resolve({
vaild: true,
formData: this.form,
});
})
.catch((error) => {
resolve({
vaild: false,
formData: this.form,
});
});
});
},
},
};
</script>
<style lang="less" scoped>
.gather-dataCenter {
.inspection-item {
border: 1px solid;
margin-bottom: 12px;
background: #ffffff;
border: 0.4px solid rgba(224, 224, 224, 1);
border-radius: 12px;
padding: 24px 24px 8px 24px;
.text {
font-size: 16px;
color: #000000;
line-height: 24px;
font-weight: bold;
}
.textarea {
width: 100%;
height: 96px;
background: #f7f7f7;
border-radius: 12px;
font-size: 14px;
color: #4a4a4a;
padding: 16px;
font-weight: 400;
}
.quick-input {
margin: 16px 18px;
font-size: 14px;
color: #7c7c7c;
font-weight: 400;
}
.qucik-text {
display: inline-block;
border: 1px solid rgba(242, 242, 242, 1);
border-radius: 8px;
width: 72px;
height: 32px;
font-size: 12px;
color: #4a4a4a;
line-height: 20px;
font-weight: 400;
margin-right: 12px;
line-height: 32px;
text-align: center;
}
}
// /deep/ .uni-forms-item__content {
// display: flex;
// align-items: center;
// }
}
</style>
<template>
<view class="gather-dataCenter">
<uni-forms
:modelValue="form"
label-width="82px"
class="inspection-item"
ref="forms"
:rules="rules"
label-position="top"
>
<uni-forms-item
class="row-item"
required
label="值班交接"
name="dutyHandover"
>
<textarea
class="textarea"
v-model="form.dutyHandover"
placeholder-style="color:#C7C7C7"
placeholder="请输入"
/>
<view class="quick-input"> 快捷输入 </view>
<view>
<text
class="qucik-text"
v-for="item in quickTextList"
:key="item.text"
@click="clickQuick(item)"
>{{ item.text }}</text
>
</view>
</uni-forms-item>
<view class="user-info">
<uni-forms-item class="row-item" label="交班人" >
<text class="text">{{ form.handoverPerson }}</text>
</uni-forms-item>
<uni-forms-item class="row-item" required label="接班人" name="successor">
<uni-easyinput
type="text"
v-model="form.successor"
placeholder="请输入"
/>
</uni-forms-item>
</view>
</uni-forms>
</view>
</template>
<script>
import { pad_room_type } from "@/utils/dict.js";
/**
* 值班交接
*/
export default {
props: {},
data() {
return {
rules: {
// 对notes字段进行必填验证
dutyHandover: {
rules: [
{
required: true,
errorMessage: "请输入内容",
},
],
},
successor: {
rules: [
{
required: true,
errorMessage: "请输入内容",
},
],
},
},
form: {
dutyHandover: "", // 机房值班
handoverPerson: "", //交班人
successor: "", // 接班人
},
quickTextList: [
{
text: "有异常",
isActive: false,
},
{
text: "已处理",
isActive: false,
},
{
text: "需派单维修",
isActive: false,
},
{
text: "进出总人数:",
isActive: false,
},
{
text: "访客记录:",
isActive: false,
},
{
text: "未完成事项:",
isActive: false,
},
{
text: "有",
isActive: false,
},
{
text: "无",
isActive: false,
},
],
roomTypeLabel: "值班交接", // 用于获取类型值
};
},
mounted() {
this.init();
},
methods: {
init() {
const roomTypeLabel = this.roomTypeLabel;
const roomType = pad_room_type.rows.filter(
(item) => item.dictLabel == roomTypeLabel
)[0].dictValue;
this.form.roomType = roomType;
this.form.handoverPerson = this.$store.state.now_user.user;
},
// 回显数据
setForm() {},
clickQuick(item) {
this.form.dutyHandover = `${this.form.dutyHandover}${item.text}`;
// this.quickTextList[index].isActive = item.isActive;
},
// 校验数据 所有表单
async vaildForm() {
return new Promise((resolve, reject) => {
this.$refs.forms
.validate()
.then((res) => {
resolve({
vaild: true,
formData: this.form,
});
})
.catch((error) => {
resolve({
vaild: false,
formData: this.form,
});
});
});
},
},
};
</script>
<style lang="less" scoped>
.gather-dataCenter {
.inspection-item {
border: 1px solid;
margin-bottom: 12px;
background: #ffffff;
border: 0.4px solid rgba(224, 224, 224, 1);
border-radius: 12px;
padding: 24px 24px 8px 24px;
.text {
font-size: 16px;
color: #000000;
line-height: 24px;
font-weight: bold;
}
.textarea {
width: 100%;
height: 96px;
background: #f7f7f7;
border-radius: 12px;
font-size: 14px;
color: #4a4a4a;
padding: 16px;
font-weight: 400;
}
.quick-input {
margin: 16px 18px;
font-size: 14px;
color: #7c7c7c;
font-weight: 400;
}
.qucik-text {
display: inline-block;
border: 1px solid rgba(242, 242, 242, 1);
border-radius: 8px;
width: 72px;
height: 32px;
font-size: 12px;
color: #4a4a4a;
line-height: 20px;
font-weight: 400;
margin-right: 12px;
line-height: 32px;
text-align: center;
}
}
.user-info{
display: flex;
.uni-forms-item{
flex: 1;;
display: flex;
flex-direction: row;
}
}
// /deep/ .uni-forms-item__content {
// display: flex;
// align-items: center;
// }
}
</style>
<template> <template>
<view class="gather-dataCenter"> <view class="gather-dataCenter">
<view @click="vaildForm()">提交按钮</view>
<uni-forms <uni-forms
v-for="(item, parentIndex) in list" v-for="(item, parentIndex) in list"
:key="item.dictLabel" :key="item.dictLabel"
...@@ -78,8 +76,7 @@ export default { ...@@ -78,8 +76,7 @@ export default {
}, },
data() { data() {
return { return {
list: pad_1_1_inspection_items.rows, list: [],
formData: {},
rules: { rules: {
// 对notes字段进行必填验证 // 对notes字段进行必填验证
notes: { notes: {
...@@ -150,7 +147,9 @@ export default { ...@@ -150,7 +147,9 @@ export default {
const temp = pad_1_1_inspection_items.rows.map((item) => { const temp = pad_1_1_inspection_items.rows.map((item) => {
return { return {
...item, // ...item,
dictLabel: item.dictLabel,
dictValue: item.dictValue,
notes: "", // 情况摘要 notes: "", // 情况摘要
inspectionResult: 0, // 异常 inspectionResult: 0, // 异常
itemCode: item.dictValue, // 检查项 如:门禁 itemCode: item.dictValue, // 检查项 如:门禁
...@@ -185,28 +184,17 @@ export default { ...@@ -185,28 +184,17 @@ export default {
setForm() {}, setForm() {},
// 获取数据 // 获取数据
getForm() { getForm() {
console.log("_--"); const temp = this.list.map((item) => {
}, return {
...item,
// 校验单个表单 measuredData: item.measuredDataArr.join(","),
vaildSingleForm(ref) { };
console.log("--ddddd--", this.$refs);
return this.$refs[ref][0]
.validate()
.then((res) => {
console.log("success", res);
uni.showToast({
title: `校验通过`,
});
})
.catch((err) => {
console.log("err", err);
}); });
return temp;
}, },
// 校验数据 所有表单
vaildForm() {
console.log(" this.$refs[`forms_${index}`", this.$refs);
// 校验数据 所有表单
async vaildForm() {
const temp = this.list.map((item, index) => { const temp = this.list.map((item, index) => {
return this.$refs[`forms_${index}`][0] return this.$refs[`forms_${index}`][0]
.validate() .validate()
...@@ -219,22 +207,18 @@ export default { ...@@ -219,22 +207,18 @@ export default {
.catch(() => { .catch(() => {
return { return {
result: false, result: false,
index, item,
}; };
}); });
}); });
console.log("-temp---", temp); return Promise.all(temp).then((res) => {
Promise.all(temp).then((res) => {
const allVaildList = res.filter((item) => item.result); const allVaildList = res.filter((item) => item.result);
if (this.list.length == allVaildList.length) { const formData= this.getForm();
uni.showToast({ return {
title: `校验通过`, vaild: this.list.length == allVaildList.length,
}); formData
} };
console.log("-res---", res);
}); });
}, },
}, },
......
<template> <template>
<view>屏蔽机房</view> <view class="gather-dataCenter">
</template> <uni-forms
<script> v-for="(item, parentIndex) in list"
/** :key="item.dictLabel"
* 屏蔽机房 :modelValue="item"
label-width="82px"
class="inspection-item"
:ref="`forms_${parentIndex}`"
:rules="rules"
>
<uni-forms-item class="row-item" label="巡检项" name="name">
<view class="text">{{ item.dictLabel }}</view>
</uni-forms-item>
<uni-forms-item required class="row-item" label="巡检结论" name="name">
<view class="tags">
<view
v-for="(ele, eleIndex) in item.resultArr"
class="tag"
@click="tagClick(parentIndex, eleIndex, ele.isActive)"
:class="ele.isActive ? 'active-tag' : ''"
>{{ ele.label }}
</view>
</view>
</uni-forms-item>
<!-- 异常状态时显示 -->
<uni-forms-item
required
class="row-item"
label="异常定位"
name="measuredDataArr"
v-if="item.inspectionResult == 1"
>
<view class="tags">
<view
v-for="(ele, eleIndex) in item.postionList"
class="tag"
@click="postionChange(parentIndex, eleIndex, ele.isActive)"
:class="
item.measuredDataArr.includes(ele.dictValue) ? 'active-tag' : ''
"
>{{ ele.dictLabel }}
</view>
</view>
</uni-forms-item>
<!-- 异常状态时显示 -->
<uni-forms-item
v-if="item.inspectionResult == 1"
required
class="row-item"
label="情况摘要"
name="notes"
>
<input type="text" v-model="item.notes" placeholder="请输入内容" />
</uni-forms-item>
</uni-forms>
</view>
</template>
<script>
import {
pad_1_2_inspection_items,
pad_1_2_inspection_position,
pad_room_type,
} from "@/utils/dict.js";
/**
* 屏蔽机房巡检
*/ */
export default { export default {
props:{ props: {
form:{ form: {
type: Object, type: Object,
}
}, },
data(){ },
return{ data() {
return {
list: [],
rules: {
// 对notes字段进行必填验证
notes: {
rules: [
{
required: true,
errorMessage: "请输入情况摘要",
},
],
},
measuredDataArr: {
rules: [
{
required: true,
errorMessage: "请选择",
},
],
},
},
} roomTypeLabel: "屏蔽机房巡检", // 用于获取类型值
};
},
mounted() {
this.coverlist();
}, },
methods: { methods: {
// 回显数据 // tag 点击事件
setForm(){ tagClick(parentIndex, eleIndex, isActive) {
if (isActive) {
return;
}
this.list[parentIndex].resultArr.forEach((element) => {
element.isActive = false;
});
const item = this.list[parentIndex].resultArr[eleIndex];
item.isActive = !isActive;
this.list[parentIndex].resultArr[eleIndex] = item;
// 赋值数据
this.list[parentIndex].inspectionResult = item.value; // 记录结论
this.list[parentIndex].postionList.forEach(
(item) => (item.isActive = false)
);
this.list[parentIndex].measuredDataArr = []; // 重置异常位置
this.list[parentIndex].notes = ""; // 重置摘要信息
},
// tag 点击事件
postionChange(parentIndex, eleIndex, isActive) {
const postionList = this.list[parentIndex].postionList;
const item = postionList[eleIndex];
item.isActive = !isActive;
postionList[eleIndex] = item;
this.list[parentIndex].postionList = postionList;
this.list[parentIndex].measuredDataArr = postionList
.filter((item) => item.isActive)
.map((item) => item.dictValue);
},
// 数据结构重组
coverlist() {
const roomTypeLabel = this.roomTypeLabel;
const roomType = pad_room_type.rows.filter(
(item) => item.dictLabel == roomTypeLabel
)[0].dictValue;
const temp = pad_1_2_inspection_items.rows.map((item) => {
return {
// ...item,
dictLabel: item.dictLabel,
dictValue: item.dictValue,
notes: "", // 情况摘要
inspectionResult: 0, // 异常
itemCode: item.dictValue, // 检查项 如:门禁
roomType, // 机房类型
resultArr: [
{
value: 0,
label: "正常",
isActive: true,
},
{
value: 1,
label: "异常",
isActive: false,
}, },
],
measuredData: "", // 逗号分隔字符串
measuredDataArr: [], // 前端本地使用
postionList: pad_1_2_inspection_position.rows.map((item) => {
return {
...item,
isActive: false,
};
}),
};
});
this.list = temp;
console.log("---temp", temp);
},
// 回显数据
setForm() {},
// 获取数据 // 获取数据
getForm(){ getForm() {
const temp = this.list.map((item) => {
return {
...item,
measuredData: item.measuredDataArr.join(","),
};
});
return temp;
},
// 校验数据 所有表单
async vaildForm() {
const temp = this.list.map((item, index) => {
return this.$refs[`forms_${index}`][0]
.validate()
.then(() => {
return {
result: true,
index,
};
})
.catch(() => {
return {
result: false,
item,
};
});
});
return Promise.all(temp).then((res) => {
const allVaildList = res.filter((item) => item.result);
const formData= this.getForm();
return {
vaild: this.list.length == allVaildList.length,
formData
};
});
},
}, },
// 校验数据 };
vaildForm(){ </script>
<style lang="less" scoped>
.gather-dataCenter {
.inspection-item {
border: 1px solid;
margin-bottom: 12px;
background: #ffffff;
border: 0.4px solid rgba(224, 224, 224, 1);
border-radius: 12px;
padding: 24px 24px 8px 24px;
.text {
font-size: 16px;
color: #000000;
line-height: 24px;
font-weight: bold;
} }
}, .row-item {
} border-bottom: 1px solid #eee;
</script> // border: 1px solid;
\ No newline at end of file padding-bottom: 18px;
margin-bottom: 12px;
&:last-of-type {
border-bottom: none;
margin-bottom: 0;
}
.tags {
display: flex;
align-items: center;
.tag {
background: #f2f3f5;
width: 80px;
height: 36px;
border-radius: 10px;
text-align: center;
line-height: 36px;
margin-right: 12px;
font-size: 16px;
color: #4a4a4a;
text-align: center;
font-weight: 400;
}
.active-tag {
background: #3774f6;
color: #fff;
}
}
}
}
/deep/ .uni-forms-item__content {
display: flex;
align-items: center;
}
}
</style>
\ No newline at end of file
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
v-for="(item, index) in list" v-for="(item, index) in list"
:key="item.name" :key="item.name"
class="tab-item" class="tab-item"
@click="tabClick(item, index)" @click="tabClick(index, item)"
:class="index == activeIndex ? 'active-tab-item' : ''" :class="index == activeIndex ? 'active-tab-item' : ''"
> >
<text <text
...@@ -50,7 +50,7 @@ export default { ...@@ -50,7 +50,7 @@ export default {
list: [ list: [
{ {
name: "汇聚机房", name: "汇聚机房",
isVaild: true, // 校验通过 isVaild: false, // 校验通过
type: 1, // 枚举值 type: 1, // 枚举值
position: pad_1_1_inspection_position.rows, position: pad_1_1_inspection_position.rows,
descript: descript:
...@@ -86,13 +86,36 @@ export default { ...@@ -86,13 +86,36 @@ export default {
}; };
}, },
methods: { methods: {
tabClick(item, index) { tabClick(index, item) {
this.activeIndex = index; this.activeIndex = index;
this.$emit("change", index, item); this.$emit("change", index, item);
}, },
// 设置校验状态 /**
setTabVaild(index, vaild = false) { * 设置单个校验状态
this.list[index] = vaild; * @param index
* @param vaild
* @param iSwtich 是否自动切换到下一个tab
*/
setTabVaild(index, vaild = false, iSwtich=true) {
return new Promise((resolve, reject) => {
this.list[index].isVaild = vaild;
if (iSwtich && index < this.list.length - 1) {
this.tabClick(index + 1, {});
}
resolve()
});
},
// 校验所有内容是否填写完成
isAllVails() {
return this.list.every((item) => {
return item.isVaild;
});
}, },
}, },
}; };
......
...@@ -33,6 +33,12 @@ import { ...@@ -33,6 +33,12 @@ import {
TEST, TEST,
} from "@/utils/systemCofig"; } from "@/utils/systemCofig";
import {
LOG_TYPE_ENUM,
getLogContent,
addLog,
} from "@/utils/IoReadingAndWriting.js";
export default { export default {
components: { components: {
hintInput, hintInput,
...@@ -139,21 +145,31 @@ export default { ...@@ -139,21 +145,31 @@ export default {
}); });
// this.$store.state.now_user = this.personList[key] // this.$store.state.now_user = this.personList[key]
this.$store.commit("SET_USER", this.personList[key]); this.$store.commit("SET_USER", this.personList[key]);
let timeStr = getDateTime.dateTimeStr("y-m-d h:i"); // let timeStr = getDateTime.dateTimeStr("y-m-d h:i");
let operData = { // let operData = {
name: this.$store.state.now_user.name, // name: this.$store.state.now_user.name,
level: "秘密", // level: "秘密",
user: this.$store.state.now_user.user, // user: this.$store.state.now_user.user,
module: "其他", // module: "其他",
detail: "无", // detail: "无",
type: "登录", // type: "登录",
time: timeStr, // time: timeStr,
}; // };
this.$store.state.oper_record.unshift(operData);
// this.$store.state.oper_record.unshift(operData);
console.log("--this.personList[key]-", this.personList[key]);
// 检查文件夹是否创建
checkAndCreateDirectory( checkAndCreateDirectory(
`${SYNCHRONIZE_DATA_PAD}/${this.$store.state.now_user.user}` `${SYNCHRONIZE_DATA_PAD}/${this.$store.state.now_user.user}`
); );
// 更新日志信息
const logContent = getLogContent(
LOG_TYPE_ENUM.login
);
addLog(logContent);
uni.navigateTo({ uni.navigateTo({
url: "/pages/home/home", url: "/pages/home/home",
}); });
......
<template>
<view class="gather-dataCenter">
<uni-forms
label-position="top"
:modelValue="form"
:ref="`forms`"
:rules="rules"
class="inspection-item"
>
<uni-forms
v-for="(item, parentIndex) in list"
:key="item.dictLabel"
:modelValue="item"
label-width="82px"
:ref="`forms_${parentIndex}`"
:rules="rules"
>
<uni-forms-item class="row-item" label="巡检项" name="name">
<view class="text">{{ item.dictLabel }}</view>
</uni-forms-item>
<uni-forms-item required class="row-item" label="巡检结论" name="name">
<view class="tags">
<view
v-for="(ele, eleIndex) in item.resultArr"
class="tag"
@click="tagClick(parentIndex, eleIndex, ele.isActive)"
:class="ele.isActive ? 'active-tag' : ''"
>{{ ele.label }}
</view>
</view>
</uni-forms-item>
<!-- 异常状态时显示 -->
<uni-forms-item
required
class="row-item"
label="异常定位"
name="measuredDataArr"
v-if="item.inspectionResult == 1"
>
<view class="tags">
<view
v-for="(ele, eleIndex) in item.postionList"
class="tag"
@click="postionChange(parentIndex, eleIndex, ele.isActive)"
:class="
item.measuredDataArr.includes(ele.dictValue) ? 'active-tag' : ''
"
>{{ ele.dictLabel }}
</view>
</view>
</uni-forms-item>
</uni-forms>
<!-- 结论 -->
<uni-forms-item
required
class="row-item textarea-form"
label="结论"
name="conclusion"
>
<textarea
class="textarea"
v-model="form.conclusion"
placeholder-style="color:#C7C7C7"
placeholder="请输入"
/>
</uni-forms-item>
</uni-forms>
</view>
</template>
<script>
import {
pad_2_1_inspection_items,
pad_2_1_floor,
pad_room_type,
} from "@/utils/dict.js";
/**
* 汇集机房
*/
export default {
props: {},
data() {
return {
list: [],
form: {},
rules: {
// 对notes字段进行必填验证
notes: {
rules: [
{
required: true,
errorMessage: "请输入情况摘要",
},
],
},
conclusion: {
rules: [
{
required: true,
errorMessage: "请选择",
},
],
},
measuredDataArr: {
rules: [
{
required: true,
errorMessage: "请选择",
},
],
},
},
roomTypeLabel: "汇聚机房巡检", // 用于获取类型值
};
},
mounted() {
this.coverlist();
},
methods: {
// tag 点击事件
tagClick(parentIndex, eleIndex, isActive) {
if (isActive) {
return;
}
this.list[parentIndex].resultArr.forEach((element) => {
element.isActive = false;
});
const item = this.list[parentIndex].resultArr[eleIndex];
item.isActive = !isActive;
this.list[parentIndex].resultArr[eleIndex] = item;
// 赋值数据
this.list[parentIndex].inspectionResult = item.value; // 记录结论
this.list[parentIndex].postionList.forEach(
(item) => (item.isActive = false)
);
this.list[parentIndex].measuredDataArr = []; // 重置异常位置
this.list[parentIndex].notes = ""; // 重置摘要信息
},
// tag 点击事件
postionChange(parentIndex, eleIndex, isActive) {
const postionList = this.list[parentIndex].postionList;
const item = postionList[eleIndex];
item.isActive = !isActive;
postionList[eleIndex] = item;
this.list[parentIndex].postionList = postionList;
this.list[parentIndex].measuredDataArr = postionList
.filter((item) => item.isActive)
.map((item) => item.dictValue);
},
// 数据结构重组
coverlist() {
const roomTypeLabel = this.roomTypeLabel;
const roomType = pad_room_type.rows.filter(
(item) => item.dictLabel == roomTypeLabel
)[0].dictValue;
const temp = pad_2_1_inspection_items.rows.map((item) => {
return {
// ...item,
dictLabel: item.dictLabel,
dictValue: item.dictValue,
notes: "", // 情况摘要
inspectionResult: 0, // 异常
itemCode: item.dictValue, // 检查项 如:门禁
roomType, // 机房类型
resultArr: [
{
value: 0,
label: "正常",
isActive: true,
},
{
value: 1,
label: "异常",
isActive: false,
},
],
measuredData: "", // 逗号分隔字符串
measuredDataArr: [], // 前端本地使用
postionList: pad_2_1_floor.rows.map((item) => {
return {
...item,
isActive: false,
};
}),
};
});
this.list = temp;
console.log("---temp", temp);
},
// 回显数据
setForm() {},
// 获取数据
getForm() {
const temp = this.list.map((item) => {
return {
...item,
measuredData: item.measuredDataArr.join(","),
};
});
return {
...this.form,
temp,
};
},
// 校验数据 所有表单
async vaildForm() {
return new Promise(async (resolve, reject) => {
let result = "";
this.$refs.forms
.validate()
.then((res) => {
result = true;
})
.catch((error) => {
result = false;
});
const temp = this.list.map((item, index) => {
return this.$refs[`forms_${index}`][0]
.validate()
.then(() => {
return {
result: true,
index,
};
})
.catch(() => {
return {
result: false,
item,
};
});
});
Promise.all(temp).then((res) => {
const allVaildList = res.filter((item) => item.result);
const formData = this.getForm();
// return {
// vaild: this.list.length == allVaildList.length,
// formData,
// };
resolve({
vaild: result && this.list.length == allVaildList.length,
formData,
});
});
return;
});
},
},
};
</script>
<style lang="less" scoped>
.gather-dataCenter {
.inspection-item {
border: 1px solid;
margin-bottom: 12px;
background: #ffffff;
border: 0.4px solid rgba(224, 224, 224, 1);
border-radius: 12px;
padding: 24px 24px 8px 24px;
.text {
font-size: 16px;
color: #000000;
line-height: 24px;
font-weight: bold;
}
}
.row-item {
border-bottom: 1px solid #eee;
padding-bottom: 18px;
margin-bottom: 12px;
&:last-of-type {
// border-bottom: none;
// margin-bottom: 0;
}
.tags {
display: flex;
align-items: center;
.tag {
background: #f2f3f5;
width: 80px;
height: 36px;
border-radius: 10px;
text-align: center;
line-height: 36px;
margin-right: 12px;
font-size: 16px;
color: #4a4a4a;
text-align: center;
font-weight: 400;
}
.active-tag {
background: #3774f6;
color: #fff;
}
}
}
/deep/ .uni-forms-item__content {
display: flex;
align-items: center;
}
.textarea-form {
border-bottom: none;
margin-bottom: 0;
.textarea {
width: 100%;
height: 96px;
background: #f7f7f7;
border-radius: 12px;
font-size: 14px;
color: #4a4a4a;
padding: 16px;
font-weight: 400;
}
}
}
</style>
<template>
<view class="tabs-component">
<view class="tabs-list">
<view
v-for="(item, index) in list"
:key="item.name"
class="tab-item"
@click="tabClick(index, item)"
:class="index == activeIndex ? 'active-tab-item' : ''"
>
<text
class="iconfont icon-yiwancheng1"
:class="item.isVaild ? 'vaild-icon' : ''"
></text>
{{ item.name }}</view
>
</view>
<!-- 描述 -->
<!-- <view class="descript">
<view v-if="list[activeIndex].position" class="descript-item">
<text class="name">巡检位置</text>
<text class="text">{{
list[activeIndex].position.map((item) => item.dictLabel).join("、")
}}</text>
</view>
<view class="descript-item">
<text class="name">巡检说明</text>
<text class="text"> {{ list[activeIndex].descript }}</text>
</view>
</view> -->
</view>
</template>
<script>
export default {
props: {
options: {
tyep: Array,
},
},
data() {
return {
activeIndex: 0,
list: [],
};
},
created() {
},
mounted() {
this.list = this.options
},
watch: {
options(newData) {
this.list = newData
}
},
methods: {
tabClick(index, item) {
this.activeIndex = index;
this.$emit("change", index, item);
},
/**
* 设置单个校验状态
* @param index
* @param vaild
* @param iSwtich 是否自动切换到下一个tab
*/
setTabVaild(index, vaild = false, iSwtich = true) {
return new Promise((resolve, reject) => {
this.list[index].isVaild = vaild;
if (iSwtich && index < this.list.length - 1) {
this.tabClick(index + 1, {});
}
resolve();
});
},
// 校验所有内容是否填写完成
isAllVails() {
return this.list.every((item) => {
return item.isVaild;
});
},
},
};
</script>
<style lang="less" scoped>
.tabs-component {
.tabs-list {
display: flex;
align-items: center;
margin-bottom: 16px;
.iconfont {
margin-right: 5px;
color: #999;
font-size: 14px;
}
.tab-item {
margin-right: 24px;
font-size: 14px;
color: #000000;
line-height: 22px;
font-weight: 400;
position: relative;
padding-bottom: 5px;
&::after {
content: " ";
position: absolute;
bottom: 0px;
width: 100%;
height: 3px;
border-radius: 10px;
left: 0;
}
}
.vaild-icon {
color: #3774f6;
}
.active-tab-item {
color: #3774f6;
&::after {
background: #3774f6;
}
}
}
.descript {
padding: 8px 16px;
background: #e0f1ff;
border: 0.4px solid rgba(224, 224, 224, 1);
border-radius: 8px;
.descript-item {
font-size: 12px;
color: #959595;
line-height: 28px;
font-weight: 400;
.name {
margin-right: 8px;
}
.text {
color: #000000;
}
}
}
}
</style>
<template>
<view class="container">
<!-- 导航栏 -->
<uni-nav-bar
dark
:fixed="true"
background-color="#5474e8"
status-bar
left-text="返回"
title="杭州内网监管在线"
left-icon="left"
@clickLeft="back"
>
</uni-nav-bar>
<view class="content">
<view class="base-info">
<view class="title">井道巡检</view>
<view class=""
><text class="name">巡检编号</text><text class="text">巡检编号</text>
</view>
<view class=""
><text class="name">巡检编号</text><text class="text">巡检编号</text>
</view>
</view>
<view class="main box-shaow-box">
<view class="content_header">巡检项目</view>
<!-- tabls -->
<Tabs class="tabs" ref="tabs" :options="tabList" @change="changeTab" />
<TabContentItem
v-for="(item, index) in tabList.length"
:key="index"
v-show="activeTabIndex == index"
:ref="`TabContentItem_${index}`"
/>
<view class="button-group">
<view class="btn-draft btn-class" @tap="draft(activeTabIndex)">
保存草稿
</view>
<view class="btn-class" @tap="submit"> 提交 </view>
</view>
</view>
</view>
</view>
</template>
<script>
import moment from "moment";
import Tabs from "./model/tabs.vue";
import TabContentItem from "./model/tabContentItem.vue";
import {
addLog,
getLogContent,
LOG_TYPE_ENUM,
} from "@/utils/IoReadingAndWriting.js";
import { pad_2_1_inspection_position } from "@/utils/dict.js";
export default {
components: {
Tabs,
TabContentItem,
},
data() {
return {
tabList: [],
activeTabIndex: 0,
baseInfo: {}, // 基础信息
tempForm: {
// 对应每个tab下的数据 [示例 0: 数据]
},
};
},
onLoad() {},
mounted() {
this.baseInfo = this.$store.state.temp_data;
this.init();
},
methods: {
init() {
this.tabList = pad_2_1_inspection_position.rows.map((item, index) => {
return {
name: item.dictLabel,
isVaild: false, // 校验通过
// type: 1, // 枚举值
position: pad_2_1_inspection_position.rows,
refName: `TabContentItem_${index}`,
};
});
},
// tab选中change 时间
changeTab(index, item) {
console.log("-index--", index);
this.draft(this.activeTabIndex, false, false).then(() => {
this.activeTabIndex = index;
});
},
back() {
uni.navigateBack();
},
// 提交按钮
submit() {
this.draft(this.activeTabIndex, false, false).then(() => {
const vaild = this.$refs.tabs.isAllVails();
uni.showToast({
icon: `${vaild ? "success" : "error"}`,
title: `${vaild ? "校验通过" : "请完善填写内容"}`,
});
if (vaild) {
/**
* 校验通过,
* 1.更新 store数据,
* 2. 巡检list文件
* 3.清空草稿文件数据、store草稿数据
*/
}
console.log("基础信息", this.baseInfo);
console.log("巡检信息", this.baseInfo);
});
},
// 保存草稿按钮
draft(activeTabIndex, isSave = true, iSwtich = true) {
let refName = this.tabList[activeTabIndex].refName;
return new Promise((resolve, reject) => {
this.$refs[refName][0].vaildForm().then(({ vaild, formData }) => {
this.$refs.tabs
.setTabVaild(activeTabIndex, vaild, iSwtich)
.then(() => {
this.tempForm[activeTabIndex] = formData;
console.log("--this.tempForm--", formData);
if (isSave) {
// 更新store 和 [草稿文件] 日志数据
console.log("--保存草稿--");
this.$store.commit("SET_DARF_DATA", this.tempForm); // 缓存[巡检信息]
// // 新增日志信息
// const logContent = getLogContent(LOG_TYPE_ENUM.darf);
// const log_list = this.$store.state.log_list
// console.log("-SET_LOG_LIST--", log_list , logContent);
// const temp = [...log_list]
// console.log("-xxxxx--", temp);
// // this.$store.commit("SET_LOG_LIST", []);
// addLog(temp).then((res) => {
// console.log("日志文件写入成功");
// });
// 写入草稿文件
// ...BatteryRoom..
}
resolve();
});
});
});
},
// submit() {
// this.$refs.forms
// .validate()
// .then((res) => {
// uni.showLoading({
// title: "加载中",
// });
// // console.log('校验通过');
// // let timeStr = getDateTime.dateTimeStr("y-m-d h:i");
// // let timeStr2 = getDateTime.dateTimeStr("y-m-d h:i:s");
// // this.formData.type = "1"; //巡检为1
// // this.formData.oid = this.$store.state.now_user.areaName; //区域名
// // this.formData.status = "编辑中"; //pad端添加状态
// // this.formData.isDel = "0";
// // this.formData.id = "";
// // this.formData.errorData = {};
// // this.formData.createBy = this.$store.state.now_user.name;
// // this.formData.creatTime = timeStr2;
// // this.formData.uid =
// // this.$store.state.now_user.oid +
// // Number(
// // Math.random().toString().substr(3, 10) + Date.now()
// // ).toString(36);
// // this.$store.state.all_data.push(this.formData);
// // 记录操作日志
// let operData = {
// name: this.$store.state.now_user.name,
// level: "秘密",
// user: this.$store.state.now_user.user,
// module: "巡检",
// detail:
// this.showRoomName(this.formData.room) +
// "巡检记录" +
// "(" +
// this.formData.number +
// ")",
// type: this.$store.state.oper_type,
// time: timeStr,
// ...this.formData,
// level: "秘密",
// };
// this.$store.state.oper_record.unshift(operData); //保存该操作记录
// this.$store.commit("SET_TEMP_DATA", this.formData); // 缓存[巡检信息]
// uni.redirectTo({
// url: "/pages/inspectionContent/inspectionContent",
// success() {
// uni.hideLoading();
// },
// });
// })
// .catch((err) => {
// console.log(err);
// });
// },
},
};
</script>
<style scoped lang="less">
.container {
width: 100%;
height: 100%;
.content {
width: 100%;
background-image: linear-gradient(
0deg,
#f3f6fa 0%,
rgba(130, 153, 238, 0.73) 49%,
#5474e8 100%
);
height: calc(100vh - 44px - var(--status-bar-height));
background-size: 100% 40rpx;
background-repeat: no-repeat;
padding: 0 20px 20px 20px;
.main {
width: 100%;
height: 100%;
padding: 20px 24px;
position: relative;
.tabs {
margin: 16px 0;
}
}
}
// 基础信息
.base-info {
padding: 20px 24px;
background: #fff;
border-radius: 10px;
margin-bottom: 16px;
display: flex;
align-items: center;
.title {
font-size: 26px;
color: #000000;
line-height: 34px;
font-weight: 600;
margin-bottom: 16px;
}
.name {
font-size: 14px;
color: #7c7c7c;
font-weight: 400;
}
.text {
font-size: 14px;
color: #000000;
font-weight: 400;
}
}
.button-group {
position: fixed;
bottom: 32px;
left: 50%;
transform: translateX(-50%);
display: flex;
align-items: center;
.btn-class {
width: 180px;
height: 48px;
background-image: linear-gradient(180deg, #3773f6 0%, #2c57f6 99%);
box-shadow: 0px 10px 24px 0px rgba(51, 104, 246, 0.24);
border-radius: 27px;
font-size: 20px;
color: #ffffff;
text-align: center;
font-weight: 400;
text-align: center;
line-height: 48px;
margin-right: 24px;
}
.btn-draft {
background: #fff;
border: 1px solid #3773f6;
color: #3773f6;
box-shadow: none;
}
}
}
</style>
import Vue from 'vue' import Vue from "vue";
import Vuex from 'vuex' import Vuex from "vuex";
Vue.use(Vuex) Vue.use(Vuex);
const store = new Vuex.Store({ const store = new Vuex.Store({
state: { state: {
oper_record: [], //保存操作记录数据, oper_record: [], // 保存操作记录数据--日志数据 --弃用
all_data: [], //保存页面数据 all_data: [], // 保存页面数据 -- 所有的巡检数据,list列表
now_user: {}, //保存当前登录用户 all_user_data: [], // 所有用户信息 -- list列表
temp_data: {}, //当前编辑或者查看的数据,
oper_type: '', // 当前操作类型 log_list: [], // 保存操作记录数据--日志数据
last_time: '', //上次上报时间,
now_user: {
id: 1,
user: "hzsgjy",
passWord: "JFXJ85250920",
areaName: "市本级",
permission: 1,
name: "超管",
oid: "scq",
}, //保存当前登录用户
darf_data: {}, // 保存草稿内容
temp_data: {}, // 当前编辑或者查看的数据,
oper_type: "", // 当前操作类型
// last_time: '', //上次上报时间,
user_data: {}, //所有用户信息 user_data: {}, //所有用户信息
scroll_top: 510, // scroll_top: 510, //
flgObj: false, flgObj: false,
roomNum:null, roomNum: null,
startTime:'' startTime: "",
}, },
mutations: { mutations: {
SET_STARTTIME(state, payload) { SET_STARTTIME(state, payload) {
state.startTime = payload state.startTime = payload;
}, },
SET_TOP(state, payload) { SET_TOP(state, payload) {
state.scroll_top = payload state.scroll_top = payload;
}, },
SET_ROOM(state, payload){ SET_ROOM(state, payload) {
state.roomNum = payload state.roomNum = payload;
}, },
set_FLAG(state, payload) { set_FLAG(state, payload) {
state.flgObj = payload state.flgObj = payload;
},
SET_TYPE(state, payload) {
//设置操作类型
state.oper_type = payload;
}, },
SET_TYPE(state, payload) { //设置操作类型 SET_USER(state, payload) {
state.oper_type = payload //保存当前登录用户
state.now_user = payload;
}, },
SET_USER(state, payload) { //保存当前登录用户 // SET_TIME(state, payload) { //保存上次上报时间
state.now_user = payload // state.last_time = payload
// },
DEL_DATA(state, index) {
//删除数据
state.all_data.splice(index, 1);
},
SET_TEMP_DATA(state, payload) {
//设置当前编辑或查看的数据
state.temp_data = payload;
},
SET_USER_DATA(state, payload) {
//设置当前编辑或查看的数据
state.user_data = payload;
},
SET_DARF_DATA(state, payload) {
// 保存巡检内容的草稿状态
state.darf_data = payload;
}, },
SET_TIME(state, payload) { //保存上次上报时间 SET_ALL_USER_DATA(state, payload) {
state.last_time = payload // 保存 所有用户列表
state.all_user_data = payload;
}, },
DEL_DATA(state, index) { //删除数据 SET_LOG_LIST(state, payload) {
state.all_data.splice(index, 1) console.log("payload", payload)
// 保存 日志文件
state.log_list = payload;
}, },
SET_TEMP_DATA(state, payload) { //设置当前编辑或查看的数据
state.temp_data = payload
}, },
SET_USER_DATA(state, payload) { //设置当前编辑或查看的数据 });
state.user_data = payload
}
}
})
export default store export default store;
\ No newline at end of file
var isReady=false;var onReadyCallbacks=[]; var isReady=false;var onReadyCallbacks=[];
var isServiceReady=false;var onServiceReadyCallbacks=[]; var isServiceReady=false;var onServiceReadyCallbacks=[];
var __uniConfig = {"pages":["pages/home/home","pages/index/index","pages/index/operLog","pages/synchronization/synchronization","pages/inspection/inspection","pages/inspection/inspFirst","pages/inspection/inspDetail","pages/inspection/sampleTable","pages/inspection/lookInsp","pages/inspection/inspProcess","pages/repair/repair","pages/repair/repairDetail","pages/repair/showRapair","pages/report/report","pages/report/lookReport","pages/report/reportInfo","pages/report/sampleTable","pages/repair/sampleTable","pages/login/login","pages/report/report-detail/deatil_first","pages/index/editPd","pages/home/home","pages/inspectionPage/inspectionPage","pages/inspectionContent/inspectionContent"],"window":{"pageOrientation":"landscape","navigationStyle":"custom","rpxCalcMaxDeviceWidth":2000,"rpxCalcIncludeWidth":750},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"巡检管理","compilerVersion":"4.24","entryPagePath":"pages/home/home","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}}; var __uniConfig = {"pages":["pages/home/home","pages/index/index","pages/index/operLog","pages/synchronization/synchronization","pages/inspection/inspection","pages/inspection/inspFirst","pages/inspection/inspDetail","pages/inspection/sampleTable","pages/inspection/lookInsp","pages/inspection/inspProcess","pages/repair/repair","pages/repair/repairDetail","pages/repair/showRapair","pages/report/report","pages/report/lookReport","pages/report/reportInfo","pages/report/sampleTable","pages/repair/sampleTable","pages/login/login","pages/report/report-detail/deatil_first","pages/index/editPd","pages/home/home","pages/inspectionPage/inspectionPage","pages/inspectionContent/inspectionContent","pages/shaftInspection/shaftInspection"],"window":{"pageOrientation":"landscape","navigationStyle":"custom","rpxCalcMaxDeviceWidth":2000,"rpxCalcIncludeWidth":750},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"巡检管理","compilerVersion":"4.24","entryPagePath":"pages/home/home","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
var __uniRoutes = [{"path":"/pages/home/home","meta":{"isQuit":true},"window":{"navigationBarTitleText":""}},{"path":"/pages/index/index","meta":{},"window":{}},{"path":"/pages/index/operLog","meta":{},"window":{}},{"path":"/pages/synchronization/synchronization","meta":{},"window":{}},{"path":"/pages/inspection/inspection","meta":{},"window":{}},{"path":"/pages/inspection/inspFirst","meta":{},"window":{}},{"path":"/pages/inspection/inspDetail","meta":{},"window":{}},{"path":"/pages/inspection/sampleTable","meta":{},"window":{}},{"path":"/pages/inspection/lookInsp","meta":{},"window":{}},{"path":"/pages/inspection/inspProcess","meta":{},"window":{}},{"path":"/pages/repair/repair","meta":{},"window":{}},{"path":"/pages/repair/repairDetail","meta":{},"window":{}},{"path":"/pages/repair/showRapair","meta":{},"window":{}},{"path":"/pages/report/report","meta":{},"window":{}},{"path":"/pages/report/lookReport","meta":{},"window":{}},{"path":"/pages/report/reportInfo","meta":{},"window":{}},{"path":"/pages/report/sampleTable","meta":{},"window":{}},{"path":"/pages/repair/sampleTable","meta":{},"window":{}},{"path":"/pages/login/login","meta":{},"window":{}},{"path":"/pages/report/report-detail/deatil_first","meta":{},"window":{}},{"path":"/pages/index/editPd","meta":{},"window":{}},{"path":"/pages/inspectionPage/inspectionPage","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/inspectionContent/inspectionContent","meta":{},"window":{"navigationBarTitleText":""}}]; var __uniRoutes = [{"path":"/pages/home/home","meta":{"isQuit":true},"window":{"navigationBarTitleText":""}},{"path":"/pages/index/index","meta":{},"window":{}},{"path":"/pages/index/operLog","meta":{},"window":{}},{"path":"/pages/synchronization/synchronization","meta":{},"window":{}},{"path":"/pages/inspection/inspection","meta":{},"window":{}},{"path":"/pages/inspection/inspFirst","meta":{},"window":{}},{"path":"/pages/inspection/inspDetail","meta":{},"window":{}},{"path":"/pages/inspection/sampleTable","meta":{},"window":{}},{"path":"/pages/inspection/lookInsp","meta":{},"window":{}},{"path":"/pages/inspection/inspProcess","meta":{},"window":{}},{"path":"/pages/repair/repair","meta":{},"window":{}},{"path":"/pages/repair/repairDetail","meta":{},"window":{}},{"path":"/pages/repair/showRapair","meta":{},"window":{}},{"path":"/pages/report/report","meta":{},"window":{}},{"path":"/pages/report/lookReport","meta":{},"window":{}},{"path":"/pages/report/reportInfo","meta":{},"window":{}},{"path":"/pages/report/sampleTable","meta":{},"window":{}},{"path":"/pages/repair/sampleTable","meta":{},"window":{}},{"path":"/pages/login/login","meta":{},"window":{}},{"path":"/pages/report/report-detail/deatil_first","meta":{},"window":{}},{"path":"/pages/index/editPd","meta":{},"window":{}},{"path":"/pages/inspectionPage/inspectionPage","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/inspectionContent/inspectionContent","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/shaftInspection/shaftInspection","meta":{},"window":{"navigationBarTitleText":""}}];
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); __uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); __uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}}); service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
* io读写方法
*
*/
import {
createFileWithPlusIO,
SYNCHRONIZE_DATA_PAD,
setSm2,
} from "./systemCofig";
import moment from "moment";
import store from "../store/index";
//日志类型
export const LOG_TYPE_ENUM = {
login: "登录",
add: "新增成功",
edit: "编辑成功",
darf: "草稿",
delete: "删除",
sys: "同步",
updatePassword: "修改密码",
};
// 生成日志
export const getLogContent = (type, detail = "无") => {
const now_user = store.state.now_user;
let timeStr = moment().format("yyyy-MM-DD HH:MM:ss");
return {
name: now_user.user,
level: "秘密",
user: now_user.user,
module: "其他",
detail,
type,
time: timeStr,
};
};
/**
* 新增日志
* @param {*} content 字符串格式 写入文件
* @returns
*/
export const addLog = (content) => {
return new Promise((resolve, reject) => {
const now_user = store.state.now_user;
let timeStr = moment().format("yyyy-MM-DD");
let fileName = `${now_user.user}${timeStr}.txt`;
const fileContent = JSON.stringify(content); // 方便验证
// const fileContent = setSm2(content) // 正式使用
console.log('-fileContent-', fileContent)
createFileWithPlusIO(
`${SYNCHRONIZE_DATA_PAD}/日志文件`,
fileName,
fileContent
).then((res) => {
// console.log("---写入成功", res);
resolve();
});
});
};
// 读取日志
export const getLog = () => {};
// 写入草稿文件
export const writeDarf = (content) => {
return new Promise((resolve, reject) => {
const now_user = store.state.now_user;
let fileName = `${now_user.user}.txt`;
const fileContent = JSON.stringify(content);
createFileWithPlusIO(
`${SYNCHRONIZE_DATA_PAD}/草稿文件/`,
fileName,
fileContent
).then((res) => {
// console.log("---写入成功", res);
resolve();
});
})
}
\ No newline at end of file
...@@ -220,6 +220,23 @@ export const pad_1_1_inspection_items = { ...@@ -220,6 +220,23 @@ export const pad_1_1_inspection_items = {
"isDefault": "N", "isDefault": "N",
"status": "0", "status": "0",
"default": false "default": false
},
{
"createBy": "admin",
"createTime": "2024-09-05 15:50:28",
"updateBy": null,
"updateTime": null,
"remark": null,
"dictCode": 1275,
"dictSort": 11,
"dictLabel": "清洁",
"dictValue": "11",
"dictType": "pad_1_1_inspection_items",
"cssClass": null,
"listClass": "default",
"isDefault": "N",
"status": "0",
"default": false
} }
], ],
"code": 200, "code": 200,
...@@ -514,6 +531,23 @@ export const pad_1_2_inspection_items = { ...@@ -514,6 +531,23 @@ export const pad_1_2_inspection_items = {
"isDefault": "N", "isDefault": "N",
"status": "0", "status": "0",
"default": false "default": false
},
{
"createBy": "admin",
"createTime": "2024-09-05 15:50:28",
"updateBy": null,
"updateTime": null,
"remark": null,
"dictCode": 1275,
"dictSort": 11,
"dictLabel": "清洁",
"dictValue": "11",
"dictType": "pad_1_1_inspection_items",
"cssClass": null,
"listClass": "default",
"isDefault": "N",
"status": "0",
"default": false
} }
], ],
"code": 200, "code": 200,
...@@ -757,6 +791,23 @@ export const pad_1_3_inspection_items = { ...@@ -757,6 +791,23 @@ export const pad_1_3_inspection_items = {
"isDefault": "N", "isDefault": "N",
"status": "0", "status": "0",
"default": false "default": false
},
{
"createBy": "admin",
"createTime": "2024-09-05 15:50:28",
"updateBy": null,
"updateTime": null,
"remark": null,
"dictCode": 1275,
"dictSort": 11,
"dictLabel": "清洁",
"dictValue": "11",
"dictType": "pad_1_1_inspection_items",
"cssClass": null,
"listClass": "default",
"isDefault": "N",
"status": "0",
"default": false
} }
], ],
"code": 200, "code": 200,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论