Browse Source

20240923

java8
qiezi 1 year ago
parent
commit
f6af1f9127
  1. 2
      src/api/quote/quote.js
  2. 2
      src/views/modules/quote/detail/primary/quoteDetailBom.vue
  3. 22
      src/views/modules/quote/detail/primary/quoteDetailCost.vue
  4. 4
      src/views/modules/quote/detail/primary/quoteDetailOther.vue
  5. 2
      src/views/modules/quote/detail/primary/quoteDetailRouting.vue
  6. 2
      src/views/modules/quote/detail/primary/quoteDetailTool.vue
  7. 23
      src/views/modules/quote/detail/quoteDetail.vue
  8. 80
      src/views/modules/quote/index.vue
  9. 14
      src/views/modules/quote/primary/quoteTable.vue

2
src/api/quote/quote.js

@ -12,3 +12,5 @@ export const againQuote = (data) => createAPI(`/quote/again`,'post',data)
export const queryQuoteRoleUser = (data) => createAPI(`/quote/user`,'post',data)
export const batchSaveQuote = (data) => createAPI(`/quote/inside/batch/save`,'post',data)
export const updateQuoteStatus = (data) => createAPI(`/quote/update/status`,'post',data)

2
src/views/modules/quote/detail/primary/quoteDetailBom.vue

@ -462,7 +462,7 @@ export default {
<template>
<div>
<div style="margin-bottom: 10px">
<el-link style="margin-right: 20px;cursor: pointer" @click="handleCheckedVersion">切换版本</el-link>
<el-link style="margin-right: 20px;cursor: pointer" @click="handleCheckedVersion" v-if="quoteDetail.status === '草稿'">切换版本</el-link>
<el-checkbox v-model="isAllBom">全级BOM结构</el-checkbox>
</div>
<el-container>

22
src/views/modules/quote/detail/primary/quoteDetailCost.vue

@ -172,7 +172,7 @@ export default {
<template>
<div>
<el-button :loading="computeLoading" type="primary" @click="handleQueryAllCost"> </el-button>
<el-button :loading="computeLoading" type="primary" :disabled="quoteDetail.status === '下达'" @click="handleQueryAllCost"> </el-button>
<!--系统自动计算结果-->
<el-form :model="quoteDetail" ref="costForm" :rules="rules" label-position="top" label-width="120px">
<fieldset
@ -224,37 +224,37 @@ export default {
<el-col :span="4">
<el-form-item label="材料标准成本:" prop="adjustPartCost" :show-message="false">
<el-input-number style="width: 100%;" :controls="false"
v-model="quoteDetail.adjustPartCost" :step="0" :precision="4" :min="0"/>
v-model="quoteDetail.adjustPartCost" :disabled="quoteDetail.status === '下达'" :step="0" :precision="4" :min="0"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="材料实际成本:" prop="adjustBomUnYield" :show-message="false">
<el-input-number style="width: 100%;" :controls="false"
v-model="quoteDetail.adjustBomUnYield" :step="0" :precision="4" :min="0"/>
v-model="quoteDetail.adjustBomUnYield" :disabled="quoteDetail.status === '下达'" :step="0" :precision="4" :min="0"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="机器成本:" prop="adjustMachineCost" :show-message="false">
<el-input-number style="width: 100%;" :controls="false"
v-model="quoteDetail.adjustMachineCost" :step="0" :precision="4" :min="0"/>
v-model="quoteDetail.adjustMachineCost" :disabled="quoteDetail.status === '下达'" :step="0" :precision="4" :min="0"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="制造费用成本:" prop="adjustFabricateCost" :show-message="false">
<el-input-number style="width: 100%;" :controls="false"
v-model="quoteDetail.adjustFabricateCost" :step="0" :precision="4" :min="0"/>
v-model="quoteDetail.adjustFabricateCost" :disabled="quoteDetail.status === '下达'" :step="0" :precision="4" :min="0"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="人工成本:" prop="adjustLabourCost" :show-message="false">
<el-input-number style="width: 100%;" :controls="false"
v-model="quoteDetail.adjustLabourCost" :step="0" :precision="4" :min="0"/>
v-model="quoteDetail.adjustLabourCost" :disabled="quoteDetail.status === '下达'" :step="0" :precision="4" :min="0"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="工具成本:" prop="adjustToolCost" :show-message="false">
<el-input-number style="width: 100%;" :controls="false"
v-model="quoteDetail.adjustToolCost" :step="0" :precision="4" :min="0"/>
v-model="quoteDetail.adjustToolCost" :disabled="quoteDetail.status === '下达'" :step="0" :precision="4" :min="0"/>
</el-form-item>
</el-col>
</el-row>
@ -266,7 +266,7 @@ export default {
<el-col :span="4">
<el-form-item label="管理成本:" prop="manageCost" :show-message="false">
<el-input-number style="width: 100%;" :controls="false"
v-model="quoteDetail.manageCost" :step="0" :precision="4" :min="0"/>
v-model="quoteDetail.manageCost" :disabled="quoteDetail.status === '下达'" :step="0" :precision="4" :min="0"/>
</el-form-item>
</el-col>
<el-col :span="4">
@ -284,7 +284,7 @@ export default {
<el-col :span="4">
<el-form-item label="其他成本:" prop="otherCost" :show-message="false">
<el-input-number style="width: 100%; " :controls="false"
v-model="quoteDetail.otherCost" :step="0" :precision="4" :min="0"/>
v-model="quoteDetail.otherCost" :disabled="quoteDetail.status === '下达'" :step="0" :precision="4" :min="0"/>
</el-form-item>
</el-col>
<el-col :span="4">
@ -301,7 +301,7 @@ export default {
<el-col :span="4">
<el-form-item label="利润率%:" prop="profitRate" :show-message="false">
<el-input-number style="width: 100%;" :controls="false"
v-model="quoteDetail.profitRate" :step="0" :min="0"/>
v-model="quoteDetail.profitRate" :disabled="quoteDetail.status === '下达'" :step="0" :min="0"/>
</el-form-item>
</el-col>
<el-col :span="4">
@ -330,7 +330,7 @@ export default {
<el-col :span="4">
<el-form-item label="税率%:" prop="taxRate" :show-message="false">
<el-input-number style="width: 100%;" :controls="false"
v-model="quoteDetail.taxRate" :step="0" :min="0"/>
v-model="quoteDetail.taxRate" :disabled="quoteDetail.status === '下达'" :step="0" :min="0"/>
</el-form-item>
</el-col>
<el-col :span="4">

4
src/views/modules/quote/detail/primary/quoteDetailOther.vue

@ -244,8 +244,8 @@ export default {
<template>
<div>
<el-button type="primary" @click="handleSaveAttribute">新增</el-button>
<el-button type="primary" @click="handleUpdateAttribute">{{updateStatus?'保存':'编辑'}}</el-button>
<el-button type="primary" :disabled="quoteDetail.status === '下达'" @click="handleSaveAttribute">新增</el-button>
<el-button type="primary" :disabled="quoteDetail.status === '下达'" @click="handleUpdateAttribute">{{updateStatus?'保存':'编辑'}}</el-button>
<el-table :data="dataList" style="width: 100%" border :height="420">
<el-table-column
v-for="(item,index) in columns" :key="index"

2
src/views/modules/quote/detail/primary/quoteDetailRouting.vue

@ -698,7 +698,7 @@ export default {
<template>
<div>
<div style="margin-bottom: 10px">
<el-link style="margin-right: 20px;cursor:pointer;" @click="handleChangeVersion">切换版本</el-link>
<el-link style="margin-right: 20px;cursor:pointer;" @click="handleChangeVersion" v-if="quoteDetail.status === '草稿'">切换版本</el-link>
<el-checkbox v-model="isAllRouting">全级Routing结构</el-checkbox>
</div>
<el-container>

2
src/views/modules/quote/detail/primary/quoteDetailTool.vue

@ -254,7 +254,7 @@ export default {
<template>
<div>
<el-button type="primary" @click="handleSave(null)">新增</el-button>
<el-button type="primary" @click="handleSave(null)" :disabled="quoteDetail.status === '下达'">新增</el-button>
<el-table :data="dataList" v-loading="queryLoading" :height="420" border style="width: 100%;margin-top: 5px" >
<el-table-column label="工具编码" align="left" header-align="center" width="120" prop="toolNo"></el-table-column>
<el-table-column label="工具描述" align="left" header-align="center" width="180" prop="toolDesc"></el-table-column>

23
src/views/modules/quote/detail/quoteDetail.vue

@ -748,7 +748,7 @@ export default {
this.saveQuoteDetail = {
...this.quoteDetail,
createBy:this.$store.state.user.name,
status:'下达',
status:'草稿',
active:'Y',
qty:1,
isDetail:false,
@ -760,6 +760,13 @@ export default {
this.activeName = 'bom';
this.saveVisible = true;
},
handleDetail(row){
this.saveQuoteDetail = {
...row
}
this.activeName = 'bom';
this.saveVisible = true;
},
handleDeleteQuoteDetail(row){
this.$alert('确认删除该条报价明细吗?', '提示', {
confirmButtonText: '确定',
@ -920,8 +927,7 @@ export default {
<template>
<div>
<el-button type="primary" @click="handleSaveQuoteDetail(null)">新增</el-button>
<el-button type="primary" :disabled="quote.status === '下达'" @click="handleSaveQuoteDetail(null)">新增</el-button>
<el-table v-loading="queryLoading" border :data="dataList" style="width: 100%;margin-top: 5px" :height="height">
<el-table-column type="index" width="55" align="center" label="序号"></el-table-column>
<el-table-column
@ -941,10 +947,11 @@ export default {
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="120">
<template slot-scope="scope">
<a type="text" @click="handleComputeYield(scope.row)">计算</a>
<a type="text" @click="handleSaveQuoteDetail(scope.row)">编辑</a>
<a type="text" @click="handleDeleteQuoteDetail(scope.row)">删除</a>
<template slot-scope="{row,$index}">
<a type="text" v-if="row.status === '草稿'" @click="handleComputeYield(row)">计算</a>
<a type="text" v-if="row.status === '草稿'" @click="handleSaveQuoteDetail(row)">编辑</a>
<a type="text" v-if="row.status === '草稿'" @click="handleDeleteQuoteDetail(row)">删除</a>
<a type="text" v-if="row.status === '下达'" @click="handleDetail(row)">详情</a>
</template>
</el-table-column>
</el-table>
@ -1029,7 +1036,7 @@ export default {
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" :loading="saveLoading" @click="handleSaveQuoteDetailClick"> </el-button>
<el-button type="primary" v-if="saveQuoteDetail.status === '草稿'" :loading="saveLoading" @click="handleSaveQuoteDetailClick"> </el-button>
<el-button @click="saveVisible = false"> </el-button>
</div>
</el-dialog>

80
src/views/modules/quote/index.vue

@ -1,7 +1,14 @@
<script>
import QuoteSearch from "./primary/quoteSearch.vue";
import QuoteTable from "./primary/quoteTable.vue";
import {queryQuotePage, queryQuoteRoleUser, removeQuote, saveQuote, updateQuote} from "../../../api/quote/quote";
import {
queryQuotePage,
queryQuoteRoleUser,
removeQuote,
saveQuote,
updateQuote,
updateQuoteStatus
} from "../../../api/quote/quote";
import {getSiteAndBuByUserName} from "../../../api/eam/eam";
import CustomerTable from "../../../components/selector/table/customerTable.vue";
import BuSelect from "../../../components/selector/select/BuSelect.vue";
@ -393,6 +400,8 @@ export default {
userDataList:[],
tagNo:undefined,
insideInquiryVisible:false,
detailFlag:false,
}
},
methods:{
@ -536,7 +545,7 @@ export default {
this.projectVisible = false
},
handleRemove(row){
this.$alert('确认删除该报价信息吗?', '提示', {
this.$confirm('确认删除该报价信息吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
@ -546,6 +555,34 @@ export default {
})
},
handleUpdateStatus(row){
this.$confirm('确定要下达该报价单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(()=>{
let params = {
...row,
}
updateQuoteStatus(params).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg)
this.handleSearch();
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
})
},
handleQueryById(row){
this.saveQuote = {
...row
}
this.detailFlag = true;
this.saveVisible = true;
},
handleRemoveQuote(row){
let params = {
id: row.id,
@ -733,6 +770,11 @@ export default {
'saveQuote.projectNo'(newVal, oldVal){
// this.saveQuote.projectNo = newVal.toUpperCase()
},
saveVisible(newVal, oldVal){
if (newVal === false){
this.detailFlag = false;
}
},
},
activated() {
if (this.$route.params.ids){
@ -745,9 +787,17 @@ export default {
<template>
<div>
<quote-search v-model:quote="quoteForm" @search="handleSearch" @save="handleSave"></quote-search>
<quote-table v-loading="searchLoading" :current-row="currentQuote" :columns="columns" style="margin-top: 5px"
@save="handleSave" @remove="handleRemove" @rowClick="handleRowClick"
:data-list="dataList" :height="'35vh'">
<quote-table v-loading="searchLoading"
:current-row="currentQuote"
:columns="columns"
style="margin-top: 5px"
@save="handleSave"
@remove="handleRemove"
@rowClick="handleRowClick"
@updateStatus="handleUpdateStatus"
@queryById="handleQueryById"
:data-list="dataList"
:height="'35vh'">
</quote-table>
<el-pagination @size-change="handleSizeChange"
@ -776,7 +826,7 @@ export default {
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="客户询价单号" prop="customerInquiryNo" :show-message="false">
<el-input v-model="saveQuote.customerInquiryNo"></el-input>
<el-input v-model="saveQuote.customerInquiryNo" :disabled="detailFlag"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
@ -817,44 +867,44 @@ export default {
</el-col>
<el-col :span="8">
<el-form-item label="币种" prop="currency" :show-message="false">
<span slot="label">
<span slot="label" v-if="!detailFlag">
<a @click="getBaseList(512)">币种</a>
</span>
<el-input v-model="saveQuote.currency"></el-input>
<el-input v-model="saveQuote.currency" :disabled="detailFlag"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="报价日期" prop="quoteDate" :show-message="false">
<el-date-picker style="width: 100%" v-model="saveQuote.quoteDate" type="date" value-format='yyyy-MM-dd' format='yyyy-MM-dd'></el-date-picker>
<el-date-picker style="width: 100%" :disabled="detailFlag" v-model="saveQuote.quoteDate" type="date" value-format='yyyy-MM-dd' format='yyyy-MM-dd'></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="报价专员" prop="quoter" :show-message="false">
<span slot="label">
<span slot="label" v-if="!detailFlag">
<a @click="handleQuoterClick" >报价专员</a>
</span>
<el-input v-model="saveQuote.quoter"></el-input>
<el-input v-model="saveQuote.quoter" :disabled="detailFlag"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="采购专员" prop="purchase" :show-message="false">
<span slot="label">
<span slot="label" v-if="!detailFlag">
<a @click="handlePurchaseClick" >采购专员</a>
</span>
<el-input v-model="saveQuote.purchase"></el-input>
<el-input v-model="saveQuote.purchase" :disabled="detailFlag"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remark" class="auto" :show-message="false">
<el-input v-model="saveQuote.remark" :rows="3" type="textarea"></el-input>
<el-input v-model="saveQuote.remark" :disabled="detailFlag" :rows="3" type="textarea"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSaveOrUpdateQuote"> </el-button>
<el-button type="primary" v-if="!detailFlag" @click="handleSaveOrUpdateQuote"> </el-button>
<el-button @click="saveVisible = false"> </el-button>
</div>
</el-dialog>

14
src/views/modules/quote/primary/quoteTable.vue

@ -29,6 +29,12 @@ export default {
handleRemoveClick(row){
this.$emit('remove',row)
},
handleUpdateStatus(row){
this.$emit('updateStatus',row)
},
handleQueryById(row){
this.$emit('queryById',row)
},
rowStyle({row}){
if(this.currentRow && this.currentRow.id === row.id){
return { 'background-color': '#E8F7F6' };
@ -63,9 +69,11 @@ export default {
align="center"
width="180"
label="操作">
<template slot-scope="scope">
<a type="text" @click="handleSaveClick(scope.row)">编辑</a>
<a type="text" @click="handleRemoveClick(scope.row)">删除</a>
<template slot-scope="{row,$index}">
<a type="text" v-if="row.status === '草稿'" @click="handleSaveClick(row)">编辑</a>
<a type="text" v-if="row.status === '草稿'" @click="handleRemoveClick(row)">删除</a>
<a type="text" v-if="row.status === '草稿'" @click="handleUpdateStatus(row)">下达</a>
<a type="text" v-if="row.status === '下达'" @click="handleQueryById(row)">详情</a>
</template>
</el-table-column>
</el-table>

Loading…
Cancel
Save