技术监督需求整改 修改时间组件

This commit is contained in:
GGJ
2024-07-01 17:25:23 +08:00
parent 8dc8cd83a0
commit a2739b8328
9 changed files with 127 additions and 35 deletions

View File

@@ -28,11 +28,12 @@ import { ref, onMounted, nextTick, watch } from 'vue'
interface Props { interface Props {
nextFlag?: boolean nextFlag?: boolean
theCurrentTime: boolean
} }
const props = withDefaults(defineProps<Props>(), { const props = withDefaults(defineProps<Props>(), {
nextFlag:false nextFlag: false,
theCurrentTime: false
}) })
const interval = ref(3) const interval = ref(3)
@@ -286,7 +287,7 @@ const next = () => {
} else { } else {
endTime = year + '-' + presentM + '-' + presentD endTime = year + '-' + presentM + '-' + presentD
} }
} else if (year == presentY ) { } else if (year == presentY) {
startTime = year + '-01-01' startTime = year + '-01-01'
// 当前月份大约3月份 // 当前月份大约3月份
if (presentM > 3) { if (presentM > 3) {
@@ -407,7 +408,7 @@ const setTime = (flag = 0, e = 0) => {
let data = '' let data = ''
if ((dd < 4 || dd == 0) && interval.value != 4) { if ((dd < 4 || dd == 0) && interval.value != 4 && !props.theCurrentTime) {
data = window.XEUtils.toDateString(new Date().getTime() - (e + dd) * 3600 * 1000 * 24, 'yyyy-MM-dd') data = window.XEUtils.toDateString(new Date().getTime() - (e + dd) * 3600 * 1000 * 24, 'yyyy-MM-dd')
} else { } else {
data = window.XEUtils.toDateString(new Date().getTime() - e * 3600 * 1000 * 24, 'yyyy-MM-dd') data = window.XEUtils.toDateString(new Date().getTime() - e * 3600 * 1000 * 24, 'yyyy-MM-dd')

View File

@@ -10,7 +10,7 @@
:inline="true" :inline="true"
> >
<el-form-item label="日期" v-if="datePicker" style="grid-column: span 2; max-width: 570px"> <el-form-item label="日期" v-if="datePicker" style="grid-column: span 2; max-width: 570px">
<DatePicker ref="datePickerRef" :nextFlag="nextFlag"></DatePicker> <DatePicker ref="datePickerRef" :nextFlag="nextFlag" :theCurrentTime="theCurrentTime"></DatePicker>
</el-form-item> </el-form-item>
<el-form-item label="区域" v-if="area"> <el-form-item label="区域" v-if="area">
@@ -61,14 +61,16 @@ interface Props {
datePicker?: boolean datePicker?: boolean
area?: boolean area?: boolean
showSearch?: boolean showSearch?: boolean
nextFlag?: boolean nextFlag?: boolean //控制时间是否可以往后推
theCurrentTime?: boolean //控制时间前3天展示上个月时间
} }
const props = withDefaults(defineProps<Props>(), { const props = withDefaults(defineProps<Props>(), {
datePicker: false, datePicker: false,
area: false, area: false,
showSearch: true, showSearch: true,
nextFlag: false nextFlag: false,
theCurrentTime: false
}) })
// 动态计算table高度 // 动态计算table高度
const resizeObserver = new ResizeObserver(entries => { const resizeObserver = new ResizeObserver(entries => {

View File

@@ -1,7 +1,7 @@
<template> <template>
<div class="panorama" :style="height"> <div class="panorama" :style="height">
<div class="mapBox" v-show="lineInfo"> <div class="mapBox" v-show="lineInfo">
<DatePicker ref="datePickerRef" style="display: none" /> <DatePicker ref="datePickerRef" style="display: none" theCurrentTime />
<el-form :inline="true" :model="form" class="demo-form-inline"> <el-form :inline="true" :model="form" class="demo-form-inline">
<el-form-item> <el-form-item>
<Area <Area

View File

@@ -1,5 +1,5 @@
<template> <template>
<el-dialog draggable :title="title" v-model="planAddition" :before-close="cancelFn"> <el-dialog draggable :title="title" width="900px" v-model="planAddition" :before-close="cancelFn">
<el-form :model="form" ref="formRef" :rules="rules" label-width="auto" class="form-two" scroll-to-error> <el-form :model="form" ref="formRef" :rules="rules" label-width="auto" class="form-two" scroll-to-error>
<el-form-item label="计划负责单位:"> <el-form-item label="计划负责单位:">
<el-input v-model="form.deptName" disabled></el-input> <el-input v-model="form.deptName" disabled></el-input>
@@ -33,15 +33,39 @@
<el-form-item for="-" label="测试负责人:" prop="completeBy"> <el-form-item for="-" label="测试负责人:" prop="completeBy">
<el-input v-model="form.completeBy" placeholder="请输入测试负责人"></el-input> <el-input v-model="form.completeBy" placeholder="请输入测试负责人"></el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" class="uploadFile" label="测试报告:" prop="testReport"> <el-form-item for="-" label="测试是否有问题:" prop="problemFlag">
<!-- 默认值 -->
<el-radio-group v-model="form.problemFlag">
<el-radio :value="1"></el-radio>
<el-radio :value="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item for="-" class="uploadFile" label="技术监督报告:" prop="supervisionReport">
<el-upload <el-upload
ref="uploadRef" ref="uploadRef"
v-model:file-list="form.testReport" v-model:file-list="form.supervisionReport"
action="" action=""
:accept="acceptType" :accept="acceptType"
:limit="1" :limit="1"
:on-exceed="handleExceed" :on-exceed="handleExceed"
:on-change="choose" :on-change="event => choose(event, 'supervisionReport')"
:auto-upload="false"
:on-progress="uploadFileName('supervisionReport')"
>
<template #trigger>
<el-button type="primary">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
<el-form-item for="-" class="uploadFile" label="测试报告:" prop="testReport">
<el-upload
ref="upload1Ref"
v-model:file-list="form.testReport"
action=""
:accept="acceptType"
:limit="1"
:on-exceed="handleExceed1"
:on-change="event => choose(event, 'testReport')"
:auto-upload="false" :auto-upload="false"
:on-progress="uploadFileName('testReport')" :on-progress="uploadFileName('testReport')"
> >
@@ -50,13 +74,7 @@
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item for="-" label="测试是否有问题:" prop="problemFlag">
<!-- 默认值 -->
<el-radio-group v-model="form.problemFlag">
<el-radio :value="1"></el-radio>
<el-radio :value="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item <el-form-item
style="width: 100%" style="width: 100%"
for="-" for="-"
@@ -92,6 +110,7 @@ const tableStore = inject('tableStore') as TableStore
let uploadName = ref('') let uploadName = ref('')
// 上传报告 // 上传报告
const uploadRef = ref() const uploadRef = ref()
const upload1Ref = ref()
const fileList = ref<UploadUserFile[]>([]) const fileList = ref<UploadUserFile[]>([])
const emit = defineEmits(['onsubmit']) const emit = defineEmits(['onsubmit'])
const dictData = useDictData() const dictData = useDictData()
@@ -109,6 +128,7 @@ const form: any = ref({
completeTime: '', completeTime: '',
completeBy: '', completeBy: '',
testReport: [], testReport: [],
supervisionReport: [],
problemDetail: '', //测试问题 problemDetail: '', //测试问题
problemFlag: 0 //是否有问题 problemFlag: 0 //是否有问题
}) })
@@ -139,6 +159,7 @@ const open = async (text: string, id: string, addFlag: boolean) => {
form.value.completeTime = '' form.value.completeTime = ''
form.value.completeBy = '' form.value.completeBy = ''
form.value.testReport = [] form.value.testReport = []
form.value.supervisionReport = []
form.value.problemDetail = '' form.value.problemDetail = ''
form.value.problemFlag = 0 form.value.problemFlag = 0
fileList.value = [] fileList.value = []
@@ -158,9 +179,18 @@ const open = async (text: string, id: string, addFlag: boolean) => {
name: res.data.testReport.split('/')[2] name: res.data.testReport.split('/')[2]
} }
], ],
supervisionReport:
res.data.supervisionReport == null
? []
: [
{
name: res.data.supervisionReport.split('/')[2]
}
],
problemDetail: res.data.problemDetail problemDetail: res.data.problemDetail
} }
testReport.value = res.data.testReport testReport.value = res.data.testReport
supervisionReport.value = res.data.supervisionReport
} }
}) })
@@ -169,12 +199,14 @@ const open = async (text: string, id: string, addFlag: boolean) => {
//处理成效报告 //处理成效报告
const testReport = ref('') const testReport = ref('')
const supervisionReport = ref('')
const formRef = ref() const formRef = ref()
const rules = { const rules = {
completeTime: [{ required: true, message: '选择实际完成时间 ', trigger: 'change' }], completeTime: [{ required: true, message: '选择实际完成时间 ', trigger: 'change' }],
completeBy: [{ required: true, message: '请输入测试负责人', trigger: 'blur' }], completeBy: [{ required: true, message: '请输入测试负责人', trigger: 'blur' }],
testReport: [{ required: true, message: '请上传文件', trigger: 'change' }], testReport: [{ required: true, message: '请上传文件', trigger: 'change' }],
supervisionReport: [{ required: true, message: '请上传文件', trigger: 'change' }],
problemFlag: [{ required: true, message: '请选择测试是否有问题', trigger: 'change' }], problemFlag: [{ required: true, message: '请选择测试是否有问题', trigger: 'change' }],
problemDetail: [{ required: true, message: '请输入测试问题', trigger: 'blur' }] problemDetail: [{ required: true, message: '请输入测试问题', trigger: 'blur' }]
} }
@@ -188,6 +220,7 @@ const submitFn = (flag: boolean) => {
if (flag) { if (flag) {
const subForm = JSON.parse(JSON.stringify(form.value)) const subForm = JSON.parse(JSON.stringify(form.value))
subForm.testReport = testReport.value subForm.testReport = testReport.value
subForm.supervisionReport = supervisionReport.value
subForm.saveOrCheckflag = '1' subForm.saveOrCheckflag = '1'
//新增,则组装业务数据提交后台 //新增,则组装业务数据提交后台
@@ -201,13 +234,20 @@ const submitFn = (flag: boolean) => {
formRef.value.validate(async (valid: any) => { formRef.value.validate(async (valid: any) => {
if (!testReport.value) { if (!testReport.value) {
return ElMessage({ return ElMessage({
message: '请上传处理成效报告', message: '请上传处理成效报告',
type: 'warning'
})
}
if (!supervisionReport.value) {
return ElMessage({
message: '请上传技术监督报告!',
type: 'warning' type: 'warning'
}) })
} }
if (valid) { if (valid) {
const subForm = JSON.parse(JSON.stringify(form.value)) const subForm = JSON.parse(JSON.stringify(form.value))
subForm.testReport = testReport.value subForm.testReport = testReport.value
subForm.supervisionReport = supervisionReport.value
subForm.saveOrCheckflag = '2' subForm.saveOrCheckflag = '2'
if (addFlagRef.value) { if (addFlagRef.value) {
//新增,则组装业务数据提交后台 //新增,则组装业务数据提交后台
@@ -247,11 +287,16 @@ const audit = (filePath: any) => {
defineExpose({ open }) defineExpose({ open })
const choose = (e: any) => { const choose = (e: any, text: string) => {
if (text == 'testReport') {
uploadFile(e.raw, '/supervision/').then(res => { uploadFile(e.raw, '/supervision/').then(res => {
testReport.value = res.data.name testReport.value = res.data.name
// form.value.testReport = res.data.name
}) })
} else {
uploadFile(e.raw, '/supervision/').then(res => {
supervisionReport.value = res.data.name
})
}
} }
const handleExceed: UploadProps['onExceed'] = files => { const handleExceed: UploadProps['onExceed'] = files => {
@@ -260,6 +305,12 @@ const handleExceed: UploadProps['onExceed'] = files => {
file.uid = genFileId() file.uid = genFileId()
uploadRef.value!.handleStart(file) uploadRef.value!.handleStart(file)
} }
const handleExceed1: UploadProps['onExceed'] = files => {
upload1Ref.value!.clearFiles()
const file = files[0] as UploadRawFile
file.uid = genFileId()
upload1Ref.value!.handleStart(file)
}
//上传报告改变 //上传报告改变
const uploadFileName = val => { const uploadFileName = val => {

View File

@@ -1,4 +1,3 @@
6T
<template> <template>
<TableHeader area datePicker nextFlag ref="TableHeaderRef"> <TableHeader area datePicker nextFlag ref="TableHeaderRef">
<template v-slot:select> <template v-slot:select>

View File

@@ -47,6 +47,12 @@
{{ detailData?.problemDetail }} {{ detailData?.problemDetail }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :span="2" label="技术监督报告">
<el-icon class="elView" v-if="detailData?.supervisionReportName">
<View @click="openFile(detailData?.supervisionReportName)" />
</el-icon>
<a :href="detailData.supervisionReport" target="_blank">{{ detailData.supervisionReportName }}</a>
</el-descriptions-item>
<el-descriptions-item :span="2" label="测试报告"> <el-descriptions-item :span="2" label="测试报告">
<el-icon class="elView" v-if="detailData?.testReportName"> <el-icon class="elView" v-if="detailData?.testReportName">
<View @click="openFile(detailData?.testReportName)" /> <View @click="openFile(detailData?.testReportName)" />
@@ -102,6 +108,10 @@ const getFileData = async () => {
detailData.value.testReport = res.data.url detailData.value.testReport = res.data.url
detailData.value.testReportName = res.data.fileName detailData.value.testReportName = res.data.fileName
}) })
await getFileNameAndFilePath({ filePath: detailData.value.supervisionReport }).then(res => {
detailData.value.supervisionReport = res.data.url
detailData.value.supervisionReportName = res.data.fileName
})
} }
const getProblemFlagDetail = (status: number) => { const getProblemFlagDetail = (status: number) => {

View File

@@ -147,6 +147,7 @@ const tableStore = new TableStore({
row.status, row.status,
row.issueDetail, row.issueDetail,
row.problemPath, row.problemPath,
row.supervisionReport,
row.reformAdvice row.reformAdvice
) )
} }
@@ -184,6 +185,7 @@ const tableStore = new TableStore({
row.status, row.status,
row.issueDetail, row.issueDetail,
row.problemPath, row.problemPath,
row.supervisionReport,
row.reformAdvice, row.reformAdvice,
row.takeStep, row.takeStep,
@@ -208,6 +210,7 @@ const tableStore = new TableStore({
row.status, row.status,
row.issueDetail, row.issueDetail,
row.problemPath, row.problemPath,
row.supervisionReport,
row.reformAdvice, row.reformAdvice,
row.takeStep, row.takeStep,
row.reportPath, row.reportPath,

View File

@@ -21,6 +21,15 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="技术监督报告:" v-if="showFile1">
<el-icon class="elView" v-if="supervisionReportDetail?.supervisionReportName">
<View @click="openFile(supervisionReportDetail?.supervisionReportName)" />
</el-icon>
<a :href="supervisionReportDetail.supervisionReportPath" target="_blank">
{{ supervisionReportDetail.supervisionReportName }}
</a>
</el-form-item>
<el-form-item label="问题附件:" v-if="showFile"> <el-form-item label="问题附件:" v-if="showFile">
<el-icon class="elView" v-if="problemDetail?.problemName"> <el-icon class="elView" v-if="problemDetail?.problemName">
<View @click="openFile(problemDetail?.problemName)" /> <View @click="openFile(problemDetail?.problemName)" />
@@ -97,11 +106,16 @@ const form = ref({
}) })
//附件是否显示 //附件是否显示
const showFile = ref(false) const showFile = ref(false)
const showFile1 = ref(false)
const problemDetail = reactive({ const problemDetail = reactive({
problemPath: '', problemPath: '',
problemName: '' problemName: ''
}) })
const supervisionReportDetail = reactive({
supervisionReportPath: '',
supervisionReportName: ''
})
//处理成效报告 //处理成效报告
const reportFilePath: any = ref('') const reportFilePath: any = ref('')
@@ -123,6 +137,7 @@ const open = async (
status: any, status: any,
issueDetail: string, issueDetail: string,
problemPath?: string, problemPath?: string,
supervisionReport?: string,
reformAdvice?: string, reformAdvice?: string,
takeStep?: string, takeStep?: string,
reportPath?: string reportPath?: string
@@ -158,6 +173,17 @@ const open = async (
} else { } else {
showFile.value = false showFile.value = false
} }
if (supervisionReport) {
let arrPath = supervisionReport.split(',')
console.log("🚀 ~ arrPath:", arrPath)
await getFileNameAndFilePath({ filePath: arrPath[0] }).then(res => {
supervisionReportDetail.supervisionReportPath = res.data.url
supervisionReportDetail.supervisionReportName = res.data.fileName
})
showFile1.value = true
} else {
showFile1.value = false
}
dialogVisible.value = true dialogVisible.value = true
} }