页面修改

dev-scheduling
taozi 1 day ago
parent 40648601c7
commit b9b6cdf4f4
  1. 40
      src/views/basicData/jobTransferManagement.vue
  2. 128
      src/views/costStatistics/index.vue
  3. 163
      src/views/flowManagement/managementOfKeyTasks.vue
  4. 3
      src/views/inboundOutboundManagement/binTransfer/index.vue
  5. 103
      src/views/inboundOutboundManagement/glassCakeOutbound/components/outboundDialog.vue
  6. 164
      src/views/inboundOutboundManagement/glassCakeOutbound/index.vue
  7. 2
      src/views/inboundOutboundManagement/pickListPrinting.vue
  8. 9
      src/views/inboundOutboundManagement/returnReceiving.vue
  9. 235
      src/views/orderManagement/planYieIdOrder.vue
  10. 899
      src/views/orderManagement/sinTerYieIdOrder.vue
  11. 139
      src/views/productionManagement/reworkOrder.vue
  12. 199
      src/views/safetyManagement/wastewater/components/addEditDialogDischargeRec.vue
  13. 9
      src/views/statisticalAnalysis/warehouseAnalysis/inOutBoundReport.vue
  14. 432
      src/views/warehouseManagement/leveragingManagement.vue
  15. 54
      src/views/warehouseManagement/materialMaintenance.vue
  16. 105
      src/views/workLicense/workLicense.vue
  17. 4
      vite.config.mjs

@ -553,7 +553,45 @@ export default {
{
required: true,
message: "请输入身份证号码",
trigger: "click",
trigger: "blur",
},
{
pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
message: "请输入正确的身份证号码格式",
trigger: "blur",
validator: (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入身份证号码'));
}
// 15
if (value.length === 15) {
const pattern = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
if (!pattern.test(value)) {
return callback(new Error('请输入有效的15位身份证号码'));
}
}
// 18
else if (value.length === 18) {
const pattern = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
if (!pattern.test(value)) {
return callback(new Error('请输入有效的18位身份证号码'));
}
//
const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
const codes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
let sum = 0;
for (let i = 0; i < 17; i++) {
sum += parseInt(value.charAt(i)) * weights[i];
}
const lastCode = codes[sum % 11];
if (value.toUpperCase().charAt(17) !== lastCode) {
return callback(new Error('身份证号码校验码不正确,请核对'));
}
} else {
return callback(new Error('身份证号码长度不正确,应为15位或18位'));
}
callback();
}
},
],
},

@ -3,12 +3,7 @@
<!-- 成本统计 -->
<el-form :inline="true" :model="searchForm">
<el-form-item label="月份">
<el-date-picker
v-model="searchForm.monthDate"
type="month"
placeholder="选择月"
required
>
<el-date-picker v-model="searchForm.monthDate" type="month" placeholder="选择月" required>
</el-date-picker>
</el-form-item>
<el-form-item>
@ -19,23 +14,10 @@
</el-form>
<el-row>
<el-col :span="20">
<avue-crud
:option="option"
:table-loading="loading"
:data="data"
v-model="form"
v-model:page="page"
ref="crud"
@row-update="rowUpdate"
@row-save="rowSave"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
>
<avue-crud :option="option" :table-loading="loading" :data="data" v-model="form" v-model:page="page" ref="crud"
@row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
<template #menu-left>
<el-button type="primary" @click="openCostCalcDialog">成本计算</el-button>
<!-- <el-button type="primary" @click="isLockClick">锁定/解锁</el-button> -->
@ -48,34 +30,44 @@
</avue-crud>
</el-col>
<el-col :span="4">
<avue-crud
:option="detailsOption"
:table-loading="loading"
:data="data"
v-model="form"
v-model:page="page"
ref="crud"
@row-update="rowUpdate"
@row-save="rowSave"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
style="margin-top: 46px; margin-left: 12px"
></avue-crud>
<avue-crud :option="detailsOption" :table-loading="loading" :data="data" v-model="form" v-model:page="page"
ref="crud" @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
@search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
@size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
style="margin-top: 46px; margin-left: 12px"></avue-crud>
</el-col>
</el-row>
<el-dialog
:modelValue="openShow"
title="提示"
width="400px"
:close-on-click-modal="false"
class="cost-confirm-dialog"
>
<div class="dialog-content">
<i class="el-icon-warning"></i>
<p><span class="month-highlight">{{ selectMonth }}</span>月已计算成本是否重新计算</p>
</div>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="handleRecalculate">重新计算</el-button>
<el-button @click="CloseDialog">取消</el-button>
</div>
</template>
</el-dialog>
</basic-container>
</template>
<script>
import ClosedDialog from '../productionManagement/components/closedDialog.vue';
export default {
data() {
return {
selectMonth: '',
openShow: false,
searchForm: {},
loading: false,
data: [],
@ -108,7 +100,7 @@ export default {
viewBtnText: "详情",
labelWidth: 120,
searchLabelWidth: 120,
menu: false,
menu: true,
menuWidth: 220,
dialogWidth: 1200,
dialogClickModal: false,
@ -220,7 +212,7 @@ export default {
viewBtnText: "详情",
labelWidth: 120,
searchLabelWidth: 120,
menu: false,
menu: true,
menuWidth: 220,
dialogWidth: 1200,
dialogClickModal: false,
@ -245,7 +237,7 @@ export default {
delBtnIcon: " ",
editBtnIcon: " ",
align: "center",
menu: false,
menu: true,
header: false,
column: [
@ -267,7 +259,7 @@ export default {
},
};
},
mounted() {},
mounted() { },
methods: {
selectionChange(val) {
this.selectionList = val;
@ -287,7 +279,7 @@ export default {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {});
}).then(() => { });
},
onLoad() {
this.data = [
@ -304,12 +296,50 @@ export default {
volumeOutput2: "90",
wcCode: "类型1",
wcCode1: "4",
selectMonth: '1',
},
];
},
openCostCalcDialog() {
this.openShow = true
},
CloseDialog() {
this.openShow = false
}
},
};
</script>
<style></style>
<style scoped>
/* 确保操作列不换行 */
.avue-crud .el-table .cell {
white-space: nowrap;
}
.cost-confirm-dialog .dialog-content {
display: flex;
align-items: center;
padding: 10px 0;
font-size: 16px;
line-height: 24px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.cost-confirm-dialog .el-icon-warning {
color: #E6A23C;
font-size: 24px;
margin-right: 15px;
}
.cost-confirm-dialog .month-highlight {
color: #409EFF;
font-weight: bold;
margin: 0 4px;
}
.cost-confirm-dialog .dialog-footer {
text-align: right;
margin-top: 20px;
}
</style>

@ -122,6 +122,7 @@
</el-table>
</template>
</avue-crud>
<!-- 新增弹窗 -->
<el-dialog append-to-body :title="title" v-model="addDialog" width="80%">
<el-form ref="addForm" :model="addForm" :rules="addRules" label-width="140px">
<el-row>
@ -243,10 +244,11 @@
<el-button type="primary" icon="el-icon-plus" @click="openDialog()"
>插入一行</el-button
>
<el-button plain type="danger" @click="remove">删除选择行</el-button>
<el-button plain type="danger" @click="delTable">删除选择行</el-button>
<!-- <el-button type="primary" @click="handleSave">保存</el-button> -->
</div>
<el-table :data="addForm.detailList">
<!-- 插入一行 -->
<el-table :data="addForm.detailList" ref="detailTable">
<el-table-column type="selection"></el-table-column>
<el-table-column type="index" width="80" label="序号"></el-table-column>
<el-table-column
@ -254,25 +256,97 @@
:width="title == '详情' ? '120' : ''"
label="里程碑计划"
prop="milestonePlan"
></el-table-column>
>
<template #default="scope">
<template v-if="title != '详情'">
<el-form-item
:prop="'detailList.' + scope.$index + '.milestonePlan'"
:rules="{ required: true, message: '请输入里程碑计划', trigger: ['blur'] }"
label-width="0"
>
<el-input
v-model="scope.row.milestonePlan"
placeholder="请输入里程碑计划"
@input="() => {$refs.addForm.validateField('detailList.' + scope.$index + '.milestonePlan')}"
></el-input>
</el-form-item>
</template>
<template v-else>
<span>{{ scope.row.milestonePlan }}</span>
</template>
</template>
</el-table-column>
<el-table-column
align="center"
:width="title == '详情' ? '120' : ''"
label="里程碑负责人"
prop="milestoneMan.userId"
></el-table-column>
>
<template #default="scope">
<template v-if="title != '详情'">
<el-form-item
:prop="'detailList.' + scope.$index + '.milestoneMan.userId'"
:rules="{ required: true, message: '请选择里程碑负责人', trigger: 'change' }"
label-width="0"
>
<el-select v-model="scope.row.milestoneMan.userId" placeholder="请选择里程碑负责人">
<el-option label="负责人一" :value="1"></el-option>
<el-option label="负责人二" :value="2"></el-option>
</el-select>
</el-form-item>
</template>
<template v-else>
<span>{{ scope.row.milestoneMan.userName }}</span>
</template>
</template>
</el-table-column>
<el-table-column
align="center"
:width="title == '详情' ? '150' : ''"
label="里程碑输出物"
prop="outputMaterial"
></el-table-column>
>
<template #default="scope">
<template v-if="title != '详情'">
<el-form-item
:prop="'detailList.' + scope.$index + '.outputMaterial'"
:rules="{ required: true, message: '请输入里程碑输出物', trigger: 'blur' }"
label-width="0"
>
<el-input v-model="scope.row.outputMaterial" placeholder="请输入里程碑输出物"></el-input>
</el-form-item>
</template>
<template v-else>
<span>{{ scope.row.outputMaterial }}</span>
</template>
</template>
</el-table-column>
<el-table-column
align="center"
:width="title == '详情' ? '180' : ''"
label="里程碑节点"
prop="milestoneNode"
></el-table-column>
>
<template #default="scope">
<template v-if="title != '详情'">
<el-form-item
:prop="'detailList.' + scope.$index + '.milestoneNode'"
:rules="{ required: true, message: '请选择里程碑节点', trigger: 'change' }"
label-width="0"
>
<el-date-picker
v-model="scope.row.milestoneNode"
type="datetime"
placeholder="选择日期时间"
style="width: 100%"
/>
</el-form-item>
</template>
<template v-else>
<span>{{ scope.row.milestoneNode }}</span>
</template>
</template>
</el-table-column>
<el-table-column
v-if="title == '详情'"
align="center"
@ -576,6 +650,17 @@ export default {
projectDesiredEnd: [
{ required: true, message: "请选择项目结束预期时间", trigger: "blur" },
],
detailList: {
type: 'array',
required: true,
validator: (rule, array, callback) => {
if (!array || array.length === 0) {
callback(new Error('请至少添加一条里程碑记录'));
} else {
callback();
}
}
}
},
page: {
pageSize: 10,
@ -773,8 +858,52 @@ export default {
},
mounted() {},
methods: {
insertEvent() {
//
this.addForm.detailList.push({
})
},
openDialog() {
//
const newRow = {
status: 3,
statusTitle: "待执行",
checkMan: null,
checkResult: 0,
checkResultTitle: "未核查",
checkTime: null,
delayDate: false,
delayTime: null,
evaluate: null,
evolve: "",
executeResult: 0,
executeResultTitle: "无",
grade: 0,
gradeMan: null,
gradeTitle: "未评价",
keyValue: Date.now(),
lastPlan: "",
milestoneMan: {
accountId: null,
userId: null,
userName: ""
},
milestoneMemo: "",
milestoneNode: "",
milestonePlan: "",
okTime: null,
outputMaterial: "",
paIndex: (this.addForm.detailList?.length || 0) + 1,
pmId: this.addForm.paId,
score: null,
updateMan: null
};
if (!this.addForm.detailList) {
this.addForm.detailList = [];
}
this.addForm.detailList.push(newRow);
this.$message.success('插入成功');
},
handleAdd() {
this.title = "新增";
@ -816,11 +945,7 @@ export default {
},
// /
submitForm() {
this.$refs.addForm.validate((valid) => {
if (valid) {
this.addDialog = false;
}
});
},
//
checkRow() {
@ -877,7 +1002,6 @@ export default {
},
//
downloadFile(file) {
//
const link = document.createElement('a');
link.href = file.url;
link.download = file.name;
@ -896,7 +1020,20 @@ export default {
this.$message.success('删除成功');
}).catch(() => {});
},
onLoad() {
delTable() {
//
const selection = this.$refs.detailTable?.getSelection();
if (!selection || selection.length === 0) {
this.$message.warning('请先选择要删除的行');
return;
}
//
this.addForm.detailList = this.addForm.detailList.filter(
row => !selection.some(selected => selected.keyValue === row.keyValue)
);
this.$message.success('删除成功');
},
onLoad() {
this.data = [
{
status: 1,

@ -5,7 +5,7 @@
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
<template #menu-left>
<el-button type="danger" @click="handle()">删除</el-button>
<!-- <el-button type="danger" @click="handle()">删除</el-button> -->
</template>
<template #menu-right>
<!-- <el-button type="primary" @click="allocationFun()">批量调拨</el-button> -->
@ -77,6 +77,7 @@ export default {
delBtnIcon: ' ',
editBtnIcon: ' ',
align: 'center',
editBtn: false,
column: [
{

@ -27,6 +27,10 @@ export default {
type: Boolean,
default: false
},
rowItem: {
type: Object,
default: () => ({})
}
},
data() {
return {
@ -132,6 +136,30 @@ addBtnIcon: ' ',
prop: 'chukushuliang',
search: false,
},
{
label: '实际出库玻璃饼型号',
prop: 'actualPartCode',
search: false,
type: 'select',
dicData: [
{ label: '型号A', value: 'A' },
{ label: '型号B', value: 'B' },
{ label: '型号C', value: 'C' },
{ label: '型号D', value: 'D' },
]
},
{
label: '实际库位',
prop: 'actualKuwei',
search: false,
type: 'select',
dicData: [
{ label: '库位一', value: '库位一' },
{ label: '库位二', value: '库位二' },
{ label: '库位三', value: '库位三' },
{ label: '库位四', value: '库位四' },
]
},
]
},
@ -140,7 +168,24 @@ addBtnIcon: ' ',
}
},
mounted() {
this.openShow = this.showDialog
this.openShow = this.showDialog;
this.onLoad();
},
watch: {
showDialog(newVal) {
this.openShow = newVal;
if (newVal) {
this.onLoad();
}
},
rowItem: {
handler() {
if (this.openShow) {
this.onLoad();
}
},
deep: true
}
},
methods: {
query() {
@ -167,6 +212,11 @@ addBtnIcon: ' ',
this.openShow = false
this.$emit('closeDialog');
},
submit() {
// 使
const formData = this.data.length > 0 ? {...this.data[0], ...this.rowItem} : {...this.rowItem};
this.$emit('confirmOutbound', formData);
},
delFn() {
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
@ -186,25 +236,38 @@ addBtnIcon: ' ',
});
},
onLoad() {
this.data = [
{
brCode: 'aaaa',
woCode: 'WO-090899899',
partCode: 'E6-78787-E1',
partName: '零件一',
batchNo: '9098900',
okNum: '88',
c_materiel_id: '89',
partNames: '8989',
xuqiushuliang: 99,
chukushuliang: 67,
goodbatchNo: '898989',
bsStoreRoomSet: '仓库一',
goodsKuwei: '库位一',
status: 1,
times: '2025-09-08'
},
]
// 使rowItem使
if (this.rowItem && this.rowItem.brCode) {
this.data = [{
...this.rowItem,
//
actualPartCode: this.rowItem.actualPartCode || 'A',
actualKuwei: this.rowItem.actualKuwei || '库位一'
}];
} else {
this.data = [
{
brCode: 'aaaa',
woCode: 'WO-090899899',
partCode: 'E6-78787-E1',
partName: '零件一',
batchNo: '9098900',
okNum: '88',
c_materiel_id: '89',
partNames: '8989',
xuqiushuliang: 99,
chukushuliang: 67,
goodbatchNo: '898989',
bsStoreRoomSet: '仓库一',
goodsKuwei: '库位一',
status: 1,
times: '2025-09-08',
//
actualPartCode: 'A',
actualKuwei: '库位一'
},
];
}
this.page.total = this.data.length
}
}

@ -35,7 +35,13 @@
v-if="scope.row.status == '1'"
>出库
</el-button>
<el-button type="text" @click="handleDelete" v-if="scope.row.status == '2'"
<el-button type="text" @click="handleEdit(scope.row)" v-if="scope.row.status == '1'"
>修改
</el-button>
<el-button type="text" @click="handleDelete(scope.row)" v-if="scope.row.status == '1'"
>删除
</el-button>
<el-button type="text" @click="handleScrap(scope.row)" v-if="scope.row.status == '2'"
>报废
</el-button>
</template>
@ -101,7 +107,18 @@ export default {
labelWidth: 140,
searchLabelWidth: 120,
menu: true,
menuWidth: 200,
menuWidth: 300,
menuBtn: true,
menuBtnIcon: 'el-icon-menu',
menuBtnTitle: '操作',
menuList: [
{ label: '详情', value: 'details' },
{ label: '打印', value: 'print', display: (row) => row.status == '1' },
{ label: '出库', value: 'outbound', display: (row) => row.status == '1' },
{ label: '修改', value: 'edit', display: (row) => row.status == '1' },
{ label: '删除', value: 'delete', display: (row) => row.status == '1' },
{ label: '报废', value: 'scrap', display: (row) => row.status == '2' }
],
dialogWidth: 1200,
dialogClickModal: false,
searchEnter: true,
@ -125,7 +142,7 @@ export default {
{
label: "出库单号",
prop: "brCode",
search: true,
search: false,
width: 120,
searchLabelWidth: 75,
},
@ -155,16 +172,23 @@ export default {
search: false,
width: 120,
},
{
label: "流程卡号",
prop: "processCardNo",
search: true,
width: 120,
},
{
label: "生产数量",
prop: "okNum",
search: false,
width: 120,
},
{
label: "物料号",
label: "物料号",
prop: "c_materiel_id",
search: false,
search: true,
width: 120,
},
{
@ -180,29 +204,71 @@ export default {
width: 120,
},
{
label: "物料出库数量",
prop: "chukushuliang",
label: "库房",
prop: "bsStoreRoomSet",
search: false,
width: 120,
},
{
label: "物料批次号",
prop: "goodbatchNo",
label: "库位",
prop: "goodsKuwei",
search: false,
width: 120,
},
{
label: "仓库",
prop: "bsStoreRoomSet",
label: "是否印字",
prop: "isPrint",
search: false,
width: 120,
type : "select",
dicData : [
{
label : "是",
value : "1"
},
{
label : "否",
value : "0"
}
]
},
{
label: "物料库位",
prop: "goodsKuwei",
label: "粉重",
prop: "powderWeight",
search: false,
width: 120,
},
{
label: "材料号",
prop: "materialCode",
search: false,
width: 120,
},
{
label: "成型厚度",
prop: "chengxinghoudu",
search: false,
width: 120,
},
{
label: "炉批号",
prop: "luPiHao",
search: false,
width: 120,
},
{
label: "物料出库数量",
prop: "chukushuliang",
search: false,
width: 120,
},
// {
// label: "",
// prop: "goodbatchNo",
// search: false,
// width: 120,
// },
{
label: "状态",
prop: "status",
@ -220,7 +286,7 @@ export default {
value: "2",
},
{
label: "订单关闭",
label: "已报废",
value: "3",
},
{
@ -247,6 +313,32 @@ export default {
search: false,
width: 120,
},
{
label: "创建时间",
prop: "createTime",
search: false,
width: 120,
type: "datetime",
},
{
label: "创建人",
prop: "createUserName",
search: false,
width: 120,
},
{
label: "出库时间",
prop: "outboundTime",
search: false,
width: 120,
type: "datetime",
},
{
label: "出库人",
prop: "outboundUserName",
search: false,
width: 120,
},
],
},
isAddOpen: false,
@ -312,22 +404,44 @@ export default {
});
},
//
ouboundFn() {
ouboundFn(row) {
this.$confirm("确定是否出库?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
// return remove(row.id);
})
.then(() => {
// this.onLoad(this.page);
// this.$message({
// type: 'success',
// message: '!',
// });
});
.catch(() => {});
},
//
handleEdit(row) {
this.isAddOpen = true;
},
//
handleDelete(row) {
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
},
//
handleScrap(row) {
this.$confirm('确定将此记录标记为报废?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const index = this.data.findIndex(item => item.brCode === row.brCode);
if (index !== -1) {
this.data[index].status = 3;
this.data[index].statusName = "已报废";
this.$message.success('标记报废成功');
}
}).catch(() => {});
},
onLoad() {
this.data = [
@ -381,8 +495,8 @@ export default {
goodbatchNo: "898989",
bsStoreRoomSet: "仓库一",
goodsKuwei: "库位一",
status: 3,
statusName: "订单关闭",
status: 1,
statusName: "",
times: "2025-09-08",
},
{

@ -20,7 +20,7 @@
@on-load="onLoad"
>
<template #menu="scope">
<el-button type="text" @click="showDetail(scope.row)">详情</el-button>
<!-- <el-button type="text" @click="showDetail(scope.row)">详情</el-button> -->
</template>
<template #menu-left>
<el-button type="primary" :disabled="selectionList.length == 0"

@ -280,6 +280,15 @@ export default {
},
],
},
{
label: '检验编号',
prop: 'checkNo',
bind: 'stAccBill.checkNo',
width: 150,
search: false,
sortable: true,
overHidden: true,
},
],
},
};

@ -1,13 +1,13 @@
<template>
<basic-container>
<avue-crud :option="option" :table-loading="loading" :data="data" v-model="form" v-model:page="page" ref="crud"
@row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
<template #menu-left>
<el-button type="primary" @click="batchClose()">批量确认</el-button>
<el-button type="primary" @click="batchClose()">批量关闭</el-button>
<el-button type="primary" @click.stop="priorityFn(row)">优先级调整</el-button>
</template>
<template #menu-right>
@ -31,28 +31,30 @@
}}</el-tag>
</template>
<template #menu="{ row }">
<el-button type="primary" text plain style="border: 0; background-color: transparent !important"
@click="lookProcessRoute(row)">工艺路线
</el-button>
<el-button type="primary" text plain style="border: 0; background-color: transparent !important"
@click.stop="priorityFn(row)">优先级调整
</el-button>
<el-button type="primary" text plain style="border: 0; background-color: transparent !important"
@click.stop="updateFn(row)">修改
</el-button>
<div class="menu-buttons">
<el-button type="primary" text plain size="small" @click="lookProcessRoute(row)">工艺路线
</el-button>
<el-button type="primary" text plain size="small" @click.stop="priorityFn(row)">优先级调整
</el-button>
<el-button type="primary" text plain size="small" @click.stop="updateFn(row)">修改
</el-button>
<el-button type="primary" text plain size="small" @click.stop="confirmFn(row)">批量确认
</el-button>
</div>
</template>
</avue-crud>
<!-- 加急 -->
<!-- <rushDialog :showDialog="isRushOpen" v-if="isRushOpen" @closeDialog="closeDialog"></rushDialog>
<!-- <rushDialog :showDialog="isRushOpen" v-if="isRushOpen" @closeDialog="closeDialog"></rushDialog>
<batchDialog :showDialog="isBatchOpen" v-if="isBatchOpen" @closeDialog="closeDialog"></batchDialog> -->
<batchDialog :showDialog="isBatchOpen" v-if="isBatchOpen" @closeDialog="closeDialog"></batchDialog> -->
<!-- 修改 -->
<orderUpdateDailog :showDialog="isUpdateOpen" v-if="isUpdateOpen" @closeDialog="closeDialog"></orderUpdateDailog>
<!-- 优先级调整 -->
<priorityDialog :showDialog="isPriorityOpen" v-if="isPriorityOpen" @closeDialog="closeDialog"></priorityDialog>
<!-- 修改 -->
<orderUpdateDailog :showDialog="isUpdateOpen" v-if="isUpdateOpen" @closeDialog="closeDialog">
</orderUpdateDailog>
<!-- 优先级调整 -->
<priorityDialog :showDialog="isPriorityOpen" v-if="isPriorityOpen" @closeDialog="closeDialog"></priorityDialog>
</basic-container>
</template>
@ -84,7 +86,7 @@ export default {
},
data() {
return {
isUpdateOpen:false,
isUpdateOpen: false,
inBatchesOpen: false,
platingSmallOpen: false,
planOrderArr: [],
@ -133,7 +135,7 @@ export default {
editBtnText: '修改',
labelWidth: 120,
// searchLabelWidth: 120,
menuWidth: 240,
menuWidth: 300,
dialogWidth: 900,
dialogClickModal: false,
searchEnter: true,
@ -199,7 +201,7 @@ export default {
span: 12,
headerAlign: 'center',
align: 'center',
rules: [
{
required: true,
@ -225,6 +227,42 @@ export default {
},
],
},
{
label: '产品型号',
prop: 'productType',
search: false,
sortable: true,
disabled: true,
width: 120,
span: 12,
headerAlign: 'center',
align: 'center',
rules: [
{
required: false,
message: '请输入角色名称',
trigger: 'blur',
},
],
},
{
label: '产品名称',
prop: 'partName',
search: false,
sortable: true,
disabled: true,
span: 12,
width: 150,
headerAlign: 'center',
align: 'left',
rules: [
{
required: false,
message: '请输入角色名称',
trigger: 'blur',
},
],
},
{
label: '流程卡号',
prop: 'poCode',
@ -242,39 +280,36 @@ export default {
},
],
},
{
label: '产品型号',
prop: 'productType',
search: false,
label: '流转编号',
prop: 'poCode',
search: true,
sortable: true,
disabled: true,
width: 120,
width: 150,
span: 12,
headerAlign: 'center',
align: 'center',
rules: [
{
required: false,
required: true,
message: '请输入角色名称',
trigger: 'blur',
},
],
},
{
label: '产品名称',
prop: 'partName',
label: '订单优先级',
prop: 'orderPriority',
search: false,
sortable: true,
disabled: true,
span: 12,
width: 150,
span: 12,
headerAlign: 'center',
align: 'left',
align: 'center',
rules: [
{
required: false,
message: '请输入角色名称',
required: true,
message: '请输入订单优先级',
trigger: 'blur',
},
],
@ -350,7 +385,7 @@ export default {
],
},
{
label: '生产数量',
label: '需求数量',
prop: 'poQty',
search: false,
sortable: true,
@ -384,7 +419,7 @@ export default {
},
],
},
{
label: '需求交期',
prop: 'demandDate',
@ -436,47 +471,46 @@ export default {
required: true,
message: '请输入角色名称',
trigger: 'blur',
},
],
}, ],
},
{
label: '流转编号',
prop: 'poCode',
label: '返工单号',
prop: 'returnWorkOrderNo',
search: true,
sortable: true,
width: 150,
width: 120,
span: 12,
headerAlign: 'center',
align: 'center',
rules: [
{
required: true,
message: '请输入角色名称',
message: '请输入原生产单号',
trigger: 'blur',
},
],
},
{
label: '备注',
prop: 'memo',
label: '原生产单号',
prop: 'originalProductionOrderNo',
search: false,
sortable: true,
span: 24,
type: 'textarea',
width: 150,
width: 120,
span: 12,
headerAlign: 'center',
align: 'left',
align: 'center',
rules: [
{
required: true,
message: '请输入角色名称',
message: '请输入原生产单号',
trigger: 'blur',
},
],
},
{
label: '状态',
label: '订单状态',
prop: 'curStatusText',
search: true,
sortable: true,
@ -504,14 +538,32 @@ export default {
label: '已关闭'
}]
},
{
label: '备注',
prop: 'memo',
search: false,
sortable: true,
span: 24,
type: 'textarea',
width: 150,
headerAlign: 'center',
align: 'left',
rules: [
{
required: true,
message: '请输入角色名称',
trigger: 'blur',
},
],
},
],
},
data: [],
isRushOpen:false,//
isBatchOpen:false,//
isPriorityOpen:false,//
isRushOpen: false,//
isBatchOpen: false,//
isPriorityOpen: false,//
};
},
computed: {
@ -549,11 +601,11 @@ export default {
},
methods: {
//
priorityFn(){
priorityFn() {
this.isPriorityOpen = true
},
//
updateFn(){
updateFn() {
this.isUpdateOpen = true
},
//
@ -593,10 +645,10 @@ export default {
});
},
//
rushFn(){
rushFn() {
this.isRushOpen = true
},
closeDialog(){
closeDialog() {
this.isRushOpen = false
this.isBatchOpen = false
this.isUpdateOpen = false
@ -801,9 +853,46 @@ export default {
message: '操作成功!',
});
},
confirmFn() {
this.$confirm('确定将选择数据批量确认?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
// return remove(row.id);
})
.then(() => {
// this.onLoad(this.page);
// this.$message({
// type: 'success',
// message: '!',
// });
});
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
handleEdit(row) {
this.$refs.editDialog.open(row);
},
handleDelete(row) {
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
})
},
onLoad(page, params = {}) {
this.loading = true;
// 使
if (Object.keys(params).length === 0 && Object.keys(this.query).length > 0) {
params = this.query;
}
this.data = [
{
id: 1,
@ -1866,6 +1955,32 @@ export default {
},
},
mounted() {
//
this.query = {
curStatusText: '已派工'
};
}
};
</script>
<style scoped>
.menu-buttons {
display: flex;
flex-wrap: nowrap;
justify-content: flex-start;
white-space: nowrap;
overflow: hidden;
width: 100%;
}
.menu-buttons .el-button {
margin-right: 5px;
padding: 2px 5px;
min-width: auto;
flex-shrink: 0;
}
.menu-buttons .el-button span {
white-space: nowrap;
}
</style>

File diff suppressed because it is too large Load Diff

@ -71,30 +71,30 @@ export default {
gridBtn: false,
searchMenuPosition: "right",
column: [
{
label: "返修单号",
prop: "searchCode",
searchLabelWidth: 150,
search: true,
hide: true,
addDisplay: false,
viewDisplay: false,
editDisplay: false,
sortable: true,
filter: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
span: 24,
width: 200,
rules: [
{
required: true,
message: "请输入流程卡号",
trigger: "blur",
},
],
},
// {
// label: "",
// prop: "searchCode",
// searchLabelWidth: 150,
// search: true,
// hide: true,
// addDisplay: false,
// viewDisplay: false,
// editDisplay: false,
// sortable: true,
// filter: true,
// addDisplay: false,
// editDisplay: false,
// viewDisplay: false,
// span: 24,
// width: 200,
// rules: [
// {
// required: true,
// message: "",
// trigger: "blur",
// },
// ],
// },
{
label: "返工单号",
prop: "redono",
@ -155,8 +155,28 @@ export default {
},
],
},
// {
// label: "",
// prop: "prtno",
// searchLabelWidth: 150,
// search: true,
// sortable: true,
// filter: true,
// addDisplay: false,
// editDisplay: false,
// viewDisplay: false,
// span: 24,
// width: 200,
// rules: [
// {
// required: true,
// message: "",
// trigger: "blur",
// },
// ],
// },
{
label: "物料号",
label: "零件号",
prop: "prtno",
searchLabelWidth: 150,
search: true,
@ -236,10 +256,10 @@ export default {
],
},
{
label: "备注",
prop: "remark",
label: "批次号",
prop: "splcode",
searchLabelWidth: 150,
search: false,
search: true,
sortable: true,
filter: true,
addDisplay: false,
@ -250,13 +270,13 @@ export default {
rules: [
{
required: true,
message: "请输入备注",
message: "请输入批次号",
trigger: "blur",
},
],
},
{
label: "需求期",
label: "需求期",
prop: "reqdate",
searchLabelWidth: 150,
search: false,
@ -276,8 +296,8 @@ export default {
],
},
{
label: "批次号",
prop: "splcode",
label: "接收状态",
prop: "status",
searchLabelWidth: 150,
search: true,
sortable: true,
@ -285,16 +305,69 @@ export default {
addDisplay: false,
editDisplay: false,
viewDisplay: false,
type: "select",
dicData: [
{
label: "待接收",
value: "0",
},
{
label: "已接收",
value: "1",
},
],
span: 24,
width: 200,
rules: [
{
required: true,
message: "请输入批次号",
message: "请选择接收状态",
trigger: "blur",
},
],
},
// {
// label: "",
// prop: "reqdate",
// searchLabelWidth: 150,
// search: false,
// sortable: true,
// filter: true,
// addDisplay: false,
// editDisplay: false,
// viewDisplay: false,
// span: 24,
// width: 200,
// rules: [
// {
// required: true,
// message: "",
// trigger: "blur",
// },
// ],
// },
{
label: "备注",
prop: "remark",
searchLabelWidth: 150,
search: false,
sortable: true,
filter: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
span: 24,
width: 200,
rules: [
{
required: true,
message: "请输入备注",
trigger: "blur",
},
],
},
],
},
};

@ -4,68 +4,75 @@
<el-button type="primary" @click="addTable">插入一行</el-button>
<el-button type="danger" @click="delTable">删除行</el-button>
</div>
<el-table :data="tableData" style="width: 100%" border :cell-style="{padding: '5px'}">
<!-- 报废槽液类型可选择 -->
<el-table-column prop="wasteType" label="报废槽液类型" align="center" width="170">
<template #header>
<span><i style="color: red">*</i>报废槽液类型</span>
</template>
<template #default="scope">
<el-select v-model="scope.row.wasteType" placeholder="请选择" style="width: 100%">
<el-option label="预镀镍废液" value="预镀镍废液" />
<el-option label="除油废液" value="除油废液" />
<el-option label="其它废液" value="其它废液" />
</el-select>
</template>
</el-table-column>
<el-form ref="tableForm" :model="form" :rules="formRules" label-width="0px">
<!-- 全局错误提示 -->
<div v-if="formError" class="error-message" style="color: #f56c6c; margin-bottom: 10px;">
{{ formError }}
</div>
<el-table :data="tableData" style="width: 100%" border :cell-style="{ padding: '5px' }">
<!-- 报废槽液类型可选择 -->
<el-table-column prop="wasteType" label="报废槽液类型" align="center" width="170">
<template #header>
<span><i style="color: red">*</i>报废槽液类型</span>
</template>
<template #default="scope">
<el-select v-model="scope.row.wasteType" placeholder="请选择" style="width: 100%">
<el-option label="预镀镍废液" value="预镀镍废液" />
<el-option label="除油废液" value="除油废液" />
<el-option label="其它废液" value="其它废液" />
</el-select>
</template>
</el-table-column>
<!-- 排放班组可选择 -->
<el-table-column prop="teamName" label="排放班组" align="center" width="170">
<template #header>
<span><i style="color: red">*</i>排放班组</span>
</template>
<template #default="scope">
<el-select v-model="scope.row.teamName" placeholder="请选择" style="width: 100%">
<el-option label="化学镀镍二班" value="化学镀镍二班" />
<el-option label="零件管理班" value="零件管理班" />
</el-select>
</template>
</el-table-column>
<!-- 排放班组可选择 -->
<el-table-column prop="teamName" label="排放班组" align="center" width="170">
<template #header>
<span><i style="color: red">*</i>排放班组</span>
</template>
<template #default="scope">
<el-select v-model="scope.row.teamName" placeholder="请选择" style="width: 100%">
<el-option label="化学镀镍二班" value="化学镀镍二班" />
<el-option label="零件管理班" value="零件管理班" />
</el-select>
</template>
</el-table-column>
<!-- 排放量输入框 -->
<el-table-column prop="amount" label="排放量(单位:L)" align="center" width="170">
<template #header>
<span><i style="color: red">*</i>排放量</span>
</template>
<template #default="scope">
<el-input v-model.number="scope.row.amount" placeholder="请输入" />
</template>
</el-table-column>
<!-- 排放量输入框 -->
<el-table-column prop="amount" label="排放量(单位:L)" align="center" width="170">
<template #header>
<span><i style="color: red">*</i>排放量</span>
</template>
<template #default="scope">
<el-input v-model.number="scope.row.amount" placeholder="请输入" />
</template>
</el-table-column>
<!-- 日期日期选择器 -->
<el-table-column prop="dirDate" label="日期" align="center" width="170">
<template #header>
<span><i style="color: red" >*</i>日期</span>
</template>
<template #default="scope">
<el-date-picker v-model="scope.row.dirDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="date" placeholder="选择日期" style="width: 100%" />
</template>
</el-table-column>
<!-- 日期日期选择器 -->
<el-table-column prop="dirDate" label="日期" align="center" width="170">
<template #header>
<span><i style="color: red">*</i>日期</span>
</template>
<template #default="scope">
<el-date-picker v-model="scope.row.dirDate" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss" type="date" placeholder="选择日期" style="width: 100%" />
</template>
</el-table-column>
<!-- 备注输入框 -->
<el-table-column prop="memo" label="备注" align="center" >
<template #default="scope">
<el-input v-model="scope.row.memo" placeholder="请输入备注" />
</template>
</el-table-column>
</el-table>
<!-- 备注输入框 -->
<el-table-column prop="memo" label="备注" align="center">
<template #default="scope">
<el-input v-model="scope.row.memo" placeholder="请输入备注" />
</template>
</el-table-column>
</el-table>
<template #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</template>
<template #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button>
</span>
</template>
</el-form>
</el-dialog>
</template>
<script>
@ -84,6 +91,10 @@ export default {
return {
openShow: false,
tableData: [],
formError: '', //
form: {
tableData: [] // Form
},
};
},
watch: {
@ -99,6 +110,7 @@ export default {
closeDialog() {
this.openShow = false;
this.$emit('closeDialog');
this.formError = '';
//
this.tableData = [{ wasteType: null, teamName: null, amount: null, dirDate: null, memo: '' }];
},
@ -110,38 +122,53 @@ export default {
delTable() {
this.tableData.pop()
},
//
submit() {
//
const isValid = this.tableData.every(row => {
//
console.log("验证数据:", {
wasteType: row.wasteType,
teamName: row.teamName,
amount: row.amount,
dirDate: row.dirDate
//
submitForm() {
this.formError = '';
// Form
this.$refs.tableForm.validate((isValid, invalidFields) => {
if (!isValid) {
//
this.formError = '存在未完善的字段,请检查表格中的红色提示';
this.$nextTick(() => {
//
const firstError = document.querySelector('.el-form-item.is-error');
if (firstError) {
firstError.scrollIntoView({ behavior: 'smooth', block: 'center' });
}
});
return;
}
//
const submitData = this.form.tableData.map(row => {
const { _select, ...validData } = row; //
return validData;
});
//
if (!row.wasteType || !row.teamName || !row.amount || !row.dirDate) {
//
const missingFields = [];
if (!row.wasteType) missingFields.push("报废槽液类型");
if (!row.teamName) missingFields.push("排放班组");
if (!row.amount) missingFields.push("排放量");
if (!row.dirDate) missingFields.push("日期");
this.$message.error(`请完善必填项: ${missingFields.join(", ")}`);
return false;
//
try {
// const res = await submitBatchData(submitData);
// if (res.code === 200) {
// this.$message.success('');
// this.closeDialog();
// this.$emit('submitSuccess', submitData);
// } else {
// this.$message.error(res.msg || '');
// }
//
this.$message.success('提交成功');
this.closeDialog();
this.$emit('submitSuccess', submitData);
} catch (err) {
this.$message.error('网络错误,请稍后重试');
console.error('提交失败:', err);
}
return true;
});
if (isValid) {
//
this.$emit('submitData', this.tableData);
this.closeDialog(); //
}
},
}
},
};
</script>

@ -317,6 +317,15 @@ export default {
sortable: true,
overHidden: true,
},
{
label: '检验编号',
prop: 'checkNo',
bind: 'stAccBill.checkNo',
width: 150,
search: false,
sortable: true,
overHidden: true,
},
{
label: '备注',
prop: 'memo',

@ -40,8 +40,8 @@
<el-button type="primary" @click="handleReturn">批量归还</el-button>
</template>
<template #menu="scope">
<el-button type="text" @click="handleEdit(scope.row)">修改</el-button>
<!-- 删除 待借出 可以删除 其余禁止删除 -->
<el-button type="text" @click="handleEdit(scope.row)" v-if="scope.row.curStatus === 1">修改</el-button>
<el-button type="text" @click="rowDel(scope.row)" v-if="scope.row.curStatus === 1">删除</el-button>
</template>
</avue-crud>
@ -240,24 +240,7 @@ export default {
],
},
{
label: "批号",
prop: "piNo",
addDisplay: true,
editDisplay: false,
span: 6,
width: 200,
order: 6,
search: true,
rules: [
{
required: true,
message: "请输入批号",
trigger: "click",
},
],
},
{
label: "库房号",
label: "库房",
prop: "shName",
addDisplay: false,
editDisplay: false,
@ -273,7 +256,7 @@ export default {
],
},
{
label: "库位",
label: "库位",
prop: "location",
addDisplay: true,
editDisplay: false,
@ -288,11 +271,10 @@ export default {
},
],
},
{
label: "库存量",
prop: "stockNum",
{
label: "型号/牌号",
prop: "specifications",
addDisplay: true,
addDisabled: true,
editDisplay: false,
span: 6,
width: 200,
@ -300,24 +282,24 @@ export default {
rules: [
{
required: true,
message: "请输入库存量",
message: "请输入型号/牌号",
trigger: "click",
},
],
},
{
label: "可用库存",
prop: "useQuantity",
label: "批次号",
prop: "piNo",
addDisplay: true,
addDisabled: true,
editDisplay: false,
span: 6,
width: 200,
search: false,
order: 6,
search: true,
rules: [
{
required: true,
message: "请输入可用库存",
message: "请输入批号",
trigger: "click",
},
],
@ -339,24 +321,8 @@ export default {
},
],
},
{
label: "退库数量",
prop: "returnQty",
addDisplay: false,
editDisplay: false,
span: 6,
width: 200,
search: false,
rules: [
{
required: true,
message: "请输入退库数量",
trigger: "click",
},
],
},
{
label: "单位",
{
label: "计量单位",
prop: "unitName",
addDisplay: true,
editDisplay: false,
@ -372,68 +338,6 @@ export default {
},
],
},
{
label: "借出时间",
prop: "leDate",
addDisplay: true,
editDisplay: false,
type: "date",
searchRange: true,
startPlaceholder: "开始日期",
endPlaceholder: "结束日期",
span: 6,
width: 200,
order: 16,
search: true,
rules: [
{
required: true,
message: "请输入借出时间",
trigger: "click",
},
],
},
{
label: "借出仓库",
prop: "shId",
type: "select",
addDisplay: true,
editDisplay: false,
span: 6,
width: 200,
order: 15,
search: false,
rules: [
{
required: true,
message: "请输入借出仓库",
trigger: "click",
},
],
dicData: [
{ label: "仓库一", value: "001" },
{ label: "仓库二", value: "002" },
],
},
{
label: "计划归还",
prop: "leReturnDate",
order: 9,
type: "date",
addDisplay: true,
editDisplay: false,
span: 6,
width: 200,
search: false,
rules: [
{
required: true,
message: "请输入计划归还",
trigger: "click",
},
],
},
{
label: "借用部门",
prop: "deptName",
@ -509,7 +413,7 @@ export default {
},
],
},
{
{
label: "借用人",
prop: "leReturnUser",
type: "select",
@ -531,9 +435,51 @@ export default {
{ userId: 61, userName: "09391" },
{ userId: 62, userName: "03764" },
],
},
{
label: "借出时间",
prop: "leDate",
addDisplay: true,
editDisplay: false,
type: "date",
searchRange: true,
startPlaceholder: "开始日期",
endPlaceholder: "结束日期",
span: 6,
width: 200,
order: 16,
search: true,
rules: [
{
required: true,
message: "请输入借出时间",
trigger: "click",
},
],
},
{
label: "本次归还合格数量",
label: "计划归还时间",
prop: "leReturnDate",
order: 9,
type: "date",
addDisplay: true,
editDisplay: false,
span: 6,
width: 200,
search: false,
rules: [
{
required: true,
message: "请输入计划归还",
trigger: "click",
},
],
},
{
label: "归还合格数量",
prop: "passQty",
addDisplay: false,
editDisplay: false,
@ -549,7 +495,7 @@ export default {
],
},
{
label: "本次归还丢失数",
label: "归还丢失数",
prop: "loseQty",
addDisplay: false,
editDisplay: false,
@ -565,7 +511,7 @@ export default {
],
},
{
label: "本次归还报废数",
label: "归还报废数",
prop: "bfQty",
addDisplay: false,
editDisplay: false,
@ -580,6 +526,83 @@ export default {
},
],
},
// {
// label: "",
// prop: "stockNum",
// addDisplay: true,
// addDisabled: true,
// editDisplay: false,
// span: 6,
// width: 200,
// search: false,
// rules: [
// {
// required: true,
// message: "",
// trigger: "click",
// },
// ],
// },
// {
// label: "",
// prop: "useQuantity",
// addDisplay: true,
// addDisabled: true,
// editDisplay: false,
// span: 6,
// width: 200,
// search: false,
// rules: [
// {
// required: true,
// message: "",
// trigger: "click",
// },
// ],
// },
// {
// label: "退",
// prop: "returnQty",
// addDisplay: false,
// editDisplay: false,
// span: 6,
// width: 200,
// search: false,
// rules: [
// {
// required: true,
// message: "退",
// trigger: "click",
// },
// ],
// },
// {
// label: "",
// prop: "shId",
// type: "select",
// addDisplay: true,
// editDisplay: false,
// span: 6,
// width: 200,
// order: 15,
// search: false,
// rules: [
// {
// required: true,
// message: "",
// trigger: "click",
// },
// ],
// dicData: [
// { label: "", value: "001" },
// { label: "", value: "002" },
// ],
// },
// {
// label: '',
// prop: 'renewQty',
@ -596,57 +619,85 @@ export default {
// },
// ],
// },
// {
// label: "",
// prop: "createMan",
// addDisplay: false,
// editDisplay: false,
// span: 6,
// width: 200,
// search: true,
// searchLabelWidth: 90,
// rules: [
// {
// required: true,
// message: "",
// trigger: "click",
// },
// ],
// },
// {
// label: "使",
// prop: "useNumber",
// addDisplay: false,
// editDisplay: false,
// span: 6,
// width: 200,
// search: false,
// rules: [
// {
// required: true,
// message: "使",
// trigger: "click",
// },
// ],
// },
// {
// label: "",
// prop: "createTime",
// addDisplay: false,
// editDisplay: false,
// span: 6,
// width: 200,
// type: "date",
// searchRange: true,
// startPlaceholder: "",
// endPlaceholder: "",
// search: true,
// searchLabelWidth: 100,
// rules: [
// {
// required: true,
// message: "",
// trigger: "click",
// },
// ],
// },
{
label: "本次归还人",
prop: "createMan",
label: "是否报废",
prop: "isScrap",
addDisplay: false,
editDisplay: false,
span: 6,
width: 200,
search: true,
searchLabelWidth: 90,
rules: [
search: false,
type: "select",
searchOrder: 17,
dicData: [
{
required: true,
message: "请输入本次归还人",
trigger: "click",
label: "是",
value: 1,
},
],
},
{
label: "本次使用次数",
prop: "useNumber",
addDisplay: false,
editDisplay: false,
span: 6,
width: 200,
search: false,
rules: [
{
required: true,
message: "请输入本次使用次数",
trigger: "click",
label: "否",
value: 0,
},
],
},
{
label: "本次归还时间",
prop: "createTime",
addDisplay: false,
editDisplay: false,
span: 6,
width: 200,
type: "date",
searchRange: true,
startPlaceholder: "开始日期",
endPlaceholder: "结束日期",
search: true,
searchLabelWidth: 100,
rules: [
{
required: true,
message: "请输入本次归还时间",
message: "请输入状态",
trigger: "click",
},
],
@ -668,7 +719,7 @@ export default {
},
{
label: "待归还",
value: 1,
value: 2,
},
{
label: "部分归还",
@ -687,35 +738,6 @@ export default {
},
],
},
{
label: "是否报废",
prop: "curStatus",
addDisplay: false,
editDisplay: false,
span: 6,
width: 200,
search: true,
type: "select",
searchOrder: 17,
hide: true,
dicData: [
{
label: "是",
value: 1,
},
{
label: "否",
value: 1,
},
],
rules: [
{
required: true,
message: "请输入状态",
trigger: "click",
},
],
},
{
label: "备注",
prop: "curStatus",
@ -734,22 +756,7 @@ export default {
},
],
},
{
label: "型号/牌号",
prop: "specifications",
addDisplay: true,
editDisplay: false,
span: 6,
width: 200,
search: false,
rules: [
{
required: true,
message: "请输入型号/牌号",
trigger: "click",
},
],
},
],
},
isOpen: false,
@ -782,6 +789,29 @@ export default {
handleReturn() {
this.returnDialog = true;
},
rowDel(row) {
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// API
// deleteLeveraging(row.id).then(() => {
// this.$message.success('');
// this.onLoad();
// }).catch(() => {
// this.$message.error('');
// });
//
const index = this.data.findIndex(item => item.leCode === row.leCode);
if (index !== -1) {
this.data.splice(index, 1);
this.page.total = this.data.length;
this.$message.success('删除成功');
}
}).catch(() => {});
},
onLoad() {
this.data = [
{
@ -810,7 +840,7 @@ export default {
buyCode: "OT202407147982350",
cccList: null,
curStatus: -1,
curStatus: 1,
enrtydate: null,
invadjCode: "C20240725148120387",
invadjMoney: 0.0,
@ -867,7 +897,7 @@ export default {
buyCode: "OT202407147982350",
cccList: null,
curStatus: -1,
curStatus: 1,
enrtydate: null,
invadjCode: "C20240725148120387",
invadjMoney: 0.0,

@ -226,6 +226,7 @@ export default {
// },
// ],
},
{
label: '采购数量',
prop: 'purchaseQuantity',
@ -262,21 +263,21 @@ export default {
},
],
},
{
label: '周期/天',
prop: 'cycle',
span: 24,
overflow: true,
search: false,
width: 200,
// rules: [
// {
// required: true,
// message: '/',
// trigger: 'blur',
// },
// ],
},
// {
// label: '/',
// prop: 'cycle',
// span: 24,
// overflow: true,
// search: false,
// width: 200,
// // rules: [
// // {
// // required: true,
// // message: '/',
// // trigger: 'blur',
// // },
// // ],
// },
{
label: '版本',
prop: 'releaseno',
@ -373,6 +374,26 @@ export default {
// },
// ],
},
{
label: '最低库存预警',
prop: 'minStockWarning',
type: 'switch',
dicData: [
{ label: '关', value: false },
{ label: '开', value: true }
],
span: 24,
overflow: true,
search: false,
width: 200,
rules: [
{
required: true,
message: '请选择是否开启最低库存预警',
trigger: 'blur',
},
],
},
]
},
@ -425,6 +446,7 @@ export default {
"maxNum": 300.0,
"memo": null,
"minNum": 50.0,
"minStockWarning": true,
"mtlsgrt": 0.0,
"mtltmrk": "232",
"mustCheck": null,
@ -488,6 +510,7 @@ export default {
"maxNum": 300.0,
"memo": null,
"minNum": 50.0,
"minStockWarning": true,
"mtlsgrt": null,
"mtltmrk": "23",
"mustCheck": 0,
@ -551,6 +574,7 @@ export default {
"maxNum": 300.0,
"memo": null,
"minNum": 50.0,
"minStockWarning": false,
"mtlsgrt": null,
"mtltmrk": "4",
"mustCheck": 0,

@ -17,6 +17,7 @@
@refresh-change="refreshChange"
@on-load="onLoad"
:span-method="spanMethod"
:row-class-name="rowClassName"
>
<template #menu-left>
<el-button type="danger" icon="el-icon-delete" @click="handleDeletes"
@ -369,6 +370,7 @@ export default {
gridBtn: false,
searchMenuPosition: "right",
searchShowBtn: false,
column: [
{
label: "姓名",
@ -563,6 +565,21 @@ export default {
labelWidth: 140,
overflow: true,
search: true,
type: 'select',
dicData: [
{
label: "一级",
value: "1",
},
{
label: "二级",
value: "2",
},
{
label: "三级",
value: "3",
},
],
rules: [
{
required: true,
@ -684,7 +701,7 @@ export default {
],
},
{
label: "到期日期",
label: "适航到期日期",
prop: "seaDueDate",
span: 24,
width: 150,
@ -732,7 +749,7 @@ export default {
],
},
{
label: "到期日期",
label: "宇航到期日期",
prop: "astrdueDate",
span: 24,
width: 150,
@ -812,7 +829,7 @@ export default {
],
},
{
label: "到期日期",
label: "设备到期日期",
prop: "deviceDueDate",
span: 24,
width: 150,
@ -868,6 +885,57 @@ export default {
this.rowCalc();
},
methods: {
rowClassName: ({row, rowIndex}) => {
console.log('rowClassName执行了', rowIndex); //
//
const now = new Date();
let isExpired = false;
//
if (row.wlDueDate) {
const wlDueDate = new Date(row.wlDueDate);
if (wlDueDate < now) {
isExpired = true;
console.log(`${rowIndex}: 上岗证已过期`, row.wlDueDate);
}
}
//
if (row.seaDueDate) {
const seaDueDate = new Date(row.seaDueDate);
if (seaDueDate < now) {
isExpired = true;
console.log(`${rowIndex}: 适航证已过期`, row.seaDueDate);
}
}
//
if (row.astrdueDate) {
const astrDueDate = new Date(row.astrdueDate);
console.log("astrDueDate", astrDueDate);
console.log('now',new Date(row.astrdueDate))
if (astrDueDate < now) {
isExpired = true;
console.log(`${rowIndex}: 宇航证已过期`, row.astrdueDate);
}
}
//
if (row.deviceDueDate) {
const deviceDueDate = new Date(row.deviceDueDate);
if (deviceDueDate < now) {
isExpired = true;
console.log(`${rowIndex}: 设备证已过期`, row.deviceDueDate);
}
}
//
if (isExpired || row.wlStatusTitle === '过期') {
console.log(1)
console.log(`${rowIndex}: 应用过期样式`, row.userName, row.wlStatusTitle);
return 'expired-row';
}
return '';
},
//
handleImport() {
this.isShowImport = true
@ -1061,6 +1129,7 @@ export default {
this.$refs.crud.toggleSelection();
},
onLoad() {
this.data = [
{
id: 1,
@ -1090,7 +1159,7 @@ export default {
seaDueDate: "2026-10-11",
astrTime: "2023-10-31",
astrLifespan: "3年",
astrdueDate: "2026-10-31",
astrdueDate: "2025-10-31",
deviceTime: "2023-10-11",
deviceLifespan: 3,
deviceDueDate: "2026-10-11",
@ -1119,12 +1188,12 @@ export default {
wlType: 1,
wlCode: "0010",
toNewJobDueDate: "2年",
wlTime: "2023-10-28",
wlTime: "2022-10-28",
wlLifespan: "2年",
wlDueDate: "2025-10-28",
seaTime: "2023-10-11",
seaTime: "2022-10-11",
seaLifespan: "3年",
seaDueDate: "2026-10-11",
seaDueDate: "2025-10-11",
astrTime: "2023-10-31",
astrLifespan: "3年",
astrdueDate: "2026-10-31",
@ -1194,8 +1263,8 @@ export default {
wlCode: "0030",
toNewJobDueDate: "2年",
wlTime: "2023-10-31",
wlLifespan: "2年",
wlDueDate: "2025-10-31",
wlLifespan: "3年",
wlDueDate: "2026-10-31",
seaTime: "2023-10-11",
seaLifespan: "3年",
seaDueDate: "2026-10-11",
@ -1203,7 +1272,7 @@ export default {
astrLifespan: "3年",
astrdueDate: "2026-10-31",
deviceTime: "2023-10-11",
deviceLifespan: 3,
deviceLifespan: 1,
deviceDueDate: "2026-10-11",
wlStatusTitle: "过期",
deviceModel: "型号一",
@ -1217,4 +1286,18 @@ export default {
};
</script>
<style></style>
<style>
.el-table__row.expired-row,
.el-table .expired-row,
.avue-crud .el-table .expired-row {
background-color: #fef0f0 !important; /* 浅红色背景 */
color: #f56c6c !important; /* 红色文字 */
}
.el-table__row.expired-row td,
.el-table .expired-row td,
.avue-crud .el-table .expired-row td {
background-color: #fef0f0 !important;
color: #f56c6c !important;
}
</style>

@ -48,10 +48,10 @@ export default ({ mode, command }) => {
port: 2888,
proxy: {
"/api": {
// target: "http://192.168.1.5:82",
target: "http://192.168.1.5:82",
// target: "http://192.168.1.4:82",
// target:'http://49.232.74.228:82',
target: "http://192.168.0.120",
// target: "http://192.168.0.120",
//target: 'https://saber3.bladex.cn/api',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ""),

Loading…
Cancel
Save