|
|
@@ -1,24 +1,434 @@
|
|
|
<template>
|
|
|
- <div></div>
|
|
|
+ <div>
|
|
|
+ <div class="my-title">详情</div>
|
|
|
+ <div style="margin-left: 20px; margin-right: 20px">
|
|
|
+ <e-desc title="基本信息" column="3">
|
|
|
+ <e-desc-item label="沟通信息">{{ dataForm.coCode }}</e-desc-item>
|
|
|
+ <e-desc-item label="项目名称">{{ dataForm.projectName }}</e-desc-item>
|
|
|
+ <e-desc-item label="项目类别">{{ dataForm.typeName }}</e-desc-item>
|
|
|
+ <e-desc-item label="备注" span="3">{{ dataForm.remark }}</e-desc-item>
|
|
|
+
|
|
|
+ <e-desc-item label="关联BOM物料清单">{{
|
|
|
+ dataForm.productName
|
|
|
+ }}</e-desc-item>
|
|
|
+ </e-desc>
|
|
|
+ <div class="desc">
|
|
|
+ <h1 class="desc-title">BOM物料明细报价</h1>
|
|
|
+ <el-row>
|
|
|
+ <el-table
|
|
|
+ :data="dataForm.quotedPriceProductList"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ label="序号"
|
|
|
+ type="index"
|
|
|
+ width="50"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="productName"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="物料名称"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="productSpec"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="物料规格"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="mapNumber"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="主图号"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="materials"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="材料"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="cnt"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="单套数量"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="unit"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="单位"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="size"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="物料尺寸"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="developedSize"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="展开尺寸"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="surfaceTreatment"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="表面处理"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="notes"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="备注"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <!-- 初次报价 -->
|
|
|
+ <div>
|
|
|
+ <el-table-column
|
|
|
+ prop="materialPrice"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160px"
|
|
|
+ label="原材料费"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="processPrice"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160px"
|
|
|
+ label="生产加工费"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="handlePrice"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160px"
|
|
|
+ label="热表处理费"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ </div>
|
|
|
+ <!-- 精准报价 -->
|
|
|
+ <div>
|
|
|
+ <el-table-column
|
|
|
+ prop="precisionMaterialPrice"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160px"
|
|
|
+ label="精准原材料费"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="precisionProcessPrice"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160px"
|
|
|
+ label="精准生产加工费"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="precisionHandlePrice"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160px"
|
|
|
+ label="精准热表处理费"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ </div>
|
|
|
+ </el-table>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div class="desc">
|
|
|
+ <h1 class="desc-title">任务工单派发</h1>
|
|
|
+ <el-row>
|
|
|
+ <el-table :data="dataForm.workInfoList" border style="width: 100%">
|
|
|
+ <el-table-column
|
|
|
+ label="序号"
|
|
|
+ type="index"
|
|
|
+ width="50"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="taskType"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="100"
|
|
|
+ width="120"
|
|
|
+ label="工单类型"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{
|
|
|
+ taskTypeOption.findIndex(
|
|
|
+ (t) => t.value == scope.row.taskType
|
|
|
+ ) > -1
|
|
|
+ ? taskTypeOption.find((t) => t.value == scope.row.taskType)
|
|
|
+ .label
|
|
|
+ : ""
|
|
|
+ }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="taskName"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="工单名称"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="ranks"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ width="120"
|
|
|
+ label="级别"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{
|
|
|
+ rankTypeOption.findIndex((t) => t.value == scope.row.ranks) >
|
|
|
+ -1
|
|
|
+ ? rankTypeOption.find((t) => t.value == scope.row.ranks)
|
|
|
+ .label
|
|
|
+ : ""
|
|
|
+ }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="content"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="100"
|
|
|
+ label="工单内容"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="receiver"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ width="150"
|
|
|
+ label="任务接收人"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ scope.row.receiverName }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="attachListVo"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ width="150"
|
|
|
+ label="任务附件"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ :disabled="
|
|
|
+ !scope.row.attachListVo || scope.row.attachListVo.length === 0
|
|
|
+ "
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ @click="attachDetails(scope.row.attachListVo)"
|
|
|
+ >查看</el-button
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="notes"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="备注"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="onChose">返回</el-button>
|
|
|
+ </span>
|
|
|
+
|
|
|
+ <attach-detail-dialog ref="attachDetail" @onChose="onChose" />
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import EDesc from '../common/e-desc'
|
|
|
+import EDescItem from '../common/e-desc-item'
|
|
|
+import UploadComponent from '../common/upload-component-v2'
|
|
|
+import AttachDetailDialog from '../common/attach-detail-dialog'
|
|
|
+import { getDetail } from '@/api/quoted'
|
|
|
+import { getCoCode } from '@/api/cus'
|
|
|
+import { getProductList, getProductAllDetail } from '@/api/product'
|
|
|
+import {
|
|
|
+ productTypeOption,
|
|
|
+ taskTypeOption,
|
|
|
+ rankTypeOption
|
|
|
+} from '@/utils/enums'
|
|
|
export default {
|
|
|
name: '',
|
|
|
- components: {},
|
|
|
+ components: { EDesc, EDescItem, UploadComponent, AttachDetailDialog },
|
|
|
props: {},
|
|
|
data () {
|
|
|
- return {}
|
|
|
+ return {
|
|
|
+ id: 0,
|
|
|
+ productTypeOption: productTypeOption,
|
|
|
+ taskTypeOption: taskTypeOption,
|
|
|
+ rankTypeOption: rankTypeOption,
|
|
|
+ coOption: [],
|
|
|
+ productIdOption: [],
|
|
|
+ dataForm: {
|
|
|
+ materialCost: 0,
|
|
|
+ materialCostSecond: 0,
|
|
|
+ totalPrice: 0,
|
|
|
+ totalPriceSecond: 0,
|
|
|
+ quotedPriceProductList: [], // 报价物料清单
|
|
|
+ workInfoList: []
|
|
|
+ },
|
|
|
+ productList: []
|
|
|
+ }
|
|
|
},
|
|
|
watch: {},
|
|
|
computed: {},
|
|
|
created () {},
|
|
|
mounted () {},
|
|
|
activated () {},
|
|
|
- methods: {}
|
|
|
+ methods: {
|
|
|
+ onChose () {
|
|
|
+ this.$emit('onChose')
|
|
|
+ },
|
|
|
+ async init (id) {
|
|
|
+ this.id = id || 0
|
|
|
+ await this.getCoCode()
|
|
|
+ await this.getProductList()
|
|
|
+ this.getDetail(id)
|
|
|
+ },
|
|
|
+ async getCoCode () {
|
|
|
+ await getCoCode().then(({ data }) => {
|
|
|
+ if (data && data.code === '200') {
|
|
|
+ this.coOption = data.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ async getProductList (productName) {
|
|
|
+ let params = {
|
|
|
+ current: 1,
|
|
|
+ size: 20,
|
|
|
+ productName: productName
|
|
|
+ }
|
|
|
+ await getProductList(params).then(({ data }) => {
|
|
|
+ if (data && data.code === '200') {
|
|
|
+ this.productIdOption = []
|
|
|
+ data.data.records.forEach((item) => {
|
|
|
+ this.productIdOption.push({
|
|
|
+ label: item.productName,
|
|
|
+ value: item.productId
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getDetail (id) {
|
|
|
+ getDetail(id).then(({ data }) => {
|
|
|
+ if (data && data.code === '200') {
|
|
|
+ this.dataForm = data.data
|
|
|
+ this.dataForm.coCode = this.coOption.find(
|
|
|
+ (t) => t.coId === this.dataForm.coId
|
|
|
+ ).coCode
|
|
|
+ this.dataForm.typeName = this.productTypeOption.find(
|
|
|
+ (t) => t.value === this.dataForm.type
|
|
|
+ ).label
|
|
|
+ this.dataForm.productName = this.productIdOption.find(
|
|
|
+ (t) => t.value === this.dataForm.productId
|
|
|
+ ).label
|
|
|
+
|
|
|
+ this.productIdChangeHandle(this.dataForm.productId)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ attachDetails (attachList) {
|
|
|
+ this.$refs.attachDetail.init(attachList)
|
|
|
+ },
|
|
|
+ productIdChangeHandle (val) {
|
|
|
+ if (val) {
|
|
|
+ getProductAllDetail(val).then(({ data }) => {
|
|
|
+ if (data && data.code === '200') {
|
|
|
+ this.productList = data.data
|
|
|
+ if (
|
|
|
+ this.dataForm.quotedPriceProductList == null ||
|
|
|
+ this.dataForm.quotedPriceProductList.length === 0
|
|
|
+ ) {
|
|
|
+ this.productList.forEach((item) => {
|
|
|
+ this.dataForm.quotedPriceProductList.push({
|
|
|
+ productId: item.productId
|
|
|
+ })
|
|
|
+ item.id = this.dataForm.quotedPriceProductList.find(
|
|
|
+ (t) => t.productId === item.productId
|
|
|
+ ).id
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.dataForm.quotedPriceProductList.forEach((item) => {
|
|
|
+ let tempItem = this.productList.find(
|
|
|
+ (t) => t.productId === item.productId
|
|
|
+ )
|
|
|
+ console.log(tempItem, '111111111111')
|
|
|
+
|
|
|
+ if (tempItem) {
|
|
|
+ item.productName = tempItem.productName
|
|
|
+ item.productSpec = tempItem.productSpec
|
|
|
+ item.mapNumber = tempItem.mapNumber
|
|
|
+ item.materials = tempItem.materials
|
|
|
+ item.cnt = tempItem.cnt
|
|
|
+ item.unit = tempItem.unit
|
|
|
+ item.size = tempItem.size
|
|
|
+ item.developedSize = tempItem.developedSize
|
|
|
+ item.surfaceTreatment = tempItem.surfaceTreatment
|
|
|
+ item.notes = tempItem.notes
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.productList = []
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
-
|
|
|
+.desc .desc-title {
|
|
|
+ margin-bottom: 10px;
|
|
|
+ color: #333;
|
|
|
+ font-weight: 700;
|
|
|
+ font-size: 16px;
|
|
|
+ line-height: 1.5715;
|
|
|
+}
|
|
|
</style>
|