|
|
|
@ -6,7 +6,7 @@
|
|
|
|
|
<el-input v-model="formData.quotId" placeholder="报价单Id" readonly clearable
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="报价单单号" prop="quotCode">
|
|
|
|
|
<el-form-item label="询价单单号" prop="quotCode">
|
|
|
|
|
<el-input v-model="formData.quotCode" placeholder="报价单单号(自动生成)" readonly clearable
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
@ -21,7 +21,7 @@
|
|
|
|
|
<el-input :readonly="isReadOnly" v-model="formData.quotAddress" placeholder="请输入地址" clearable>
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item v-if="isVIf" label="提交状态" prop="quotApprovalStatus">
|
|
|
|
|
<el-form-item v-if="formData.quotApprovalStatus !== undefined" label="提交状态" prop="quotApprovalStatus">
|
|
|
|
|
<el-input readonly
|
|
|
|
|
:value="formData.quotApprovalStatus === undefined ? '' :(formData.quotApprovalStatus === '0' ? '待提交' :
|
|
|
|
|
(formData.quotApprovalStatus === '1' ? '协助中' :
|
|
|
|
@ -33,12 +33,24 @@
|
|
|
|
|
<el-input :readonly="isReadOnly" v-model="formData.quotProject" placeholder="请输入项目名称" clearable >
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item v-if="this.formData.quotOAApprovalStatus == '2' || this.formData.quotOAApprovalStatus == '3'" label="OA审批说明" prop="quotOAApprovalStatusRemark">
|
|
|
|
|
<el-input readonly v-model="formData.quotOAApprovalStatusRemark" placeholder="OA审批说明" clearable >
|
|
|
|
|
<el-form-item v-if="this.formData.quotApprovalStatus == '2' || this.formData.quotApprovalStatus == '3'" label="反馈说明" prop="quotApprovalStatus">
|
|
|
|
|
<el-input type="textarea" autosize readonly v-model="formData.quotFeedbackExplanation" placeholder="反馈说明" clearable >
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="报价要求" prop="quotQuotationRequire">
|
|
|
|
|
<el-input :readonly="isReadOnly" v-model="formData.quotQuotationRequire" placeholder="请输入报价要求" clearable
|
|
|
|
|
<el-form-item v-if="this.formData.quotApprovalStatus !== '0' || this.formData.quotApprovalStatus !== undefined" label="OA审批状态" prop="quotApprovalStatus">
|
|
|
|
|
<el-input readonly
|
|
|
|
|
:value="formData.quotOAApprovalStatus === undefined ? '' :(formData.quotOAApprovalStatus === '0' ? '待提交' :
|
|
|
|
|
(formData.quotOAApprovalStatus === '1' ? '协助中' :
|
|
|
|
|
(formData.quotOAApprovalStatus === '2' ? '已完成' : '已驳回')))"
|
|
|
|
|
placeholder="保存后显示" clearable
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item v-if="this.formData.quotOAApprovalStatus == '2' || this.formData.quotOAApprovalStatus == '3'" label="OA审批说明" prop="quotOAApprovalStatusRemark">
|
|
|
|
|
<el-input type="textarea" autosize readonly v-model="formData.quotOAApprovalStatusRemark" placeholder="OA审批说明" clearable >
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="报价要求" prop="quotQuotationRequire">
|
|
|
|
|
<el-input type="textarea" autosize :readonly="isReadOnly" v-model="formData.quotQuotationRequire" placeholder="请输入报价要求" clearable
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="联系电话" prop="quotPhone">
|
|
|
|
@ -47,6 +59,7 @@
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<el-divider content-position="left" >清单附件(先保存再上传且必须是EXCEL文件)</el-divider>
|
|
|
|
|
<div v-hasPermi="['quot:quot:quotXjFile']">
|
|
|
|
|
<el-upload class="upload-demo"
|
|
|
|
@ -119,22 +132,106 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<el-divider content-position="left" >产品信息</el-divider>
|
|
|
|
|
<el-row :gutter="10" class="mb8">
|
|
|
|
|
<!--<el-col :span="1.5">
|
|
|
|
|
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddQuotMaterial" v-if="this.form.quotApprovalStatus == '0' || this.form.quotApprovalStatus == null">添加</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="1.5">
|
|
|
|
|
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteQuotMaterial" v-if="this.form.quotApprovalStatus == '0' || this.form.quotApprovalStatus == null">删除</el-button>
|
|
|
|
|
</el-col>-->
|
|
|
|
|
<!-- <el-col :span="1.5">
|
|
|
|
|
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-if="(this.form.quotApprovalStatus == '0' || this.form.quotApprovalStatus == null) || checkRole(['QUOT','PRICE_VERIFICATION'])">导入</el-button>
|
|
|
|
|
</el-col>-->
|
|
|
|
|
|
|
|
|
|
<el-col :span="1.5" v-if="checkRole(['QUOT','PRICE_VERIFICATION'])">
|
|
|
|
|
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleExportMaterial">导出</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-table :data="quotMaterialList" height="300px" show-summary ref="quotMaterial">
|
|
|
|
|
<el-table-column label="序号" align="center" prop="index" width="50"/>
|
|
|
|
|
<el-table-column label="型号" prop="matXingh" width="180">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-input v-model="scope.row.matXingh" placeholder="型号" :disabled="formData.quotApprovalStatus != '0' && formData.quotApprovalStatus != null"/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="规格" prop="matGuig" width="150">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-input v-model="scope.row.matGuig" placeholder="规格" :disabled="formData.quotApprovalStatus != '0' && formData.quotApprovalStatus != null"/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="电压" prop="matDiany" width="130">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-input v-model="scope.row.matDiany" placeholder="电压" :disabled="formData.quotApprovalStatus != '0' && formData.quotApprovalStatus != null"/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="单位" prop="matDanw" width="100">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-input v-model="scope.row.matDanw" placeholder="单位" :disabled="formData.quotApprovalStatus != '0' && formData.quotApprovalStatus != null"/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="数量" prop="matSl" width="100">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-input v-model="scope.row.matSl" placeholder="数量" :disabled="formData.quotApprovalStatus != '0' && formData.quotApprovalStatus != null"/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="备注" prop="matRemark" width="180">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-input v-model="scope.row.matRemark" placeholder="备注" :disabled="formData.quotApprovalStatus != '0' && formData.quotApprovalStatus != null"/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="报价单价" prop="matQuotPrice" v-if="checkRole(['QUOT','PRICE_VERIFICATION','SALES_MAN','QUOT_MAT_PRICE_DIFF'])" width="130">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-input v-model="scope.row.matQuotPrice" :disabled="true"/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="报价小计" prop="matQuotAllPrice" v-if="checkRole(['QUOT','PRICE_VERIFICATION','SALES_MAN','QUOT_MAT_PRICE_DIFF'])" width="130">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<el-input v-model="scope.row.matQuotAllPrice" :disabled="true"/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<el-form-item style="margin-top: 15px">
|
|
|
|
|
<el-button size="medium" v-if="!isVIf" @click="saveForm">保存</el-button>
|
|
|
|
|
<el-button size="medium" v-if="!isVIf" style="margin: 0px 15px 0px 20px" type="primary" @click="commitForm">提交</el-button>
|
|
|
|
|
|
|
|
|
|
<span v-hasPermi="['quot:quot:save']"><el-button @click="saveForm" v-if="this.formData.quotApprovalStatus == '0' || this.formData.quotApprovalStatus == null">保 存</el-button></span>
|
|
|
|
|
<span style="margin-left: 10px" v-hasPermi="['quot:quot:commit']"><el-button type="primary" plain @click="commitForm" v-if="this.formData.quotApprovalStatus == '0' || this.formData.quotApprovalStatus == null">提 交</el-button></span>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<CustomerSelect :width="100 + '%'" ref="customerSelect" :open="customerOpen" @submit="submitCustomer" @cancel="customerOpen=false"></CustomerSelect>
|
|
|
|
|
<!-- 产品导入对话框 -->
|
|
|
|
|
<el-dialog :title="productUpload.title" :visible.sync="productUpload.open" width="400px" append-to-body>
|
|
|
|
|
<el-upload
|
|
|
|
|
ref="productUpload"
|
|
|
|
|
:limit="1"
|
|
|
|
|
accept=".xlsx, .xls"
|
|
|
|
|
:headers="productUpload.headers"
|
|
|
|
|
:action="productUpload.url"
|
|
|
|
|
:disabled="productUpload.isUploading"
|
|
|
|
|
:on-progress="handleFileUploadProgress"
|
|
|
|
|
:on-success="handleFileSuccess"
|
|
|
|
|
:auto-upload="false"
|
|
|
|
|
drag
|
|
|
|
|
>
|
|
|
|
|
<i class="el-icon-upload"></i>
|
|
|
|
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
|
|
|
|
<div class="el-upload__tip text-center" slot="tip">
|
|
|
|
|
<span>仅允许导入xls、xlsx格式文件。</span>
|
|
|
|
|
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
|
|
|
|
|
</div>
|
|
|
|
|
</el-upload>
|
|
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
|
|
<el-button type="primary" @click="submitFileForm">确 定</el-button>
|
|
|
|
|
<el-button @click="productUpload.open = false">取 消</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<script>
|
|
|
|
|
import { checkPermi,checkRole} from '@/utils/permission';// 权限判断函数
|
|
|
|
|
import CustomerSelect from "@/views/components/Tools/Mobile/CustomerSelect/index.vue";
|
|
|
|
|
import { NumberAdd } from '@/utils/number';// 数值计算
|
|
|
|
|
import { changQuotPrintStatus,listQuot, getQuot, getReturnUpdateQuot, delQuot, addQuot, updateQuot, quotFileList, quotFileDelete, commitQuot, commitJsQuot, commitHjQuot, commitJswQuot, commitOAQuot, feedbackQuot, madeQuot, rejectQuot } from "@/api/quot/quot";
|
|
|
|
|
import { getToken } from "@/utils/auth";
|
|
|
|
|
import { checkPermi,checkRole } from '@/utils/permission';// 权限判断函数
|
|
|
|
|
|
|
|
|
|
import { getDicts } from "@/api/system/dict/data";
|
|
|
|
|
|
|
|
|
|
/** 导入技术确认单详情组件*/
|
|
|
|
@ -144,9 +241,6 @@ import hjDialog from '@/views/priceVerification/priceVerification/hjInfo.vue';
|
|
|
|
|
/** 导入选人组件 */
|
|
|
|
|
import PeopleSelect from "@/views/components/Tools/PeopleSelect/index.vue";
|
|
|
|
|
|
|
|
|
|
/** 弹窗放大、拖拽 */
|
|
|
|
|
import elDragDialog from "@/directive/dialog/dragDialog";
|
|
|
|
|
import router from '@/router';
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
components: {
|
|
|
|
@ -179,6 +273,20 @@ export default {
|
|
|
|
|
quotJsqrQtFileNum: 0,
|
|
|
|
|
//是否打开客户选择组件,默认不打开
|
|
|
|
|
customerOpen:false,
|
|
|
|
|
// 报价单-产品表格数据
|
|
|
|
|
quotMaterialList: [],
|
|
|
|
|
productUpload: {
|
|
|
|
|
// 是否显示弹出层(用户导入)
|
|
|
|
|
open: false,
|
|
|
|
|
// 弹出层标题(用户导入)
|
|
|
|
|
title: "",
|
|
|
|
|
// 是否禁用上传
|
|
|
|
|
isUploading: false,
|
|
|
|
|
// 设置上传的请求头部
|
|
|
|
|
headers: { Authorization: "Bearer " + getToken() },
|
|
|
|
|
// 上传的地址
|
|
|
|
|
url: process.env.VUE_APP_BASE_API + "/quot/quot/importData"
|
|
|
|
|
},
|
|
|
|
|
formData: {
|
|
|
|
|
quotId: null,
|
|
|
|
|
quotCode: '',
|
|
|
|
@ -193,14 +301,38 @@ export default {
|
|
|
|
|
quotPrintUserName: '',
|
|
|
|
|
},
|
|
|
|
|
rules: {
|
|
|
|
|
|
|
|
|
|
quotProject: [{
|
|
|
|
|
required: true,
|
|
|
|
|
message: '请输入项目名称',
|
|
|
|
|
trigger: 'blur'
|
|
|
|
|
}],
|
|
|
|
|
quotQuotationRequire: [{
|
|
|
|
|
required: true,
|
|
|
|
|
message: '请输入报价要求',
|
|
|
|
|
trigger: 'blur'
|
|
|
|
|
}],
|
|
|
|
|
quotCustomerName: [{
|
|
|
|
|
required: true,
|
|
|
|
|
message: '请选择客户',
|
|
|
|
|
trigger: 'blur'
|
|
|
|
|
}],
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
computed: {},
|
|
|
|
|
watch: {},
|
|
|
|
|
created() {
|
|
|
|
|
|
|
|
|
|
this.formData.quotSalesmanName = this.$store.state.user.nickName;
|
|
|
|
|
//this.form.quotSalesmanName = this.$store.state.user.sapUserName;
|
|
|
|
|
this.formData.quotSalesmanBm = this.$store.state.user.sapBm;
|
|
|
|
|
this.formData.quotSalesmanCode = this.$store.state.user.name;
|
|
|
|
|
this.formData.quotSalesmanDeptId = this.$store.state.user.deptId;
|
|
|
|
|
this.formData.quotSalesmanDeptName = this.$store.state.user.deptName;
|
|
|
|
|
console.log( this.formData.quotSalesmanName);
|
|
|
|
|
console.log( this.formData.quotSalesmanBm);
|
|
|
|
|
console.log( this.formData.quotSalesmanCode);
|
|
|
|
|
console.log( this.formData.quotSalesmanDeptId);
|
|
|
|
|
console.log( this.formData.quotSalesmanDeptName);
|
|
|
|
|
const param = this.$route.query;
|
|
|
|
|
|
|
|
|
|
if (param.quotId !== undefined && param.quotId !== null) {
|
|
|
|
@ -220,11 +352,19 @@ export default {
|
|
|
|
|
openCustomer(){
|
|
|
|
|
this.customerOpen=true;
|
|
|
|
|
},
|
|
|
|
|
/** 产品数据下载模板操作 */
|
|
|
|
|
importTemplate() {
|
|
|
|
|
this.download('quot/quot/importTemplate', {
|
|
|
|
|
}, `product_template_${new Date().getTime()}.xlsx`)
|
|
|
|
|
},
|
|
|
|
|
//客户选择确定按钮事件
|
|
|
|
|
submitCustomer(customer){
|
|
|
|
|
this.formData.quotCustomerName = customer.label
|
|
|
|
|
this.customerOpen=false;
|
|
|
|
|
},
|
|
|
|
|
/** 报价组权限控制 */
|
|
|
|
|
checkPermi,
|
|
|
|
|
checkRole,
|
|
|
|
|
/** 修改按钮操作 */
|
|
|
|
|
handleUpdate(row) {
|
|
|
|
|
const quotId = row.quotId || this.ids
|
|
|
|
@ -232,6 +372,26 @@ export default {
|
|
|
|
|
this.setInfo(response);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
/** 产品数据导入按钮操作 */
|
|
|
|
|
handleImport() {
|
|
|
|
|
this.productUpload.title = "产品数据导入";
|
|
|
|
|
this.productUpload.open = true;
|
|
|
|
|
},
|
|
|
|
|
/** 产品数据导出按钮操作 */
|
|
|
|
|
handleExportMaterial() {
|
|
|
|
|
const quot = {"quotId":this.formData.quotId};
|
|
|
|
|
this.download('quot/quot/exportMaterial', {
|
|
|
|
|
...quot
|
|
|
|
|
}, this.formData.quotCode +".xlsx")
|
|
|
|
|
},
|
|
|
|
|
/** 产品数据文件上传中处理 */
|
|
|
|
|
handleFileUploadProgress(event, file, fileList) {
|
|
|
|
|
this.productUpload.isUploading = true;
|
|
|
|
|
},
|
|
|
|
|
/** 产品数据提交上传文件 */
|
|
|
|
|
submitFileForm() {
|
|
|
|
|
this.$refs.productUpload.submit();
|
|
|
|
|
},
|
|
|
|
|
/** 修改按钮操作-详细信息设置 */
|
|
|
|
|
setInfo(response){
|
|
|
|
|
console.log(response)
|
|
|
|
@ -240,6 +400,15 @@ export default {
|
|
|
|
|
this.open = true;
|
|
|
|
|
this.activeName = "quotInfo";
|
|
|
|
|
|
|
|
|
|
//协助中状态不显示产品信息
|
|
|
|
|
if(checkRole(['SALES_MAN']) && !checkRole(['admin'])){
|
|
|
|
|
if(this.formData.quotApprovalStatus!='1'){
|
|
|
|
|
this.quotMaterialList = response.data.quotMaterialList;
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
this.quotMaterialList = response.data.quotMaterialList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const quotJsxzGroup = this.formData.quotJsxzGroupValues;
|
|
|
|
|
if(quotJsxzGroup){
|
|
|
|
|
if(quotJsxzGroup.indexOf("TL")!==-1){
|
|
|
|
|