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

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 {
nextFlag?: boolean
theCurrentTime: boolean
}
const props = withDefaults(defineProps<Props>(), {
nextFlag:false
nextFlag: false,
theCurrentTime: false
})
const interval = ref(3)
@@ -407,7 +408,7 @@ const setTime = (flag = 0, e = 0) => {
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')
} else {
data = window.XEUtils.toDateString(new Date().getTime() - e * 3600 * 1000 * 24, 'yyyy-MM-dd')

View File

@@ -10,7 +10,7 @@
:inline="true"
>
<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 label="区域" v-if="area">
@@ -61,14 +61,16 @@ interface Props {
datePicker?: boolean
area?: boolean
showSearch?: boolean
nextFlag?: boolean
nextFlag?: boolean //控制时间是否可以往后推
theCurrentTime?: boolean //控制时间前3天展示上个月时间
}
const props = withDefaults(defineProps<Props>(), {
datePicker: false,
area: false,
showSearch: true,
nextFlag: false
nextFlag: false,
theCurrentTime: false
})
// 动态计算table高度
const resizeObserver = new ResizeObserver(entries => {

View File

@@ -1,7 +1,7 @@
<template>
<div class="panorama" :style="height">
<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-item>
<Area

View File

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

View File

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

View File

@@ -47,6 +47,12 @@
{{ detailData?.problemDetail }}
</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-icon class="elView" v-if="detailData?.testReportName">
<View @click="openFile(detailData?.testReportName)" />
@@ -102,6 +108,10 @@ const getFileData = async () => {
detailData.value.testReport = res.data.url
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) => {

View File

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

View File

@@ -21,6 +21,15 @@
/>
</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-icon class="elView" v-if="problemDetail?.problemName">
<View @click="openFile(problemDetail?.problemName)" />
@@ -97,11 +106,16 @@ const form = ref({
})
//附件是否显示
const showFile = ref(false)
const showFile1 = ref(false)
const problemDetail = reactive({
problemPath: '',
problemName: ''
})
const supervisionReportDetail = reactive({
supervisionReportPath: '',
supervisionReportName: ''
})
//处理成效报告
const reportFilePath: any = ref('')
@@ -123,6 +137,7 @@ const open = async (
status: any,
issueDetail: string,
problemPath?: string,
supervisionReport?: string,
reformAdvice?: string,
takeStep?: string,
reportPath?: string
@@ -158,6 +173,17 @@ const open = async (
} else {
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
}