@@ -1,6 +1,20 @@ | |||
<script setup name="App"> | |||
// import store from '@/store' | |||
// console.log(store.menuStore.menuArr) | |||
// import Updater from '@/utils/updater' | |||
// import { ElMessageBox } from 'element-plus' | |||
// | |||
// const up = new Updater({ | |||
// timer: 20000 | |||
// }) | |||
// // 更新通知 | |||
// up.on('update', () => { | |||
// up.stop() | |||
// ElMessageBox.confirm('检测到有新版本,是否更新?更新会重新加载页面,如果您有未提交的表单数据,请先保存!', '提示', {}).then(() => { | |||
// location.reload() | |||
// }) | |||
// }) | |||
</script> | |||
<template> | |||
@@ -43,3 +43,4 @@ instance | |||
} | |||
}) | |||
.mount('#app') | |||
@@ -5,6 +5,7 @@ import store from '@/store' | |||
import { useRouter, useRoute } from 'vue-router' | |||
import { submitResult } from '@/http/apis/declareMange/purchaseResults' | |||
import { dictionary } from '@/http/apis/projectCollection/projectCollectionEnter' | |||
import { getProjectDetail } from '@/http/apis/declareMange' | |||
const uploadUrl = store.dictStore.uploadUrl, | |||
{ proxy } = getCurrentInstance(), | |||
@@ -46,7 +47,7 @@ const formRef = ref(), | |||
bidDoc: [], | |||
acceptanceLetter: [] | |||
}], | |||
devChangeCode: '' | |||
developCode: '' | |||
}), | |||
submitLoading = ref(false), | |||
submit = async (formEl) => { | |||
@@ -66,7 +67,7 @@ const formRef = ref(), | |||
acceptanceLetter: i.acceptanceLetter && JSON.stringify(changFilesParam(i.acceptanceLetter)) | |||
} | |||
}), | |||
devChangeCode: formData.value.devChangeCode | |||
developCode: formData.value.developCode | |||
} | |||
try { | |||
await submitResult(postData) | |||
@@ -98,7 +99,10 @@ const formRef = ref(), | |||
dictionaryList = ref([]) | |||
onMounted(async () => { | |||
dictionaryList.value = (await dictionary()).data | |||
const data = await getProjectDetail({ id: route.query.id }) | |||
formData.value.developCode = data.data.developCode | |||
}) | |||
</script> | |||
<template> | |||
<div class="fillPurchasingResult footerPage"> | |||
@@ -111,11 +115,11 @@ onMounted(async () => { | |||
label-suffix=":" | |||
scroll-to-error | |||
> | |||
<el-card class="w-full mb-16"> | |||
<el-form-item label="发改编码" :rules="[{ required: true, message: '请输入' }]" prop="devChangeCode"> | |||
<el-input v-model="formData.devChangeCode" placeholder="请输入" /> | |||
</el-form-item> | |||
</el-card> | |||
<!-- <el-card class="w-full mb-16">--> | |||
<!-- <el-form-item label="发改编码" :rules="[{ required: true, message: '请输入' }]" prop="developCode">--> | |||
<!-- <el-input v-model="formData.developCode" placeholder="请输入" />--> | |||
<!-- </el-form-item>--> | |||
<!-- </el-card>--> | |||
<el-card v-for="(item,index) in formData.sections" :key="index" class="w-full mb-16"> | |||
<template #header> | |||
<div class="flex justify-between"> | |||
@@ -122,7 +122,10 @@ watch( | |||
async val => { | |||
if (!val) { | |||
formRef.value.resetFields() | |||
form.value = {} | |||
form.value = { | |||
attachments: [], | |||
opinions: [] | |||
} | |||
} | |||
} | |||
) | |||
@@ -231,30 +234,30 @@ watch( | |||
</el-col> | |||
</template> | |||
<el-col v-if="projectDetail&&projectDetail.status===20004" :span="24"> | |||
<el-form-item | |||
:label="`终验意见`" | |||
prop="opinions" | |||
> | |||
<el-upload | |||
v-model:file-list="form.opinions" | |||
class="w-full" | |||
:action="uploadUrl" | |||
:on-success="res => handleFileSuccess(res, form.opinions)" | |||
:on-error="handleFileError" | |||
:before-upload="file=>fileFormatVerification(file, {types: fileTypes})" | |||
:accept="fileTypes.map(i=>`.${i}`).join(',')" | |||
multiple | |||
:limit="10" | |||
:on-preview="handleFilePreview" | |||
> | |||
<el-button type="primary" class="mr-4">上传附件</el-button> | |||
<template #tip> | |||
<div class="el-upload__tip">支持{{ fileDesc }}文件</div> | |||
</template> | |||
</el-upload> | |||
</el-form-item> | |||
</el-col> | |||
<!-- <el-col v-if="projectDetail&&projectDetail.status===20004" :span="24">--> | |||
<!-- <el-form-item--> | |||
<!-- :label="`终验意见`"--> | |||
<!-- prop="opinions"--> | |||
<!-- >--> | |||
<!-- <el-upload--> | |||
<!-- v-model:file-list="form.opinions"--> | |||
<!-- class="w-full"--> | |||
<!-- :action="uploadUrl"--> | |||
<!-- :on-success="res => handleFileSuccess(res, form.opinions)"--> | |||
<!-- :on-error="handleFileError"--> | |||
<!-- :before-upload="file=>fileFormatVerification(file, {types: fileTypes})"--> | |||
<!-- :accept="fileTypes.map(i=>`.${i}`).join(',')"--> | |||
<!-- multiple--> | |||
<!-- :limit="10"--> | |||
<!-- :on-preview="handleFilePreview"--> | |||
<!-- >--> | |||
<!-- <el-button type="primary" class="mr-4">上传附件</el-button>--> | |||
<!-- <template #tip>--> | |||
<!-- <div class="el-upload__tip">支持{{ fileDesc }}文件</div>--> | |||
<!-- </template>--> | |||
<!-- </el-upload>--> | |||
<!-- </el-form-item>--> | |||
<!-- </el-col>--> | |||
<el-col :span="24"> | |||
<el-form-item | |||
@@ -391,6 +391,7 @@ function rejectYear () { | |||
</el-button> | |||
<el-button @click="router.go(-1)">返回</el-button> | |||
<el-button | |||
v-if="false" | |||
plain | |||
type="danger" | |||
@click="rejectYear" | |||
@@ -0,0 +1,62 @@ | |||
export default class Updater { | |||
constructor (options) { | |||
this.oldScript = [] // 存储初始的 script 哈希信息 | |||
this.newScript = [] // 存储新的 script 哈希信息 | |||
this.dispatch = {} // 一个小型的发布/订阅系统,用于通知用户更新 | |||
this.interval = null | |||
this.init() // 初始化 | |||
this.timing(options?.timer) // 轮询 | |||
} | |||
async init () { | |||
const html = await this.getHtml() | |||
this.oldScript = this.parserScript(html) | |||
} | |||
async getHtml () { | |||
const html = await fetch('/').then(res => res.text()) // 获取 index.html | |||
return html | |||
} | |||
parserScript (html) { | |||
const reg = new RegExp(/<script(?:\s+[^>]*)?>(.*?)<\/script\s*>/ig) // 匹配 script 标签的正则表达式 | |||
return html.match(reg) // 匹配 script 标签 | |||
} | |||
// 发布/订阅通知 | |||
on (key, fn) { | |||
(this.dispatch[key] || (this.dispatch[key] = [])).push(fn) | |||
return this | |||
} | |||
compare (oldArr, newArr) { | |||
const base = oldArr.length | |||
const arr = Array.from(new Set(oldArr.concat(newArr))) | |||
// 如果新旧数组长度相同,则表示没有更新 | |||
if (arr.length === base) { | |||
this.dispatch['no-update'].forEach(fn => { | |||
fn() | |||
}) | |||
} else { | |||
// 否则通知有更新 | |||
this.dispatch['update'].forEach(fn => { | |||
fn() | |||
}) | |||
} | |||
} | |||
timing (time = 10000) { | |||
// 轮询 | |||
this.interval = setInterval(async () => { | |||
const newHtml = await this.getHtml() | |||
this.newScript = this.parserScript(newHtml) | |||
this.compare(this.oldScript, this.newScript) | |||
}, time) | |||
} | |||
start () { | |||
} | |||
stop () { | |||
clearInterval(this.interval) | |||
} | |||
} |