You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1298 lines
44 KiB
1298 lines
44 KiB
<template>
|
|
<div class="customer-css">
|
|
<!-- 查询条件 -->
|
|
<el-form :inline="true" label-position="top" class="pi-search-form">
|
|
<el-form-item :label="'询价单号'">
|
|
<el-input v-model="searchData.orderNo" placeholder="询价单号" style="width:160px" @keyup.enter.native="getList" clearable />
|
|
</el-form-item>
|
|
<el-form-item :label="'供应商编码'">
|
|
<el-input v-model="searchData.supplierId" placeholder="供应商编码" style="width:160px" @keyup.enter.native="getList" clearable />
|
|
</el-form-item>
|
|
<el-form-item :label="'供应商名称'">
|
|
<el-input v-model="searchData.supplierName" placeholder="供应商名称" style="width:200px" @keyup.enter.native="getList" clearable />
|
|
</el-form-item>
|
|
<el-form-item :label="'状态'">
|
|
<el-select v-model="searchData.status" placeholder="请选择" style="width:100px" clearable>
|
|
<el-option label="全部" value="" />
|
|
<el-option label="已计划" value="已计划" />
|
|
<el-option label="已下达" value="已下达" />
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" class="customer-bun-min" @click="getList">查询</el-button>
|
|
<el-button type="primary" class="customer-bun-min" @click="openDialog()">新增</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
|
|
<!-- 主表:询价单列表 -->
|
|
<el-table :data="dataList" :height="tableHeight" border highlight-current-row @row-click="selectInquiry" v-loading="loading" style="width:100%">
|
|
<el-table-column fixed="right" label="操作" header-align="center" align="center" width="140">
|
|
<template slot-scope="scope">
|
|
<a class="customer-a" @click.stop="openDialog(scope.row)">编辑 |</a>
|
|
<a class="customer-a" @click.stop="handleDelete(scope.row)">删除</a>
|
|
<a class="customer-a" @click="updateQuoDetail(scope.row)">提交</a>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="orderNo" label="询价单号" min-width="140" header-align="center" align="left" show-overflow-tooltip fixed="left" />
|
|
<el-table-column prop="supplierId" label="供应商编码" min-width="120" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="supplierName" label="供应商名称" min-width="180" header-align="center" align="left" show-overflow-tooltip />
|
|
<el-table-column prop="orderDate" label="询价日期" min-width="120" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="wantReplyDate" label="要求报价日期" min-width="120" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="userName" label="录入人" min-width="100" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="buyer" label="采购员" min-width="100" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="paymentTermDesc" label="付款方式" min-width="120" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="deliveryTermDesc" label="交易条款" min-width="120" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="currency" label="货币" min-width="80" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="currencyRate" label="货币汇率" min-width="100" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="taxRate" label="税率" min-width="80" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="otherCondition" label="其他要求" min-width="180" header-align="center" align="left" show-overflow-tooltip />
|
|
<el-table-column prop="phoneNo" label="电话号码" min-width="120" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="faxNo" label="传真" min-width="120" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="contact" label="联系人" min-width="100" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="remark" label="备注" min-width="180" header-align="center" align="left" show-overflow-tooltip />
|
|
<el-table-column prop="status" label="状态" min-width="80" header-align="center" align="center" show-overflow-tooltip />
|
|
</el-table>
|
|
|
|
<!-- 分页 -->
|
|
|
|
<el-pagination
|
|
style="margin-top:5px"
|
|
@size-change="sizeChangeHandle"
|
|
@current-change="currentChangeHandle"
|
|
:current-page="pageIndex"
|
|
:page-sizes="[20,50,100,200]"
|
|
:page-size="pageSize"
|
|
:total="totalPage"
|
|
layout="total, sizes, prev, pager, next, jumper" />
|
|
|
|
<!-- 子表:物料明细列表 - 始终显示表头 -->
|
|
<div class="sub-title">
|
|
物料明细列表
|
|
<el-button type="primary" class="customer-bun-min" @click="openMaterialDialog()" style="margin-left: 10px;">新增物料</el-button>
|
|
</div>
|
|
|
|
<el-table
|
|
:data="materialList"
|
|
:height="subTableHeight"
|
|
border
|
|
v-loading="materialLoading"
|
|
style="width:100%">
|
|
<el-table-column fixed="right" label="操作" header-align="center" align="center" width="120">
|
|
<template slot-scope="scope">
|
|
<a class="material-action-btn" @click="openMaterialDialog(scope.row)">编辑</a>
|
|
<a class="material-action-btn" @click="deleteMaterial(scope.row)">删除</a>
|
|
<a class="material-action-btn" @click="openUploadDialog(scope.row)">附件</a>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="partNo" label="物料编码" min-width="130" header-align="center" align="center" show-overflow-tooltip />
|
|
<el-table-column prop="partDesc" label="物料名称" min-width="150" header-align="center" align="left" show-overflow-tooltip />
|
|
<el-table-column prop="umid" label="计量单位" min-width="80" header-align="center" align="center" />
|
|
<el-table-column prop="spec" label="规格型号" min-width="150" header-align="center" align="left" show-overflow-tooltip />
|
|
<el-table-column prop="qty" label="询价数量" min-width="100" header-align="center" align="right">
|
|
<template slot-scope="scope">{{ scope.row.qty || 0 }}</template>
|
|
</el-table-column>
|
|
<el-table-column prop="remark2" label="特殊要求" min-width="150" header-align="center" align="left" show-overflow-tooltip>
|
|
<template slot-scope="scope">{{ scope.row.remark2 || '-' }}</template>
|
|
</el-table-column>
|
|
<el-table-column prop="status" label="状态" min-width="80" header-align="center" align="center">
|
|
<template slot-scope="scope">{{ scope.row.status }}
|
|
<!-- <span :class="'status-badge ' + (scope.row.status === 'Y' ? 'status-sent' : 'status-closed')">{{ scope.row.status === 'Y' ? '启用' : '停用' }}</span> -->
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<!-- 空数据提示 -->
|
|
<div v-if="materialList.length === 0 && !materialLoading" style="margin-top: 8px; color: #909399; font-size: 12px; text-align: center;">
|
|
{{ currentInquiry ? '暂无物料数据' : '请点击左侧询价单查看物料明细' }}
|
|
</div>
|
|
|
|
<!-- 新增/编辑 询价单弹窗 -->
|
|
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="700px" :close-on-click-modal="false" append-to-body>
|
|
<el-form label-position="top" class="pi-form" :model="form" label-width="120px">
|
|
<el-row :gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item>
|
|
<span style="cursor: pointer" slot="label" @click="getBaseList(520)"><a href="javascript:void(0)">供应商编码</a></span>
|
|
<el-input v-model="form.supplierId" @change="handleSupplierIdChange" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="供应商名称" :required="true">
|
|
<el-input v-model="form.supplierName"/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item label="询价日期">
|
|
<el-date-picker v-model="form.orderDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期" style="width:100%" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="要求报价日期">
|
|
<el-date-picker v-model="form.wantReplyDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期" style="width:100%" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item label="货币汇率">
|
|
<el-input-number v-model="form.currencyRate" :precision="4" :step="0.1" style="width:100%" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label="税率(%)">
|
|
<!-- <el-input-number v-model="form.taxRate" :precision="2" :step="1" style="width:100%" /> -->
|
|
<el-select v-model="taxForm.taxRate" placeholder="请选择" clearable>
|
|
<el-option
|
|
v-for = "t in taxList"
|
|
:key = "t.taxCode"
|
|
:label = "t.taxRate"
|
|
:value = "t.taxRate">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label="货币">
|
|
<!-- <el-input-number v-model="form.taxRate" :precision="2" :step="1" style="width:100%" /> -->
|
|
<el-select v-model="currencyForm.currency" placeholder="请选择" clearable>
|
|
<el-option
|
|
v-for = "t in currencyList"
|
|
:key = "t.currency"
|
|
:label = "t.currencyDesc"
|
|
:value = "t.currency">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="20">
|
|
<el-col :span="6">
|
|
<el-form-item>
|
|
<span style="cursor: pointer" slot="label" @click="getBaseList(529)"><a href="javascript:void(0)">采购员</a></span>
|
|
<el-input v-model="form.buyer" style="width: 130px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label="付款方式">
|
|
<!-- <el-input v-model="form.paymentTermDesc" /> -->
|
|
<el-select v-model="paymentForm.paymentTerm" placeholder="请选择" clearable>
|
|
<el-option
|
|
v-for = "t in paymentList"
|
|
:key = "t.paymentTermId"
|
|
:label = "t.paymentTerm"
|
|
:value = "t.paymentTermId">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="交易条款">
|
|
<!-- <el-input v-model="form.deliveryTermDesc" /> -->
|
|
<el-select v-model="deliveryForm.deliveryTermId" placeholder="请选择" clearable style="width: 100%">
|
|
<el-option
|
|
v-for = "t in deliveryList"
|
|
:key = "t.deliveryTermId"
|
|
:label = "t.deliveryTerm"
|
|
:value = "t.deliveryTermId">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
</el-row>
|
|
<el-row :gutter="20">
|
|
<el-col :span="6">
|
|
<el-form-item label="电话号码">
|
|
<el-input v-model="form.phoneNo" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label="传真">
|
|
<el-input v-model="form.faxNo" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label="联系人">
|
|
<el-input v-model="form.contact" />
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
</el-row>
|
|
<el-row :gutter="20">
|
|
<el-col :span="24">
|
|
<el-form-item label="其他要求">
|
|
<el-input v-model="form.otherCondition" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="20">
|
|
<el-col :span="24">
|
|
<el-form-item label="备注">
|
|
<el-input type="textarea" v-model="form.remark" :rows="2" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<div slot="footer" class="dialog-footer" style="margin-top: 20px">
|
|
<el-button type="primary" @click="submitForm" :loading="submitLoading">保存</el-button>
|
|
<el-button @click="dialogVisible=false">取消</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<!-- 物料明细新增/编辑弹窗 -->
|
|
<el-dialog :title="materialDialogTitle" :visible.sync="materialDialogVisible" width="700px" :close-on-click-modal="false" append-to-body>
|
|
<el-form label-position="top" class="pi-form" :model="materialForm">
|
|
<el-row :gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item >
|
|
<span style="cursor: pointer" slot="label" @click="getBaseList(507)"><a href="#">物料编码</a></span>
|
|
<el-input v-model="materialForm.partNo" placeholder="请输入物料编码" @change="handlePartNoChange"/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="物料名称" required>
|
|
<el-input v-model="materialForm.partDesc" placeholder="请输入物料名称" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item label="规格型号">
|
|
<el-input v-model="materialForm.spec" placeholder="规格型号" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item >
|
|
<span style="cursor: pointer" slot="label" @click="getBaseList(510)"><a href="#">计量单位</a></span>
|
|
<el-input v-model="materialForm.umid" placeholder="计量单位" />
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
<el-form-item label="询价数量">
|
|
<el-input-number v-model="materialForm.qty" :min="0" :precision="0" style="width:100%" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="20">
|
|
<el-col :span="24">
|
|
<el-form-item label="特殊要求">
|
|
<el-input type="textarea" v-model="materialForm.remark2" :rows="2" placeholder="特殊要求" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<div slot="footer" class="dialog-footer" style="margin-top: 20px">
|
|
<el-button type="primary" @click="saveMaterial" :loading="materialSubmitLoading">保存</el-button>
|
|
<el-button @click="materialDialogVisible=false">取消</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
|
|
<el-dialog
|
|
:title="dialogTitle"
|
|
:visible.sync="uploadDialogVisible"
|
|
width="800px"
|
|
:close-on-click-modal="false"
|
|
append-to-body
|
|
@close="handleClose">
|
|
<div class="customer-css">
|
|
<!-- 上传按钮 -->
|
|
<el-form label-position="top" style="margin-top: -5px;">
|
|
<el-row style="margin-top: 10px">
|
|
<el-col :span="4">
|
|
<el-button class="customer-bun-min" type="primary" @click="handleUpload">Upload</el-button>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<!-- 文件列表表格 -->
|
|
<el-table
|
|
:height="240"
|
|
:data="fileList"
|
|
ref="fileTableRef"
|
|
style="width: 100%; margin-top: 10px;">
|
|
<el-table-column
|
|
prop="fileName"
|
|
header-align="center"
|
|
align="left"
|
|
min-width="200"
|
|
label="File">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="createdBy"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="Upload By">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="createDate"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="Upload Time">
|
|
</el-table-column>
|
|
<el-table-column
|
|
header-align="center"
|
|
align="center"
|
|
width="100"
|
|
fixed="right"
|
|
label="Actions">
|
|
<template slot-scope="scope">
|
|
<a type="text" size="small" v-if="scope.row.id" @click="handleDownload(scope.row)">View |</a>
|
|
<a type="text" size="small" v-if="scope.row.id" @click="deleteFileReal(scope.row)"> delete</a>
|
|
<a type="text" size="small" v-else @click="deleteFile(scope.$index)"> delete</a>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-form>
|
|
</div>
|
|
|
|
<!-- File Upload Dialog -->
|
|
<el-dialog
|
|
title="UpLoad"
|
|
:visible.sync="ossVisible"
|
|
v-drag
|
|
width="400px"
|
|
append-to-body
|
|
:close-on-click-modal="false"
|
|
@close="handleUploadClose">
|
|
<el-form ref="form" class="rq" label-width="80px" label-position="top">
|
|
<el-row :gutter="10">
|
|
<slot></slot>
|
|
<el-col :span="24">
|
|
<el-form-item label=" " class="auto">
|
|
<el-upload
|
|
drag
|
|
:file-list="fileList2"
|
|
action="#"
|
|
ref="upload"
|
|
:on-remove="onRemoveFile"
|
|
:on-change="onChangeFile"
|
|
multiple
|
|
:auto-upload="false">
|
|
<i class="el-icon-upload"></i>
|
|
<div class="el-upload__text">Drag files here, or<em> click to upload</em></div>
|
|
</el-upload>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="24">
|
|
<el-form-item label="Remark" class="auto">
|
|
<el-input type="textarea" v-model="ossForm.remark" resize="none" :autosize="{minRows: 3, maxRows: 3}"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button type="primary" :loading="uploadLoading" @click="submitData">Confirm</el-button>
|
|
<el-button @click="ossVisible = false">Close</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button @click="uploadDialogVisible = false">关闭</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<Chooselist ref="baseList" @getBaseData="getBaseData" />
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import Chooselist from '@/views/modules/common/Chooselist_eam'
|
|
import {
|
|
searchPurHeaderList,
|
|
createPurHeader,
|
|
updatePurHeader,
|
|
deletePurHeader,
|
|
searchMaterialList,
|
|
createMaterial,
|
|
updateMaterial,
|
|
deleteMaterial,
|
|
updatePurDetailStatus
|
|
} from '@/api/supplier/purQuotation.js'
|
|
|
|
import {
|
|
getSupplierInfo
|
|
} from '@/api/srm/srmSupplier.js'
|
|
|
|
import {
|
|
ossUploadNoSaveOSSForYJY,
|
|
queryOssFilePlus,
|
|
removeOss,
|
|
downLoadObjectFile
|
|
} from "../../../api/oss/oss";
|
|
|
|
import {
|
|
searchTaxList
|
|
} from "@/api/base/tax.js";
|
|
|
|
import {
|
|
searchCurrencyList
|
|
} from "@/api/base/currency.js";
|
|
|
|
import {
|
|
searchPaymentList
|
|
} from "@/api/base/paymentTerm.js";
|
|
|
|
|
|
import {
|
|
searchDeliveryList
|
|
} from "@/api/base/deliveryTerm.js";
|
|
|
|
// 添加物料信息查询接口
|
|
import {
|
|
searchPartInfo
|
|
} from '@/api/part/partInfo.js'
|
|
|
|
|
|
export default {
|
|
components: {
|
|
Chooselist
|
|
},
|
|
name: 'InquiryList',
|
|
data() {
|
|
return {
|
|
tableHeight: 200,
|
|
subTableHeight: 200,
|
|
loading: false,
|
|
submitLoading: false,
|
|
materialLoading: false,
|
|
materialSubmitLoading: false,
|
|
taxLoading: false,
|
|
currencyLoading: false,
|
|
pamentLoading: false,
|
|
deliveryLoading: false,
|
|
dataList: [],
|
|
pageIndex: 1,
|
|
pageSize: 20,
|
|
totalPage: 0,
|
|
searchData: {
|
|
site: this.$store.state.user.site,
|
|
orderNo: '',
|
|
supplierId: '',
|
|
supplierName: '',
|
|
status: ''
|
|
},
|
|
taxList: [],
|
|
taxForm: {
|
|
taxRate: '',
|
|
taxCode: null,
|
|
taxDesc: ''
|
|
},
|
|
currencyList: [],
|
|
currencyForm: {
|
|
currency: '',
|
|
currencyDesc: ''
|
|
},
|
|
paymentList: [],
|
|
paymentForm: {
|
|
paymentTermId: '',
|
|
paymentTerm: ''
|
|
},
|
|
deliveryList: [],
|
|
deliveryForm: {
|
|
deliveryTermId:'',
|
|
deliveryTerm:''
|
|
},
|
|
dialogVisible: false,
|
|
dialogTitle: '新增询价单',
|
|
editMode: false,
|
|
form: {
|
|
id: '',
|
|
paymentTermDesc: '',
|
|
deliveryTermDesc: '',
|
|
currency: '',
|
|
orderNo: '',
|
|
supplierId: '',
|
|
supplierName: '',
|
|
orderDate: '',
|
|
wantReplyDate: '',
|
|
userName: '',
|
|
buyer: '',
|
|
currencyRate: 1,
|
|
taxRate: 0,
|
|
taxCode:'',
|
|
otherCondition: '',
|
|
phoneNo: '',
|
|
faxNo: '',
|
|
contact: '',
|
|
remark: '',
|
|
printed : "N",
|
|
status: '已计划'
|
|
},
|
|
// 物料子表相关
|
|
currentInquiry: null,
|
|
materialList: [],
|
|
materialDialogVisible: false,
|
|
materialDialogTitle: '新增物料',
|
|
materialForm: {
|
|
id: null,
|
|
site: this.$store.state.user.site,
|
|
partNo: '',
|
|
partDesc: '',
|
|
umid: '',
|
|
spec: '',
|
|
qty: 0,
|
|
remark2: '',
|
|
status: '待提交'
|
|
},
|
|
searchParams: {
|
|
orderRef1: '',
|
|
orderRef2: '',
|
|
orderRef3: '',
|
|
orderReftype: ''
|
|
},
|
|
fileList: [],
|
|
fileList2: [],
|
|
ossVisible: false,
|
|
ossForm: {
|
|
remark: '',
|
|
},
|
|
uploadLoading: false,
|
|
// staged files selected in upload dialog but not yet persisted
|
|
stagedFiles: [],
|
|
stagedFileRemark: '',
|
|
uploadDialogTitle: '上传附件',
|
|
uploadDialogVisible: false,
|
|
tagNo: null,
|
|
tagNo1: null
|
|
}
|
|
},
|
|
mounted() {
|
|
this.$nextTick(() => {
|
|
this.tableHeight = (window.innerHeight - 250) / 2
|
|
this.subTableHeight = (window.innerHeight - 250) / 2
|
|
})
|
|
// this.calcHeight()
|
|
// window.addEventListener('resize', this.calcHeight)
|
|
this.getList()
|
|
this.getTaxList()
|
|
this.getCurrencyList()
|
|
this.getPamentList()
|
|
this.getDeliveryList()
|
|
},
|
|
beforeDestroy() {
|
|
// window.removeEventListener('resize', this.calcHeight)
|
|
},
|
|
methods: {
|
|
// calcHeight() {
|
|
// this.$nextTick(() => {
|
|
// this.tableHeight = window.innerHeight - 360
|
|
// this.subTableHeight = 220
|
|
// })
|
|
// },
|
|
getBaseList(val, type) {
|
|
this.tagNo = val
|
|
this.tagNo1 = type
|
|
this.$nextTick(() => {
|
|
let strVal = ''
|
|
if (val === 520) {
|
|
if(type == 1) {
|
|
strVal = this.form.supplierId
|
|
}
|
|
}
|
|
if (val === 529) {
|
|
strVal = this.form.buyer
|
|
}
|
|
if(val === 507) {
|
|
strVal = this.form.part_spec
|
|
}
|
|
if (val === 510) {
|
|
strVal = this.form.unit
|
|
}
|
|
this.$refs.baseList.init(val, strVal?strVal:'')
|
|
})
|
|
},
|
|
getBaseData(val) {
|
|
if (this.tagNo === 520) {
|
|
this.form.supplierId = val.supplier_no
|
|
this.form.supplierName = val.supplier_name
|
|
this.searchSupplierInfo()
|
|
}
|
|
if (this.tagNo === 529) {
|
|
this.form.buyer = val.UserName
|
|
}
|
|
if(this.tagNo === 507) {
|
|
this.materialForm.partNo = val.part_no
|
|
this.materialForm.partDesc = val.part_desc
|
|
this.materialForm.spec = val.part_spec
|
|
this.materialForm.umid = val.unit
|
|
this.getPartInfo()
|
|
}
|
|
|
|
if (this.tagNo === 510) {
|
|
this.materialForm.umid = val.UMID
|
|
}
|
|
},
|
|
// 供应商编码变化时触发,自动带出供应商信息
|
|
handleSupplierIdChange(val) {
|
|
if (!val || val.trim() === '') {
|
|
return
|
|
}
|
|
// 调用查询供应商信息接口
|
|
const params = {
|
|
site: this.$store.state.user.site,
|
|
supplierNo: val.trim()
|
|
}
|
|
this.searchSupplierInfo()
|
|
},
|
|
searchSupplierInfo() {
|
|
const params = {
|
|
site: this.$store.state.user.site,
|
|
supplierNo: this.form.supplierId
|
|
}
|
|
getSupplierInfo(params).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.form.supplierId = data.row.supplierId || this.form.supplierId
|
|
this.form.supplierName = data.row.supplierName || this.form.supplierName
|
|
this.form.phoneNo = data.row.phoneNo || this.form.phoneNo
|
|
this.form.faxNo = data.row.faxNo || this.form.faxNo
|
|
this.form.contact = data.row.contact || this.form.contact
|
|
this.taxForm.taxRate = data.row.taxRate || this.taxForm.taxRate
|
|
this.taxForm.taxCode = data.row.taxCode || this.taxForm.taxCode
|
|
this.paymentForm.paymentTermId = data.row.paymentTerm || this.paymentForm.paymentTermId
|
|
this.paymentForm.paymentTerm = data.row.paymentTermDesc || this.paymentForm.paymentTerm
|
|
this.deliveryForm.deliveryTermId = data.row.deliveryTerm || this.deliveryForm.deliveryTermId
|
|
this.deliveryForm.deliveryTerm = data.row.deliveryTermDesc || this.deliveryForm.deliveryTerm
|
|
this.currencyForm.currency = data.row.currency || this.currencyForm.currency
|
|
} else {
|
|
this.$message.error((data && data.msg) || '获取列表失败')
|
|
}
|
|
}).catch(() => {
|
|
this.$message.error('请求失败')
|
|
})
|
|
},
|
|
getList() {
|
|
this.loading = true
|
|
const params = {
|
|
...this.searchData,
|
|
limit: this.pageSize,
|
|
page: this.pageIndex
|
|
}
|
|
|
|
searchPurHeaderList(params).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.dataList = data.page.list
|
|
this.totalPage = data.page.totalCount
|
|
// 保留选中状态
|
|
if (this.currentInquiry) {
|
|
const exists = this.dataList.some(item => item.orderNo === this.currentInquiry.orderNo)
|
|
if (exists) {
|
|
this.selectInquiry(this.currentInquiry)
|
|
} else {
|
|
this.materialList = []
|
|
this.currentInquiry = null
|
|
}
|
|
} else if (this.dataList.length > 0 && !this.currentInquiry) {
|
|
this.selectInquiry(this.dataList[0])
|
|
}
|
|
} else {
|
|
this.$message.error((data && data.msg) || '获取列表失败')
|
|
}
|
|
this.loading = false
|
|
}).catch(() => {
|
|
this.loading = false
|
|
this.$message.error('请求失败')
|
|
})
|
|
},
|
|
sizeChangeHandle(val) {
|
|
this.pageSize = val
|
|
this.pageIndex = 1
|
|
this.getList()
|
|
},
|
|
currentChangeHandle(val) {
|
|
this.pageIndex = val
|
|
this.getList()
|
|
},
|
|
selectInquiry(row) {
|
|
this.currentInquiry = row
|
|
this.loadMaterialList(row.orderNo)
|
|
},
|
|
|
|
//加载税率列表
|
|
getTaxList() {
|
|
this.taxLoading = true
|
|
searchTaxList({
|
|
site: this.$store.state.user.site
|
|
}).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.taxList = data.rows || []
|
|
} else {
|
|
this.taxList = []
|
|
}
|
|
this.taxLoading = false
|
|
}).catch(() => {
|
|
this.taxList = []
|
|
this.taxLoading = false
|
|
this.$message.error('获取税率列表失败')
|
|
})
|
|
},
|
|
//加载货币列表
|
|
getCurrencyList() {
|
|
this.currencyLoading = true
|
|
searchCurrencyList({
|
|
site: this.$store.state.user.site
|
|
}).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.currencyList = data.rows || []
|
|
} else {
|
|
this.currencyList = []
|
|
}
|
|
this.currencyLoading = false
|
|
}).catch(() => {
|
|
this.currencyList = []
|
|
this.currencyLoading = false
|
|
this.$message.error('获取货币列表失败')
|
|
})
|
|
},
|
|
|
|
//加载付款方式列表
|
|
getPamentList() {
|
|
this.pamentLoading = true
|
|
searchPaymentList({
|
|
site: this.$store.state.user.site
|
|
}).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.paymentList = data.rows || []
|
|
} else {
|
|
this.paymentList = []
|
|
}
|
|
this.pamentLoading = false
|
|
}).catch(() => {
|
|
this.paymentList = []
|
|
this.pamentLoading = false
|
|
this.$message.error('获取付款方式列表失败')
|
|
})
|
|
},
|
|
|
|
//加载交易条款列表
|
|
getDeliveryList() {
|
|
this.deliveryLoading = true
|
|
searchDeliveryList({
|
|
site: this.$store.state.user.site
|
|
}).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.deliveryList = data.rows || []
|
|
} else {
|
|
this.deliveryList = []
|
|
}
|
|
this.deliveryLoading = false
|
|
}).catch(() => {
|
|
this.deliveryList = []
|
|
this.deliveryLoading = false
|
|
this.$message.error('获取交易条款列表失败')
|
|
})
|
|
},
|
|
|
|
|
|
|
|
// 加载物料列表
|
|
loadMaterialList(orderNo) {
|
|
this.materialLoading = true
|
|
searchMaterialList({ orderNo: orderNo }).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.materialList = data.rows || []
|
|
} else {
|
|
this.materialList = []
|
|
}
|
|
this.materialLoading = false
|
|
}).catch(() => {
|
|
this.materialList = []
|
|
this.materialLoading = false
|
|
this.$message.error('获取物料列表失败')
|
|
})
|
|
},
|
|
openDialog(row) {
|
|
if (row) {
|
|
this.dialogTitle = '编辑询价单'
|
|
this.editMode = true
|
|
this.form = { ...row }
|
|
} else {
|
|
this.dialogTitle = '新增询价单'
|
|
this.editMode = false
|
|
const today = this.getTodayDate()
|
|
this.form = {
|
|
id: '',
|
|
site: this.$store.state.user.site,
|
|
orderNo: '',
|
|
supplierId: '',
|
|
supplierName: '',
|
|
orderDate: today,
|
|
wantReplyDate: today,
|
|
userName: this.$store.state.user.name,
|
|
buyer: '',
|
|
paymentTermDesc: '',
|
|
deliveryTermDesc: '',
|
|
currency: '',
|
|
currencyRate: 0,
|
|
taxRate: 0,
|
|
taxCode:'',
|
|
otherCondition: '',
|
|
phoneNo: '',
|
|
faxNo: '',
|
|
contact: '',
|
|
remark: '',
|
|
printed : "N",
|
|
status: '已计划'
|
|
}
|
|
}
|
|
this.dialogVisible = true
|
|
},
|
|
validateForm() {
|
|
if (!this.form.supplierId) { this.$message.warning('供应商编码不能为空'); return false }
|
|
if (!this.form.supplierName) { this.$message.warning('供应商名称不能为空'); return false }
|
|
return true
|
|
},
|
|
getTodayDate() {
|
|
const today = new Date()
|
|
const year = today.getFullYear()
|
|
const month = String(today.getMonth() + 1).padStart(2, '0')
|
|
const day = String(today.getDate()).padStart(2, '0')
|
|
return `${year}-${month}-${day}`
|
|
},
|
|
submitForm() {
|
|
if (!this.validateForm()) return
|
|
this.submitLoading = true
|
|
const api = this.editMode ? updatePurHeader : createPurHeader
|
|
api(this.form).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success('保存成功')
|
|
this.dialogVisible = false
|
|
this.getList()
|
|
} else {
|
|
this.$message.error((data && data.msg) || '保存失败')
|
|
}
|
|
}).catch(err => {
|
|
this.$message.error('请求失败: ' + err.message)
|
|
}).finally(() => {
|
|
this.submitLoading = false
|
|
})
|
|
},
|
|
|
|
|
|
|
|
handleDelete(row) {
|
|
this.$confirm('确定删除询价单: ' + row.orderNo + ' ?', '提示', { type: 'warning' }).then(() => {
|
|
deletePurHeader({ id: row.id }).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success('删除成功')
|
|
this.getList()
|
|
} else {
|
|
this.$message.error((data && data.msg) || '删除失败')
|
|
}
|
|
}).catch(err => {
|
|
this.$message.error('删除失败: ' + err.message)
|
|
})
|
|
}).catch(() => {})
|
|
},
|
|
updateQuoDetail(row) {
|
|
this.$confirm('确定提交询价单: ' + row.orderNo + ' ?', '提示', { type: 'warning' }).then(() => {
|
|
updatePurDetailStatus({
|
|
orderNo: row.orderNo,
|
|
site: row.site,
|
|
status : "待报价",
|
|
submitFlag : "Y"
|
|
}).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success('提交成功')
|
|
this.getList()
|
|
} else {
|
|
this.$message.error((data && data.msg) || '提交失败')
|
|
}
|
|
}).catch(err => {
|
|
this.$message.error('提交失败: ' + err.message)
|
|
})
|
|
}).catch(() => {})
|
|
},
|
|
|
|
// 物料操作
|
|
openMaterialDialog(row) {
|
|
if (!this.currentInquiry) {
|
|
this.$message.warning('请先选择一个询价单')
|
|
return
|
|
}
|
|
if (row) {
|
|
this.materialDialogTitle = '编辑物料'
|
|
this.materialForm = { ...row }
|
|
} else {
|
|
this.materialDialogTitle = '新增物料'
|
|
this.materialForm = {
|
|
id: null,
|
|
site: this.$store.state.user.site,
|
|
partNo: '',
|
|
partDesc: '',
|
|
umid: '',
|
|
spec: '',
|
|
qty: 0,
|
|
remark2: '',
|
|
status: '待提交'
|
|
}
|
|
}
|
|
this.materialDialogVisible = true
|
|
},
|
|
// 物料编码变化时触发,自动带出物料信息
|
|
handlePartNoChange(val) {
|
|
if (!val || val.trim() === '') {
|
|
return
|
|
}
|
|
|
|
// 假设有一个 getPartInfo 接口
|
|
this.getPartInfo()
|
|
},
|
|
|
|
getPartInfo(){
|
|
// 调用物料信息查询接口
|
|
const params = {
|
|
site: this.$store.state.user.site,
|
|
partNo: this.materialForm.partNo
|
|
}
|
|
searchPartInfo(params).then(({data}) => {
|
|
console.log(data)
|
|
if (data.code === 0) {
|
|
// 自动填充物料相关信息
|
|
this.materialForm.partNo = data.data.partNo || val
|
|
this.materialForm.partDesc = data.data.partDesc || this.materialForm.partDesc
|
|
this.materialForm.spec = data.data.partSpec || this.materialForm.spec
|
|
this.materialForm.umid = data.data.unit || this.materialForm.umid
|
|
|
|
this.$message.success('已自动获取物料信息')
|
|
} else {
|
|
this.$message.warning('未找到该物料信息,请手动填写')
|
|
}
|
|
}).catch(() => {
|
|
this.$message.error('获取物料信息失败')
|
|
})
|
|
},
|
|
|
|
|
|
saveMaterial() {
|
|
if (!this.materialForm.partNo) {
|
|
this.$message.warning('物料编码不能为空')
|
|
return
|
|
}
|
|
if (!this.materialForm.partDesc) {
|
|
this.$message.warning('物料名称不能为空')
|
|
return
|
|
}
|
|
if(!this.materialForm.umid){
|
|
this.$message.warning('请选择计量单位')
|
|
return
|
|
}
|
|
if(this.materialForm.qty <= 0){
|
|
this.$message.warning('请选择询价数量')
|
|
return
|
|
}
|
|
|
|
|
|
this.materialSubmitLoading = true
|
|
const submitData = {
|
|
...this.materialForm,
|
|
orderNo: this.currentInquiry.orderNo
|
|
}
|
|
const api = this.materialForm.id ? updateMaterial : createMaterial
|
|
api(submitData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success('保存成功')
|
|
this.materialDialogVisible = false
|
|
this.loadMaterialList(this.currentInquiry.orderNo)
|
|
} else {
|
|
this.$message.error((data && data.msg) || '保存失败')
|
|
}
|
|
}).catch(err => {
|
|
this.$message.error('保存失败: ' + err.message)
|
|
}).finally(() => {
|
|
this.materialSubmitLoading = false
|
|
})
|
|
},
|
|
deleteMaterial(row) {
|
|
this.$confirm('确定删除物料: ' + row.partNo + ' ?', '提示', { type: 'warning' }).then(() => {
|
|
deleteMaterial({ id: row.id }).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success('删除成功')
|
|
this.loadMaterialList(this.currentInquiry.orderNo)
|
|
} else {
|
|
this.$message.error((data && data.msg) || '删除失败')
|
|
}
|
|
}).catch(err => {
|
|
this.$message.error('删除失败: ' + err.message)
|
|
})
|
|
}).catch(() => {})
|
|
},
|
|
|
|
openUploadDialog(row) {
|
|
if (!row) {
|
|
this.$message.warning('请先选择一个物料')
|
|
return
|
|
}
|
|
if (row) {
|
|
this.uploadDialogTitle = '上传附件'
|
|
this.searchParams = {
|
|
orderRef1: this.$store.state.user.site,
|
|
orderRef2: row.orderNo,
|
|
orderRef3: row.partNo,
|
|
orderReftype: 'purQuotationDetail'
|
|
}
|
|
|
|
}
|
|
this.uploadDialogVisible = true
|
|
this.searchTable()
|
|
},
|
|
// 关闭弹窗
|
|
handleClose() {
|
|
this.$emit('update:visible', false);
|
|
this.$emit('close');
|
|
},
|
|
|
|
// 关闭上传弹窗
|
|
handleUploadClose() {
|
|
this.fileList2 = [];
|
|
this.ossForm.remark = '';
|
|
},
|
|
|
|
// 查询文件列表
|
|
searchTable() {
|
|
queryOssFilePlus(this.searchParams).then(({ data }) => {
|
|
if (data && data.code == 0) {
|
|
this.fileList = data.rows || [];
|
|
} else {
|
|
this.fileList = [];
|
|
}
|
|
}).catch(() => {
|
|
this.fileList = [];
|
|
});
|
|
},
|
|
|
|
// 打开上传弹窗
|
|
handleUpload() {
|
|
this.$nextTick(() => {
|
|
if (this.$refs.upload) {
|
|
this.$refs.upload.clearFiles();
|
|
}
|
|
})
|
|
this.fileList2 = [];
|
|
this.ossForm.remark = '';
|
|
this.ossVisible = true;
|
|
},
|
|
|
|
onRemoveFile(file, fileList) {
|
|
this.fileList2 = fileList;
|
|
},
|
|
|
|
onChangeFile(file, fileList) {
|
|
this.fileList2 = fileList;
|
|
},
|
|
|
|
// 提交上传
|
|
submitData() {
|
|
if (this.fileList2.length === 0) {
|
|
this.$message.error('请选择文件');
|
|
return;
|
|
}
|
|
|
|
this.stagedFileRemark = this.ossForm.remark || '';
|
|
this.uploadLoading = true;
|
|
|
|
// 准备要上传的文件
|
|
const stagedFiles = [];
|
|
for (let i = 0; i < this.fileList2.length; i++) {
|
|
stagedFiles.push(this.fileList2[i].raw);
|
|
}
|
|
|
|
// 立即关闭弹窗
|
|
this.ossVisible = false;
|
|
this.fileList2 = [];
|
|
this.ossForm.remark = '';
|
|
|
|
// 上传文件
|
|
const formData = new FormData();
|
|
for (let i = 0; i < stagedFiles.length; i++) {
|
|
formData.append('file', stagedFiles[i]);
|
|
}
|
|
formData.append('orderRef1', this.searchParams.orderRef1 || '');
|
|
formData.append('orderRef2', this.searchParams.orderRef2 || '');
|
|
formData.append('orderRef3', this.searchParams.orderRef3 || '');
|
|
formData.append('createdBy', this.$store.state.user.name);
|
|
formData.append('fileRemark', this.stagedFileRemark || '');
|
|
formData.append('orderReftype', this.searchParams.orderReftype || 'purQuotationDetail');
|
|
|
|
ossUploadNoSaveOSSForYJY(formData)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
// 移除临时文件,添加上传成功的文件
|
|
this.fileList = this.fileList.filter(f => !f._staged);
|
|
for (let i = 0; i < data.rows.length; i++) {
|
|
this.fileList.push(data.rows[i]);
|
|
}
|
|
|
|
// 清除暂存数据
|
|
this.stagedFiles = [];
|
|
this.stagedFileRemark = '';
|
|
this.uploadLoading = false;
|
|
|
|
this.$message.success('上传成功');
|
|
this.$emit('upload-success', data.rows);
|
|
} else {
|
|
this.uploadLoading = false;
|
|
this.$message.warning(data.msg || '文件上传失败');
|
|
}
|
|
})
|
|
.catch(err => {
|
|
this.uploadLoading = false;
|
|
this.$message.error(err.message || err);
|
|
});
|
|
},
|
|
|
|
// 下载/预览文件
|
|
handleDownload(row) {
|
|
let image = ['jpg', 'jpeg', 'png', 'gif', 'bmp'];
|
|
let video = ['mp4', 'avi', 'mov', 'wmv', 'flv'];
|
|
let office = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'];
|
|
let txt = ['txt'];
|
|
let pdf = ['pdf'];
|
|
let type = '';
|
|
|
|
if (image.includes(row.fileType.toLowerCase())) {
|
|
type = 'image/' + row.fileType;
|
|
downLoadObjectFile(row).then(({ data }) => {
|
|
const blob = new Blob([data], { type: type });
|
|
const fileURL = URL.createObjectURL(blob);
|
|
window.open(fileURL, '_blank');
|
|
});
|
|
} else if (video.includes(row.fileType.toLowerCase())) {
|
|
type = 'video/' + row.fileType;
|
|
downLoadObjectFile(row).then(({ data }) => {
|
|
const blob = new Blob([data], { type: type });
|
|
const fileURL = URL.createObjectURL(blob);
|
|
window.open(fileURL, '_blank');
|
|
});
|
|
} else if (txt.includes(row.fileType.toLowerCase())) {
|
|
type = 'text/plain';
|
|
downLoadObjectFile(row).then(({ data }) => {
|
|
const blob = new Blob([data], { type: type });
|
|
const fileURL = URL.createObjectURL(blob);
|
|
window.open(fileURL, '_blank');
|
|
});
|
|
} else if (office.includes(row.fileType.toLowerCase())) {
|
|
if (row.fileType.toLowerCase() === 'doc' || row.fileType.toLowerCase() === 'docx') {
|
|
type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
|
|
} else if (row.fileType.toLowerCase() === 'ppt' || row.fileType.toLowerCase() === 'pptx') {
|
|
type = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
|
|
} else {
|
|
type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
|
|
}
|
|
downLoadObjectFile(row).then(({ data }) => {
|
|
const blob = new Blob([data], { type: 'application/octet-stream;charset=utf-8' });
|
|
const fileName = row.fileName;
|
|
const linkNode = document.createElement('a');
|
|
linkNode.download = fileName;
|
|
linkNode.style.display = 'none';
|
|
linkNode.href = URL.createObjectURL(blob);
|
|
document.body.appendChild(linkNode);
|
|
linkNode.click();
|
|
URL.revokeObjectURL(linkNode.href);
|
|
document.body.removeChild(linkNode);
|
|
});
|
|
} else if (pdf.includes(row.fileType.toLowerCase())) {
|
|
type = 'application/pdf';
|
|
downLoadObjectFile(row).then(({ data }) => {
|
|
const blob = new Blob([data], { type: type });
|
|
const fileURL = URL.createObjectURL(blob);
|
|
window.open(fileURL, '_blank');
|
|
});
|
|
} else {
|
|
this.$message({
|
|
message: '不支持的文件类型',
|
|
type: 'warning'
|
|
});
|
|
}
|
|
},
|
|
|
|
// 删除已保存的文件
|
|
deleteFileReal(row) {
|
|
if (!row || !row.id) return;
|
|
this.$confirm('确定要删除该文件吗?', '删除确认', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(() => {
|
|
removeOss([row.id]).then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
const idx = this.fileList.findIndex(f => f.id === row.id);
|
|
if (idx !== -1) this.fileList.splice(idx, 1);
|
|
this.$message.success(data.msg || '文件已删除');
|
|
this.$emit('delete-success', row);
|
|
} else {
|
|
this.$message.warning(data.msg || '删除失败');
|
|
}
|
|
}).catch(err => {
|
|
this.$message.error('删除失败:' + (err.message || err));
|
|
});
|
|
}).catch(() => { });
|
|
},
|
|
|
|
// 删除临时文件
|
|
deleteFile(index) {
|
|
const f = this.fileList[index];
|
|
if (f && f._staged && f.raw) {
|
|
const idx = this.stagedFiles.findIndex(sf => sf.name === f.raw.name && sf.size === f.raw.size);
|
|
if (idx !== -1) this.stagedFiles.splice(idx, 1);
|
|
}
|
|
this.fileList.splice(index, 1);
|
|
},
|
|
// 刷新列表
|
|
refresh() {
|
|
this.searchTable();
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.pi-search-form { margin-top:0; }
|
|
.pi-form { margin-top:-5px; }
|
|
.customer-a {
|
|
color: #409EFF;
|
|
cursor: pointer;
|
|
text-decoration: none;
|
|
}
|
|
.customer-a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
.customer-bun-min {
|
|
margin-right: 8px;
|
|
}
|
|
.sub-title {
|
|
font-weight: 600;
|
|
margin: 16px 0 8px 0;
|
|
padding-left: 4px;
|
|
border-left: 4px solid #409eff;
|
|
line-height: 1.2;
|
|
color: #303133;
|
|
}
|
|
.status-badge {
|
|
display: inline-block;
|
|
padding: 2px 8px;
|
|
border-radius: 4px;
|
|
font-size: 12px;
|
|
}
|
|
.status-sent { background-color: #e6f7ff; color: #409eff; }
|
|
.status-closed { background-color: #fef0e6; color: #e6a23c; }
|
|
.material-action-btn {
|
|
color: #409EFF;
|
|
cursor: pointer;
|
|
margin: 0 4px;
|
|
}
|
|
.material-action-btn:hover {
|
|
text-decoration: underline;
|
|
}
|
|
.dialog-footer {
|
|
text-align: center;
|
|
}
|
|
|
|
.rq .auto /deep/ .el-form-item__content {
|
|
height: auto;
|
|
line-height: 1.5;
|
|
}
|
|
</style>
|