xy 2 years ago
parent 0752207f8c
commit 1a3ca15080

@ -82,7 +82,7 @@ export default {
this.getNotice()
},refreshNoticeTime)
},
beforeDestroy() {
destroyed() {
clearInterval(this.timer)
}
}

@ -172,7 +172,7 @@ export default {
this.getTransfer()
},refreshTransferTime)
},
beforeDestroy() {
destroyed() {
clearInterval(this.timer)
},
};

@ -32,7 +32,7 @@
<div style="line-height: 1.2;text-align: left;padding: 20px;height: 100%;display: flex;flex-direction: column;justify-content: space-between;">
<p>发令人{{ data.admin ? data.admin.name : '' }}</p>
<p>发令时间{{ $moment(data.created_at).format("YYYY-MM-DD HH:mm") }}</p>
<p>接收人</p>
<p>接收人{{ data.jieshouren }}</p>
<p>开启时间{{ $moment(data.start_time).format("YYYY-MM-DD HH:mm") }}</p>
<p>关闭时间{{ $moment(data.end_time).format("YYYY-MM-DD HH:mm") }}</p>
指令内容{{ data.content }}
@ -44,6 +44,10 @@
<td>执行状态</td>
<td>
<template v-if="data.status === 2">
<div class="d-flex ai-center pl-4 pb-4" style="width: 46%;">
<span style="word-break: keep-all;">接收人</span>
<el-input size="small" v-model="jieshouren"></el-input>
</div>
<div class="btns">
<Button type="primary" @click="esignConfirm"></Button>
</div>
@ -100,6 +104,7 @@ export default {
},
data() {
return {
jieshouren: "",
isShow: false,
data: {},
typeMap: new Map([
@ -139,6 +144,7 @@ export default {
let copyData = deepCopy(this.data)
if (this.data.status === 2) {
copyData.status = 3;
copyData.jieshouren = this.jieshouren;
for (let key in copyData) {
if (/_relation/g.test(key)) {
delete copyData[key]
@ -148,6 +154,7 @@ export default {
table_name: 'transfers',
...copyData
}).then(_ => {
this.$emit('refresh')
})
}
if (this.data.status === 3) {
@ -183,7 +190,7 @@ export default {
})
}
this.$refs['esign'].reset()
this.$refs['esign']?.reset()
this.hide()
}
},

@ -389,6 +389,7 @@ export default {
value: "",
},
],
sort_name: 'start_time'
},
selectQuery: [],
form: [],

@ -29,14 +29,18 @@
</div>
<el-card>
<div>{{ $moment(selectDate).format('YYYY年MM月DD日') }}调度指令执行情况</div>
<div class="title">{{ $moment(selectDate).format('YYYY-MM-DD') }}调度指令执行情况</div>
<div v-for="(item, index) in transfers" :key="item.id">
<div>{{ index }}</div>
<div>
<div>{{ item.equipment ? item.equipment.area : '' }}</div>
<div v-for="(item, index) in transfers" :key="item.id" class="item">
<div class="sub-title">{{ numberToChinese(index+1) }}. {{ item.equipment_id_equipments_id_relation ? item.equipment_id_equipments_id_relation.name : '' }}</div>
<div class="time">
<span>时间</span>
<span>{{ $moment(item.act_start_time).format('YYYY-MM-DD HH:mm') }} - {{ $moment(item.act_end_time).format('HH:mm') }}</span>
</div>
<div class="content">
<span>{{ item.equipment_id_equipments_id_relation ? area(item.equipment_id_equipments_id_relation.area) : '' }}</span>
<div>{{ item.content }}</div>
<span>{{ item.content }}</span>
</div>
</div>
</el-card>
@ -58,6 +62,7 @@ import { index } from "@/api/system/baseForm";
import headerContent from "@/components/LxHeader/XyContent.vue";
import LxHeader from "@/components/LxHeader/index.vue";
import { authMixin } from "@/mixin/authMixin";
import { show } from "@/api/system/customFormField";
export default {
components: {
LxHeader,
@ -66,11 +71,76 @@ export default {
mixins: [authMixin],
data() {
return {
types: [],
areas: [],
transfers: [],
selectDate: new Date(),
}
},
methods: {
numberToChinese (num) {
if (num == 10) {
return '十'
} else if (num == 1) {
return '一'
}
const digits = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const units = ['', '十', '百', '千', '万'];
let result = '';
let numStr = num.toString();
for (let i = 0; i < numStr.length; i++) {
let digit = parseInt(numStr.charAt(i));
let unit = units[numStr.length - i - 1];
if (digit === 0) {
// 00
if (result.charAt(result.length - 1) !== '零') {
result += '零';
}
} else {
result += digits[digit] + unit;
}
}
// 10100
if (result.charAt(0) === '一') {
result = result.substr(1, result.length);
} else if (result.charAt(0) === '百') {
result = '一' + result;
} else if (result.charAt(0) === '千') {
result = '一' + result;
}
return result
},
async getArea() {
const obj = (await show({ id: 4 }, false))?.select_item;
if (obj && typeof obj === "object") {
let keys = Object.keys(obj);
if (keys.length > 0) {
this.areas = keys.map((key) => {
return {
key,
value: /^\d*$/.test(obj[key]) ? Number(obj[key]) : obj[key],
};
});
}
}
},
async getType() {
const obj = (await show({ id: 1 }, false))?.select_item;
if (obj && typeof obj === "object") {
let keys = Object.keys(obj);
if (keys.length > 0) {
this.types = keys.map((key) => {
return {
key,
value: /^\d*$/.test(obj[key]) ? Number(obj[key]) : obj[key],
};
});
}
}
},
async getTransfer () {
this.transfers = (await index({
table_name: "transfers",
@ -82,6 +152,11 @@ export default {
op: 'range',
value: `${this.$moment(this.selectDate).startOf('days').format('YYYY-MM-DD HH:mm:ss')},${this.$moment(this.selectDate).endOf('days').format('YYYY-MM-DD HH:mm:ss')}`
},
{
key: 'status',
op: 'eq',
value: 6
}
]
})).data
},
@ -92,7 +167,7 @@ export default {
{
children: [
new Paragraph({
text: "2023年9月20日调度指令执行情况",
text: `${this.$moment(this.selectDate).format('YYYY年MM月DD日')}调度指令执行情况`,
heading: HeadingLevel.HEADING_1,
alignment: AlignmentType.CENTER,
spacing: {
@ -114,34 +189,38 @@ export default {
})
]
}),
new Paragraph({
spacing: {
before: 200,
line: 500
},
children: [
new TextRun({
text: "一、夜间水位控制执行情况",
size: 28,
bold: true,
...this.transfers.map((i, index) => (
[
new Paragraph({
spacing: {
before: 200,
line: 400
},
children: [
new TextRun({
text: `${this.numberToChinese(index+1)}${i.equipment_id_equipments_id_relation?.name}`,
size: 28,
bold: true,
}),
]
}),
]
}),
new Paragraph({
spacing: {
before: 200,
line: 500
},
indent: {
firstLine: convertInchesToTwip(0.5)
},
children: [
new TextRun({
text: "1、时间2023年9月19日19:00 -2023年9月20日7:00 2、实际执行情况1北部2南部东风新枢纽运行共启停2次觅渡桥水位3.00m启2.96m停23:23—1:50147分钟两台大龙港枢纽运行共启停2次觅渡桥水位3.00m启2.96m停23:25—1:48143分钟两台。",
size: 18,
new Paragraph({
spacing: {
before: 200,
line: 400
},
indent: {
firstLine: convertInchesToTwip(0.5)
},
children: [
new TextRun({
text: `1、时间${this.$moment(i.act_start_time).format('YYYY-MM-DD HH:mm')} - ${this.$moment(i.act_end_time).format('YYYY-MM-DD HH:mm')} 2、实际执行情况${i.content}`,
size: 18,
})
]
})
]
})
)).flat()
]
},
]
@ -151,12 +230,45 @@ export default {
saveAs(blob, 'test.docx')
}
},
computed: {},
computed: {
area () {
return function (area) {
return this.areas.find(i => i.value === area)?.key
}
}
},
created() {
this.getArea()
this.getTransfer()
}
}
</script>
<style scoped lang="scss">
.title {
font-weight: bolder;
font-size: 19px;
text-align: center;
padding: 10px 0;
}
.sub-title {
font-weight: bold;
font-size: 16px;
padding: 8px 0;
}
.time {
line-height: 1.5;
padding: 0 4px;
}
.content {
line-height: 1.5;
padding: 0 4px;
}
.item + .item {
margin-top: 20px;
}
</style>

Loading…
Cancel
Save