Compare commits

..

2 Commits

2 changed files with 325 additions and 0 deletions

View File

@ -0,0 +1,97 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible" width="800px">
<el-form :model="queryParams" inline label-width="80px">
<el-form-item label="检索条件">
<el-input v-model="queryParams.keyWord" placeholder="请输入机台编码或者机台名称" clearable class="!w-200px" />
</el-form-item>
<el-form-item>
<el-button @click="searchMachine">搜索</el-button>
<el-button @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table ref="tableRef" v-loading="loading" :data="machineList" :show-overflow-tooltip="true" class="mt-15px" @selection-change="handleSelection">
<el-table-column type="selection" width="50px" />
<el-table-column label="序号" width="60px" align="center" type="index" />
<el-table-column label="机台编码" align="center" prop="machineCd" />
<el-table-column label="机台名称" align="center" prop="machineName" />
<el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter2" />
</el-table>
<template #footer>
<el-button @click="confirmSelection" type="primary"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { ref, reactive, nextTick } from 'vue'
import { dateFormatter2 } from '@/utils/formatTime'
import * as MachineApi from '@/api/biz/machine'
const message = useMessage()
const dialogVisible = ref(false)
const dialogTitle = ref('选择机台')
const loading = ref(false)
const machineList = ref([])
const selection = ref([])
const tableRef = ref()
const selectedMachineIds = ref([])
const queryParams = reactive({
keyWord: undefined
})
const emit = defineEmits(['confirm'])
const open = (selectedIds: number[] = []) => {
dialogVisible.value = true
selection.value = []
selectedMachineIds.value = selectedIds
searchMachine()
}
const searchMachine = async () => {
loading.value = true
try {
const data = await MachineApi.getMachinePage(queryParams)
machineList.value = data.list || []
await nextTick(() => {
if (tableRef.value && selectedMachineIds.value.length > 0) {
machineList.value.forEach(item => {
if (selectedMachineIds.value.includes(item.id)) {
tableRef.value.toggleRowSelection(item, true)
}
})
}
})
} finally {
loading.value = false
}
}
const resetQuery = () => {
queryParams.keyWord = undefined
searchMachine()
}
const handleSelection = (val: any[]) => {
selection.value = val
}
const confirmSelection = () => {
if (selection.value.length === 0) {
message.warning('请选择机台')
return
}
emit('confirm', selection.value)
dialogVisible.value = false
}
defineExpose({ open })
</script>
<style scoped>
.mt-15px {
margin-top: 15px;
}
</style>

View File

@ -0,0 +1,228 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible" width="1200px">
<el-form
ref="formRef"
:model="formData"
label-width="110px"
v-loading="formLoading"
>
<!-- 基础信息 -->
<div class="form-section">
<div class="section-title">基础信息</div>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="供应商编码">
<el-input v-model="formData.supplierNo" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="供应商名称">
<el-input v-model="formData.supplierName" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="简称">
<el-input v-model="formData.supplierSimName" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="供应商类型">
<el-select v-model="formData.supplierType" disabled>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.SUPPLIER_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="供应商等级">
<el-select v-model="formData.supplierReg" disabled>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.SUPPLIER_GRADE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="公司税号">
<el-input v-model="formData.comTaxNumber" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="启用状态">
<el-select v-model="formData.enabledStatus" disabled>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="供应商状态">
<el-select v-model="formData.status" disabled>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.SUPPLIER_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否黑名单">
<el-select v-model="formData.isBlacklist" disabled>
<el-option label="是" :value="1" />
<el-option label="否" :value="0" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注">
<el-input v-model="formData.remark" type="textarea" :rows="2" disabled />
</el-form-item>
</div>
<!-- 联系方式 -->
<div class="form-section">
<div class="section-title">联系方式</div>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="联系人1">
<el-input v-model="formData.contact1" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系电话1">
<el-input v-model="formData.conPhone1" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系地址1">
<el-input v-model="formData.conAddress1" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="联系人2">
<el-input v-model="formData.contact2" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系电话2">
<el-input v-model="formData.conPhone2" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系地址2">
<el-input v-model="formData.conAddress2" disabled />
</el-form-item>
</el-col>
</el-row>
</div>
<!-- 银行信息 -->
<div class="form-section">
<div class="section-title">银行信息</div>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="开户地区">
<el-input v-model="formData.accountRegion" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="开户银行">
<el-input v-model="formData.accountBank" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="开户账号">
<el-input v-model="formData.accountNo" disabled />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
<template #footer>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { getStrDictOptions, getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import * as SupplierApi from '@/api/biz/supplier'
const dialogVisible = ref(false)
const dialogTitle = ref('查看详情')
const formLoading = ref(false)
const formData = ref({
id: undefined,
supplierNo: undefined,
supplierName: undefined,
supplierSimName: undefined,
supplierType: undefined,
supplierReg: undefined,
contact1: undefined,
conPhone1: undefined,
conAddress1: undefined,
contact2: undefined,
conPhone2: undefined,
conAddress2: undefined,
comTaxNumber: undefined,
accountRegion: undefined,
accountBank: undefined,
accountNo: undefined,
remark: undefined,
enabledStatus: 0,
status: 1,
isBlacklist: 0,
})
const open = async (id: number) => {
dialogVisible.value = true
formLoading.value = true
try {
const data = await SupplierApi.getSupplier(id)
if (data.enabledStatus !== undefined && data.enabledStatus !== null) {
data.enabledStatus = Number(data.enabledStatus)
}
if (data.status !== undefined && data.status !== null) {
data.status = Number(data.status)
}
if (data.isBlacklist !== undefined && data.isBlacklist !== null) {
data.isBlacklist = Number(data.isBlacklist)
}
formData.value = data
} finally {
formLoading.value = false
}
}
defineExpose({ open })
</script>
<style scoped>
.form-section {
margin-bottom: 24px;
}
.section-title {
font-size: 14px;
font-weight: 600;
color: #606266;
margin-bottom: 16px;
padding-left: 8px;
border-left: 3px solid #409eff;
}
</style>