保修前端代码

This commit is contained in:
shaoleiliu-netizen123 2026-07-31 09:51:41 +08:00
parent 7bdda83d45
commit fa3a7599d0
9 changed files with 160 additions and 380 deletions

View File

@ -1,82 +0,0 @@
import { request } from '@/utils/request'
// 让步接收申请表 类型定义
export interface ConcessionApply {
id?: number
qcId?: number
concessionQty?: number
applyRemark?: string
applyContent?: string
applyFile?: string
applyUserId?: number
deptId?: number
instanceId?: string
approveStatus?: number
createTime?: string
updateTime?: string
}
// 让步接收申请表 API
export const concessionApplyApi = {
// 分页查询
page(params: { page: number; pageSize: number; id?: number }) {
return request({ url: '/biz/concessionApply/page', method: 'get', params })
},
// 获取详情
detail(id: string) {
return request({ url: `/biz/concessionApply/${id}`, method: 'get' })
},
// 新增
create(data: ConcessionApply) {
return request({ url: '/biz/concessionApply', method: 'post', data })
},
// 修改
update(data: ConcessionApply) {
return request({ url: '/biz/concessionApply', method: 'put', data })
},
// 删除
delete(ids: string[]) {
return request({ url: `/biz/concessionApply/${ids.join(',')}`, method: 'delete' })
},
// 导出
export(params?: { ids?: string[]; id?: number }) {
const p: Record<string, any> = {}
if (params?.ids?.length) p.ids = params.ids.join(',')
if (params?.id !== undefined && params?.id !== null) p.id = params.id
return request({ url: `/biz/concessionApply/export`, method: 'get', params: p, responseType: 'blob' })
},
// 导入
importData(file: File) {
const formData = new FormData()
formData.append('file', file)
return request<{ success: number; fail: number; errors: string[] }>({
url: `/biz/concessionApply/import`,
method: 'post',
data: formData,
headers: { 'Content-Type': 'multipart/form-data' }
})
},
// 下载导入模板
downloadTemplate() {
return request({ url: `/biz/concessionApply/template`, method: 'get', responseType: 'blob' })
}
}

View File

@ -1,80 +0,0 @@
import { request } from '@/utils/request'
// MES设备维修保养记录表 类型定义
export interface MaintenanceRecord {
recordId?: string
equipmentId?: string
recordType?: string
itemContent?: string
handleContent?: string
executorId?: number
startTime?: string
endTime?: string
recordStatus?: string
createTime?: string
updateTime?: string
}
// MES设备维修保养记录表 API
export const maintenanceRecordApi = {
// 分页查询
page(params: { page: number; pageSize: number; recordId?: string }) {
return request({ url: '/biz/maintenanceRecord/page', method: 'get', params })
},
// 获取详情
detail(recordId: string) {
return request({ url: `/biz/maintenanceRecord/${recordId}`, method: 'get' })
},
// 新增
create(data: MaintenanceRecord) {
return request({ url: '/biz/maintenanceRecord', method: 'post', data })
},
// 修改
update(data: MaintenanceRecord) {
return request({ url: '/biz/maintenanceRecord', method: 'put', data })
},
// 删除
delete(recordIds: string[]) {
return request({ url: `/biz/maintenanceRecord/${recordIds.join(',')}`, method: 'delete' })
},
// 导出
export(params?: { ids?: string[]; recordId?: string }) {
const p: Record<string, any> = {}
if (params?.ids?.length) p.ids = params.ids.join(',')
if (params?.recordId !== undefined && params?.recordId !== null) p.recordId = params.recordId
return request({ url: `/biz/maintenanceRecord/export`, method: 'get', params: p, responseType: 'blob' })
},
// 导入
importData(file: File) {
const formData = new FormData()
formData.append('file', file)
return request<{ success: number; fail: number; errors: string[] }>({
url: `/biz/maintenanceRecord/import`,
method: 'post',
data: formData,
headers: { 'Content-Type': 'multipart/form-data' }
})
},
// 下载导入模板
downloadTemplate() {
return request({ url: `/biz/maintenanceRecord/template`, method: 'get', responseType: 'blob' })
}
}

View File

@ -1,100 +0,0 @@
import { request } from '@/utils/request'
// 委外记录表 类型定义
export interface Outsourcing {
id?: number
name?: string
code?: string
businessType?: number
businessId?: number
businessCode?: string
orderItemId?: number
quantity?: number
supplierId?: number
supplierName?: string
unitPrice?: string
totalAmount?: string
beginPreparationTime?: string
endPreparationTime?: string
beginTime?: string
endTime?: string
remark?: string
createTime?: string
createBy?: string
overdue?: number
}
// 委外记录表 API
export const outsourcingApi = {
// 分页查询
page(params: { page: number; pageSize: number; id?: number; name?: string; businessType?: number }) {
return request({ url: '/biz/outsourcing/page', method: 'get', params })
},
// 获取详情
detail(id: string) {
return request({ url: `/biz/outsourcing/${id}`, method: 'get' })
},
// 新增
create(data: Outsourcing) {
return request({ url: '/biz/outsourcing', method: 'post', data })
},
// 修改
update(data: Outsourcing) {
return request({ url: '/biz/outsourcing', method: 'put', data })
},
// 删除
delete(ids: string[]) {
return request({ url: `/biz/outsourcing/${ids.join(',')}`, method: 'delete' })
},
// 导出
export(params?: { ids?: string[]; id?: number; name?: string; businessType?: number }) {
const p: Record<string, any> = {}
if (params?.ids?.length) p.ids = params.ids.join(',')
if (params?.id !== undefined && params?.id !== null) p.id = params.id
if (params?.name !== undefined && params?.name !== null) p.name = params.name
if (params?.businessType !== undefined && params?.businessType !== null) p.businessType = params.businessType
return request({ url: `/biz/outsourcing/export`, method: 'get', params: p, responseType: 'blob' })
},
// 导入
importData(file: File) {
const formData = new FormData()
formData.append('file', file)
return request<{ success: number; fail: number; errors: string[] }>({
url: `/biz/outsourcing/import`,
method: 'post',
data: formData,
headers: { 'Content-Type': 'multipart/form-data' }
})
},
// 下载导入模板
downloadTemplate() {
return request({ url: `/biz/outsourcing/template`, method: 'get', responseType: 'blob' })
}
}

View File

@ -0,0 +1,71 @@
import { request } from '@/utils/request'
// 异常过滤表 类型定义
export interface ExceptionFilter {
id?: number
title?: string
filterCondition?: string
description?: string
status?: 0
deleted?: number
}
// 异常过滤表 API
export const exceptionFilterApi = {
// 分页查询
page(params: { page: number; pageSize: number; id?: number; status?: number }) {
return request({ url: '/biz/exceptionFilter/page', method: 'get', params })
},
// 获取详情
detail(id: string) {
return request({ url: `/biz/exceptionFilter/${id}`, method: 'get' })
},
// 新增
create(data: ExceptionFilter) {
return request({ url: '/biz/exceptionFilter', method: 'post', data })
},
// 修改
update(data: ExceptionFilter) {
return request({ url: '/biz/exceptionFilter', method: 'put', data })
},
// 删除
delete(ids: string[]) {
return request({ url: `/biz/exceptionFilter/${ids.join(',')}`, method: 'delete' })
},
// 导出
export(params?: { ids?: string[]; id?: number; status?: number }) {
const p: Record<string, any> = {}
if (params?.ids?.length) p.ids = params.ids.join(',')
if (params?.id !== undefined && params?.id !== null) p.id = params.id
if (params?.status !== undefined && params?.status !== null) p.status = params.status
return request({ url: `/biz/exceptionFilter/export`, method: 'get', params: p, responseType: 'blob' })
},
// 导入
importData(file: File) {
const formData = new FormData()
formData.append('file', file)
return request<{ success: number; fail: number; errors: string[] }>({
url: `/biz/exceptionFilter/import`,
method: 'post',
data: formData,
headers: { 'Content-Type': 'multipart/form-data' }
})
},
// 下载导入模板
downloadTemplate() {
return request({ url: `/biz/exceptionFilter/template`, method: 'get', responseType: 'blob' })
}
}

View File

@ -19,6 +19,7 @@ export interface SysNotice {
errorNotificationId?:number, errorNotificationId?:number,
filler?:number, filler?:number,
filingStatus?:number, filingStatus?:number,
deviceName?:string
} }
export interface NoticeChannelOption { export interface NoticeChannelOption {

View File

@ -2,7 +2,6 @@
import {onMounted, ref, watch} from "vue"; import {onMounted, ref, watch} from "vue";
import { Notifications } from '@vicons/ionicons5' import { Notifications } from '@vicons/ionicons5'
import { ErrorNotification } from '@/api/errorNotification.ts'
import {} from '@/api/system.ts' import {} from '@/api/system.ts'
import {noticeApi, SysNotice} from '@/api/message' import {noticeApi, SysNotice} from '@/api/message'
import type {FormInst} from "naive-ui"; import type {FormInst} from "naive-ui";
@ -12,7 +11,7 @@ const emit = defineEmits<{
const props = defineProps<{ const props = defineProps<{
show: boolean show: boolean
errorNotifiaction:ErrorNotification,
notice:SysNotice, notice:SysNotice,
}>() }>()
@ -72,7 +71,7 @@ watch(showModal, (val) => {
async function handleSubmit() { async function handleSubmit() {
try { try {
await formRef.value?.validate() await formRef.value?.validate()
formData.value.id = props.errorNotifiaction.noticeId formData.value.id = props.notice.id
formData.value.filingStatus = 1 formData.value.filingStatus = 1
// //
noticeApi.update({ noticeApi.update({
@ -114,7 +113,7 @@ async function handleSubmit() {
<template #1> <template #1>
<n-grid x-gap="12" :cols="1"> <n-grid x-gap="12" :cols="1">
<n-gi> <n-gi>
<h2>异常内容</h2> <h2>通知内容</h2>
</n-gi> </n-gi>
</n-grid> </n-grid>
<n-form <n-form
@ -122,21 +121,21 @@ async function handleSubmit() {
label-width="100" label-width="100"
style="margin: 10px" style="margin: 10px"
> >
<n-form-item label="异常名称" path="title"> <n-form-item label="通知标题" path="title">
<n-input <n-input
v-model:value="props.errorNotifiaction.title" v-model:value="props.notice.title"
disabled disabled
/> />
</n-form-item> </n-form-item>
<n-form-item label="异常设备" path="devices"> <n-form-item label="异常设备" path="title">
<n-input <n-input
v-model:value="props.errorNotifiaction.devices" v-model:value="props.notice.deviceName"
disabled disabled
/> />
</n-form-item> </n-form-item>
<n-form-item label="通知内容" path="notifierContent"> <n-form-item label="通知内容" path="notifierContent">
<n-input <n-input
v-model:value="errorNotifiaction.notifierContent" v-model:value="props.notice.content"
type="textarea" type="textarea"
disabled disabled
/> />
@ -172,7 +171,7 @@ async function handleSubmit() {
<div v-if="!isFili"> <div v-if="!isFili">
<n-grid x-gap="12" :cols="1"> <n-grid x-gap="12" :cols="1">
<n-gi> <n-gi>
<h2>异常内容</h2> <h2>通知内容</h2>
</n-gi> </n-gi>
</n-grid> </n-grid>
<n-form <n-form
@ -180,21 +179,21 @@ async function handleSubmit() {
label-width="100" label-width="100"
style="margin: 10px" style="margin: 10px"
> >
<n-form-item label="异常名称" path="title"> <n-form-item label="通知标题" path="title">
<n-input <n-input
v-model:value="props.errorNotifiaction.title" v-model:value="props.notice.title"
disabled disabled
/> />
</n-form-item> </n-form-item>
<n-form-item label="异常设备" path="devices"> <n-form-item label="异常设备" path="title">
<n-input <n-input
v-model:value="props.errorNotifiaction.devices" v-model:value="props.notice.deviceName"
disabled disabled
/> />
</n-form-item> </n-form-item>
<n-form-item label="通知内容" path="notifierContent"> <n-form-item label="通知内容" path="notifierContent">
<n-input <n-input
v-model:value="errorNotifiaction.notifierContent" v-model:value="props.notice.content"
type="textarea" type="textarea"
disabled disabled
/> />

View File

@ -609,22 +609,9 @@ function stripHtml(html: string | undefined): string {
} }
// //
//
const errorNotifiaction = ref({
title: '',
devices: '',
sendingMethodName: '',
notifierName: '',
notifierContent: ''
})
// //
const notice = ref<SysNotice>( {}) const notice = ref<SysNotice>( {})
async function handleNoticeClick(item: SysNotice) { async function handleNoticeClick(item: SysNotice) {
const res = await errorNotificationApi.detail(item.errorNotificationId);
errorNotifiaction.value = {...res}
errorNotifiaction.value.noticeId = item.id
notice.value = item notice.value = item
// //
showErrorReportModal.value = true showErrorReportModal.value = true

View File

@ -4,8 +4,11 @@
<!-- 搜索表单 --> <!-- 搜索表单 -->
<div class="search-form"> <div class="search-form">
<n-form inline :model="searchForm" label-placement="left"> <n-form inline :model="searchForm" label-placement="left">
<n-form-item label="主键id"> <n-form-item label="主键ID">
<n-input v-model:value="searchForm.id" placeholder="请输入主键id" clearable /> <n-input v-model:value="searchForm.id" placeholder="请输入主键ID" clearable />
</n-form-item>
<n-form-item label="状态">
<n-select v-model:value="searchForm.status" placeholder="请选择状态" clearable style="width: 150px" :options="statusOptions" />
</n-form-item> </n-form-item>
<n-form-item> <n-form-item>
<n-space> <n-space>
@ -61,29 +64,26 @@
<!-- 新增/编辑弹窗 --> <!-- 新增/编辑弹窗 -->
<n-modal v-model:show="modalVisible" preset="card" :title="modalTitle" style="width: 600px"> <n-modal v-model:show="modalVisible" preset="card" :title="modalTitle" style="width: 600px">
<n-form ref="formRef" :model="formData" :rules="formRules" label-placement="left" label-width="100px"> <n-form ref="formRef" :model="formData" :rules="formRules" label-placement="left" label-width="100px">
<n-form-item label="质检编号" path="qcId"> <n-form-item label="异常过滤标题" path="title">
<n-input v-model:value="formData.qcId" placeholder="请输入质检编号" /> <n-input v-model:value="formData.title" placeholder="请输入异常过滤标题" />
</n-form-item> </n-form-item>
<n-form-item label="让步接收数量" path="concessionQty"> <n-form-item label="过滤条件" path="filterCondition">
<n-input v-model:value="formData.concessionQty" placeholder="请输入让步接收数量" /> <n-input v-model:value="formData.filterCondition" type="textarea" placeholder="请输入过滤条件" />
</n-form-item> </n-form-item>
<n-form-item label="申请原因" path="applyRemark"> <n-form-item label="描述" path="description">
<n-input v-model:value="formData.applyRemark" type="textarea" placeholder="请输入申请原因" /> <n-input v-model:value="formData.description" type="textarea" placeholder="请输入描述" />
</n-form-item> </n-form-item>
<n-form-item label="申请内容" path="applyContent"> <n-form-item label="状态">
<n-input v-model:value="formData.applyContent" type="textarea" placeholder="请输入申请内容" /> <n-radio-group v-model:value="formData.status" :default-value="0" >
</n-form-item> <n-space>
<n-form-item label="申请人id(发去人id)" path="applyUserId"> <n-radio :value="1">
<n-input v-model:value="formData.applyUserId" placeholder="请输入申请人id(发去人id)" /> 启用
</n-form-item> </n-radio>
<n-form-item label="部门id" path="deptId"> <n-radio :value="0">
<n-input v-model:value="formData.deptId" placeholder="请输入部门id" /> 禁用
</n-form-item> </n-radio>
<n-form-item label="钉钉单据id" path="instanceId"> </n-space>
<n-input v-model:value="formData.instanceId" placeholder="请输入钉钉单据id" /> </n-radio-group>
</n-form-item>
<n-form-item label="审批状态 1待审批 2审批通过 3 审批驳回" path="approveStatus">
<n-select v-model:value="formData.approveStatus" placeholder="请选择审批状态 1待审批 2审批通过 3 审批驳回" :options="approveStatusOptions" />
</n-form-item> </n-form-item>
</n-form> </n-form>
<template #footer> <template #footer>
@ -95,7 +95,7 @@
</n-modal> </n-modal>
<!-- 导入弹窗 --> <!-- 导入弹窗 -->
<n-modal v-model:show="importModalVisible" preset="card" title="导入让步接收申请表" style="width: 500px"> <n-modal v-model:show="importModalVisible" preset="card" title="导入异常过滤表" style="width: 500px">
<n-space vertical> <n-space vertical>
<n-alert type="info"> <n-alert type="info">
<template #header>导入说明</template> <template #header>导入说明</template>
@ -131,7 +131,7 @@
import { ref, reactive, h, onMounted } from 'vue' import { ref, reactive, h, onMounted } from 'vue'
import { NButton, NSpace, NIcon, NUpload, useMessage, useDialog, type DataTableColumns, type UploadCustomRequestOptions } from 'naive-ui' import { NButton, NSpace, NIcon, NUpload, useMessage, useDialog, type DataTableColumns, type UploadCustomRequestOptions } from 'naive-ui'
import { SearchOutline, RefreshOutline, AddOutline, TrashOutline, CreateOutline, CloudUploadOutline, DownloadOutline } from '@vicons/ionicons5' import { SearchOutline, RefreshOutline, AddOutline, TrashOutline, CreateOutline, CloudUploadOutline, DownloadOutline } from '@vicons/ionicons5'
import { concessionApplyApi, type ConcessionApply } from '@/api/concessionApply' import { exceptionFilterApi, type ExceptionFilter } from '@/api/exceptionFilter'
import { dictDataApi } from '@/api/org' import { dictDataApi } from '@/api/org'
const message = useMessage() const message = useMessage()
@ -140,10 +140,11 @@ const dialog = useDialog()
// //
const searchForm = reactive({ const searchForm = reactive({
id: null as number | null, id: null as number | null,
status: null as number | null,
}) })
// //
const tableData = ref<ConcessionApply[]>([]) const tableData = ref<ExceptionFilter[]>([])
const loading = ref(false) const loading = ref(false)
const selectedIds = ref<number[]>([]) const selectedIds = ref<number[]>([])
const pagination = reactive({ const pagination = reactive({
@ -159,47 +160,35 @@ const modalVisible = ref(false)
const modalTitle = ref('') const modalTitle = ref('')
const importModalVisible = ref(false) const importModalVisible = ref(false)
const formRef = ref() const formRef = ref()
const defaultFormData: ConcessionApply = { const defaultFormData: ExceptionFilter = {
qcId: undefined, title: '',
concessionQty: undefined, filterCondition: '',
applyRemark: '', description: '',
applyContent: '', status: undefined,
applyFile: '',
applyUserId: undefined,
deptId: undefined,
instanceId: '',
approveStatus: undefined,
} }
const formData = reactive<ConcessionApply>({ ...defaultFormData }) const formData = reactive<ExceptionFilter>({ ...defaultFormData })
// //使 // //使
const approveStatusOptions = ref<{ label: string; value: any }[]>([]) const statusOptions = ref<{ label: string; value: any }[]>([])
// //
const formRules = { const formRules = {
} }
// //
const columns: DataTableColumns<ConcessionApply> = [ const columns: DataTableColumns<ExceptionFilter> = [
{ type: 'selection' }, { type: 'selection' },
{ title: '主键id', key: 'id' }, { title: '主键ID', key: 'id' },
{ title: '质检编号', key: 'qcId' }, { title: '异常过滤标题', key: 'title' },
{ title: '让步接收数量', key: 'concessionQty' }, { title: '过滤条件', key: 'filterCondition' },
{ title: '申请原因', key: 'applyRemark' }, { title: '描述', key: 'description' },
{ title: '申请内容', key: 'applyContent' }, { title: '状态', key: 'status',
{ title: '申请附件', key: 'applyFile' },
{ title: '申请人id(发去人id)', key: 'applyUserId' },
{ title: '部门id', key: 'deptId' },
{ title: '钉钉单据id', key: 'instanceId' },
{ title: '审批状态 1待审批 2审批通过 3 审批驳回', key: 'approveStatus',
render(row) { render(row) {
const val = row.approveStatus const val = row.status
const opt = approveStatusOptions.value.find(o => o.value === val || String(o.value) === String(val)) const opt = statusOptions.value.find(o => o.value === val || String(o.value) === String(val))
return opt ? opt.label : (val ?? '-') return opt ? opt.label : (val ?? '-')
} }
}, },
{ title: '创建时间', key: 'createTime', width: 180 },
{ title: '更新时间', key: 'updateTime', width: 180 },
{ {
title: '操作', title: '操作',
key: 'actions', key: 'actions',
@ -222,10 +211,11 @@ const columns: DataTableColumns<ConcessionApply> = [
async function loadData() { async function loadData() {
loading.value = true loading.value = true
try { try {
const res = await concessionApplyApi.page({ const res = await exceptionFilterApi.page({
page: pagination.page, page: pagination.page,
pageSize: pagination.pageSize, pageSize: pagination.pageSize,
id: searchForm.id || undefined, id: searchForm.id || undefined,
status: searchForm.status || undefined,
}) })
tableData.value = res.list tableData.value = res.list
pagination.itemCount = res.total pagination.itemCount = res.total
@ -244,6 +234,8 @@ function handleSearch() {
function handleReset() { function handleReset() {
searchForm.id = null searchForm.id = null
searchForm.status = null
handleSearch() handleSearch()
} }
@ -266,21 +258,15 @@ function handleCheck(keys: Array<string | number>) {
// //
function handleAdd() { function handleAdd() {
modalTitle.value = '新增让步接收申请表' modalTitle.value = '新增异常过滤表'
Object.assign(formData, defaultFormData) Object.assign(formData, defaultFormData)
modalVisible.value = true modalVisible.value = true
} }
// //
function handleEdit(row: ConcessionApply) { function handleEdit(row: ExceptionFilter) {
modalTitle.value = '编辑让步接收申请表' modalTitle.value = '编辑异常过滤表'
Object.assign(formData, row) Object.assign(formData, row)
if (formData.createTime && typeof formData.createTime === 'string') {
formData.createTime = new Date(formData.createTime.replace(' ', 'T')).getTime()
}
if (formData.updateTime && typeof formData.updateTime === 'string') {
formData.updateTime = new Date(formData.updateTime.replace(' ', 'T')).getTime()
}
modalVisible.value = true modalVisible.value = true
} }
@ -288,18 +274,12 @@ function handleEdit(row: ConcessionApply) {
async function handleSubmit() { async function handleSubmit() {
await formRef.value?.validate() await formRef.value?.validate()
try { try {
const submitData = { ...formData } as ConcessionApply const submitData = { ...formData } as ExceptionFilter
if (typeof submitData.createTime === 'number') {
submitData.createTime = new Date(submitData.createTime).toISOString().slice(0, 19).replace('T', ' ')
}
if (typeof submitData.updateTime === 'number') {
submitData.updateTime = new Date(submitData.updateTime).toISOString().slice(0, 19).replace('T', ' ')
}
if (submitData.id) { if (submitData.id) {
await concessionApplyApi.update(submitData) await exceptionFilterApi.update(submitData)
message.success('修改成功') message.success('修改成功')
} else { } else {
await concessionApplyApi.create(submitData) await exceptionFilterApi.create(submitData)
message.success('新增成功') message.success('新增成功')
} }
modalVisible.value = false modalVisible.value = false
@ -310,7 +290,7 @@ async function handleSubmit() {
} }
// //
function handleDelete(row: ConcessionApply) { function handleDelete(row: ExceptionFilter) {
dialog.warning({ dialog.warning({
title: '提示', title: '提示',
content: '确定要删除该记录吗?', content: '确定要删除该记录吗?',
@ -318,7 +298,7 @@ function handleDelete(row: ConcessionApply) {
negativeText: '取消', negativeText: '取消',
onPositiveClick: async () => { onPositiveClick: async () => {
try { try {
await concessionApplyApi.delete([row.id!]) await exceptionFilterApi.delete([row.id!])
message.success('删除成功') message.success('删除成功')
loadData() loadData()
} catch (error) { } catch (error) {
@ -337,7 +317,7 @@ function handleBatchDelete() {
negativeText: '取消', negativeText: '取消',
onPositiveClick: async () => { onPositiveClick: async () => {
try { try {
await concessionApplyApi.delete(selectedIds.value) await exceptionFilterApi.delete(selectedIds.value)
message.success('删除成功') message.success('删除成功')
selectedIds.value = [] selectedIds.value = []
loadData() loadData()
@ -354,11 +334,12 @@ async function handleExport() {
const params: Record<string, any> = {} const params: Record<string, any> = {}
if (selectedIds.value.length > 0) params.ids = selectedIds.value if (selectedIds.value.length > 0) params.ids = selectedIds.value
if (searchForm.id != null) params.id = searchForm.id if (searchForm.id != null) params.id = searchForm.id
const blob = await concessionApplyApi.export(params) if (searchForm.status != null) params.status = searchForm.status
const blob = await exceptionFilterApi.export(params)
const url = window.URL.createObjectURL(blob) const url = window.URL.createObjectURL(blob)
const link = document.createElement('a') const link = document.createElement('a')
link.href = url link.href = url
link.download = '让步接收申请表数据.xlsx' link.download = '异常过滤表数据.xlsx'
link.click() link.click()
window.URL.revokeObjectURL(url) window.URL.revokeObjectURL(url)
} catch (error) { } catch (error) {
@ -369,11 +350,11 @@ async function handleExport() {
// //
async function handleDownloadTemplate() { async function handleDownloadTemplate() {
try { try {
const blob = await concessionApplyApi.downloadTemplate() const blob = await exceptionFilterApi.downloadTemplate()
const url = window.URL.createObjectURL(blob) const url = window.URL.createObjectURL(blob)
const link = document.createElement('a') const link = document.createElement('a')
link.href = url link.href = url
link.download = '让步接收申请表导入模板.xlsx' link.download = '异常过滤表导入模板.xlsx'
link.click() link.click()
window.URL.revokeObjectURL(url) window.URL.revokeObjectURL(url)
} catch (error) { } catch (error) {
@ -385,7 +366,7 @@ async function handleDownloadTemplate() {
async function handleImportUpload({ file }: UploadCustomRequestOptions) { async function handleImportUpload({ file }: UploadCustomRequestOptions) {
if (!file.file) return if (!file.file) return
try { try {
const result = await concessionApplyApi.importData(file.file) const result = await exceptionFilterApi.importData(file.file)
if (result.fail > 0) { if (result.fail > 0) {
dialog.warning({ dialog.warning({
title: '导入结果', title: '导入结果',
@ -406,7 +387,7 @@ async function handleImportUpload({ file }: UploadCustomRequestOptions) {
async function loadDictOptions() { async function loadDictOptions() {
try { try {
const data = await dictDataApi.listByType('sys_status') const data = await dictDataApi.listByType('sys_status')
approveStatusOptions.value = data.map(d => ({ label: d.dictLabel, value: (Number(d.dictValue) || d.dictValue) })) statusOptions.value = data.map(d => ({ label: d.dictLabel, value: (Number(d.dictValue) || d.dictValue) }))
} catch {} } catch {}
} }

View File

@ -311,7 +311,7 @@ const defaultFormData: QcItem = {
plans: '', plans: '',
description: '', description: '',
createby: undefined, createby: undefined,
status:undefined status:0
} }
const formData = reactive<QcItem>({ ...defaultFormData }) const formData = reactive<QcItem>({ ...defaultFormData })
@ -319,6 +319,8 @@ const formData = reactive<QcItem>({ ...defaultFormData })
// //
const formRules = { const formRules = {
name: [{ required: true, message: '请输入质检项名称', trigger: 'blur' }],
spec: [{ required: true, message: '请输入质检项规格', trigger: 'blur' }],
} }
// //
@ -497,15 +499,16 @@ async function handleSubmit() {
if (typeof submitData.updateTime === 'number') { if (typeof submitData.updateTime === 'number') {
submitData.updateTime = new Date(submitData.updateTime).toISOString().slice(0, 19).replace('T', ' ') submitData.updateTime = new Date(submitData.updateTime).toISOString().slice(0, 19).replace('T', ' ')
} }
if (submitData.id) { console.log(submitData)
await qcItemApi.update(submitData) // if (submitData.id) {
message.success('修改成功') // await qcItemApi.update(submitData)
} else { // message.success('')
await qcItemApi.create(submitData) // } else {
message.success('新增成功') // await qcItemApi.create(submitData)
} // message.success('')
modalVisible.value = false // }
loadData() // modalVisible.value = false
// loadData()
} catch (error) { } catch (error) {
// //
} }