问题修改

dev-scheduling
zhangdi 6 days ago
parent 29d064f294
commit 21441afd3f
  1. 9
      src/components/jh-select/index.vue
  2. 45
      src/option/system/user.js
  3. 1
      src/views/basicData/jobTransferManagement.vue
  4. 45
      src/views/flowManagement/addDialog.vue
  5. 7
      src/views/flowManagement/managementOfKeyTasks.vue
  6. 42
      src/views/flowManagement/milestoneDialog.vue
  7. 464
      src/views/flowManagement/projectExecution.vue
  8. 2
      src/views/orderManagement/components/exception/processMissing.vue
  9. 36
      src/views/orderManagement/components/mold/addMoldDailog.vue
  10. 39
      src/views/orderManagement/planYieIdOrder.vue
  11. 37
      src/views/orderManagement/plannedOrder.vue
  12. 37
      src/views/orderManagement/sinTerPlanOrder.vue
  13. 39
      src/views/orderManagement/sinTerYieIdOrder.vue
  14. 5
      src/views/processManagement/components/inPlantMaintenance.vue
  15. 30
      src/views/processManagement/components/processMainte/dsPartBasicInfo.vue
  16. 2
      src/views/processManagement/components/processMainte/dsPartIndex.vue
  17. 47
      src/views/processManagement/procepssPlanning.vue
  18. 13
      src/views/processManagement/taskProcessing.vue

@ -50,8 +50,12 @@ export default {
echoMethod: { type: String, default: 'get' },
echoParamsKey: {
type: String,
default: 'id', // id
default: '', // id
},
title:{
type: String,
default: '新增'
}
},
data() {
return {
@ -226,7 +230,8 @@ export default {
async initEcho() {
const val = this.localValue;
if (!val || !this.echoApi) return;
// (!val || !this.echoApi)&&
if (this.title=='新增') return;
//
if (this.multiple && Array.isArray(val)) {

@ -57,7 +57,7 @@ export const userOption = safe => {
},
{
label: '用户工号',
prop: 'workNo',
prop: 'code',
search: true,
display: false,
// sortable: true,
@ -266,13 +266,9 @@ export const userOption = safe => {
prop: 'dutyInfo',
icon: 'el-icon-s-custom',
column: [
{
label: '用户编号',
prop: 'code',
},
{
label: '用户工号',
prop: 'workNo',
prop: 'code',
rules: [
{
required: true,
@ -281,6 +277,17 @@ export const userOption = safe => {
},
],
},
// {
// label: '用户工号',
// prop: 'workNo',
// rules: [
// {
// required: true,
// message: '请输入用户工号',
// trigger: 'blur',
// },
// ],
// },
{
label: '所属角色',
prop: 'roleId',
@ -383,19 +390,19 @@ export const platformOption = {
dialogClickModal: false,
menuWidth: 120,
editBtnText: '配置',
searchLabelPosition:'left',
searchLabelPosition:'left',
searchGutter:24,
searchSpan:6,
menuAlign: 'left',
gridBtn:false,
searchMenuPosition:'right',
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
searchShowBtn:false,
align: 'center',
searchLabelPosition: 'left',
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
searchShowBtn: false,
align: 'center',
column: [
{
label: '登录账号',

@ -111,6 +111,7 @@
search-key="id"
:debounce-time="500"
@change="changeTeacher"
/>
</el-form-item>
</el-form>

@ -8,7 +8,7 @@
fullscreen
>
<!-- 单个 Form 包裹所有内容基础信息 + 表格 -->
<el-form ref="addForm" :model="addForm" :rules="addRules" label-width="140px">
<el-form ref="addForm" :model="addForm" :rules="addRules" label-width="100px" label-position="right">
<!-- 项目基础信息表单 -->
<el-row>
<el-col :span="8">
@ -29,7 +29,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="制单部门" prop="touchingDeptId">
<el-form-item label="制单部门" prop="touchingDeptId">
<el-select
:disabled="isDetail"
v-model="addForm.touchingDeptId"
@ -49,7 +49,7 @@
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="项目背景" prop="projectBackcloth">
<el-form-item label="项目背景" prop="projectBackcloth">
<el-input
:disabled="isDetail"
type="textarea"
@ -60,7 +60,7 @@
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="项目目标" prop="projectTarget">
<el-form-item label="项目目标" prop="projectTarget">
<el-input
:disabled="isDetail"
type="textarea"
@ -71,7 +71,7 @@
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="预期效果" prop="desiredResult">
<el-form-item label="预期效果" prop="desiredResult">
<el-input
:disabled="isDetail"
type="textarea"
@ -82,7 +82,7 @@
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="项目负责人" prop="projectHeadId">
<el-form-item label="项目负责人" prop="projectHeadId">
<jhSelect
:value="addForm.projectHeadId"
@input="val => (addForm.projectHeadId = val)"
@ -96,14 +96,16 @@
total-key="total"
label-key="realName"
value-key="id"
search-key="id"
search-key="realName"
:debounce-time="500"
@change="projectHeadChange"
:title="title"
:disabled="isDetail"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="成员名称" prop="memberName">
<el-form-item label="成员名称" prop="memberName">
<!-- <el-select
:disabled="isDetail"
v-model="addForm.memberName"
@ -130,16 +132,18 @@
total-key="total"
label-key="realName"
value-key="id"
search-key="id"
search-key="realName"
multiple
:debounce-time="500"
:title="title"
:disabled="isDetail"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="项目支持人" prop="projectSupportMan">
<el-form-item label="项目支持人" prop="projectSupportMan">
<!-- <el-select
:disabled="isDetail"
v-model="addForm.projectSupportMan"
@ -164,13 +168,15 @@
total-key="total"
label-key="realName"
value-key="id"
search-key="id"
search-key="realName"
:debounce-time="500"
:title="title"
:disabled="isDetail"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目开始时间" prop="projectStartTime">
<el-form-item label="项目开始时间" prop="projectStartTime" label-width="110px">
<el-date-picker
:disabled="isDetail"
style="width: 100%"
@ -184,7 +190,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目结束预期时间" prop="projectDesiredEnd">
<el-form-item label="项目结束预期时间" prop="projectDesiredEnd" label-width="130px">
<el-date-picker
:disabled="isDetail"
style="width: 100%"
@ -267,9 +273,11 @@
total-key="total"
label-key="realName"
value-key="id"
search-key="id"
search-key="realName"
:debounce-time="500"
@change="(val, item) => handleStoneListChange(val, item, scope.$index, scope.row)"
:title="title"
:disabled="isDetail"
/>
<!-- <el-select
v-model="scope.row.milestoneMemo"
@ -336,11 +344,11 @@
>
<el-date-picker
v-model="scope.row.milestoneNode"
type="datetime"
type="date"
placeholder="选择日期时间"
style="width: 100%"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
/>
</el-form-item>
</template>
@ -435,6 +443,7 @@ import { addProcess, getProcessDetail, getDeplList } from '@/api/flowManagement/
import { getRoleUserList } from '@/api/processManagement/taskDispatch';
import { getDictionary } from '@/api/system/dict';
import jhSelect from '@/components/jh-select/index.vue';
import { vi } from 'element-plus/es/locales.mjs';
export default {
name: 'AddDialog',
components: { jhSelect },
@ -442,6 +451,7 @@ export default {
title: {
type: String,
required: true,
default: '',
},
visible: {
type: Boolean,
@ -709,6 +719,7 @@ export default {
}
submitData.stoneList = submitData.stoneList.map(row => {
const { fmProjectApplication, attachList, paIndex, ...validData } = row;
validData.milestoneNode=validData.milestoneNode+' 00:00:00'
return validData;
});
return submitData;

@ -63,7 +63,6 @@
{{ scope.row.executeTypeText }}
</template>
</el-table-column>
<!-- <el-table-column align="center" label="状态" prop="status"></el-table-column> -->
<el-table-column align="center" label="延期时间" prop="delayTime"></el-table-column>
<el-table-column
align="center"
@ -99,7 +98,7 @@
>
<el-button
type="text"
v-if="scope.row.gradeTitle=='待评价'&&scope.row.checkResult == 2"
v-if="scope.row.gradeTitle == '待评价' && scope.row.checkResult == 2"
@click="examineRow(row, scope.row)"
>核准</el-button
>
@ -193,7 +192,7 @@ export default {
searchIndex: 3,
tree: false,
border: true,
index: false,
index: true,
selection: false,
viewBtn: false,
delBtn: false,
@ -224,7 +223,7 @@ export default {
column: [
{
label: '单据号',
label: '项目编号',
prop: 'paCode',
overflow: true,
search: true,

@ -1,48 +1,48 @@
<template>
<el-dialog :title="title" append-to-body :modelValue="openShow" width="45%" @close="closeDialog">
<el-dialog :title="title" append-to-body :modelValue="openShow" width="80%" @close="closeDialog" fullscreen>
<el-form :model="detailForm" :rules="executeRules" ref="executeForm" label-width="100">
<el-row>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="项目名称:">
<el-input disabled v-model="executeForm.projectName"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="项目负责人:">
<el-input disabled v-model="executeForm.projectHead"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="项目背景:">
<el-input disabled v-model="executeForm.projectBackcloth"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="项目目标:">
<el-input disabled v-model="executeForm.projectTarget"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="预期效果:">
<el-input disabled v-model="executeForm.desiredResult"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="里程碑计划:">
<el-input disabled v-model="detailForm.milestonePlan"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="里程碑负责人:">
<el-input disabled v-model="detailForm.milestoneMan"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="里程碑节点:">
<el-input disabled v-model="detailForm.milestoneNode"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="执行类型:" prop="executeType">
<el-select
:disabled="subTitle == '核查' || subTitle == '核准'"
@ -57,7 +57,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="延期时间:" v-if="detailForm.executeType == 1">
<el-date-picker
:disabled="subTitle == '核查' || subTitle == '核准'"
@ -70,7 +70,7 @@
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="14">
<el-form-item label="里程碑描述:" prop="milestoneMemo">
<el-input
:disabled="subTitle == '核查' || subTitle == '核准'"
@ -79,7 +79,7 @@
></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="14">
<el-form-item label="里程碑进展:" prop="evolve">
<el-input
:disabled="subTitle == '核查' || subTitle == '核准'"
@ -88,7 +88,7 @@
></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="14">
<el-form-item label="下一步计划:" prop="lastPlan">
<el-input
:disabled="subTitle == '核查' || subTitle == '核准'"
@ -97,7 +97,7 @@
></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="14">
<el-form-item
label="附件:"
v-if="subTitle == '执行' || subTitle == '核查' || subTitle == '核准'"
@ -129,7 +129,7 @@
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="14">
<el-form-item label="核查人:" v-if="subTitle == '执行'">
<!-- <el-select v-model="detailForm.userId" clearable filterable @change="handleUserChange">
<el-option
@ -157,7 +157,7 @@
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="14">
<el-form-item label="核查结果:" v-if="subTitle == '核查'">
<el-select v-model="detailForm.checkResult" clearable filterable>
<el-option label="通过" value="2"></el-option>
@ -165,7 +165,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="14">
<el-form-item label="审核人:" v-if="subTitle == '核查' && detailForm.checkResult == 1">
<jhSelect
:value="detailForm.userId"
@ -195,17 +195,17 @@
<div v-if="subTitle == '核准'" style="color: #ffc300; margin-bottom: 10px">
评价等级分为:(95以上节点推进超前完成质量高)(85-95节点推进正常质量较好)(75-84节点推进轻微拖期完成质量一般)(75以下进展滞后完成质量较差)
</div>
<el-col :span="24">
<el-col :span="14">
<el-form-item v-if="subTitle == '核准'" label="评价分数:">
<el-input v-model="detailForm.score"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="14">
<el-form-item v-if="subTitle == '核准'" label="评语:">
<el-input type="textarea" v-model="detailForm.evaluate"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-col :span="14">
<el-form-item
label="审核意见:"
prop="checkOpinion"

@ -0,0 +1,464 @@
<template>
<basic-container>
<!-- 重点工作管理 -->
<avue-crud
:option="option"
:table-loading="loading"
:data="data"
v-model="form"
v-model:page="page"
ref="crud"
@search-change="searchChange"
@search-reset="searchReset"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
>
<template #menu-left> </template>
<template #menu="{ row }">
<el-button type="text" @click="handleView(row)">详情</el-button>
</template>
<!-- 项目开始时间 -->
<template #projectStartTime="scope">
{{ scope.row.projectStartTime ? scope.row.projectStartTime.substring(0, 10) : '' }}
</template>
<template #projectDesiredEnd="scope">
{{ scope.row.projectDesiredEnd ? scope.row.projectDesiredEnd.substring(0, 10) : '' }}
</template>
<template #milestoneNode="scope">
{{ scope.row.milestoneNode ? scope.row.milestoneNode.substring(0, 10) : '' }}
</template>
<!-- <template #executeType="scope">
{{ scope.row.executeTypeText }}
</template> -->
</avue-crud>
<!-- 新增弹窗 -->
<add-dialog
v-if="addDialogVisible"
:title="title"
:visible="addDialogVisible"
:rowItem="rowItem"
@close="closeDialog"
></add-dialog>
<!-- 执行/核查/核准弹窗 -->
<milestoneDialog
:title="subTitle"
:showDialog="executeDialog"
v-if="executeDialog"
@closeDialog="closeDialog"
:rowItem="executeForm"
:detailForm="detailForm"
></milestoneDialog>
</basic-container>
</template>
<script>
import { getProcessList, updateProcess, delProcess } from '../../api/flowManagement/index';
import AddDialog from './addDialog.vue';
import review from './review.vue';
import milestoneDialog from './milestoneDialog.vue';
import { getDictionary } from '@/api/system/dict';
export default {
components: { AddDialog, review, milestoneDialog },
data() {
return {
//
// 0-1-2-3-
// 4-5-6-7-
// 8-
addDialogVisible: false, //
title: '新增',
loading: false,
checkDialog: false,
subTitle: '执行',
detailForm: {},
checkForm: {},
detailListSelectList: [],
executeDialog: false,
data: [],
form: {},
existingFiles: [], //
addForm: {},
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
option: {
columnSort: true,
tip: false,
expand: false,
rowKey: 'id',
height: 'auto',
align: 'center',
calcHeight: 32,
simplePage: false,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: true,
selection: false,
viewBtn: false,
delBtn: false,
editBtn: false,
editBtnText: '修改',
addBtn: false,
labelWidth: 120,
menu: true,
menuWidth: 120,
dialogWidth: 600,
dialogClickModal: false,
searchEnter: true,
excelBtn: true,
gridBtn: false,
searchShowBtn: false,
showOverflowTooltip: true,
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'center',
gridBtn: false,
searchMenuPosition: 'right',
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
searchShowBtn: false,
searchLabelWidth: 'auto',
column: [
{
label: '项目编号',
prop: 'paCode',
overflow: true,
search: true,
width:140,
},
{
label: '项目名称',
prop: 'projectName',
overflow: true,
search: true,
width:140,
},
{
label: '项目负责人',
prop: 'projectHead',
overflow: true,
search: true,
width: 140,
},
{
label: '里程碑计划',
prop: 'milestonePlan',
overflow: true,
search: true,
width: 190,
},
{
label: '里程碑负责人',
prop: 'milestoneMan',
overflow: true,
search: true,
width: 140,
},
{
label: '里程碑输出物',
prop: 'outputMaterial',
overflow: true,
search: true,
width: 190,
},
{
label: '里程碑节点',
prop: 'milestoneNode',
overflow: true,
search: true,
width: 120,
},
{
label: '项目开始时间',
prop: 'projectStartTime',
overflow: true,
search: false,
width: 140,
},
{
label: '项目预期结束时间',
prop: 'projectDesiredEnd',
overflow: true,
search: false,
width: 140,
},
{
label: '执行类型',
prop: 'executeTypeText',
overflow: true,
search: false,
width: 140,
},
{
label: '延期时间',
prop: 'delayTime',
overflow: true,
search: false,
width: 140,
},
{
label: '核查结果',
prop: 'checkResultTitle',
overflow: true,
search: false,
width: 140,
},
{
label: '核查人',
prop: 'checkMan',
overflow: true,
search: false,
width: 140,
},
{
label: '评价等级',
prop: 'gradeTitle',
overflow: true,
search: false,
width: 140,
},
{
label: '评价人',
prop: 'gradeMan',
overflow: true,
search: false,
width: 140,
},
{
label: '业务领导评价',
prop: 'evaluate',
overflow: true,
search: false,
width: 140,
},
],
},
rowItem: {}, //
executeResultList: [], //
checkResultList: [], //
gradeList: [], //
};
},
mounted() {
this.getExecuteResult();
},
methods: {
getExecuteTypeText(type) {
const item = this.executeResultList.find(item => item.dictKey === type);
console.log('item', item);
return item ? item.dictValue : '';
},
// flow_project_executeResult
getExecuteResult() {
getDictionary({ code: 'flow_project_executeResult' }).then(res => {
this.executeResultList = res.data.data;
});
},
// flow_project_checkResult
getCheckResult() {
getDictionary({ code: 'flow_project_checkResult' }).then(res => {
this.checkResultList = res.data;
});
},
// flow_project_grade
getGrade() {
getDictionary({ code: 'flow_project_grade' }).then(res => {
this.gradeList = res.data;
});
},
closeDialog(type) {
this.checkDialog = false;
this.addDialogVisible = false;
this.executeDialog = false;
// if (type) {
this.onLoad(this.page, this.query);
// }
},
//
handleView(row) {
this.title = '详情';
this.rowItem = row;
this.addDialogVisible = true;
},
//
handleEdit(row) {
this.rowItem = row;
this.title = '修改';
this.addDialogVisible = true;
},
//
deleteRow(row) {
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(res => {
delProcess({ ids: row.id }).then(res => {
this.$message.success('删除成功');
this.onLoad(this.page, this.query);
});
});
},
//
checkRow(row) {
this.checkDialog = true;
this.rowItem = row;
},
//
executeRow(row, detail) {
this.detailForm = detail;
this.executeForm = row;
this.subTitle = '执行';
this.executeDialog = true;
},
//
auditRow(row, detail) {
this.subTitle = '核查';
this.detailForm = detail;
this.executeForm = row;
//
this.existingFiles = [
{ name: '项目计划书.pdf', url: '#' },
{ name: '进度报告.docx', url: '#' },
];
this.executeDialog = true;
},
//
examineRow(row, detail) {
this.subTitle = '核准';
this.detailForm = detail;
this.executeForm = row;
//
this.existingFiles = [
{ name: '项目计划书.pdf', url: '#' },
{ name: '进度报告.docx', url: '#' },
{ name: '验收单.xlsx', url: '#' },
];
this.executeDialog = true;
},
//
downloadFile(file) {
const link = document.createElement('a');
link.href = file.url;
link.download = file.name;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
},
//
removeExistingFile(index) {
this.$confirm('确定删除该附件?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
this.existingFiles.splice(index, 1);
this.$message.success('删除成功');
})
.catch(() => {});
},
searchReset() {
this.query = {};
this.onLoad(this.page, this.query);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad(this.page, this.query);
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad(this.page, this.query);
},
refreshChange() {
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
this.loading = true;
getProcessList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(
res => {
const records = res.data.data.records;
this.data = records.map(item => {
if (item.stoneList && Array.isArray(item.stoneList)) {
item.stoneList = item.stoneList.map(stone => ({
...stone,
executeTypeText: this.getExecuteTypeText(stone.executeType),
}));
}
return item;
});
this.loading = false;
this.page.total = res.data.data.total;
}
);
},
},
};
</script>
<style scoped>
.attachment-list {
margin-top: 10px;
padding: 10px;
border: 1px solid #ebeef5;
border-radius: 4px;
background-color: #fafafa;
}
.attachment-list h4 {
margin: 0 0 10px 0;
font-size: 14px;
color: #606266;
}
.attachment-list ul {
margin: 0;
padding: 0;
list-style-type: none;
}
.attachment-list li {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 0;
border-bottom: 1px solid #ebeef5;
}
.attachment-list li:last-child {
border-bottom: none;
}
.attachment-list a {
color: #409eff;
text-decoration: none;
}
.attachment-list a:hover {
color: #66b1ff;
text-decoration: underline;
}
</style>

@ -144,7 +144,7 @@ export default {
prop: 'validationMomo',
search: false,
sortable: true,
width: 120,
width: 240,
span: 12,
headerAlign: 'center',
align: 'center',

@ -20,13 +20,30 @@
<el-table :data="form.moldPlan" @select="selectChange" style="width: 100%" border>
<el-table-column type="selection" width="55" v-if="moldAddMore"></el-table-column>
<el-table-column type="index" width="80" label="序号" align="center"></el-table-column>
<el-table-column prop="partCode" label="零件编码" align="center">
<el-table-column prop="partCode" label="零件编码" align="center" width="190">
<template #header>
<span><i style="color: red">*</i>零件编码</span>
</template>
<template #default="scope">
<el-form-item :prop="`moldPlan[${scope.$index}].partCode`" :rules="formRules.partCode">
<el-select
<jhSelect
:value="scope.row.partCode"
@input="val => (scope.row.partCode = val)"
placeholder="请搜索选择"
api-url="/blade-desk/dsPart/listNew"
echo-api="/blade-desk/dsPart/listNew"
echoParamsKey="ids"
echo-method="get"
api-method="get"
list-key="records"
total-key="total"
label-key="partCode"
value-key="id"
search-key="partCode"
:debounce-time="500"
@change="(value,item)=>partCodeChange(scope.row.partCode, scope.$index,value,item)"
/>
<!-- <el-select
v-model="scope.row.partCode"
:filterable="true"
allow-create
@ -42,7 +59,7 @@
:label="item.partCode"
:value="item.partCode"
></el-option>
</el-select>
</el-select> -->
</el-form-item>
</template>
</el-table-column>
@ -201,6 +218,7 @@
<script>
import { add,getPartList,getProdIdentList,getUserByRoleAlias,getMoldList,getToolList } from '@/api/orderManagement/moldPlan';
import { index } from '@/views/plugin/workflow/api/statistics';
import jhSelect from '@/components/jh-select/index.vue';
export default {
props: {
@ -217,6 +235,9 @@ export default {
default: () => []
}
},
components: {
jhSelect,
},
data() {
return {
moCodeList: [],
@ -356,9 +377,10 @@ export default {
this.form.moldPlan = this.form.moldPlan.filter(item => !item._select);
}
},
partCodeChange(val, i) {
this.form.moldPlan[i].partName =
this.partCodeList.find(item => item.partCode === val)?.partName || '';
partCodeChange(val, i,value,item) {
console.log(val, i,value,item,9090909090)
this.form.moldPlan[i].partName =item.partName
// this.partCodeList.find(item => item.partCode === val)?.partName || '';
getToolList({partCode:val}).then(res =>{
console.log('res-----------',res)
this.form.moldPlan[i].modeArray = res.data.data
@ -440,7 +462,7 @@ export default {
line-height: 1.5;
}
:deep(.el-table .el-table__cell) {
:deep(.el-table .el-table_body .el-table__cell) {
height: 50px !important;
padding: 0 !important;
line-height: 50px !important;

@ -58,6 +58,9 @@
<template #demandDate="{ row }">
{{ row.demandDate ? row.demandDate.substring(0, 10) : '' }}
</template>
<template #releaseDate="{ row }">
{{ row.releaseDate ? row.releaseDate.substring(0, 10) : '' }}
</template>
</avue-crud>
<!-- 加急 -->
@ -284,24 +287,24 @@ 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: 'productType',
// search: false,
// sortable: true,
// disabled: true,
// width: 120,
// span: 12,
// headerAlign: 'center',
// align: 'center',
// rules: [
// {
// required: false,
// message: '',
// trigger: 'blur',
// },
// ],
// },
{
label: '流程卡号',
prop: 'cardNo',

@ -193,7 +193,6 @@ export default {
editBtnIcon: ' ',
gridBtn: false,
searchLabelPosition: 'left',
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'center',
@ -254,24 +253,24 @@ 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: 'productType',
// search: false,
// sortable: true,
// disabled: true,
// width: 120,
// span: 12,
// headerAlign: 'center',
// align: 'center',
// rules: [
// {
// required: false,
// message: '',
// trigger: 'blur',
// },
// ],
// },
{
label: '镀种',
prop: 'plate',

@ -176,7 +176,6 @@ export default {
editBtnIcon: ' ',
gridBtn: false,
searchLabelPosition: 'left',
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'center',
@ -237,24 +236,24 @@ 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: 'productType',
// search: false,
// sortable: true,
// disabled: true,
// width: 120,
// span: 12,
// headerAlign: 'center',
// align: 'center',
// rules: [
// {
// required: false,
// message: '',
// trigger: 'blur',
// },
// ],
// },
{
label: '产品名称',
prop: 'partName',

@ -78,6 +78,9 @@
<template #demandDate="{ row }">
{{ row.demandDate ? row.demandDate.substring(0, 10) : '' }}
</template>
<template #releaseDate="{ row }">
{{ row.releaseDate ? row.releaseDate.substring(0, 10) : '' }}
</template>
</avue-crud>
<!-- 加急 -->
@ -311,24 +314,24 @@ 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: 'productType',
// search: false,
// sortable: true,
// disabled: true,
// width: 120,
// span: 12,
// headerAlign: 'center',
// align: 'center',
// rules: [
// {
// required: false,
// message: '',
// trigger: 'blur',
// },
// ],
// },
{
label: '产品名称',
prop: 'partName',

@ -354,8 +354,8 @@ export default {
this.title = '修改';
this.showAddDialog = true;
this.moldAddMore = false;
row.proMan = row.proMan.toString();
row.equipmentId = row.equipmentId.toString();
row.proMan = row.proMan+'';
row.equipmentId = row.equipmentId+'';
this.itemData = [row];
},
handleAdd() {
@ -396,6 +396,7 @@ export default {
type: 'warning',
}).then(() => {
let ids = this.selectionList.map(item => item.id);
this.loading = true
remove(ids.join(',')).then(() => {
this.$message.success('删除成功');
this.onLoad(this.page, this.query);

@ -1,5 +1,5 @@
<template>
<div>
<div v-loading="submitLoading">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span style="font-size: 16px">基本信息</span>
@ -963,22 +963,22 @@ export default {
}
// 🔴
for (const item of this.data) {
// 1.
if (item.area === null || item.area === undefined || item.area === '') {
this.$message.warning(`子件【${item.partName}】的面积不能为空`);
this.submitLoading = false;
return;
}
// // 1.
// if (item.area === null || item.area === undefined || item.area === '') {
// this.$message.warning(`${item.partName}`);
// this.submitLoading = false;
// return;
// }
// 2. 1
if (item.sinTerType !== 2) {
const areaValue = parseFloat(item.area);
if (isNaN(areaValue) || areaValue > 1) {
this.$message.warning(`子件【${item.partName}】非壳体类型,面积不能大于1`);
this.submitLoading = false;
return;
}
}
// if (item.sinTerType !== 2) {
// const areaValue = parseFloat(item.area);
// if (isNaN(areaValue) || areaValue > 1) {
// this.$message.warning(`${item.partName}1`);
// this.submitLoading = false;
// return;
// }
// }
}
this.formData.childPage = this.childPage;

@ -130,7 +130,7 @@ export default {
},
submit() {
if (this.activeName == '1') {
this.submitLoading = true;
// this.submitLoading = true;
this.$refs.dsPartRef.submit();
}
},

@ -16,7 +16,9 @@
@on-load="onLoad"
>
<template #body>
<el-tag style="width: 100%; display: block; line-height: 17px;margin-bottom: 5px;" v-if="expireData.length>0"
<el-tag
style="width: 100%; display: block; line-height: 17px; margin-bottom: 5px"
v-if="expireData.length > 0"
>{{ expireData.length }}个零件工艺即将到期请尽快维护有效期</el-tag
>
</template>
@ -24,8 +26,8 @@
<template #menu-left>
<el-button type="primary" @click="setIndate()">有效期维护</el-button>
</template>
<template #partCode="scope">
<span class="partSel" @dblclick="openPage(scope.row)">{{scope.row.partCode}}</span>
<template #partCode="scope">
<span class="partSel" @dblclick="openPage(scope.row)">{{ scope.row.partCode }}</span>
</template>
<!-- <template #menu-right="{ size }"> </template> -->
@ -77,7 +79,7 @@
import { mapGetters } from 'vuex';
import indateDailog from './components/indateDailog.vue';
import { getList, getExpire,getPdmDocLink } from '@/api/processManagement/procepssPlanning';
import { getList, getExpire, getPdmDocLink } from '@/api/processManagement/procepssPlanning';
import { getDictionary } from '@/api/system/dict';
import partDetails from './components/processMainte/partDetails.vue';
export default {
@ -173,7 +175,7 @@ export default {
search: false,
overHidden: true,
type: 'select',
filterable:true,
filterable: true,
clearable: true,
headerAlign: 'center',
align: 'center',
@ -210,7 +212,7 @@ export default {
align: 'center',
width: 250,
},
{
label: '版本号',
prop: 'partVersion',
@ -234,7 +236,7 @@ export default {
searchRange: true,
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
format: 'YYYY-MM-DD HH:mm:ss',
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
},
{
@ -243,7 +245,7 @@ export default {
sortable: true,
search: false,
overHidden: true,
headerAlign: 'center',
align: 'center',
},
@ -270,24 +272,25 @@ export default {
},
methods: {
openPage(row){
openPage(row) {
// window.open(row.docLink)
getPdmDocLink({partCode:row.partCode}).then(res=>{
console.log(99999,res)
window.open(res.data.data)
})
getPdmDocLink({ partCode: row.partCode }).then(res => {
if (res.data.data) {
window.open(res.data.data);
}
});
},
cancel() {
this.showPartDetails = false;
},
viewDetails(partId, row, level) {
this.showPartDetails = true;
this.rowData = row
this.dialogType = 'view'
this.rowData = row;
this.dialogType = 'view';
if (row.children && row.children.length >= 0) {
this.partType = '烧结'
this.partType = '烧结';
} else {
this.partType = '热表'
this.partType = '热表';
}
},
getExpireDay() {
@ -348,9 +351,9 @@ export default {
//
onLoad(page, params = {}) {
this.loading = true;
if(this.query.nextDue&&this.query.nextDue.length>0){
this.query.startTime = this.query.nextDue[0]
this.query.endTime = this.query.nextDue[1]
if (this.query.nextDue && this.query.nextDue.length > 0) {
this.query.startTime = this.query.nextDue[0];
this.query.endTime = this.query.nextDue[1];
}
getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
this.data = res.data.data.records;
@ -363,9 +366,9 @@ export default {
};
</script>
<style lang="scss" scoped>
.partSel{
.partSel {
cursor: pointer;
color:#284c89 !important;
color: #284c89 !important;
font-weight: 600;
}
</style>

@ -61,8 +61,8 @@
<i :class="row.source" />
</div>
</template>
<template #partCode="scope">
<span class="partSel" @dblclick="openPage(scope.row)">{{scope.row.partCode}}</span>
<template #partCode="scope">
<span class="partSel" @dblclick="openPage(scope.row)">{{ scope.row.partCode }}</span>
</template>
</avue-crud>
<!-- 转派 -->
@ -388,8 +388,9 @@ export default {
openPage(row) {
// window.open(row.docLink)
getPdmDocLink({ partCode: row.partCode }).then(res => {
console.log(99999, res);
window.open(res.data.data);
if (res.data.data) {
window.open(res.data.data);
}
});
},
//
@ -507,9 +508,9 @@ export default {
};
</script>
<style lang="scss" scoped>
.partSel{
.partSel {
cursor: pointer;
color:#284c89 !important;
color: #284c89 !important;
font-weight: 600;
}
</style>

Loading…
Cancel
Save