|
@@ -1,126 +1,259 @@
|
|
<template>
|
|
<template>
|
|
<div>
|
|
<div>
|
|
- <div class="my-title">{{ !id ? "新增" : "修改" }}</div>
|
|
|
|
- <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="180px">
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="6">
|
|
|
|
- <el-form-item label="项目名称" prop="projectName">
|
|
|
|
- <el-input v-model="dataForm.projectName" placeholder="请输入项目名称"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="6">
|
|
|
|
- <el-form-item label="任务号" prop="orderCode">
|
|
|
|
- <el-input v-model="dataForm.orderCode" placeholder="请输入任务号"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="6">
|
|
|
|
- <el-form-item label="图号" prop="drawingNumber">
|
|
|
|
- <el-input v-model="dataForm.drawingNumber" placeholder="请输入图号"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="6">
|
|
|
|
- <el-form-item label="物料名称" prop="productId">
|
|
|
|
- <product-component v-model="dataForm.productId" :product-id="dataForm.productId"
|
|
|
|
- @productSelected="prodSelected" />
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="6">
|
|
|
|
- <el-form-item label="数量" prop="planCnt">
|
|
|
|
- <el-input-number v-model="dataForm.planCnt" :min="1" placeholder="请输入数量"></el-input-number>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="6">
|
|
|
|
- <el-form-item label="合同交期" prop="deliveryDate">
|
|
|
|
- <el-date-picker v-model="dataForm.deliveryDate" type="date" placeholder="请选择合同交期" format="yyyy-MM-dd"
|
|
|
|
- value-format="yyyy-MM-dd"></el-date-picker>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="6">
|
|
|
|
- <el-form-item label="责任人" prop="responsibilityPerson">
|
|
|
|
- <user-component v-model="dataForm.responsibilityPerson" />
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="8">
|
|
|
|
- <el-form-item label="技术协议" prop="attachList1">
|
|
|
|
- <upload-component
|
|
|
|
- :displayStar="false"
|
|
|
|
- :accept="'*'"
|
|
|
|
- :file-obj-list="fileList1"
|
|
|
|
- @uploadSuccess="uploadSuccess1"
|
|
|
|
- />
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="8" :offset="4">
|
|
|
|
- <el-form-item label="技术文件" prop="attachList2">
|
|
|
|
- <upload-component
|
|
|
|
- :displayStar="false"
|
|
|
|
- :accept="'*'"
|
|
|
|
- :file-obj-list="fileList2"
|
|
|
|
- @uploadSuccess="uploadSuccess2"
|
|
|
|
- />
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- </el-form>
|
|
|
|
|
|
+ <div class="my-title">{{ type === 1 ? '处理' : '修改' }}</div>
|
|
|
|
+ <e-desc title="基本信息" column="3">
|
|
|
|
+ <e-desc-item label="项目名称">{{ dataForm.projectName }}</e-desc-item>
|
|
|
|
+ <e-desc-item label="任务号">{{ dataForm.orderCode }}</e-desc-item>
|
|
|
|
+ <e-desc-item label="图号">{{ dataForm.mapNumber }}</e-desc-item>
|
|
|
|
+ <e-desc-item label="物料名称">{{ dataForm.productName }}</e-desc-item>
|
|
|
|
+ <e-desc-item label="数量">{{ dataForm.planCnt }}</e-desc-item>
|
|
|
|
+ <e-desc-item label="状态">{{
|
|
|
|
+ dataForm.state
|
|
|
|
+ ? optionsStates.find(item => item.value === dataForm.state).label
|
|
|
|
+ : ''
|
|
|
|
+ }}</e-desc-item>
|
|
|
|
+ <e-desc-item label="合同交期">{{ dataForm.deliveryDate }}</e-desc-item>
|
|
|
|
+ <e-desc-item label="责任人">{{
|
|
|
|
+ dataForm.responsibilityPerson
|
|
|
|
+ }}</e-desc-item>
|
|
|
|
+ </e-desc>
|
|
|
|
+ <e-desc title="技术协议">
|
|
|
|
+ <e-desc-item v-if="dataForm.attachList1" label="技术协议" span="3">
|
|
|
|
+ <div
|
|
|
|
+ v-for="(item, index) in dataForm.attachList1"
|
|
|
|
+ style="display: inline"
|
|
|
|
+ >
|
|
|
|
+ <span v-if="index > 0">,</span>
|
|
|
|
+ <a
|
|
|
|
+ :key="item.fileName + index"
|
|
|
|
+ type="primary"
|
|
|
|
+ href="#"
|
|
|
|
+ @click="previewFile(item.fileName, item.url)"
|
|
|
|
+ >{{ item.fileName }}</a
|
|
|
|
+ >
|
|
|
|
+ </div>
|
|
|
|
+ </e-desc-item>
|
|
|
|
+ </e-desc>
|
|
|
|
+ <e-desc title="技术文件">
|
|
|
|
+ <e-desc-item v-if="dataForm.attachList2" label="技术文件" span="3">
|
|
|
|
+ <div
|
|
|
|
+ v-for="(item, index) in dataForm.attachList2"
|
|
|
|
+ style="display: inline"
|
|
|
|
+ >
|
|
|
|
+ <span v-if="index > 0">,</span>
|
|
|
|
+ <a
|
|
|
|
+ :key="item.fileName + index"
|
|
|
|
+ type="primary"
|
|
|
|
+ href="#"
|
|
|
|
+ @click="previewFile(item.fileName, item.url)"
|
|
|
|
+ >{{ item.fileName }}</a
|
|
|
|
+ >
|
|
|
|
+ </div>
|
|
|
|
+ </e-desc-item>
|
|
|
|
+ </e-desc>
|
|
|
|
+ <e-desc title="工艺路线">
|
|
|
|
+ <el-table
|
|
|
|
+ :data="dataForm.proTechnologyStepNodeList"
|
|
|
|
+ :row-style="tableRowStyle"
|
|
|
|
+ border
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column label="序号" type="index" width="50" align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="nodeName"
|
|
|
|
+ header-align="center"
|
|
|
|
+ align="center"
|
|
|
|
+ min-width="80"
|
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
|
+ label="工种"
|
|
|
|
+ >
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="require"
|
|
|
|
+ header-align="center"
|
|
|
|
+ align="center"
|
|
|
|
+ min-width="400"
|
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
|
+ label="工序要求"
|
|
|
|
+ >
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </e-desc>
|
|
|
|
+ <e-desc title="编程列表">
|
|
|
|
+ <el-form
|
|
|
|
+ :model="dataForm"
|
|
|
|
+ :rules="dataRule"
|
|
|
|
+ ref="dataForm"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ >
|
|
|
|
+ <!-- 编程列表 -->
|
|
|
|
+ <el-table
|
|
|
|
+ :data="dataForm.proProgramDetailsList || []"
|
|
|
|
+ border
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column label="序号" type="index" width="50" align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="nodeName"
|
|
|
|
+ header-align="center"
|
|
|
|
+ align="center"
|
|
|
|
+ min-width="80"
|
|
|
|
+ label="节点名称"
|
|
|
|
+ >
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="scope.row.nodeName"
|
|
|
|
+ placeholder="请输入节点名称"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="require"
|
|
|
|
+ header-align="center"
|
|
|
|
+ align="center"
|
|
|
|
+ min-width="240"
|
|
|
|
+ label="节点内容"
|
|
|
|
+ >
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="scope.row.require"
|
|
|
|
+ placeholder="请输入节点内容"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="num"
|
|
|
|
+ header-align="center"
|
|
|
|
+ align="center"
|
|
|
|
+ min-width="100"
|
|
|
|
+ label="程序数量"
|
|
|
|
+ >
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-input-number
|
|
|
|
+ v-model="scope.row.num"
|
|
|
|
+ :min="1"
|
|
|
|
+ placeholder="请输入程序数量"
|
|
|
|
+ ></el-input-number>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="attachList"
|
|
|
|
+ header-align="center"
|
|
|
|
+ align="center"
|
|
|
|
+ label="程序文件"
|
|
|
|
+ >
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <upload-component
|
|
|
|
+ :displayStar="false"
|
|
|
|
+ :accept="'*'"
|
|
|
|
+ :file-obj-list="scope.row.attachList || []"
|
|
|
|
+ @uploadSuccess="
|
|
|
|
+ fileList => uploadProgramSuccess(fileList, scope.$index)
|
|
|
|
+ "
|
|
|
|
+ />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ v-if="type === 1"
|
|
|
|
+ header-align="center"
|
|
|
|
+ align="center"
|
|
|
|
+ width="60"
|
|
|
|
+ label="操作"
|
|
|
|
+ >
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-button
|
|
|
|
+ type="text"
|
|
|
|
+ size="small"
|
|
|
|
+ style="color: red"
|
|
|
|
+ @click="deleteRow(scope.$index)"
|
|
|
|
+ >删除</el-button
|
|
|
|
+ >
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ <el-row v-if="type === 1" style="text-align: center; margin-top: 10px">
|
|
|
|
+ <el-button
|
|
|
|
+ type="primary"
|
|
|
|
+ icon="el-icon-plus"
|
|
|
|
+ @click="addRow"
|
|
|
|
+ ></el-button>
|
|
|
|
+ </el-row>
|
|
|
|
+ </el-form>
|
|
|
|
+ </e-desc>
|
|
<span slot="footer" class="dialog-footer">
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button @click="onChose">取消</el-button>
|
|
<el-button @click="onChose">取消</el-button>
|
|
- <el-button type="primary" @click="dataFormSubmit()" v-reClick>确定</el-button>
|
|
|
|
|
|
+ <el-button type="primary" @click="dataFormSubmit()" v-reClick
|
|
|
|
+ >确定</el-button
|
|
|
|
+ >
|
|
</span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
-import { getMaterialList } from '@/api/material'
|
|
|
|
|
|
+import EDesc from '../common/e-desc'
|
|
|
|
+import EDescItem from '../common/e-desc-item'
|
|
|
|
+import { getDetail } from '@/api/program'
|
|
import uploadComponent from '../common/upload-component-v2'
|
|
import uploadComponent from '../common/upload-component-v2'
|
|
-import ProductComponent from '@/views/modules/common/product-component'
|
|
|
|
-import UserComponent from '@/views/modules/common/user-component'
|
|
|
|
export default {
|
|
export default {
|
|
name: 'program-add-or-update',
|
|
name: 'program-add-or-update',
|
|
- components: { ProductComponent, uploadComponent, UserComponent },
|
|
|
|
- data () {
|
|
|
|
|
|
+ components: { EDesc, EDescItem, uploadComponent },
|
|
|
|
+ data() {
|
|
return {
|
|
return {
|
|
id: 0,
|
|
id: 0,
|
|
- dataForm: {},
|
|
|
|
- materialList: [],
|
|
|
|
- fileList1: [],
|
|
|
|
- fileList2: [],
|
|
|
|
- optionsState: [
|
|
|
|
|
|
+ type: 1,
|
|
|
|
+ dataForm: {
|
|
|
|
+ attachList1: [],
|
|
|
|
+ attachList2: [],
|
|
|
|
+ proTechnologyStepNodeList: [],
|
|
|
|
+ proProgramDetailsList: []
|
|
|
|
+ },
|
|
|
|
+ // 状态列表数据
|
|
|
|
+ optionsStates: [
|
|
{ value: '1', label: '待处理' },
|
|
{ value: '1', label: '待处理' },
|
|
{ value: '2', label: '已处理' }
|
|
{ value: '2', label: '已处理' }
|
|
],
|
|
],
|
|
- dataRule: {
|
|
|
|
- projectName: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
|
|
|
|
- orderCode: [{ required: true, message: '请输入任务号', trigger: 'blur' }],
|
|
|
|
- productName: [{ required: true, message: '请选择物料名称', trigger: 'change' }],
|
|
|
|
- planCnt: [{ required: true, message: '请输入数量', trigger: 'blur' }],
|
|
|
|
- deliveryDate: [{ required: true, message: '请选择合同交期', trigger: 'change' }],
|
|
|
|
- responsibilityPerson: [{ required: true, message: '请选择责任人', trigger: 'change' }]
|
|
|
|
- }
|
|
|
|
|
|
+ dataRule: {}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- created () {
|
|
|
|
- },
|
|
|
|
|
|
+ created() {},
|
|
methods: {
|
|
methods: {
|
|
- init (id) {
|
|
|
|
|
|
+ init(id, type) {
|
|
|
|
+ this.type = type
|
|
this.id = id || 0
|
|
this.id = id || 0
|
|
- this.getMaterialList()
|
|
|
|
|
|
+ // this.getMaterialList()
|
|
|
|
+ this.getDetail()
|
|
},
|
|
},
|
|
- onChose () {
|
|
|
|
|
|
+ onChose() {
|
|
this.$emit('onChose')
|
|
this.$emit('onChose')
|
|
},
|
|
},
|
|
- getMaterialList () {
|
|
|
|
- getMaterialList().then(({ data }) => {
|
|
|
|
|
|
+ getDetail() {
|
|
|
|
+ getDetail(this.id).then(({ data }) => {
|
|
if (data && data.code === '200') {
|
|
if (data && data.code === '200') {
|
|
- this.materialList = data.data.records
|
|
|
|
|
|
+ this.dataForm = data.data
|
|
|
|
+ if (!this.dataForm.proProgramDetailsList) {
|
|
|
|
+ this.dataForm.proProgramDetailsList = []
|
|
|
|
+ }
|
|
|
|
+ if (!this.dataForm.proTechnologyStepNodeList) {
|
|
|
|
+ this.dataForm.proTechnologyStepNodeList = []
|
|
|
|
+ }
|
|
|
|
+ this.fileList1 = data.data.attachList1 || []
|
|
|
|
+ this.fileList2 = data.data.attachList2 || []
|
|
|
|
+ } else {
|
|
|
|
+ this.$message.error(data.msg)
|
|
}
|
|
}
|
|
})
|
|
})
|
|
},
|
|
},
|
|
- dataFormSubmit () {
|
|
|
|
- this.$refs['dataForm'].validate((valid) => {
|
|
|
|
|
|
+ // getMaterialList() {
|
|
|
|
+ // getMaterialList().then(({ data }) => {
|
|
|
|
+ // if (data && data.code === '200') {
|
|
|
|
+ // this.materialList = data.data.records
|
|
|
|
+ // }
|
|
|
|
+ // })
|
|
|
|
+ // },
|
|
|
|
+ dataFormSubmit() {
|
|
|
|
+ this.$refs['dataForm'].validate(valid => {
|
|
if (valid) {
|
|
if (valid) {
|
|
this.$http({
|
|
this.$http({
|
|
url: !this.id
|
|
url: !this.id
|
|
@@ -146,15 +279,40 @@ export default {
|
|
}
|
|
}
|
|
})
|
|
})
|
|
},
|
|
},
|
|
- uploadSuccess1 (fileList) {
|
|
|
|
|
|
+ uploadSuccess1(fileList) {
|
|
this.fileList1 = fileList
|
|
this.fileList1 = fileList
|
|
|
|
+ this.dataForm.attachList1 = fileList
|
|
},
|
|
},
|
|
- uploadSuccess2 (fileList) {
|
|
|
|
|
|
+ uploadSuccess2(fileList) {
|
|
this.fileList2 = fileList
|
|
this.fileList2 = fileList
|
|
|
|
+ this.dataForm.attachList2 = fileList
|
|
},
|
|
},
|
|
- prodSelected (item) {
|
|
|
|
|
|
+ prodSelected(item) {
|
|
this.dataForm.productId = item.value
|
|
this.dataForm.productId = item.value
|
|
this.dataForm.materialName = item.label
|
|
this.dataForm.materialName = item.label
|
|
|
|
+ },
|
|
|
|
+ // 编程列表相关方法
|
|
|
|
+ addRow() {
|
|
|
|
+ if (!this.dataForm.proProgramDetailsList) {
|
|
|
|
+ this.dataForm.proProgramDetailsList = []
|
|
|
|
+ }
|
|
|
|
+ this.dataForm.proProgramDetailsList.push({
|
|
|
|
+ nodeName: '',
|
|
|
|
+ require: '',
|
|
|
|
+ num: 1,
|
|
|
|
+ attachList: []
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ deleteRow(index) {
|
|
|
|
+ this.dataForm.proProgramDetailsList.splice(index, 1)
|
|
|
|
+ },
|
|
|
|
+ uploadProgramSuccess(fileList, index) {
|
|
|
|
+ this.dataForm.proProgramDetailsList[index].attachList = fileList
|
|
|
|
+ },
|
|
|
|
+ tableRowStyle({ row }) {
|
|
|
|
+ return row.id === this.dataForm.nodeId
|
|
|
|
+ ? { backgroundColor: '#ffcccc' }
|
|
|
|
+ : {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|