import { ref, onMounted, reactive, Ref, nextTick, computed } from 'vue'
|
import { injectModel } from '@/libs/Provider/Provider'
|
import { PipeAccessoryAssembly } from '../Models/PipeAccessoryAssembly'
|
import { ElMessage } from 'element-plus'
|
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
|
import { useFile } from './File'
|
|
interface CurrentType {
|
row: any
|
index: number
|
}
|
export const usePipeAccessoryAssembly = (props: any, ctx?: any) => {
|
const PipeAccessoryAssembly = injectModel<PipeAccessoryAssembly>('PipeAccessoryAssembly')
|
const { exportFile } = useFile()
|
/**
|
* 头部配置
|
*/
|
const headers = ref({})
|
/**
|
* 动态列配置
|
*/
|
const PipeAccessoryAssemblyColumns = ref<Record<string, any>>([])
|
/**
|
* 搜索值
|
*/
|
const search = ref('')
|
|
/**
|
* 排序
|
*/
|
const sort = ref(0)
|
/**
|
* 选择项
|
*/
|
const selection = ref([])
|
/**
|
* 当前选中的行
|
*/
|
const current = ref<any>(null)
|
/**
|
* 数据源
|
*/
|
const dataSource: Ref<any[]> = ref([])
|
|
/**
|
* 表格
|
*/
|
const tableRef = ref()
|
const dialogConfig = reactive({
|
visible: false,
|
title: '',
|
isAdd: false,
|
})
|
const dialogConfigForQuery = reactive({
|
visible: false,
|
title: '',
|
isAdd: false,
|
})
|
|
|
const dialogSettingConfig = reactive({
|
visible: false,
|
title: '',
|
})
|
|
/**
|
* 分页数据
|
*/
|
const paginationParams = ref({})
|
|
/**
|
* 打开详情
|
* @param row
|
*/
|
const openDetail = (row: any) => {
|
current.value = row
|
dialogConfig.visible = true
|
dialogConfig.title = row.name
|
dialogConfig.isAdd = false
|
sort.value = row.sort
|
}
|
|
const contextMenu = [
|
{
|
label: '展开详情',
|
fn: (c: CurrentType) => {
|
current.value = null
|
sort.value = c.row.sort
|
nextTick(() => openDetail(c.row))
|
},
|
divided: true,
|
icon: 'o',
|
},
|
// {
|
// label: '向上添加',
|
// fn: (c: CurrentType, pageNum: number) => {
|
// current.value = null
|
// sort.value = c.index + 1 + (pageNum - 1) * 50
|
// dialogConfig.visible = true
|
// dialogConfig.title = '添加'
|
// dialogConfig.isAdd = false
|
// },
|
// divided: true,
|
// icon: 'up',
|
// },
|
// {
|
// label: '向下添加',
|
// fn: (c: CurrentType, pageNum: number) => {
|
// current.value = null
|
// sort.value = c.index + 2 + (pageNum - 1) * 50
|
// dialogConfig.visible = true
|
// dialogConfig.title = '添加'
|
// dialogConfig.isAdd = false
|
// },
|
// divided: true,
|
// icon: 'down',
|
// },
|
// {
|
// label: '创建副本',
|
// fn: async ({ row }: CurrentType) => {
|
// await PipeAccessoryAssembly.cloneData([row.id])
|
// ElMessage.success('创建副本成功')
|
// tableRef.value?.getList()
|
// },
|
// divided: true,
|
// icon: 'copy',
|
// },
|
{
|
label: '删除',
|
fn: async (c: CurrentType) => {
|
const names = selection.value.map((item: { materialId: string }) => item.materialId)
|
ConfirmBox(
|
`是否删除${names.length ? names.join(',') : c.row.materialId}`
|
).then(async () => {
|
const ids = selection.value.map((item: { id: string }) => item.id)
|
await PipeAccessoryAssembly.deletePipeAccessoryAssemblys(ids.length ? ids : [c.row.id])
|
ElMessage.success('删除成功')
|
tableRef.value.getList()
|
})
|
},
|
icon: 'close',
|
},
|
]
|
|
|
//下发法兰冲码
|
const onSendFlangeCode = () => {
|
const names = selection.value.map((item: { dataIdentifier: string }) => item.dataIdentifier)
|
if(names.length==0){
|
ElMessage.warning('请选择一条记录');
|
return;
|
}
|
if(names.length>1){
|
ElMessage.warning('请只能选择一条记录');
|
return;
|
}
|
ConfirmBox(
|
`是否要下发法兰冲码${names.length ? names.join(',') : ''}`
|
).then(async () => {
|
// 获取选中的第一条记录
|
const selectedItem = selection.value[0];
|
|
// 构建参数对象
|
const param = {
|
Son_TaskCode: selectedItem.son_TaskCode || '', // 子任务编号
|
TaskCode: selectedItem.taskCode || '', // 任务编号
|
PipeSpecCode: selectedItem.pipeSpecCode || '',// 管段编码
|
};
|
|
var ret= await PipeAccessoryAssembly.sendFlangeCode(param)
|
if(ret.code=="200"){
|
ElMessage.success('下发成功')
|
tableRef.value.getList()
|
}else{
|
ElMessage.error('下发失败:'+ret.message)
|
}
|
})
|
}
|
//法兰冲码完工
|
const onFinishSendFlangeCode = () => {
|
const names = selection.value.map((item: { dataIdentifier: string }) => item.dataIdentifier)
|
if(names.length==0){
|
ElMessage.warning('请选择一条记录');
|
return;
|
}
|
if(names.length>1){
|
ElMessage.warning('请只能选择一条记录');
|
return;
|
}
|
ConfirmBox(
|
`是否要完工法兰冲码${names.length ? names.join(',') : ''}`
|
).then(async () => {
|
// 获取选中的第一条记录
|
const selectedItem = selection.value[0];
|
|
// 构建参数对象
|
const param = {
|
processName: selectedItem.processName || '', // 任务编号
|
PipeSpecCode: selectedItem.pipeSpecCode || '',// 管段编码
|
};
|
|
var ret= await PipeAccessoryAssembly.finishSendFlangeCode(param)
|
if(ret.code=="200"){
|
ElMessage.success('完工法兰冲码成功')
|
tableRef.value.getList()
|
}else{
|
ElMessage.error('完工法兰冲码失败:'+ret.message)
|
}
|
})
|
}
|
const onCheck = (records: any) => {
|
selection.value = records
|
}
|
|
const onAddPipeAccessoryAssembly = () => {
|
const params = tableRef.value?.getPaginationParams()
|
current.value = null
|
dialogConfig.visible = true
|
dialogConfig.isAdd = true
|
dialogConfig.title = '添加'
|
sort.value = params.totalCount + 1
|
}
|
|
//点击按钮【高级查询】
|
const onAdvancedQuery = () => {
|
const params = tableRef.value?.getPaginationParams()
|
current.value = null
|
dialogConfigForQuery.visible = true
|
dialogConfigForQuery.isAdd = true
|
dialogConfigForQuery.title = '高级查询'
|
}
|
|
const onConfirmPipeAccessoryAssembly = async () => {
|
dialogConfig.visible = false
|
if (dialogConfig.isAdd) {
|
tableRef.value?.scrollToRow({
|
skip: true,
|
})
|
} else {
|
await tableRef.value?.getList()
|
}
|
}
|
/**
|
* 行点击时更新current
|
*/
|
const onRowClick = ({ row }: any) => {
|
if (dialogConfig.visible && current.value) {
|
current.value = row
|
}
|
}
|
/**
|
* 导出
|
*/
|
const onExport = (data={}) => {
|
//const params = tableRef.value?.getParams()
|
exportFile('/api/v1/HIAWms/PipeAccessoryAssembly/export', data, 'PipeAccessoryAssembly')
|
}
|
|
/**
|
* 关键字搜索
|
*/
|
const onSearch = () => {
|
tableRef.value?.getList({
|
Filter: search.value,
|
})
|
}
|
|
/**
|
* 重置表格数据
|
*/
|
const reloadList = () => {
|
tableRef.value?.getList()
|
}
|
/**
|
* 上传成功
|
*/
|
const onSuccess = () => {
|
tableRef.value?.getList()
|
ElMessage.success('导入成功')
|
}
|
/**
|
* 失败
|
* @param err
|
*/
|
const onError = (err: any) => {
|
try {
|
const message = JSON.parse(err.message)
|
ElMessage.error(message.msg)
|
} catch (error) {
|
ElMessage.error('导入失败')
|
}
|
}
|
/**
|
* 上传钩子
|
*/
|
const onBeforeUpload = (file: File) => {
|
const format = ['xlsx', 'xls', 'csv']
|
if (!format.includes(file.name.split('.')[1])) {
|
ElMessage.error('导入文件格式不正确,请导入.xlsx/.xls与.csv格式的文件')
|
return false
|
}
|
return true
|
}
|
|
onMounted(() => {
|
headers.value = {
|
Authorization: `Bearer ${sessionStorage.getItem('Token')}`,
|
'X-Project': sessionStorage.getItem('X-Project'),
|
}
|
})
|
|
ctx.expose({
|
reloadList,
|
})
|
|
return {
|
dataSource,
|
contextMenu,
|
dialogConfig,
|
dialogConfigForQuery,
|
dialogSettingConfig,
|
tableRef,
|
current,
|
search,
|
sort,
|
PipeAccessoryAssemblyColumns,
|
paginationParams,
|
headers,
|
onBeforeUpload,
|
onError,
|
onSuccess,
|
openDetail,
|
onSearch,
|
onExport,
|
onRowClick,
|
onConfirmPipeAccessoryAssembly,
|
onCheck,
|
onAddPipeAccessoryAssembly,
|
onAdvancedQuery,
|
onSendFlangeCode,
|
onFinishSendFlangeCode
|
}
|
}
|