You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
952 lines
26 KiB
952 lines
26 KiB
<template>
|
|
<div>
|
|
<el-drawer
|
|
v-model="isShowDrawer"
|
|
title="详情"
|
|
direction="rtl"
|
|
size="80%"
|
|
v-loading="detailLoading"
|
|
>
|
|
<template #header>
|
|
<div class="font-size-18px">
|
|
{{ titleValueRef }} <span class="ml-20px font-size-16px">{{ titleNameRef }}</span>
|
|
</div>
|
|
</template>
|
|
<ContentWrap>
|
|
<Descriptions
|
|
:data="detailData"
|
|
labelClassName="label-class-name"
|
|
label-align="left"
|
|
direction="vertical"
|
|
:column="8"
|
|
:schema="allSchemas.detailSchema"
|
|
:columns="2"
|
|
width="200px"
|
|
/>
|
|
</ContentWrap>
|
|
|
|
<Tabs :tabsList="tabsList" :current="current" @change="change" :key="tabsKay" />
|
|
<div class="flex">
|
|
<!-- 详情 -->
|
|
<ContentWrap class="w-[100%]">
|
|
<!-- 列表头部 -->
|
|
<TableHead
|
|
v-if="!isBasic"
|
|
:HeadButttondata="HeadButttondata"
|
|
:number="masterParmas.number"
|
|
@button-base-click="buttonBaseClick"
|
|
:routeName="routeName"
|
|
@searchFormClick="searchFormClick"
|
|
:allSchemas="detailAllSchemas"
|
|
/>
|
|
<div v-if="isBasic && tabsExtend == 1">
|
|
<el-form ref="imageFormRef" :model="imageFormData" :key="formKey">
|
|
<el-form-item label="文件上传">
|
|
<UploadImgs v-model="imageFormData.filePathList" />
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-button type="primary" @click="uploadImage">点击修改</el-button>
|
|
</div>
|
|
<div v-if="isBasic && tabsExtend == 2">
|
|
<el-tabs class="demo-tabs" v-model="imageParmas.fileBusiType" @tab-change="handleTabsChange">
|
|
<el-tab-pane
|
|
v-for="item in subTabsList"
|
|
:key="item.value"
|
|
:label="item.label"
|
|
:name="item.value"
|
|
/>
|
|
</el-tabs>
|
|
<el-form ref="fileFormRef" :model="fileFormData" :key="formKey">
|
|
<el-form-item label="文件上传">
|
|
<UploadFile v-model="fileFormData.filePathList" :limit="20" />
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-button type="primary" @click="uploadFile">点击修改</el-button>
|
|
</div>
|
|
<!-- 单表切换tabs 展现table -->
|
|
<Table
|
|
v-if="isBasic && tabsExtend == 3"
|
|
:columns="detailAllSchemasRef.tableColumns.filter(column => column.field !== 'action')"
|
|
:data="tableObjectRef.tableList"
|
|
:loading="tableObjectRef.loading"
|
|
:pagination="{ total: tableObjectRef.total }"
|
|
v-model:pageSize="tableObjectRef.pageSize"
|
|
v-model:currentPage="tableObjectRef.currentPage"
|
|
>
|
|
<template #number="{ row }">
|
|
<el-button type="primary" link @click="openDialog(row, '编号', row.number)">
|
|
<span>{{ row.number }}</span>
|
|
</el-button>
|
|
</template>
|
|
</Table>
|
|
<!-- 单表切换tabs 展现table -->
|
|
<Table
|
|
v-if="isBasic && tabsExtend == 4"
|
|
:columns="detailAllSchemasRef.tableColumns.filter(column => column.field !== 'action')"
|
|
:data="tableObjectRef.tableList"
|
|
:loading="tableObjectRef.loading"
|
|
:pagination="{ total: tableObjectRef.total }"
|
|
v-model:pageSize="tableObjectRef.pageSize"
|
|
v-model:currentPage="tableObjectRef.currentPage"
|
|
>
|
|
<template #itemNumbers="{ row }">
|
|
<el-button type="primary" link @click="openDialog(row, '编号', row.number)">
|
|
<span>{{ row.itemNumbers }}</span>
|
|
</el-button>
|
|
</template>
|
|
</Table>
|
|
<!-- 单表切换tabs 展现table -->
|
|
<Table
|
|
v-if="isBasic && tabsExtend == 5"
|
|
:columns="detailAllSchemasRef.tableColumns"
|
|
:data="tableObjectRef.tableList"
|
|
:loading="tableObjectRef.loading"
|
|
:pagination="{ total: tableObjectRef.total }"
|
|
v-model:pageSize="tableObjectRef.pageSize"
|
|
v-model:currentPage="tableObjectRef.currentPage"
|
|
:key="milestoneUpdateKey"
|
|
>
|
|
<template #action="{ row }">
|
|
<ButtonBase :Butttondata="butttondata" @button-base-click="buttonMilestoneClick($event, row)" />
|
|
</template>
|
|
</Table>
|
|
<Table
|
|
v-if="!isBasic && fromeWhere != 'countPlan'"
|
|
:columns="detailAllSchemasRef.tableColumns"
|
|
:data="tableObjectRef.tableList"
|
|
:loading="tableObjectRef.loading"
|
|
:pagination="{ total: tableObjectRef.total }"
|
|
v-model:pageSize="tableObjectRef.pageSize"
|
|
v-model:currentPage="tableObjectRef.currentPage"
|
|
>
|
|
<template #photos="{ row }">
|
|
<div
|
|
v-for="(item, index) in row.photos.split(',')"
|
|
:key="index"
|
|
style="color: #409eff; cursor: pointer"
|
|
@click="openImage(item)"
|
|
>{{ item }}</div
|
|
>
|
|
</template>
|
|
<template #action="{ row }">
|
|
<ButtonBase
|
|
:Butttondata="buttondata"
|
|
@button-base-click="buttonTableClick($event, row)"
|
|
/>
|
|
</template>
|
|
</Table>
|
|
<DetailTable
|
|
v-if="!isBasic && fromeWhere == 'countPlan' && isShowDrawer"
|
|
:columns="detailAllSchemasRef.tableColumns"
|
|
:data="tableObjectRef.tableList"
|
|
:allList="allList"
|
|
:countScopeType="countScopeType"
|
|
:key="updateKey"
|
|
>
|
|
<template #action="{ row }">
|
|
<ButtonBase
|
|
:Butttondata="buttondata"
|
|
@button-base-click="buttonTableClick($event, row)"
|
|
/>
|
|
</template>
|
|
</DetailTable>
|
|
</ContentWrap>
|
|
</div>
|
|
</el-drawer>
|
|
<!-- 表单弹窗:添加/修改 -->
|
|
<BasicForm
|
|
ref="formRef"
|
|
@success="submitForm"
|
|
:rules="detailAllSchemasRules"
|
|
:formAllSchemas="detailAllSchemas"
|
|
:isBusiness="false"
|
|
:apiUpdate="apiUpdate"
|
|
:apiCreate="apiCreate"
|
|
:fromeWhere="fromeWhere"
|
|
:isDetail="true"
|
|
@searchTableSuccess="searchTableSuccess"
|
|
:detailData="detailData"
|
|
@submitForm="submitForm"
|
|
@selectChangeDetail="selectChangeDetail"
|
|
:formTypeDetail="formTypeDetail"
|
|
:countPlanAllList="countPlanAllList"
|
|
/>
|
|
<Dialog
|
|
:title="dialogTitle"
|
|
v-model="dialogVisible"
|
|
:width="600"
|
|
:maxHeight="900"
|
|
:style="{height:'600px'}"
|
|
>
|
|
<Table
|
|
v-if="true"
|
|
:columns="dialogAllSchemasRef.tableColumns.filter(column => column.field !== 'action')"
|
|
:data="dialogTableObjectRef.tableList"
|
|
:loading="dialogTableObjectRef.loading"
|
|
:pagination="{ total: dialogTableObjectRef.total }"
|
|
v-model:pageSize="dialogTableObjectRef.pageSize"
|
|
v-model:currentPage="dialogTableObjectRef.currentPage"
|
|
/>
|
|
</Dialog>
|
|
<Dialog
|
|
:title="dialogUploadTitle"
|
|
v-model="dialogUploadVisible"
|
|
:width="600"
|
|
:maxHeight="900"
|
|
:style="{height:'600px'}"
|
|
>
|
|
<el-form ref="fileDialogUploadRef" :model="fileDialogUploadData" :key="dialogFormKey">
|
|
<el-form-item label="文件上传">
|
|
<UploadFile v-model="fileDialogUploadData.filePathList" :limit="20" />
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-button type="primary" @click="dialogUploadFile">点击修改</el-button>
|
|
</Dialog>
|
|
<!-- dialog表单弹窗:添加/修改 -->
|
|
<BasicForm
|
|
ref="dialogFormRef"
|
|
@success="submitDialogForm"
|
|
:rules="dialogFormAllSchemasRules"
|
|
:formAllSchemas="dialogFormAllSchemas"
|
|
:isBusiness="false"
|
|
/>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import Tabs from '@/components/Tabs/src/Tabs.vue'
|
|
import * as defaultButtons from '@/utils/disposition/defaultButtons'
|
|
import BasicForm from '@/components/BasicForm/src/BasicForm.vue'
|
|
import TableHead from '@/components/TableHead/src/TableHead.vue'
|
|
import DetailTable from '@/components/DetailTable/src/DetailTable.vue'
|
|
|
|
defineOptions({ name: 'Detail' })
|
|
|
|
const message = useMessage() // 消息弹窗
|
|
const { t } = useI18n() // 国际化
|
|
|
|
const route = useRoute() // 路由信息
|
|
const routeName = ref()
|
|
routeName.value = route.name
|
|
routeName.value = routeName.value.substring(0, routeName.value.length - 4) + 'Detail'
|
|
const updateKey = ref(0)
|
|
const dialogVisible = ref(false)
|
|
const dialogTitle = ref()
|
|
const dialogAllSchemasRef = ref()
|
|
const dialogTableObjectRef = ref()
|
|
const dialogTableMethodsRef = ref()
|
|
const dialogUploadTitle = ref('文件上传')
|
|
const dialogUploadVisible = ref(false)
|
|
const dialogUploadNumber = ref()
|
|
const dialogUploadBusiCode = ref()
|
|
const dialogFormKey = ref(0)
|
|
const milestoneUpdateKey = ref(0)
|
|
const props = defineProps({
|
|
// 标签参数
|
|
tabs: {
|
|
type: Object,
|
|
required: true,
|
|
default: null
|
|
},
|
|
// 标签参数
|
|
subTabs: {
|
|
type: Object,
|
|
required: true,
|
|
default: null
|
|
},
|
|
// 是否是基础数据 展现详情顶部表单
|
|
isBasic: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false
|
|
},
|
|
// 表单,列表 相关信息
|
|
allSchemas: {
|
|
type: Object,
|
|
required: true,
|
|
default: null
|
|
},
|
|
// 明细列表相关信息
|
|
detailAllSchemas: {
|
|
type: Object,
|
|
required: true,
|
|
default: null
|
|
},
|
|
// 明细验证
|
|
detailAllSchemasRules: {
|
|
type: Object,
|
|
required: true,
|
|
default: null
|
|
},
|
|
// 子表新增API
|
|
apiCreate: {
|
|
type: Function,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 子表编辑API
|
|
apiUpdate: {
|
|
type: Function,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 子表分页列表API
|
|
apiPage: {
|
|
type: Function,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 子表删除API
|
|
apiDelete: {
|
|
type: Function,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 子表新增修改校验
|
|
detailValidate: {
|
|
type: Function,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 来源 countPlan盘点计划进入
|
|
fromeWhere: {
|
|
type: String,
|
|
required: false,
|
|
default: ''
|
|
},
|
|
// 获取接口列表集合
|
|
allList: {
|
|
type: Object,
|
|
required: true,
|
|
default: null
|
|
},
|
|
// 盘点范围类型
|
|
countScopeType: {
|
|
type: Array,
|
|
required: false,
|
|
default: null
|
|
},
|
|
//盘点详情子表新增的时候判断盘点范围值显示输入框还是下拉框
|
|
formTypeDetail: {
|
|
type: String,
|
|
required: false,
|
|
default: 'InputString'
|
|
},
|
|
//盘点详情子表新增的时候判断盘点范围值的下拉列表
|
|
countPlanAllList: {
|
|
type: Array,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 详情列表扩展操作按钮
|
|
buttondataTable: {
|
|
type: Array,
|
|
required: false,
|
|
default: () => {
|
|
return []
|
|
}
|
|
},
|
|
// 针对基础数据tabs扩展 显示table列表 默认false
|
|
tabsExtend: {
|
|
type: Number,
|
|
required: false,
|
|
default: 1
|
|
},
|
|
tabName: {
|
|
type: String,
|
|
required: false,
|
|
default: ''
|
|
},
|
|
// tableObject 数据过滤条件 针对 详情扩展标签页 传入不同条件
|
|
tableObjectExtend: {
|
|
type: Array,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 子列表 新增 编辑 删除的展示与隐藏,默认展示
|
|
detailButtonIsShow: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false
|
|
},
|
|
// 详情上传文件
|
|
upFileRules: {
|
|
type: Array,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 获取图片详情方法
|
|
getImageApi: {
|
|
type: Function,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 上传图片方法
|
|
uploadImage: {
|
|
type: Function,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 默认参数
|
|
defaultParams: {
|
|
type: Object,
|
|
required: false,
|
|
default: null
|
|
},
|
|
//子表dialog的api
|
|
dialogApiPage: {
|
|
type: Function,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 子表dialog相关信息
|
|
dialogAllSchemas: {
|
|
type: Object,
|
|
required: false,
|
|
default: null
|
|
},
|
|
// 子表dialog校验信息
|
|
dialogAllSchemasRules: {
|
|
type: Object,
|
|
required: false,
|
|
default: null
|
|
},
|
|
dialogFormAllSchemas: {
|
|
type: Object,
|
|
required: false,
|
|
default: null
|
|
},
|
|
dialogFormAllSchemasRules: {
|
|
type: Object,
|
|
required: false,
|
|
default: null
|
|
},
|
|
diaLogApiUpdate: {
|
|
type: Function,
|
|
required: false,
|
|
default: null
|
|
},
|
|
diaLogApiCreate: {
|
|
type: Function,
|
|
required: false,
|
|
default: null
|
|
},
|
|
milestoneFuncCode: {
|
|
type: String,
|
|
required: false,
|
|
default: null
|
|
}
|
|
})
|
|
const imageFormData = ref({
|
|
filePathList: []
|
|
})
|
|
const fileFormData = ref({
|
|
filePathList: []
|
|
})
|
|
const fileDialogUploadData = ref({
|
|
filePathList: []
|
|
})
|
|
const subIndex = ref('A')
|
|
const isShowDrawer = ref(false)
|
|
const detailLoading = ref(false)
|
|
const tabsList = ref(JSON.parse(JSON.stringify(props.tabs ? props.tabs : '')))
|
|
const subTabsList = ref(JSON.parse(JSON.stringify(props.subTabs ? props.subTabs : '')))
|
|
|
|
|
|
// Tabs当前选择
|
|
const current = ref(0)
|
|
const imageParmas = ref({
|
|
funcCode: 'device_mould_picture', //获取图片详情参数
|
|
fileBusiType: '' //获取图片详情参数
|
|
})
|
|
const change = (item, index) => {
|
|
current.value = index
|
|
if (item.prop == 'Image') {
|
|
imageParmas.value.funcCode = 'device_mould_picture'
|
|
imageParmas.value.fileBusiType = ''
|
|
getImage()
|
|
} else if (item.prop == 'Word') {
|
|
imageParmas.value.funcCode = 'device_mould_attachment'
|
|
imageParmas.value.fileBusiType = 'A'
|
|
subIndex.value = 'A'
|
|
formKey.value += 1
|
|
getImage()
|
|
} else {
|
|
imageParmas.value.funcCode = ''
|
|
imageParmas.value.fileBusiType = ''
|
|
}
|
|
emit('changeTabs', item)
|
|
}
|
|
|
|
//主表所需的参数
|
|
const masterParmas = ref({
|
|
number: '' //主表id
|
|
})
|
|
|
|
// 列表头部按钮
|
|
const HeadButttondata = ref()
|
|
// 列表-操作按钮
|
|
const buttondata = ref()
|
|
/** 打开弹窗 */
|
|
const detailData = ref()
|
|
const titleNameRef = ref()
|
|
const titleValueRef = ref()
|
|
const tabsKay = ref(0) //刷新tabs组件key值
|
|
const openDetail = async (row: any, titleName: any, titleValue: any, tableName: any) => {
|
|
titleNameRef.value = titleName
|
|
titleValueRef.value = titleValue
|
|
current.value = 0
|
|
tabsKay.value += 1
|
|
// 加载明细列表
|
|
if (!props.isBasic || (props.isBasic && props.tabsExtend)) {
|
|
// 设置主表id
|
|
masterParmas.value.number = row.number
|
|
if (!props.isBasic) {
|
|
tableObjectRef.value.params = {
|
|
number: row.number
|
|
}
|
|
await getList()
|
|
}
|
|
}
|
|
isShowDrawer.value = true
|
|
|
|
imageParmas.value.funcCode = 'device_mould_picture'
|
|
|
|
if (row) {
|
|
detailLoading.value = true
|
|
try {
|
|
await getImage()
|
|
detailData.value = row
|
|
// 判断详情新增按钮是否显示
|
|
if (routeName.value.indexOf('Job') > -1) {
|
|
HeadButttondata.value = [
|
|
defaultButtons.defaultFilterBtn(null) // 筛选
|
|
]
|
|
} else {
|
|
if (!props.detailButtonIsShow) {
|
|
HeadButttondata.value = [
|
|
defaultButtons.defaultAddBtn({
|
|
hide: isShowMainButton(row, ['1'])
|
|
}), // 新增
|
|
defaultButtons.defaultFilterBtn(null) // 筛选
|
|
]
|
|
}
|
|
//盘点计划详情筛选
|
|
if (props.fromeWhere == 'countPlan') {
|
|
HeadButttondata.value = [
|
|
defaultButtons.defaultAddBtn({
|
|
hide: isShowMainButton(row, ['1'])
|
|
}) // 新增
|
|
]
|
|
}
|
|
//盘点计划详情筛选
|
|
if (props.fromeWhere == 'putawayRequest') {
|
|
HeadButttondata.value = [
|
|
defaultButtons.defaultFilterBtn(null) // 筛选
|
|
]
|
|
}
|
|
//盘点调整申请筛选
|
|
if (props.fromeWhere == 'countadjustRequest') {
|
|
HeadButttondata.value = [
|
|
defaultButtons.defaultFilterBtn(null) // 筛选
|
|
]
|
|
}
|
|
//采购收货详情筛选
|
|
if (props.fromeWhere == 'purchasereceipt') {
|
|
HeadButttondata.value = [
|
|
defaultButtons.defaultFilterBtn(null) // 筛选
|
|
]
|
|
}
|
|
//客户收货详情筛选
|
|
if (props.fromeWhere == 'customerreceipt') {
|
|
HeadButttondata.value = [
|
|
defaultButtons.defaultFilterBtn(null) // 筛选
|
|
]
|
|
}
|
|
}
|
|
|
|
// 动态显示操作列按钮
|
|
if (!props.detailButtonIsShow) {
|
|
buttondata.value = [
|
|
...[
|
|
defaultButtons.mainListEditBtn({
|
|
hide: isShowMainButton(row, ['1'])
|
|
}), // 编辑
|
|
defaultButtons.mainListDeleteBtn({
|
|
hide: isShowMainButton(row, ['1'])
|
|
})
|
|
], // 删除
|
|
...props.buttondataTable
|
|
]
|
|
}
|
|
} finally {
|
|
detailLoading.value = false
|
|
}
|
|
}
|
|
}
|
|
defineExpose({ openDetail }) // 提供 open 方法,用于打开弹窗
|
|
|
|
// 获取图片详情
|
|
const formKey = ref(0)
|
|
const getImage = () => {
|
|
props
|
|
.getImageApi({
|
|
number: masterParmas.value.number,
|
|
funcCode: imageParmas.value.funcCode,
|
|
fileBusiType: imageParmas.value.fileBusiType
|
|
})
|
|
.then((res) => {
|
|
nextTick(() => {
|
|
if (imageParmas.value.funcCode == 'device_mould_picture') {
|
|
imageFormData.value.filePathList = res
|
|
} else {
|
|
console.log(444,res)
|
|
fileFormData.value.filePathList = res
|
|
formKey.value += 1
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const tableObjectRef = ref()
|
|
const tableMethodsRef = ref()
|
|
const detailAllSchemasRef = ref()
|
|
|
|
const { tableObject, tableMethods } = useTable({
|
|
getListApi: props.apiPage, // 分页接口
|
|
})
|
|
|
|
tableObjectRef.value = tableObject
|
|
tableMethodsRef.value = tableMethods
|
|
detailAllSchemasRef.value = props.detailAllSchemas
|
|
|
|
// 根据状态返回该按钮是否显示
|
|
const isShowMainButton = (row, val) => {
|
|
if (val.indexOf(row.status) > -1) {
|
|
return false
|
|
} else {
|
|
return true
|
|
}
|
|
}
|
|
|
|
// 获得表格的各种操作
|
|
const { getList } = tableMethodsRef.value
|
|
|
|
// 头部按钮事件
|
|
const buttonBaseClick = (val, item) => {
|
|
if (val == 'add') {
|
|
// 新增
|
|
openForm('create')
|
|
} else if (val == 'import') {
|
|
// 导入
|
|
handleImport()
|
|
} else if (val == 'export') {
|
|
// 导出
|
|
handleExport()
|
|
} else if (val == 'refresh') {
|
|
// 刷新
|
|
getList()
|
|
} else if (val == 'filtrate') {
|
|
// 筛选
|
|
} else {
|
|
// 其他按钮
|
|
console.log('其他按钮', item)
|
|
}
|
|
}
|
|
|
|
// 字段设置 更新主列表字段
|
|
// const updataTableColumns = (val) => {
|
|
// detailAllSchemas.tableColumns.value = val
|
|
// }
|
|
|
|
// 列表-操作按钮事件
|
|
const buttonTableClick = async (val, row) => {
|
|
if (val == 'edit') {
|
|
// 编辑
|
|
openForm('update', row)
|
|
emit('detailOpenForm', row)
|
|
} else if (val == 'delete') {
|
|
// 删除
|
|
handleDelete(row.id)
|
|
} else {
|
|
emit('tableFormButton', val, row)
|
|
}
|
|
}
|
|
/** 添加/修改操作 */
|
|
const formRef = ref()
|
|
const openForm = async (type: string, row?: number) => {
|
|
formRef.value.open(type, row, masterParmas.value)
|
|
}
|
|
// form 提交
|
|
const submitForm = async (formType, data) => {
|
|
try {
|
|
// 子表新增编辑校验 如果业务需要子表提交校验 需在主页详情组件添加 detailValidate 参数及方法
|
|
const rs = (await props.detailValidate) ? props.detailValidate(data) : true
|
|
if (!rs) return
|
|
if (formType === 'create') {
|
|
await props.apiCreate(data)
|
|
message.success(t('common.createSuccess'))
|
|
} else {
|
|
await props.apiUpdate(data)
|
|
message.success(t('common.updateSuccess'))
|
|
}
|
|
formRef.value.dialogVisible = false
|
|
// 刷新当前列表
|
|
await getList()
|
|
updateKey.value += 1
|
|
} finally {
|
|
formRef.value.formLoading = false
|
|
}
|
|
}
|
|
|
|
// 查询页面返回
|
|
const searchTableSuccess = (formField, searchField, val, formRef) => {
|
|
emit('searchTableSuccessDetail', formField, searchField, val, formRef)
|
|
}
|
|
// 传递给父类
|
|
const emit = defineEmits([
|
|
'searchTableSuccessDetail',
|
|
'changeTabs',
|
|
'selectChangeDetail',
|
|
'detailOpenForm',
|
|
'tableFormButton',
|
|
'openImage',
|
|
'subTabsChick',
|
|
'milestoneOpenForm'
|
|
])
|
|
/** 删除按钮操作 */
|
|
const handleDelete = async (id: number) => {
|
|
try {
|
|
// 删除的二次确认
|
|
await message.delConfirm()
|
|
// 发起删除
|
|
await props.apiDelete(id)
|
|
message.success(t('common.delSuccess'))
|
|
// 刷新列表
|
|
await getList()
|
|
updateKey.value += 1
|
|
} catch {}
|
|
}
|
|
// 筛选提交
|
|
const searchFormClick = async (searchData) => {
|
|
const { tableObject, tableMethods } = useTable({
|
|
getListApi: props.apiPage // 分页接口
|
|
})
|
|
tableObject.params = {
|
|
isSearch: true,
|
|
filters: searchData.filters
|
|
? searchData.filters
|
|
: [{ column: 'number', action: '==', value: masterParmas.value.number }]
|
|
}
|
|
detailAllSchemasRef.value = props.detailAllSchemas
|
|
tableObjectRef.value = tableObject
|
|
tableMethodsRef.value = tableMethods
|
|
tableObjectRef.value.tableList = []
|
|
const { getList } = tableMethods
|
|
await getList()
|
|
updateKey.value += 1
|
|
tableObjectRef.value.params = {
|
|
isSearch: true,
|
|
filters: searchData.filters
|
|
? searchData.filters
|
|
: [{ column: 'masterId', action: '==', value: masterParmas.value.masterId }]
|
|
}
|
|
getList() // 刷新当前列表
|
|
}
|
|
// 选择盘点类型的时候针对限值的操作
|
|
const selectChangeDetail = (field, val) => {
|
|
emit('selectChangeDetail', field, val)
|
|
}
|
|
// 打开图片
|
|
const openImage = (item) => {
|
|
emit('openImage', item)
|
|
}
|
|
const imageFormRef = ref()
|
|
// 上传图片
|
|
const uploadImage = async () => {
|
|
// const elForm = unref(imageFormRef)?.getElFormRef()
|
|
// // 校验表单
|
|
// if (!elForm) return
|
|
// const valid = await elForm.validate()
|
|
// if (!valid) return
|
|
imageFormData
|
|
let data = {
|
|
number: masterParmas.value.number,
|
|
filePathList: imageFormData.value.filePathList.map((item) => item.url),
|
|
funcCode: imageParmas.value.funcCode,
|
|
fileBusiType: imageParmas.value.fileBusiType ? imageParmas.value.fileBusiType : ''
|
|
}
|
|
props.uploadImage(data).then((res) => {
|
|
message.success('修改成功')
|
|
getImage()
|
|
})
|
|
}
|
|
// 选择二级tabs
|
|
const fileFormRef = ref()
|
|
const handleTabsChange = (e) => {
|
|
imageParmas.value.fileBusiType = e
|
|
getImage()
|
|
}
|
|
// 上传文件
|
|
const uploadFile = async () => {
|
|
console.log(fileFormData.value.filePathList)
|
|
// const elForm = unref(fileFormRef)?.getElFormRef()
|
|
// // 校验表单
|
|
// if (!elForm) return
|
|
// const valid = await elForm.validate()
|
|
// if (!valid) return
|
|
// console.log(fileFormRef.value?.formModel.filePathList)
|
|
let data = {
|
|
number: masterParmas.value.number,
|
|
filePathList: fileFormData.value.filePathList.map((item) => item.url),
|
|
funcCode: imageParmas.value.funcCode,
|
|
fileBusiType: imageParmas.value.fileBusiType ? imageParmas.value.fileBusiType : ''
|
|
}
|
|
props.uploadImage(data).then((res) => {
|
|
message.success('修改成功')
|
|
getImage()
|
|
})
|
|
}
|
|
//监视属性
|
|
watch(
|
|
() => current.value,
|
|
() => {
|
|
const { tableObject, tableMethods } = useTable({
|
|
getListApi: props.apiPage, // 分页接口
|
|
defaultParams: getDefaultParams()
|
|
})
|
|
// tableObject.params.number = masterParmas.value.number
|
|
detailAllSchemasRef.value = props.detailAllSchemas
|
|
if (props.tableObjectExtend) {
|
|
props.tableObjectExtend.forEach((item) => {
|
|
tableObject.params[item.key] = item.value
|
|
})
|
|
}
|
|
tableObjectRef.value = tableObject
|
|
tableMethodsRef.value = tableMethods
|
|
const { getList } = tableMethods
|
|
getList()
|
|
}
|
|
)
|
|
|
|
function getDefaultParams() {
|
|
if (props.defaultParams !== undefined && Object.keys(props.defaultParams).length !== 0) {
|
|
return props.defaultParams
|
|
} else {
|
|
return {}
|
|
}
|
|
}
|
|
|
|
function getDialogParams(row: any) {
|
|
return {
|
|
number: row.number
|
|
}
|
|
}
|
|
|
|
const openDialog = async(row: any, titleName: any, titleValue: any) => {
|
|
const { tableObject, tableMethods } = useTable({
|
|
getListApi: props.dialogApiPage, // 分页接口
|
|
defaultParams: getDialogParams(row)
|
|
})
|
|
dialogVisible.value = true
|
|
dialogTitle.value = props.tabName
|
|
dialogAllSchemasRef.value = props.dialogAllSchemas
|
|
dialogTableObjectRef.value = tableObject
|
|
dialogTableMethodsRef.value = tableMethods
|
|
dialogTableObjectRef.value.tableList = []
|
|
const { getList } = tableMethods
|
|
await getList()
|
|
updateKey.value += 1
|
|
// getList() // 刷新当前列
|
|
setBeiJian()
|
|
}
|
|
|
|
// 设置备件回显
|
|
const setBeiJian = () => {
|
|
let isItemNUmbersTrue = false
|
|
isItemNUmbersTrue = dialogAllSchemasRef.value.tableColumns.some(
|
|
(item) => item.field == 'itemNumbers1'
|
|
)
|
|
if (!isItemNUmbersTrue) return
|
|
dialogTableObjectRef.value.tableList.forEach((item) => {
|
|
if (item.itemNumbers?.length > 0) {
|
|
let str = ''
|
|
item.itemNumbers.forEach((element) => {
|
|
str += element.name + ':' + element.qty + ','
|
|
})
|
|
item.itemNumbers1 = str.substring(0, str.length - 1)
|
|
}
|
|
})
|
|
}
|
|
|
|
// 列表-操作按钮
|
|
const butttondata = [
|
|
defaultButtons.mainListEditBtn(null), // 编辑
|
|
defaultButtons.uploadFileBtn(null),//上传
|
|
]
|
|
|
|
// 列表-操作按钮事件
|
|
const buttonMilestoneClick = async (val, row) => {
|
|
if (val == 'edit') {
|
|
// 编辑
|
|
openDialogForm('update', row)
|
|
} else if (val == 'upload') {
|
|
openDialogUpload(row)
|
|
}
|
|
}
|
|
|
|
const submitDialogForm = async (type, row) => {
|
|
await props.diaLogApiUpdate(row)
|
|
dialogFormRef.value.dialogVisible = false
|
|
await getList()
|
|
milestoneUpdateKey.value += 1
|
|
}
|
|
|
|
function openDialogUpload(row) {
|
|
dialogUploadVisible.value = true
|
|
getDialogUpload(row)
|
|
}
|
|
|
|
/** 添加/修改操作 */
|
|
const dialogFormRef = ref()
|
|
const openDialogForm = async (type: string, row?: number) => {
|
|
dialogFormRef.value.open(type, row)
|
|
}
|
|
|
|
const getDialogUpload = (row) => {
|
|
dialogUploadNumber.value = row.number
|
|
dialogUploadBusiCode.value = row.milestoneStage
|
|
props.getImageApi({
|
|
number: row.number,
|
|
funcCode: props.milestoneFuncCode
|
|
})
|
|
.then((res) => {
|
|
fileDialogUploadData.value.filePathList = res
|
|
dialogFormKey.value += 1
|
|
})
|
|
}
|
|
|
|
function dialogUploadFile() {
|
|
let data = {
|
|
number: dialogUploadNumber.value,
|
|
filePathList: fileDialogUploadData.value.filePathList.map((item) => item.url),
|
|
funcCode: props.milestoneFuncCode,
|
|
fileBusiType: dialogUploadBusiCode.value
|
|
}
|
|
props.uploadImage(data).then((res) => {
|
|
message.success('修改成功')
|
|
getImage()
|
|
})
|
|
}
|
|
|
|
</script>
|
|
<style lang="scss">
|
|
.el-drawer__body {
|
|
background: #f5f5f5 !important;
|
|
}
|
|
|
|
::v-deep(.label-class-name) {
|
|
color: #dedede;
|
|
}
|
|
</style>
|
|
<style scoped lang="scss"></style>
|
|
|