Merge remote-tracking branch 'origin/0.8.X' into 0.8.X

This commit is contained in:
2026-03-15 15:10:38 +08:00
9 changed files with 897 additions and 247 deletions

View File

@@ -68,7 +68,7 @@
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
<el-checkbox style="margin-left: 10px;" v-model="showCoilMap" size="small">显示钢卷地图</el-checkbox> <el-checkbox v-if="orderBy" style="margin-left: 10px;" v-model="showCoilMap" size="small">显示钢卷地图</el-checkbox>
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@@ -66,7 +66,7 @@ export default {
// 文件类型, 例如['png', 'jpg', 'jpeg'] // 文件类型, 例如['png', 'jpg', 'jpeg']
fileType: { fileType: {
type: Array, type: Array,
default: () => ["doc", "xls", "xlsx", "ppt", "txt", "pdf", 'png', 'jpg', 'jpeg', 'bmp', 'webp'], default: () => ["doc", "docx", "xls", "xlsx", "ppt", "txt", "pdf", 'png', 'jpg', 'jpeg', 'bmp', 'webp'],
}, },
// 是否显示提示 // 是否显示提示
isShowTip: { isShowTip: {

View File

@@ -427,7 +427,7 @@ export default {
path = '/wms/split'; path = '/wms/split';
} }
// 合卷操作200-299 // 合卷操作200-299
else if (actionType == 200) { else if (actionType >= 200 && actionType <= 299) {
path = '/wms/merge'; path = '/wms/merge';
} }
else if (actionType < 100) { else if (actionType < 100) {

View File

@@ -70,7 +70,7 @@
<!-- 第二个位置显示待合卷列表 --> <!-- 第二个位置显示待合卷列表 -->
<template v-else-if="!readonly"> <template v-else-if="!readonly">
<div class="pending-list-title">待合卷钢卷列表</div> <div class="pending-list-title">待合卷钢卷列表</div>
<div class="pending-coil-list" v-if="renderPendingMergeList.length > 0"> <div class="pending-coil-list">
<div class="pending-coil-item" v-for="pending in renderPendingMergeList" :key="pending.actionId" <div class="pending-coil-item" v-for="pending in renderPendingMergeList" :key="pending.actionId"
@click="selectPendingCoil(pending, index)"> @click="selectPendingCoil(pending, index)">
<div class="pending-coil-no">{{ pending.currentCoilNo }}</div> <div class="pending-coil-no">{{ pending.currentCoilNo }}</div>
@@ -79,10 +79,11 @@
<span class="pending-value">{{ formatTime(pending.updateTime) }}</span> <span class="pending-value">{{ formatTime(pending.updateTime) }}</span>
</div> </div>
</div> </div>
<coil-selector @select="selectCoil($event, index)">
<div class="pending-coil-item">
选择其他钢卷
</div> </div>
<div v-else class="empty-tip"> </coil-selector>
<i class="el-icon-info"></i>
暂无其他待合卷钢卷
</div> </div>
</template> </template>
</div> </div>
@@ -116,54 +117,62 @@
<span>新钢卷</span> <span>新钢卷</span>
</div> </div>
<div class="target-coil-body"> <div class="target-coil-body">
<el-form size="small" label-width="90px"> <el-form size="small" label-width="80px">
<el-form-item label="卷号"> <div class="form-row">
<el-form-item label="卷号" class="form-item-half">
<el-input v-model="targetCoil.currentCoilNo" placeholder="输入目标卷号" :disabled="readonly"></el-input> <el-input v-model="targetCoil.currentCoilNo" placeholder="输入目标卷号" :disabled="readonly"></el-input>
<current-coil-no :current-coil-no="targetCoil.currentCoilNo" /> <current-coil-no :current-coil-no="targetCoil.currentCoilNo" />
</el-form-item> </el-form-item>
<el-form-item label="班组"> <el-form-item label="班组" class="form-item-half">
<el-select v-model="targetCoil.team" placeholder="请选择班组" style="width: 100%" :disabled="readonly"> <el-select v-model="targetCoil.team" placeholder="请选择班组" style="width: 100%" :disabled="readonly">
<el-option key="甲" label="甲" value="甲" /> <el-option key="甲" label="甲" value="甲" />
<el-option key="乙" label="乙" value="乙" /> <el-option key="乙" label="乙" value="乙" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="材料类型"> </div>
<div class="form-row">
<el-form-item label="材料类型" class="form-item-half">
<el-select v-model="targetCoil.materialType" placeholder="请选择材料类型" style="width: 100%" <el-select v-model="targetCoil.materialType" placeholder="请选择材料类型" style="width: 100%"
:disabled="readonly" @change="handleMaterialTypeChange"> :disabled="readonly" @change="handleMaterialTypeChange">
<el-option label="原料" value="原料" /> <el-option label="原料" value="原料" />
<el-option label="成品" value="成品" /> <el-option label="成品" value="成品" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="getItemLabel"> <el-form-item :label="getItemLabel" class="form-item-half">
<raw-material-selector v-if="targetCoil.materialType === '原料'" v-model="targetCoil.itemId" <raw-material-selector v-if="targetCoil.materialType === '原料'" v-model="targetCoil.itemId"
placeholder="请选择原料" style="width: 100%" clearable :disabled="readonly || !targetCoil.materialType" /> placeholder="请选择原料" style="width: 100%" clearable
:disabled="readonly || !targetCoil.materialType" />
<product-selector v-else-if="targetCoil.materialType === '成品'" v-model="targetCoil.itemId" <product-selector v-else-if="targetCoil.materialType === '成品'" v-model="targetCoil.itemId"
placeholder="请选择成品" style="width: 100%" clearable :disabled="readonly || !targetCoil.materialType" /> placeholder="请选择成品" style="width: 100%" clearable
:disabled="readonly || !targetCoil.materialType" />
<div v-else>请先选择物料类型</div> <div v-else>请先选择物料类型</div>
</el-form-item> </el-form-item>
</div>
<el-form-item label="质量状态" prop="qualityStatus"> <div class="form-row">
<el-form-item label="质量状态" prop="qualityStatus" class="form-item-half">
<el-select v-model="targetCoil.qualityStatus" placeholder="请选择质量状态" style="width: 100%" <el-select v-model="targetCoil.qualityStatus" placeholder="请选择质量状态" style="width: 100%"
:disabled="readonly"> :disabled="readonly">
<el-option v-for="item in dict.type.coil_quality_status" :key="item.value" :label="item.label" <el-option v-for="item in dict.type.coil_quality_status" :key="item.value" :label="item.label"
:value="item.value" /> :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="切边要求" prop="trimmingRequirement" class="form-item-half">
<el-form-item label="切边要求" prop="trimmingRequirement">
<el-select v-model="targetCoil.trimmingRequirement" placeholder="请选择切边要求" style="width: 100%" <el-select v-model="targetCoil.trimmingRequirement" placeholder="请选择切边要求" style="width: 100%"
:disabled="readonly"> :disabled="readonly">
<el-option label="净边料" value="净边料" /> <el-option label="净边料" value="净边料" />
<el-option label="毛边料" value="毛边料" /> <el-option label="毛边料" value="毛边料" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</div>
<el-form-item label="打包状态" prop="packingStatus"> <div class="form-row">
<el-form-item label="打包状态" prop="packingStatus" class="form-item-half">
<el-input v-model="targetCoil.packingStatus" placeholder="请输入打包状态" :disabled="readonly"> <el-input v-model="targetCoil.packingStatus" placeholder="请输入打包状态" :disabled="readonly">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="包装要求" prop="packagingRequirement" class="form-item-half">
<el-form-item label="包装要求" prop="packagingRequirement">
<el-select v-model="targetCoil.packagingRequirement" placeholder="请选择包装要求" style="width: 100%" <el-select v-model="targetCoil.packagingRequirement" placeholder="请选择包装要求" style="width: 100%"
:disabled="readonly"> :disabled="readonly">
<el-option label="裸包" value="裸包" /> <el-option label="裸包" value="裸包" />
@@ -171,61 +180,61 @@
<el-option label="简包" value="简包" /> <el-option label="简包" value="简包" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="毛重(t)"> </div>
<div class="form-row">
<el-form-item label="毛重(t)" class="form-item-half">
<el-input-number precision="3" :controls="false" v-model="targetCoil.grossWeight" placeholder="请输入毛重" <el-input-number precision="3" :controls="false" v-model="targetCoil.grossWeight" placeholder="请输入毛重"
type="number" :step="0.01" :disabled="readonly"> type="number" :step="0.01" :disabled="readonly">
<template slot="append"></template> <template slot="append"></template>
</el-input-number> </el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="净重(t)"> <el-form-item label="净重(t)" class="form-item-half">
<el-input-number precision="3" :controls="false" v-model="targetCoil.netWeight" placeholder="请输入净重" <el-input-number precision="3" :controls="false" v-model="targetCoil.netWeight" placeholder="请输入净重"
type="number" :step="0.01" :disabled="readonly"> type="number" :step="0.01" :disabled="readonly">
<template slot="append"></template> <template slot="append"></template>
</el-input-number> </el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="长度(m)"> </div>
<div class="form-row">
<el-form-item label="长度(m)" class="form-item-half">
<el-input-number :controls="false" v-model="targetCoil.length" placeholder="请输入长度" type="number" <el-input-number :controls="false" v-model="targetCoil.length" placeholder="请输入长度" type="number"
:step="0.01" :disabled="readonly"> :step="0.01" :disabled="readonly">
<template slot="append"></template> <template slot="append"></template>
</el-input-number> </el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="实测长度(m)" prop="actualLength"> <el-form-item label="实测长度(m)" prop="actualLength" class="form-item-half">
<el-input-number :controls="false" v-model="targetCoil.actualLength" placeholder="请输入实测长度" type="number" <el-input-number :controls="false" v-model="targetCoil.actualLength" placeholder="请输入实测长度"
:step="0.01" :disabled="readonly"> type="number" :step="0.01" :disabled="readonly">
<template slot="append"></template> <template slot="append"></template>
</el-input-number> </el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="实测宽度(m)" prop="actualWidth"> </div>
<el-input-number :controls="false" v-model="targetCoil.actualWidth" placeholder="请输入实测宽度" type="number"
:step="0.01" :disabled="readonly"> <div class="form-row">
<el-form-item label="实测宽度(m)" prop="actualWidth" class="form-item-half">
<el-input-number :controls="false" v-model="targetCoil.actualWidth" placeholder="请输入实测宽度"
type="number" :step="0.01" :disabled="readonly">
<template slot="append"></template> <template slot="append"></template>
</el-input-number> </el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="调制度" prop="temperGrade"> <el-form-item label="调制度" prop="temperGrade" class="form-item-half">
<el-input v-model="targetCoil.temperGrade" placeholder="请输入调制度" /> <el-input v-model="targetCoil.temperGrade" placeholder="请输入调制度" />
</el-form-item> </el-form-item>
<el-form-item label="镀层种类" prop="coatingType"> </div>
<div class="form-row">
<el-form-item label="镀层种类" prop="coatingType" class="form-item-half">
<MemoInput storageKey="coatingType" v-model="targetCoil.coatingType" placeholder="请输入镀层种类" /> <MemoInput storageKey="coatingType" v-model="targetCoil.coatingType" placeholder="请输入镀层种类" />
</el-form-item> </el-form-item>
<el-form-item label="逻辑库区"> <el-form-item label="逻辑库区" class="form-item-half">
<WarehouseSelect v-model="targetCoil.warehouseId" placeholder="请选择逻辑库区" :disabled="readonly" /> <WarehouseSelect v-model="targetCoil.warehouseId" placeholder="请选择逻辑库区" :disabled="readonly" />
</el-form-item> </el-form-item>
</div>
</el-form> </el-form>
</div> </div>
</div> </div>
<!-- 合卷规则说明 -->
<!-- <div class="rule-card">
<div class="rule-title">
<i class="el-icon-warning-outline"></i>
合卷规则
</div>
<ul class="rule-list">
<li>至少需要2个源卷</li>
<li>所有源卷的物品类型和物品ID应保持一致</li>
<li>请确保录入正确的新钢卷号和班组信息</li>
</ul>
</div> -->
</div> </div>
</div> </div>
</div> </div>
@@ -233,7 +242,7 @@
<script> <script>
import { getMaterialCoil, mergeMaterialCoil } from '@/api/wms/coil'; import { getMaterialCoil, mergeMaterialCoil } from '@/api/wms/coil';
import { listPendingAction, completeAction } from '@/api/wms/pendingAction'; import { listPendingAction, completeAction, addPendingAction } from '@/api/wms/pendingAction';
import CoilSelector from '@/components/CoilSelector'; import CoilSelector from '@/components/CoilSelector';
import ActualWarehouseSelect from "@/components/KLPService/ActualWarehouseSelect"; import ActualWarehouseSelect from "@/components/KLPService/ActualWarehouseSelect";
import RawMaterialSelector from "@/components/KLPService/RawMaterialSelect"; import RawMaterialSelector from "@/components/KLPService/RawMaterialSelect";
@@ -255,6 +264,7 @@ export default {
const currentCoilNoPrefix = generateCoilNoPrefix() const currentCoilNoPrefix = generateCoilNoPrefix()
return { return {
currentCoilNoPrefix, currentCoilNoPrefix,
actionTypeCode: '',
// 源卷列表 // 源卷列表
sourceCoils: [], sourceCoils: [],
// 目标卷信息 // 目标卷信息
@@ -325,12 +335,18 @@ export default {
const coilId = this.$route.query.coilId; const coilId = this.$route.query.coilId;
const actionId = this.$route.query.actionId; const actionId = this.$route.query.actionId;
const readonly = this.$route.query.readonly; const readonly = this.$route.query.readonly;
const actionTypeCode = this.$route.query.actionTypeCode;
// 保存当前页面的待操作ID // 保存当前页面的待操作ID
if (actionId) { if (actionId) {
this.actionId = actionId; this.actionId = actionId;
} }
// 保存当前页面的待操作类型
if (actionTypeCode) {
this.actionTypeCode = actionTypeCode;
}
// 设置只读模式 // 设置只读模式
if (readonly === 'true' || readonly === true) { if (readonly === 'true' || readonly === true) {
this.readonly = true; this.readonly = true;
@@ -338,7 +354,7 @@ export default {
// 如果有coilId加载该钢卷作为第一个源卷 // 如果有coilId加载该钢卷作为第一个源卷
if (coilId) { if (coilId) {
await this.loadFirstCoil(coilId); await this.loadFirstCoil(coilId, actionId);
// 加载其他待合卷的钢卷列表 // 加载其他待合卷的钢卷列表
await this.loadPendingMergeList(); await this.loadPendingMergeList();
} else { } else {
@@ -394,11 +410,10 @@ export default {
this.$set(this.targetCoil, 'itemId', undefined); this.$set(this.targetCoil, 'itemId', undefined);
}, },
// 加载第一个钢卷(从待操作进入时) // 加载第一个钢卷(从待操作进入时)
async loadFirstCoil(coilId) { async loadFirstCoil(coilId, actionId) {
try { try {
this.loading = true; this.loading = true;
const response = await getMaterialCoil(coilId); const response = await getMaterialCoil(coilId);
if (response.code === 200 && response.data) {
const data = response.data; const data = response.data;
// 初始化源卷列表,第一个是当前钢卷 // 初始化源卷列表,第一个是当前钢卷
@@ -418,6 +433,7 @@ export default {
grossWeight: data.grossWeight || null, grossWeight: data.grossWeight || null,
netWeight: data.netWeight || null, netWeight: data.netWeight || null,
length: data.length || null, length: data.length || null,
actionId: actionId // 保存待操作ID用于后续完成操作
}, },
{ {
coilId: null, coilId: null,
@@ -441,10 +457,6 @@ export default {
this.targetCoil.itemType = data.itemType; this.targetCoil.itemType = data.itemType;
this.targetCoil.itemId = data.itemId; this.targetCoil.itemId = data.itemId;
this.targetCoil.warehouseId = data.warehouseId; this.targetCoil.warehouseId = data.warehouseId;
// this.targetCoil.actualWarehouseId = data.actualWarehouseId;
// 不再预加载物品列表,改为实时搜索
}
} catch (error) { } catch (error) {
this.$message.error('加载钢卷信息失败'); this.$message.error('加载钢卷信息失败');
console.error(error); console.error(error);
@@ -460,7 +472,7 @@ export default {
// 分别查询待处理和处理中的记录 // 分别查询待处理和处理中的记录
const responses = await listPendingAction({ const responses = await listPendingAction({
actionType: 200, // 合卷操作 actionType: this.actionTypeCode, // 合卷操作
actionStatus: '-1', // -1表示只查询不为2的记录 actionStatus: '-1', // -1表示只查询不为2的记录
pageNum: 1, pageNum: 1,
pageSize: 1000 pageSize: 1000
@@ -482,7 +494,7 @@ export default {
try { try {
this.loading = true; this.loading = true;
const response = await getMaterialCoil(pending.coilId); const response = await getMaterialCoil(pending.coilId);
if (response.code === 200 && response.data) {
const data = response.data; const data = response.data;
this.$set(this.sourceCoils, index, { this.$set(this.sourceCoils, index, {
coilId: data.coilId, coilId: data.coilId,
@@ -503,7 +515,6 @@ export default {
}); });
this.$message.success('已添加到合卷列表'); this.$message.success('已添加到合卷列表');
}
} catch (error) { } catch (error) {
this.$message.error('加载钢卷信息失败'); this.$message.error('加载钢卷信息失败');
console.error(error); console.error(error);
@@ -640,21 +651,16 @@ export default {
text: '正在合卷,请稍后...', text: '正在合卷,请稍后...',
background: 'rgba(0, 0, 0, 0.7)' background: 'rgba(0, 0, 0, 0.7)'
}); });
this.completeAllRelatedActions();
await mergeMaterialCoil(mergeData);
const response = await mergeMaterialCoil(mergeData);
if (response.code === 200) {
this.$message.success('合卷保存成功'); this.$message.success('合卷保存成功');
// 完成所有相关的待操作记录
await this.completeAllRelatedActions();
// 延迟返回,让用户看到成功提示 // 延迟返回,让用户看到成功提示
setTimeout(() => { setTimeout(() => {
this.$router.back(); this.$router.back();
}, 100); }, 100);
} else {
this.$message.error(response.msg || '合卷保存失败');
}
} catch (error) { } catch (error) {
this.$message.error('合卷保存失败'); this.$message.error('合卷保存失败');
console.error(error); console.error(error);
@@ -666,27 +672,66 @@ export default {
} }
}, },
async selectCoil(coil, index) {
console.log(coil, index);
const data = coil;
this.$set(this.sourceCoils, index, {
coilId: data.coilId,
enterCoilNo: data.enterCoilNo || '',
currentCoilNo: data.currentCoilNo || '',
itemType: data.itemType,
itemId: data.itemId,
warehouseName: data.warehouseName || (data.warehouse ? data.warehouse.warehouseName : ''),
actualWarehouseName: data.actualWarehouseName || (data.actualWarehouse ? data.actualWarehouse.warehouseName : ''),
materialName: data.materialName || (data.rawMaterial ? data.rawMaterial.rawMaterialName : ''),
productName: data.productName || (data.product ? data.product.productName : ''),
specification: data.rawMaterial?.specification || data.product?.specification || '',
grossWeight: data.grossWeight || null,
netWeight: data.netWeight || null,
length: data.length || null,
bomItems: data.bomItemList || [],
nc: true,
actionId: pending.actionId // 保存待操作ID用于后续完成操作
});
},
// 完成所有相关的待操作记录 // 完成所有相关的待操作记录
async completeAllRelatedActions() { async completeAllRelatedActions() {
try { try {
// 收集所有待操作ID // 收集所有待操作ID
const actionIds = []; const actionIds = [];
const ncs = [];
// 当前页面的actionId从路由参数获取 // 当前页面的actionId从路由参数获取
if (this.actionId) { // if (this.actionId) {
actionIds.push(this.actionId); // actionIds.push(this.actionId);
} // }
// 从待合卷列表中选择的钢卷的actionId // 从待合卷列表中选择的钢卷的actionId
this.sourceCoils.forEach(item => { this.sourceCoils.forEach(item => {
if (item.actionId) { if (item.actionId) {
actionIds.push(item.actionId); actionIds.push(item.actionId);
} }
// 或许所有需要直接完成的
if (item.nc) {
ncs.push(item);
}
}); });
// 批量完成所有待操作 // 批量完成所有待操作
const promises = actionIds.map(id => completeAction(id)); const promises1 = actionIds.map(id => completeAction(id));
await Promise.all(promises); const promises2 = ncs.map(item => {
addPendingAction({
actionType: this.actionTypeCode, // 合卷操作
actionStatus: '2', // 2表示已完成
coilId: item.coilId,
currentCoilNo: item.currentCoilNo || '',
priority: 0,
sourceType: 'manual',
})
});
await Promise.all(promises1.concat(promises2));
} catch (error) { } catch (error) {
console.error('完成待操作失败:', error); console.error('完成待操作失败:', error);
// 不影响主流程,只记录错误 // 不影响主流程,只记录错误
@@ -743,9 +788,9 @@ export default {
/* 流程图容器 */ /* 流程图容器 */
.flow-container { .flow-container {
display: flex; display: flex;
gap: 40px; gap: 20px;
background: #fff; background: #fff;
padding: 30px; padding: 20px;
border-radius: 4px; border-radius: 4px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
min-height: 600px; min-height: 600px;
@@ -753,11 +798,11 @@ export default {
.flow-left { .flow-left {
flex: 1; flex: 1;
max-width: 350px; min-width: 300px;
} }
.flow-middle { .flow-middle {
flex: 0 0 120px; flex: 0 0 80px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
@@ -767,7 +812,7 @@ export default {
.flow-right { .flow-right {
flex: 1; flex: 1;
max-width: 400px; min-width: 350px;
} }
.flow-section-title { .flow-section-title {
@@ -803,8 +848,9 @@ export default {
background: #fff; background: #fff;
border: 1px solid #e4e7ed; border: 1px solid #e4e7ed;
border-radius: 8px; border-radius: 8px;
margin-bottom: 12px; margin-bottom: 10px;
transition: all 0.3s; transition: all 0.3s;
overflow: hidden;
&:hover { &:hover {
border-color: #0066cc; border-color: #0066cc;
@@ -813,23 +859,23 @@ export default {
} }
.source-coil-header { .source-coil-header {
padding: 12px 16px; padding: 10px 14px;
display: flex; display: flex;
align-items: center; align-items: center;
gap: 12px; gap: 10px;
border-bottom: 1px solid #f5f7fa; border-bottom: 1px solid #f5f7fa;
} }
.source-number { .source-number {
width: 28px; width: 24px;
height: 28px; height: 24px;
border-radius: 50%; border-radius: 50%;
background: #0066cc; background: #0066cc;
color: #fff; color: #fff;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 14px; font-size: 12px;
font-weight: 600; font-weight: 600;
flex-shrink: 0; flex-shrink: 0;
} }
@@ -843,16 +889,13 @@ export default {
font-size: 14px; font-size: 14px;
font-weight: 500; font-weight: 500;
color: #303133; color: #303133;
margin-bottom: 4px; white-space: nowrap;
} overflow: hidden;
text-overflow: ellipsis;
.source-weight {
font-size: 13px;
color: #909399;
} }
.source-coil-body { .source-coil-body {
padding: 12px 16px; padding: 10px 14px;
&:empty { &:empty {
text-align: center; text-align: center;
@@ -861,13 +904,13 @@ export default {
.empty-tip { .empty-tip {
text-align: center; text-align: center;
color: #909399; color: #909399;
font-size: 13px; font-size: 12px;
padding: 10px 0; padding: 8px 0;
i { i {
display: block; display: block;
font-size: 24px; font-size: 20px;
margin-bottom: 5px; margin-bottom: 4px;
} }
} }
} }
@@ -930,8 +973,8 @@ export default {
.source-detail-row { .source-detail-row {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
margin-bottom: 8px; margin-bottom: 6px;
font-size: 13px; font-size: 12px;
&:last-child { &:last-child {
margin-bottom: 0; margin-bottom: 0;
@@ -939,7 +982,7 @@ export default {
.detail-label { .detail-label {
color: #909399; color: #909399;
min-width: 90px; min-width: 80px;
flex-shrink: 0; flex-shrink: 0;
} }
@@ -951,27 +994,27 @@ export default {
} }
.source-detail-divider { .source-detail-divider {
margin: 10px 0 8px; margin: 8px 0 6px;
padding: 5px 0; padding: 4px 0;
font-size: 12px; font-size: 11px;
font-weight: 500; font-weight: 500;
color: #606266; color: #606266;
border-bottom: 1px solid #e4e7ed; border-bottom: 1px solid #e4e7ed;
} }
.source-bom-params { .source-bom-params {
margin-top: 8px; margin-top: 6px;
} }
.source-bom-item { .source-bom-item {
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 6px; margin-bottom: 4px;
font-size: 12px; font-size: 11px;
.bom-key { .bom-key {
color: #909399; color: #909399;
min-width: 60px; min-width: 50px;
} }
.bom-value { .bom-value {
@@ -1037,6 +1080,34 @@ export default {
padding: 20px; padding: 20px;
} }
/* 双列表单布局 */
.form-row {
display: flex;
gap: 16px;
margin-bottom: 12px;
&:last-child {
margin-bottom: 0;
}
}
.form-item-half {
flex: 1;
min-width: 0;
}
/* 响应式布局 */
@media screen and (max-width: 768px) {
.form-row {
flex-direction: column;
gap: 12px;
}
.form-item-half {
width: 100%;
}
}
/* 规则说明卡片 */ /* 规则说明卡片 */
.rule-card { .rule-card {
background: #fff9f0; background: #fff9f0;

View File

@@ -1,13 +1,78 @@
<template> <template>
<div> <DoPage :label="actionType" :tabs="tabs" :useSpecialSplit="useSpecialSplit" />
酸轧合卷
</div>
</template> </template>
<script> <script>
import DoPage from '../panels/do.vue'
export default {
name: 'SplitDo',
components: {
DoPage
},
data() {
return {
actionType: '分卷',
tabs: [],
useSpecialSplit: false,
}
},
watch: {
'$route.query.actionType': {
handler(newVal) {
this.actionType = newVal;
// 根据名字获取默认的查询参数
const map = {
'酸连轧工序': [
{value: '1988150044862377986', label: '酸连轧原料库'},
{value: '1988150099140866050', label: '酸连轧成品库'},
{value: '1988150263284953089', label: '镀锌原料库'},
{value: '1988150545175736322', label: '脱脂原料库'},
],
'镀锌工序': [
{value: '1988150263284953089', label: '镀锌原料库'},
{value: '1988150323162836993', label: '镀锌成品库'},
{value: '1988150487185289217', label: '镀锌纵剪分条原料库'},
],
'脱脂工序': [
{value: '1988150545175736322', label: '脱脂原料库'},
{value: '1988150586938421250', label: '脱脂成品库'},
],
'退火工序': [
{value: '1988150648993148929', label: '罩式退火原料库'},
{value: '1988150704496373761', label: '罩式退火成品库'},
],
'拉矫平整工序': [
{value: '1988150854442741762', label: '拉矫原料库'},
{value: '1988150915591499777', label: '拉矫成品库'},
],
'双机架工序': [
{value: '1992873386047643650', label: '双机架原料库'},
{value: '1992873437713080322', label: '双机架成品库'},
],
'镀铬工序': [
{value: '1988151076996706306', label: '镀铬原料库'},
{value: '1988151132361519105', label: '镀铬成品库'},
],
'纵剪分条工序': [
{value: '', label: '原料库'},
{value: '1988150210872930306', label: '酸连轧分条成品'},
{value: '1988150800092950529', label: '退火分条成品'},
{value: '1988150380649967617', label: '镀锌分条成品'},
{value: '1988151027466170370', label: '拉矫分条成品'},
],
}
if (this.actionType === '镀锌工序' || this.actionType === '脱脂工序' || this.actionType === '拉矫平整工序' || this.actionType === '双机架工序' || this.actionType === '镀铬工序' || this.actionType === '纵剪分条工序') {
this.useSpecialSplit = true
}
// 从map中获取默认的查询参数
const defaultWarehouseIds = map[this.actionType] || []
console.log(defaultWarehouseIds, 'defaultWarehouseIds')
this.tabs = defaultWarehouseIds
},
immediate: true
}
}
}
</script> </script>
<style>
</style>

View File

@@ -46,7 +46,8 @@
<div <div
style="flex: 1; height: 100%; display: flex; align-items: center; justify-content: center; border: 1px solid #333; box-sizing: border-box; padding: 3px; word-break: break-all; overflow-wrap: break-word;" style="flex: 1; height: 100%; display: flex; align-items: center; justify-content: center; border: 1px solid #333; box-sizing: border-box; padding: 3px; word-break: break-all; overflow-wrap: break-word;"
class="value-cell"> class="value-cell">
<input type="text" class="nob" :value="content.warehouseName || ''" /> {{ content.warehouseName || '' }}
<!-- <input type="text" class="nob" :value="content.warehouseName || ''" /> -->
</div> </div>
</div> </div>
<div style="display: flex; flex: 1; align-items: center;"> <div style="display: flex; flex: 1; align-items: center;">
@@ -61,7 +62,7 @@
<input type="text" class="nob" :value="content.actualWarehouseName || ''" /> <input type="text" class="nob" :value="content.actualWarehouseName || ''" />
</div> </div>
</div> </div>
<div style="display: flex; flex: 1; align-items: center;"> <!-- <div style="display: flex; flex: 1; align-items: center;">
<div <div
style="flex: 1; height: 100%; display: flex; align-items: center; justify-content: center; border: 1px solid #333; box-sizing: border-box; padding: 3px; word-break: break-all; overflow-wrap: break-word;" style="flex: 1; height: 100%; display: flex; align-items: center; justify-content: center; border: 1px solid #333; box-sizing: border-box; padding: 3px; word-break: break-all; overflow-wrap: break-word;"
class="label-cell"> class="label-cell">
@@ -84,7 +85,7 @@
class="value-cell"> class="value-cell">
<input type="text" class="nob" :value="content.team || ''" /> <input type="text" class="nob" :value="content.team || ''" />
</div> </div>
</div> </div> -->
</div> </div>
</td> </td>
<td class="value-cell" colspan="4" <td class="value-cell" colspan="4"
@@ -92,6 +93,16 @@
<QRCode :content="content.qrcodeRecordId || ' '" :size="130" /> <QRCode :content="content.qrcodeRecordId || ' '" :size="130" />
</td> </td>
</tr> </tr>
<tr>
<td class="label-cell" style="width: 16.67%; padding: 4px;">规格</td>
<td class="value-cell" colspan="2" style="width: 33.33%; padding: 4px;">
<input type="text" class="nob" :value="content.specification || ''" />
</td>
<td class="label-cell" style="width: 16.67%; padding: 4px;">班组</td>
<td class="value-cell" colspan="2" style="width: 33.33%; padding: 4px;">
<input type="text" class="nob" :value="content.team || ''" />
</td>
</tr>
<!-- <tr> <!-- <tr>
<td class="label-cell" colspan="2">逻辑库区</td> <td class="label-cell" colspan="2">逻辑库区</td>
<td class="value-cell" colspan="2"> <td class="value-cell" colspan="2">
@@ -309,6 +320,8 @@ export default {
.value-cell { .value-cell {
text-align: center; text-align: center;
font-weight: bold;
/* font-family: 'Courier New', Courier, monospace; */
} }
.nob { .nob {

View File

@@ -922,7 +922,7 @@ export default {
path = '/wms/split' path = '/wms/split'
} }
// 合卷操作200-299 // 合卷操作200-299
else if (actionType == 200) { else if (actionType >= 200 && actionType <= 299) {
path = '/wms/merge' path = '/wms/merge'
} }
// 其他操作类型 // 其他操作类型
@@ -950,6 +950,7 @@ export default {
query: { query: {
coilId: row.coilId, coilId: row.coilId,
actionId: row.actionId, actionId: row.actionId,
actionTypeCode: row.actionType,
...(currentActionTypeLabel ? { actionType: currentActionTypeLabel } : {}) ...(currentActionTypeLabel ? { actionType: currentActionTypeLabel } : {})
} }
}) })

View File

@@ -0,0 +1,500 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="入职时间" prop="changeTime">
<el-date-picker clearable v-model="queryParams.changeTime" type="date" value-format="yyyy-MM-dd"
placeholder="请选择入职时间">
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="异动原因" prop="changeReason">
<el-input
v-model="queryParams.changeReason"
placeholder="请输入异动原因"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item label="负责人" prop="changeHandler">
<el-input v-model="queryParams.changeHandler" placeholder="请输入负责人" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">入职</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-edit" size="mini" @click="handleSupplement">补录</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single"
@click="handleUpdate">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple"
@click="handleDelete">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="employeeEntryList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="异动记录主键ID" align="center" prop="changeId" v-if="true"/> -->
<el-table-column label="员工姓名" align="center" prop="wmsEmployeeInfo.name" />
<el-table-column label="岗位工种" align="center" prop="wmsEmployeeInfo.jobType" />
<el-table-column label="入职时间" align="center" prop="changeTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.changeTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="入职原因" align="center" prop="changeReason" />
<el-table-column label="负责人" align="center" prop="changeHandler" />
<!-- <el-table-column label="附件" align="center" prop="attachment" /> -->
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
<!-- 员工入职对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<!-- 公司内信息 -->
<el-card class="mb-4" shadow="never">
<template slot="header">
<div class="card-header">
<span>在职信息</span>
</div>
</template>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="部门" prop="deptId">
<el-select v-model="form.dept" placeholder="请选择部门">
<el-option v-for="item in deptList" :value="item.deptName" :label="item.deptName"
:key="item.deptId" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="岗位工种" prop="jobType">
<el-input v-model="form.jobType" placeholder="请输入岗位工种" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="入职时间" prop="entryTime">
<el-date-picker clearable v-model="form.entryTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择入职时间" style="width: 100%;">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.infoRemark" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
</el-card>
<!-- 员工个人信息 -->
<el-card class="mb-4" shadow="never">
<template slot="header">
<div class="card-header">
<span>员工信息</span>
</div>
</template>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name" placeholder="请输入姓名" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号" prop="idCard">
<el-input v-model="form.idCard" placeholder="请输入身份证号" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="年龄" prop="age">
<el-input v-model="form.age" placeholder="请输入年龄" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别" prop="gender">
<el-radio-group v-model="form.gender" size="small" mode="button">
<el-radio label="男"></el-radio>
<el-radio label="女"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学历" prop="education">
<el-select v-model="form.education" placeholder="请选择学历">
<el-option v-for="item in dict.type.hrm_employee_education" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系电话" prop="phone">
<el-input v-model="form.phone" placeholder="请输入联系电话" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="家庭住址" prop="homeAddress">
<el-input v-model="form.homeAddress" placeholder="请输入家庭住址" />
</el-form-item>
</el-col>
</el-row>
</el-card>
<!-- 紧急联系信息 -->
<el-card class="mb-4" shadow="never">
<template slot="header">
<div class="card-header">
<span>紧急联系信息</span>
</div>
</template>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="紧急联系人" prop="emergencyContact">
<el-input v-model="form.emergencyContact" placeholder="请输入紧急联系人" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="关系" prop="relationship">
<el-input v-model="form.relationship" placeholder="请输入关系" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="紧急联系电话" prop="emergencyContactPhone">
<el-input v-model="form.emergencyContactPhone" placeholder="请输入紧急联系人电话" />
</el-form-item>
</el-col>
</el-row>
</el-card>
<!-- 备注和附件 -->
<el-card class="mb-4" shadow="hover">
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="附件" prop="attachment">
<file-upload v-model="attachment"></file-upload>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 员工入职记录补录对话框 -->
<el-dialog :title="supplementTitle" :visible.sync="supplementOpen" width="500px" append-to-body>
<el-form ref="supplementForm" :model="supplementForm" :rules="supplementRules" label-width="80px">
<el-form-item label="入职时间" prop="changeTime">
<el-date-picker clearable v-model="supplementForm.changeTime" type="datetime"
value-format="yyyy-MM-dd HH:mm:ss" placeholder="请选择入职时间">
</el-date-picker>
</el-form-item>
<el-form-item label="入职原因" prop="changeReason">
<el-input v-model="supplementForm.changeReason" placeholder="请输入入职原因" />
</el-form-item>
<el-form-item label="负责人" prop="changeHandler">
<el-input v-model="supplementForm.changeHandler" placeholder="请输入负责人" disabled />
</el-form-item>
<el-form-item label="附件" prop="attachment">
<file-upload v-model="supplementAttachment" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="supplementForm.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitSupplementForm"> </el-button>
<el-button @click="cancelSupplement"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listEmployeeChange, getEmployeeChange, delEmployeeChange, updateEmployeeChange, addEmployeeChange, employeeEntry } from "@/api/wms/employeeChange";
import { listDept } from "@/api/wms/dept";
export default {
name: "EmployeeEntry",
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 员工入职表格数据
employeeEntryList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
infoId: undefined,
changeType: 0,
changeTime: undefined,
changeReason: undefined,
changeHandler: undefined,
attachment: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
},
// 附件
attachment: undefined,
// 部门列表
deptList: [],
// 补录对话框相关
supplementTitle: "补录员工入职记录",
supplementOpen: false,
supplementForm: {
changeId: undefined,
infoId: undefined,
changeType: 0,
changeTime: undefined,
changeReason: undefined,
changeHandler: undefined,
attachment: undefined,
remark: undefined
},
supplementRules: {
},
supplementAttachment: undefined
};
},
dicts: ['hrm_employee_education'],
created() {
this.getList();
this.getDeptList();
},
methods: {
/** 查询员工入职记录列表 */
getList() {
this.loading = true;
listEmployeeChange(this.queryParams).then(response => {
this.employeeEntryList = response.rows;
this.total = response.total;
this.loading = false;
});
},
getDeptList() {
listDept().then(response => {
this.deptList = response.data;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 取消补录按钮操作
cancelSupplement() {
this.supplementOpen = false;
this.resetSupplementForm();
},
// 表单重置
reset() {
this.form = {
infoId: undefined,
serialNumber: undefined,
dept: undefined,
jobType: undefined,
name: undefined,
idCard: undefined,
age: undefined,
gender: undefined,
education: undefined,
homeAddress: undefined,
phone: undefined,
entryTime: undefined,
emergencyContact: undefined,
relationship: undefined,
emergencyContactPhone: undefined,
createBy: undefined,
createTime: undefined,
updateBy: undefined,
updateTime: undefined,
delFlag: undefined,
remark: undefined,
infoRemark: undefined
};
this.attachment = undefined;
this.resetForm("form");
},
// 补录表单重置
resetSupplementForm() {
this.supplementForm = {
changeId: undefined,
infoId: undefined,
changeType: 0,
changeTime: undefined,
changeReason: undefined,
changeHandler: undefined,
attachment: undefined,
remark: undefined
};
this.supplementAttachment = undefined;
this.resetForm("supplementForm");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.changeId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.form.changeHandler = this.$store.getters.nickName;
this.open = true;
this.title = "员工入职";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.resetSupplementForm();
const changeId = row.changeId || this.ids
getEmployeeChange(changeId).then(response => {
this.loading = false;
this.supplementForm = response.data;
this.supplementAttachment = response.data.attachment;
this.supplementOpen = true;
this.supplementTitle = "修改员工入职记录";
});
},
/** 补录按钮操作 */
handleSupplement() {
this.resetSupplementForm();
this.supplementForm.changeHandler = this.$store.getters.nickName;
this.supplementOpen = true;
this.supplementTitle = "补录员工入职记录";
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
employeeEntry({
changeType: 0,
changeTime: this.form.entryTime,
changeHandler: this.$store.getters.nickName,
attachment: this.attachment,
...this.form
}).then(response => {
this.$modal.msgSuccess("员工入职成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
});
},
/** 提交补录表单 */
submitSupplementForm() {
this.$refs["supplementForm"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.supplementForm.changeId != null) {
updateEmployeeChange(this.supplementForm).then(response => {
this.$modal.msgSuccess("修改成功");
this.supplementOpen = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addEmployeeChange({
changeType: 0,
changeTime: this.supplementForm.changeTime,
changeHandler: this.supplementForm.changeHandler,
changeReason: this.supplementForm.changeReason,
attachment: this.supplementAttachment,
remark: this.supplementForm.remark
}).then(response => {
this.$modal.msgSuccess("员工入职记录补录成功");
this.supplementOpen = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const changeIds = row.changeId || this.ids;
this.$modal.confirm('是否确认删除员工入职记录编号为"' + changeIds + '"的数据项?').then(() => {
this.loading = true;
return delEmployeeChange(changeIds);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('system/employeeChange/export', {
...this.queryParams
}, `employeeChange_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@@ -2,7 +2,7 @@
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="60px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="60px">
<el-form-item label="部门" prop="deptId"> <el-form-item label="部门" prop="deptId">
<el-select v-model="queryParams.deptId" placeholder="请选择部门" clearable @keyup.enter.native="handleQuery"> <el-select v-model="queryParams.dept" placeholder="请选择部门" clearable @keyup.enter.native="handleQuery">
<el-option v-for="item in deptList" :value="item.deptName" :label="item.deptName" :key="item.deptId" /> <el-option v-for="item in deptList" :value="item.deptName" :label="item.deptName" :key="item.deptId" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@@ -105,9 +105,9 @@
</template> </template>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="部门" prop="deptId"> <el-form-item label="部门" prop="dept">
<!-- <el-input v-model="form.dept" placeholder="请输入部门" /> --> <!-- <el-input v-model="form.dept" placeholder="请输入部门" /> -->
<el-select v-model="form.deptId" placeholder="请选择部门"> <el-select v-model="form.dept" placeholder="请选择部门">
<el-option v-for="item in deptList" :value="item.deptName" :label="item.deptName" <el-option v-for="item in deptList" :value="item.deptName" :label="item.deptName"
:key="item.deptId" /> :key="item.deptId" />
</el-select> </el-select>
@@ -127,7 +127,7 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.infoRemark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -214,7 +214,7 @@
</el-card> </el-card>
<!-- 备注和附件 --> <!-- 备注和附件 -->
<!-- <el-card class="mb-4" shadow="hover"> <el-card class="mb-4" shadow="hover">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
@@ -227,7 +227,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-card> --> </el-card>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button> <el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>