作者 lixiang

1、贸易综合管理

<template>
<a-card :bordered="false" :class="'cust-erp-sub-tab'">
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:scroll="{x:true}"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading">
<span slot="action2" slot-scope="text, record">
<a @click="wjInfo(record)">{{ record.htfj }}</a> &nbsp
</span>
<span slot="action3" slot-scope="text, record">
<a @click="fpInfo(record)">发票管理</a> &nbsp
</span>
<span slot="action4" slot-scope="text, record">
<a @click="fkInfo(record)">付款管理</a> &nbsp
</span>
<span slot="action5" slot-scope="text, record">
<a @click="blpInfo(record)">{{record.blpNum}}</a> &nbsp
</span>
</a-table>
<!--文件预览-->
<j-modal
title="文件查看"
:visible="visibleWjck"
@ok="handleCancelWjck"
@cancel="handleCancelWjck"
>
<!-- PDF 预览 -->
<div>
<!-- <h3>PDF 预览</h3>-->
<iframe :src="pdfSrc" width="100%" height="500px"></iframe>
</div>
</j-modal>
<!--发票管理-->
<j-modal
@cancel="handleCancelfp"
@ok="handleConfirmfp"
title="发票管理"
:width="width"
:visible="visiblefp"
cancelText="关闭"
>
<a-table :dataSource="dataSourcefp" :columns="columnsfp" :scroll="{x:true}">
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<div v-else>
<span :title="text">{{ text.length > 20 ? text.substring(0, 20) + '...' : text }}</span>
<a-button
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</div>
</template>
</a-table>
</j-modal>
<!-- 付款管理-->
<j-modal
@cancel="handleCancelpay"
@ok="handleConfirmpay"
title="付款管理"
:width="width"
:visible="visiblepay"
cancelText="关闭"
>
<a-table :dataSource="dataSourcepay" :columns="columnspay" :scroll="{x:true}">
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<div v-else>
<span :title="text">{{ text.length > 20 ? text.substring(0, 20) + '...' : text }}</span>
<a-button
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</div>
</template>
</a-table>
</j-modal>
<!-- 不良品库存-->
<j-modal
title="不良品库存"
:width="width"
:visible="visibleBlp"
fullscreen
@ok="handleConfirmblp"
@cancel="handleCancelblp"
cancelText="关闭">
<TblTradeInventoryDefectiveProductList ></TblTradeInventoryDefectiveProductList>
</j-modal>
</a-card>
</template>
<script>
import { getAction, getFileAccessHttpUrl } from '@api/manage'
import TblTradeInventoryDefectiveProductList from '@views/trade/TblTradeInventoryDefectiveProductList.vue'
export default {
name: "TabCmInfoList",
components: { TblTradeInventoryDefectiveProductList },
data(){
return {
loading: false,
ipagination: {
current: 1,
pageSize: 10,
pageSizeOptions: ['10', '20', '30'],
showTotal: (total, range) => {
return range[0] + "-" + range[1] + " 共" + total + "条"
},
showQuickJumper: true,
showSizeChanger: true,
total: 0
},
visibleWjck: false,
visiblefp: false,
visiblepay: false,
visibleBlp: false,
labelCol: {
xs: { span: 24 },
sm: { span: 8 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
modelpay: {},
dataSourcepay: [],
columnspay: [
{
title: '付款金额(元)',
align: 'center',
dataIndex: 'supplier'
},
{
title: '付款时间',
align: 'center',
dataIndex: 'fksj'
},
{
title: '采购员',
align: 'center',
dataIndex: 'createBy'
},
{
title: '状态',
align: 'center',
dataIndex: 'status',
customRender: (text) => {
let re = ''
if (text === 0) {
re = '待审核'
} else if (text === 1) {
re = '审核通过'
}else if (text === 2) {
re = '拒绝'
}
return re
}
}
],
confirmLoading: false,
width: 892,
pdfSrc: '',
dataSource: [],
dataSourcefp: [],
columnsfp: [
{
title: '发票号码',
align: 'center',
dataIndex: 'fphm'
}, {
title: '发票金额',
align: 'center',
dataIndex: 'fpje'
}, {
title: '发票欠额',
align: 'center',
dataIndex: 'fpqe'
}, {
title: '附件',
align: 'center',
dataIndex: 'fj',
scopedSlots: { customRender: 'fileSlot' }
}, {
title: '备注',
align: 'center',
dataIndex: 'bz'
}
],
columns:[
{
title: '供应商(TEL)',
align: 'center',
dataIndex: 'supplier'
},
{
title: '采购渠道',
align: 'center',
dataIndex: 'procurementChannels'
},
{
title: '合同号/订单号',
align: 'center',
dataIndex: 'hth'
},
{
title: '数量',
align: 'center',
dataIndex: 'purchaseQuantity'
},
{
title: '单价(不含税,元)',
align: 'center',
dataIndex: 'unitPrice'
},
{
title: '税率(%)',
align: 'center',
dataIndex: 'taxRate'
},
{
title: '金额(元)',
align: 'center',
dataIndex: 'amount'
},
{
title: '合同附件 ',
dataIndex: 'action2',
align: 'center',
// fixed: 'right',
width: 147,
scopedSlots: { customRender: 'action2' }
},
{
title: '发票信息',
dataIndex: 'action3',
align: 'center',
// fixed: 'right',
width: 147,
scopedSlots: { customRender: 'action3' }
},
{
title: '付款信息',
dataIndex: 'action4',
align: 'center',
// fixed: 'right',
width: 147,
scopedSlots: { customRender: 'action4' }
},
{
title: '已入库数量',
align: 'center',
dataIndex: 'yrkNum'
},
{
title: '剩余订单未入库数量',
align: 'center',
dataIndex: 'wrkNum'
},
{
title: '不良品数量',
align: 'center',
dataIndex: 'action5',
scopedSlots: { customRender: 'action5' }
},
{
title: '退换货评级',
align: 'center',
dataIndex: 'thhPj',
customRender: function(thhPj) {
var str = ''
if (thhPj === 1) {
str = 'A'
} else if (thhPj === 2) {
str = 'B'
} else if (thhPj === 3) {
str = 'C'
}else if (thhPj === 4) {
str = 'D'
}
return str
}
},
{
title: '供应商评级',
align: 'center',
dataIndex: 'gysPj',
customRender: function(gysPj) {
var str = ''
if (gysPj === 1) {
str = 'A'
} else if (gysPj === 2) {
str = 'B'
} else if (gysPj === 3) {
str = 'C'
} else if (gysPj === 4) {
str = 'D'
}
return str
}
}
],
url:{
getCgInfo: '/trade/tblTradePurchaseInfo/getCgInfo',
file: '/trade/tblTradePurchaseInfo/pdf/base64',
fplist: '/trade/tblTradeFpgl/list',
paylist: '/trade/tblTradePayManage/list',
}
}
},
methods:{
clearData(){
this.dataSource = []
},
handleCancelblp(){
this.visibleBlp = false
},
handleConfirmblp(){
this.visibleBlp = false
},
handleCancelpay() {
this.visiblepay = false
},
handleConfirmpay() {
this.visiblepay = false
},
handleCancelfp() {
this.visiblefp = false
},
handleConfirmfp() {
this.visiblefp = false
},
handleCancelWjck() {
this.visibleWjck = false
},
loadData(rows){
const row = rows[0]
console.log("row",row)
const materialCode = row.code
const xjbswjh = row.xjbswjh
getAction(this.url.getCgInfo, {
wlbh: materialCode
}).then((res) => {
if (res.success) {
this.dataSource = res.result.ycgList
}
})
},
blpInfo(record){
this.visibleBlp = true
},
fkInfo(record) {
this.modelpay = {}
var cmid = record.id
this.modelpay.cmId = cmid
this.modelpay.fkfs = '1'
this.modelpay.supplier = record.supplier
this.modelpay.hth = record.hth
this.modelpay.htje = record.amount
this.paylist(cmid)
this.visiblepay = true
},
//根据
paylist(id) {
getAction(this.url.paylist, { cmId: id }).then(
res => {
this.dataSourcepay = res.result.records
}
)
},
//打开发票管理
fpInfo(record) {
this.modelfp = {}
this.visiblefp = true
var cmid = record.id
this.modelfp.cmId = cmid
this.fplist(cmid)
},
//根据
fplist(id) {
getAction(this.url.fplist, { cmId: id }).then(
res => {
this.dataSourcefp = res.result.records
}
)
},
wjInfo(record) {
var htfjPath = ''
if (record.htfj.indexOf(',') > 0) {
htfjPath = record.htfj.substring(0, record.htfj.indexOf(','))
} else {
htfjPath = record.htfj
}
getAction(this.url.file, { filePath: htfjPath }).then(
res => {
const base64Pdf = res.result
this.pdfSrc = `data:application/pdf;base64,${base64Pdf}`
}
)
this.visibleWjck = true
},
downloadFile(text) {
if (!text) {
this.$message.warning('未知的文件')
return
}
// 将 text 按逗号分割成多个文件的 URL
const fileUrls = text.split(',')
// 遍历每个文件的 URL
fileUrls.forEach((fileUrl, index) => {
// 去除 URL 两端的空格
fileUrl = fileUrl.trim()
// 检查 URL 是否有效
if (!fileUrl) {
this.$message.warning(`第 ${index + 1} 个文件 URL 无效`)
return // 跳过当前文件,继续下一个
}
// 生成文件访问 URL
let url = getFileAccessHttpUrl(fileUrl)
// 检查生成的 URL 是否有效
if (!url) {
this.$message.warning(`第 ${index + 1} 个文件无法生成访问链接`)
return // 跳过当前文件,继续下一个
}
// 使用 fetch 下载文件
fetch(url)
.then(response => {
if (!response.ok) {
throw new Error(`第 ${index + 1} 个文件下载失败`)
}
return response.blob() // 将响应转换为 Blob 对象
})
.then(blob => {
// 创建 Blob URL
const blobUrl = URL.createObjectURL(blob)
// 创建 <a> 标签并触发下载
const link = document.createElement('a')
link.href = blobUrl
link.download = fileUrl // 替换为实际文件名
link.style.display = 'none'
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
// 释放 Blob URL
URL.revokeObjectURL(blobUrl)
})
.catch(error => {
this.$message.error(`第 ${index + 1} 个文件下载失败`)
console.error(`下载错误:`, error)
})
})
},
}
}
</script>
<style scoped>
</style>
\ No newline at end of file
... ...
<template>
<a-card :bordered="false" :class="'cust-erp-sub-tab'">
<a-form-model ref="form" :model="model" :rules="validatorRules">
<a-row>
<h1>{{ sskcTitle }}</h1>
<hr style="width :7%;height:1px;border:none;border-top:1px solid #B0B0B0; float: left">
<br>
<a-col :span="24">
<a-form-model-item label="库存数据" :labelCol="labelCol" :wrapperCol="wrapperCol"
style=" width: 600px"
>
{{ model.actualInventory }}
<!-- <a-input-->
<!-- v-model="model.actualInventory"-->
<!-- disabled="disabled"-->
<!-- ></a-input>-->
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="在途库存" :labelCol="labelCol" :wrapperCol="wrapperCol"
style=" width: 600px">
<!-- <a-input-->
<!-- v-model="model.quantityInTransit"-->
<!-- readonly-->
<!-- ></a-input>-->
{{ model.quantityInTransit }}
</a-form-model-item>
</a-col>
<h1>{{ lszbTitle }}</h1>
<hr style="width :7%;height:1px;border:none;border-top:1px solid #B0B0B0; float: left">
<br>
<a-col :span="24">
<a-form-model-item label="最近中标单价(元)" :labelCol="labelCol" :wrapperCol="wrapperCol"
style=" width: 600px"
>
<!-- <a-input-->
<!-- v-model="model.supplier"-->
<!-- readonly-->
<!-- ></a-input>-->
{{model.lastWinningBidPrice}}
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="最后一次中标时间" :labelCol="labelCol" :wrapperCol="wrapperCol"
style=" width: 600px"
>
<!-- <a-input-->
<!-- v-model="model.supplier"-->
<!-- readonly-->
<!-- ></a-input>-->
{{model.lastBidDate}}
</a-form-model-item>
</a-col>
<br>
<h1>{{ bctbTitle }}</h1>
<hr style="width :7%;height:1px;border:none;border-top:1px solid #B0B0B0; float: left">
<br>
<a-col :span="24">
<a-form-model-item label="投标价格(元)" :labelCol="labelCol" :wrapperCol="wrapperCol"
style=" width: 600px">
<!-- <a-input-->
<!-- v-model="model.tbjg"-->
<!-- ></a-input>-->
{{model.tbjg}}
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="投标时间" :labelCol="labelCol" :wrapperCol="wrapperCol"
style=" width: 600px">
<!-- <a-input-->
<!-- v-model="model.tbsj"-->
<!-- ></a-input>-->
{{model.tbsj}}
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="投标人" :labelCol="labelCol" :wrapperCol="wrapperCol"
style=" width: 600px">
<!-- <a-input-->
<!-- v-model="model.tbr"-->
<!-- ></a-input>-->
{{model.tbr}}
</a-form-model-item>
</a-col>
<h1>{{ bczbTitle }}</h1>
<hr style="width :7%;height:1px;border:none;border-top:1px solid #B0B0B0; float: left">
<br>
<a-col :span="24">
<a-form-model-item label="中标单价(元)" :labelCol="labelCol" :wrapperCol="wrapperCol"
style=" width: 600px">
<!-- <a-input-->
<!-- v-model="model.zbdj"-->
<!-- ></a-input>-->
{{model.zbdj}}
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="中标时间" :labelCol="labelCol" :wrapperCol="wrapperCol"
style=" width: 600px">
<!-- <a-input-->
<!-- v-model="model.zbsj"-->
<!-- ></a-input>-->
{{model.zbsj}}
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</a-card>
</template>
<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import TblTradeTenderInfoTab2Modal from './modules/TblTradeTenderInfoTab2Modal.vue'
import { getAction } from '@api/manage'
export default {
name: 'TblTradeInquiryInfoList',
mixins: [JeecgListMixin],
components: { TblTradeTenderInfoTab2Modal },
props: {
selectedRowData: {
type: Object,
default: () => ({})
}
},
watch: {},
data() {
return {
sskcTitle: '实时库存',
lszbTitle: '历史中标信息',
bctbTitle: '本次投标信息',
bczbTitle: '本次中标信息',
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 8 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
validatorRules: {},
description: '贸易招标信息管理页面',
disableMixinCreated: true,
// 表头
columns: [
{
title: '#',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function(t, r, index) {
return parseInt(index) + 1
}
},
{
title: '库存数据',
align: 'center',
dataIndex: 'ghsmc'
},
{
title: '在途库存',
align: 'center',
dataIndex: 'tel'
},
{
title: '库存单价(含税运)',
align: 'center',
dataIndex: 'wldz'
},
{
title: '在途单价(含税运)',
align: 'center',
dataIndex: 'wxh'
}
],
url: {
list: '/trade/tblTradeInventory/list',
getHistoryBidInfo: '/trade/tblTradeBidMaterialDetails/getHistoryBidInfo',
getBidInfo: '/trade/tblTradeBidSub/getBidInfo',
getBidMaterialDetailsInfo: '/trade/tblTradeTenderInfo/getBidMaterialDetailsInfo'
},
dictOptions: {}
}
},
created() {
},
computed: {},
methods: {
clearData(){
this.model = {}
this.sskcTitle = '实时库存'
},
loadData(rows) {
if (rows) {
const row = rows[0]
console.log("row",row)
const materialCode = row.code
const xjbswjh = row.xjbswjh
const param = {
materialCode: materialCode
}
this.sskcTitle = '实时库存-' + materialCode
//获取库存数据
getAction(this.url.list, param).then((res) => {
if (res.success) {
if (res.result.records) {
const record = res.result.records[0]
//库存数据
this.$set(this.model, 'actualInventory', record.actualInventory)
//在途库存
this.$set(this.model, 'quantityInTransit', record.quantityInTransit)
}
}
})
//获取历史中标信息
getAction(this.url.getHistoryBidInfo, param).then((res) => {
if (res.success) {
if (res.result) {
//最近中标单价(元)
this.$set(this.model,"lastBidDate",res.result.lastBidDate)
//最后一次中标时间
this.$set(this.model,"lastWinningBidPrice",res.result.lastWinningBidPrice)
}
}
})
//获取本次投标信息
getAction(this.url.getBidInfo, {
wlbm: materialCode,
xjbswjh: xjbswjh,
}).then((res) => {
if (res.success) {
if (res.result) {
console.log("result11111111111",res.result)
//投标价格
this.$set(this.model,"tbjg",res.result.xydj)
//投标时间
this.$set(this.model,"tbsj",res.result.createTime)
//投标人
this.$set(this.model,"tbr",res.result.createBy)
}
}
})
//获取本次中标信息
getAction(this.url.getBidMaterialDetailsInfo, {
materialCode: materialCode,
bidNum: xjbswjh,
isBid: 1,
}).then((res) => {
if (res.success) {
if (res.result) {
console.log("result",res.result)
//投标价格
this.$set(this.model,"zbdj",res.result.winningBidPrice)
//投标时间
this.$set(this.model,"zbsj",res.result.bidDate)
}
}
})
}
},
clearList() {
this.dataSource = []
this.selectedRowKeys = []
this.ipagination.current = 1
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less'
</style>
... ...
... ... @@ -2,7 +2,7 @@
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-form layout="inline" @keyup.enter.native="searchQuery(1)">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="物料编码">
... ... @@ -14,46 +14,46 @@
<a-input placeholder="请输入物料长描述" v-model="queryParam.miaoshu"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="需求交货期">
<j-date v-model="queryParam.xqjhq" placeholder="请选择计划完成日期" />
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="询单状态">
<a-select v-model="queryParam.xdzt" placeholder="请选择" allowClear>
<a-select-option value="未完成">未完成</a-select-option>
<a-select-option value="已完成">已完成</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="是否投标">
<a-select v-model="queryParam.sftb" placeholder="请选择" allowClear>
<a-select-option value="是">是</a-select-option>
<a-select-option value="否">否</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="是否中标">
<a-select v-model="queryParam.sfzb" placeholder="请选择" allowClear>
<a-select-option value="是">是</a-select-option>
<a-select-option value="否">否</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="是否采购">
<a-select v-model="queryParam.sfcg" placeholder="请选择" allowClear>
<a-select-option value="是">是</a-select-option>
<a-select-option value="否">否</a-select-option>
</a-select>
</a-form-item>
</a-col>
<!-- <a-col :xl="6" :lg="7" :md="8" :sm="24">-->
<!-- <a-form-item label="需求交货期">-->
<!-- <j-date v-model="queryParam.xqjhq" placeholder="请选择计划完成日期" />-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<!-- <a-col :xl="6" :lg="7" :md="8" :sm="24">-->
<!-- <a-form-item label="询单状态">-->
<!-- <a-select v-model="queryParam.xdzt" placeholder="请选择" allowClear>-->
<!-- <a-select-option value="未完成">未完成</a-select-option>-->
<!-- <a-select-option value="已完成">已完成</a-select-option>-->
<!-- </a-select>-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<!-- <a-col :xl="6" :lg="7" :md="8" :sm="24">-->
<!-- <a-form-item label="是否投标">-->
<!-- <a-select v-model="queryParam.sftb" placeholder="请选择" allowClear>-->
<!-- <a-select-option value="是">是</a-select-option>-->
<!-- <a-select-option value="否">否</a-select-option>-->
<!-- </a-select>-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<!-- <a-col :xl="6" :lg="7" :md="8" :sm="24">-->
<!-- <a-form-item label="是否中标">-->
<!-- <a-select v-model="queryParam.sfzb" placeholder="请选择" allowClear>-->
<!-- <a-select-option value="是">是</a-select-option>-->
<!-- <a-select-option value="否">否</a-select-option>-->
<!-- </a-select>-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<!-- <a-col :xl="6" :lg="7" :md="8" :sm="24">-->
<!-- <a-form-item label="是否采购">-->
<!-- <a-select v-model="queryParam.sfcg" placeholder="请选择" allowClear>-->
<!-- <a-select-option value="是">是</a-select-option>-->
<!-- <a-select-option value="否">否</a-select-option>-->
<!-- </a-select>-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchQuery(1)" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<!-- <a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
... ... @@ -65,22 +65,25 @@
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('贸易招标信息')">导出</a-button> -->
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"
@change="handleImportExcel">
<a-button type="primary" icon="import">导入招标信息</a-button>
</a-upload>
<!-- 高级查询区域 -->
<j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
<!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal"-->
<!-- @handleSuperQuery="handleSuperQuery"></j-super-query>-->
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a
style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
... ... @@ -95,7 +98,7 @@
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type:'radio'}"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: handleRowClick, type:'radio'}"
:customRow="clickThenSelect"
@change="handleTableChange">
... ... @@ -104,7 +107,8 @@
</template>
<template slot="imgSlot" slot-scope="text,record">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt=""
style="max-width:80px;font-size: 12px;font-style: italic;" />
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
... ... @@ -139,303 +143,365 @@
</div>
<a-tabs defaultActiveKey="1">
<a-tab-pane tab="询单情况" key="1" >
<TblTradeTenderInfoTab2List :mainId="tblTradeInquiryInfoMainId" />
<a-tab-pane tab="物料信息" key="1">
<tab-sskc-list ref="tabSskcList" />
</a-tab-pane>
<a-tab-pane tab="采买信息" key="2" forceRender>
<TblTradeTenderInfoTab6List :mainId="tblTradeBidSubMainId" />
<a-tab-pane tab="询单情况" key="2" forceRender>
<tbl-trade-tender-info-tab2-list ref="tblTradeTenderInfoTab2List" />
</a-tab-pane>
<a-tab-pane tab="采买信息" key="3" forceRender>
<tab-cm-info-list ref="tabCmInfoList" />
</a-tab-pane>
</a-tabs>
<tblTradeTenderInfo-modal ref="modalForm" @ok="modalFormOk"></tblTradeTenderInfo-modal>
</a-card>
</template>
<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import TblTradeTenderInfoModal from './modules/TblTradeTenderInfoModal'
import { getAction } from '@/api/manage'
import TblTradeTenderInfoTab2List from './TblTradeTenderInfoTab2List.vue'
import TblTradeTenderInfoTab6List from './TblTradeTenderInfoTab6List.vue'
import '@/assets/less/TableExpand.less'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import TblTradeTenderInfoModal from './modules/TblTradeTenderInfoModal'
import { getAction } from '@/api/manage'
import TblTradeTenderInfoTab2List from './TblTradeTenderInfoTab2List.vue'
import TblTradeTenderInfoTab6List from './TblTradeTenderInfoTab6List.vue'
import '@/assets/less/TableExpand.less'
import TabSskcList from '@views/trade/TabSskcList.vue'
import TabCmInfoList from '@views/trade/TabCmInfoList.vue'
export default {
name: "TblTradeTenderInfoList",
mixins:[JeecgListMixin],
components: {
TblTradeTenderInfoTab2List,
TblTradeTenderInfoTab6List,
TblTradeTenderInfoModal
},
data () {
return {
description: '贸易招标信息管理页面',
// 表头
columns: [
{
title:'招标号',
align:"center",
dataIndex: 'tenderNo'
},
{
title:'物料编码',
align:"center",
dataIndex: 'code'
},
{
title:'标段(包)名称',
align:"center",
dataIndex: 'tenderName'
},
{
title:'物料长描述',
align:"center",
dataIndex: 'miaoshu'
},
{
title:'计量单位',
align:"center",
dataIndex: 'jldw'
},
{
title:'需求数量',
align:"center",
dataIndex: 'xqsl'
},
{
title:'需求交货期',
align:"center",
dataIndex: 'xqjhq',
customRender:function (text) {
return !text?"":(text.length>10?text.substr(0,10):text)
}
},
{
title:'品牌',
align:"center",
dataIndex: 'pinpai'
},
{
title:'税率',
align:"center",
dataIndex: 'sl'
},
{
title:'响应单价',
align:"center",
dataIndex: 'xydj'
},
{
title:'响应数量',
align:"center",
dataIndex: 'xysl'
},
{
title:'响应交货期',
align:"center",
dataIndex: 'xyjhq'
},
{
title:'响应说明',
align:"center",
dataIndex: 'xysm'
},
{
title:'响应品牌',
align:"center",
dataIndex: 'xypp'
},
{
title:'响应币种',
align:"center",
dataIndex: 'xybz'
},
{
title:'交货期否决项',
align:"center",
dataIndex: 'jhqfjx'
},
{
title:'付款方式否决项',
align:"center",
dataIndex: 'fkfsfjx'
},
{
title:'规格型号否决项',
align:"center",
dataIndex: 'ggxhfjx'
},
{
title:'品牌否决项',
align:"center",
dataIndex: 'ppfjx'
},
{
title:'需求单位',
align:"center",
dataIndex: 'xqdw'
},
{
title:'备注',
align:"center",
dataIndex: 'bz'
},
{
title:'询价标书文件号',
align:"center",
dataIndex: 'xjbswjh'
},
{
title:'项目类型',
align:"center",
dataIndex: 'xmlx'
},
{
title:'送货地址',
align:"center",
dataIndex: 'shdz'
},
{
title:'优先等级',
align:"center",
dataIndex: 'yxdj'
},
{
title:'询价计划完成日期',
align:"center",
dataIndex: 'xjjhwcsj'
},
{
title:'标的类型',
align:"center",
dataIndex: 'bdlx'
},
// {
// title: '操作',
// dataIndex: 'action',
// align:"center",
// fixed:"right",
// width:147,
// scopedSlots: { customRender: 'action' },
// }
],
url: {
list: "/trade/tblTradeTenderInfo/list",
delete: "/trade/tblTradeTenderInfo/delete",
deleteBatch: "/trade/tblTradeTenderInfo/deleteBatch",
exportXlsUrl: "/trade/tblTradeTenderInfo/exportXls",
importExcelUrl: "trade/tblTradeTenderInfo/importExcel",
export default {
name: 'TblTradeTenderInfoList',
mixins: [JeecgListMixin],
components: {
TabCmInfoList,
TabSskcList,
TblTradeTenderInfoTab2List,
TblTradeTenderInfoTab6List,
TblTradeTenderInfoModal
},
data() {
return {
description: '贸易招标信息管理页面',
// 表头
columns: [
// {
// title:'招标号',
// align:"center",
// dataIndex: 'xjbswjh'
// },
{
title: '物料编码',
align: 'center',
dataIndex: 'code'
},
dictOptions:{
{
title: '标段(包)名称',
align: 'center',
dataIndex: 'tenderName'
},
/* 分页参数 */
ipagination:{
current: 1,
pageSize: 5,
pageSizeOptions: ['5', '10', '50'],
showTotal: (total, range) => {
return range[0] + "-" + range[1] + " 共" + total + "条"
},
showQuickJumper: true,
showSizeChanger: true,
total: 0
{
title: '物料长描述',
align: 'center',
dataIndex: 'miaoshu'
},
selectedMainId:'',
superFieldList:[],
tblTradeInquiryInfoMainId: '',
tblTradeBidSubMainId: '',
}
},
created() {
this.getSuperFieldList();
},
computed: {
importExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
}
},
methods: {
initDictConfig(){
},
clickThenSelect(record) {
return {
on: {
click: () => {
this.onSelectChange(record.id.split(","), [record]);
}
{
title: '计量单位',
align: 'center',
dataIndex: 'jldw'
},
{
title: '需求数量',
align: 'center',
dataIndex: 'xqsl'
},
{
title: '需求交货期',
align: 'center',
dataIndex: 'xqjhq',
customRender: function(text) {
return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text)
}
},
{
title: '品牌',
align: 'center',
dataIndex: 'pinpai'
},
{
title: '税率',
align: 'center',
dataIndex: 'sl'
},
{
title: '响应单价',
align: 'center',
dataIndex: 'xydj'
},
{
title: '响应数量',
align: 'center',
dataIndex: 'xysl'
},
{
title: '响应交货期',
align: 'center',
dataIndex: 'xyjhq'
},
{
title: '响应说明',
align: 'center',
dataIndex: 'xysm'
},
{
title: '响应品牌',
align: 'center',
dataIndex: 'xypp'
},
{
title: '响应币种',
align: 'center',
dataIndex: 'xybz'
},
{
title: '交货期否决项',
align: 'center',
dataIndex: 'jhqfjx'
},
{
title: '付款方式否决项',
align: 'center',
dataIndex: 'fkfsfjx'
},
{
title: '规格型号否决项',
align: 'center',
dataIndex: 'ggxhfjx'
},
{
title: '品牌否决项',
align: 'center',
dataIndex: 'ppfjx'
},
{
title: '需求单位',
align: 'center',
dataIndex: 'xqdw'
},
{
title: '备注',
align: 'center',
dataIndex: 'bz'
},
{
title: '询价标书文件号',
align: 'center',
dataIndex: 'xjbswjh'
},
{
title: '项目类型',
align: 'center',
dataIndex: 'xmlx'
},
{
title: '送货地址',
align: 'center',
dataIndex: 'shdz'
},
{
title: '优先等级',
align: 'center',
dataIndex: 'yxdj'
},
{
title: '询价计划完成日期',
align: 'center',
dataIndex: 'xjjhwcsj'
},
{
title: '标的类型',
align: 'center',
dataIndex: 'bdlx'
}
// {
// title: '操作',
// dataIndex: 'action',
// align:"center",
// fixed:"right",
// width:147,
// scopedSlots: { customRender: 'action' },
// }
],
url: {
list: '/trade/tblTradeTenderInfo/list',
delete: '/trade/tblTradeTenderInfo/delete',
deleteBatch: '/trade/tblTradeTenderInfo/deleteBatch',
exportXlsUrl: '/trade/tblTradeTenderInfo/exportXls',
importExcelUrl: 'trade/tblTradeTenderInfo/importExcel'
},
onClearSelected() {
this.selectedRowKeys = [];
this.selectionRows = [];
this.selectedMainId=''
},
onSelectChange(selectedRowKeys, selectionRows) {
this.selectedMainId=selectedRowKeys[0]
this.selectedRowKeys = selectedRowKeys;
this.selectionRows = selectionRows;
this.tblTradeInquiryInfoMainId = selectionRows[0]['id']
this.tblTradeBidSubMainId = selectionRows[0]['id']
dictOptions: {},
/* 分页参数 */
ipagination: {
current: 1,
pageSize: 5,
pageSizeOptions: ['5', '10', '50'],
showTotal: (total, range) => {
return range[0] + '-' + range[1] + ' 共' + total + '条'
},
showQuickJumper: true,
showSizeChanger: true,
total: 0
},
loadData(arg) {
if(!this.url.list){
this.$message.error("请设置url.list属性!")
return
}
//加载数据 若传入参数1则加载第一页的内容
if (arg === 1) {
this.ipagination.current = 1;
}
this.onClearSelected()
var params = this.getQueryParams();//查询条件
this.loading = true;
getAction(this.url.list, params).then((res) => {
if (res.success) {
this.dataSource = res.result.records;
this.ipagination.total = res.result.total;
selectedMainId: '',
superFieldList: [],
tblTradeInquiryInfoMainId: '',
tblTradeBidSubMainId: '',
selectedRowData: {}
}
},
created() {
this.getSuperFieldList()
},
computed: {
importExcelUrl: function() {
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
}
},
methods: {
searchQuery(arg) {
if (!this.url.list) {
this.$message.error('请设置url.list属性!')
return
}
//加载数据 若传入参数1则加载第一页的内容
if (arg === 1) {
this.ipagination.current = 1
}
var params = this.getQueryParams()//查询条件
console.log('params========', params)
this.loading = true
getAction(this.url.list, params).then((res) => {
if (res.success) {
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
this.dataSource = res.result.records || res.result
if (res.result.total) {
this.ipagination.total = res.result.total
} else {
this.ipagination.total = 0
}
if(res.code===510){
this.$message.warning(res.message)
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
} else {
this.$message.warning(res.message)
}
}).finally(() => {
this.loading = false
})
this.clearData()
},
// 行点击事件
handleRowClick(selectedRowKeys, selectionRows) {
this.selectedRowKeys = selectedRowKeys
this.selectionRows = selectionRows
this.selectedRowData = selectionRows
// 如果需要根据选中行ID获取子表数据
this.loadChildData(selectionRows)
},
// 加载子表数据
loadChildData(row) {
// 直接调用子组件方法
this.$refs.tabSskcList.loadData(row)
//询单情况
this.$refs.tblTradeTenderInfoTab2List.loadData(row)
//采买情况
this.$refs.tabCmInfoList.loadData(row)
},
initDictConfig() {
},
clickThenSelect(record) {
return {
on: {
click: () => {
this.onSelectChange(record.id.split(','), [record])
}
this.loading = false;
})
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'tenderNo',text:'招标号',dictCode:''})
fieldList.push({type:'string',value:'code',text:'物料编码',dictCode:''})
fieldList.push({type:'string',value:'tenderName',text:'标段(包)名称',dictCode:''})
fieldList.push({type:'string',value:'miaoshu',text:'物料长描述',dictCode:''})
fieldList.push({type:'string',value:'jldw',text:'计量单位',dictCode:''})
fieldList.push({type:'string',value:'xqsl',text:'需求数量',dictCode:''})
fieldList.push({type:'date',value:'xqjhq',text:'需求交货期'})
fieldList.push({type:'string',value:'pinpai',text:'品牌',dictCode:''})
fieldList.push({type:'string',value:'sl',text:'税率',dictCode:''})
fieldList.push({type:'string',value:'xydj',text:'响应单价',dictCode:''})
fieldList.push({type:'string',value:'xysl',text:'响应数量',dictCode:''})
fieldList.push({type:'string',value:'xyjhq',text:'响应交货期',dictCode:''})
fieldList.push({type:'Text',value:'xysm',text:'响应说明',dictCode:''})
fieldList.push({type:'string',value:'xypp',text:'响应品牌',dictCode:''})
fieldList.push({type:'string',value:'xybz',text:'响应币种',dictCode:''})
fieldList.push({type:'string',value:'jhqfjx',text:'交货期否决项',dictCode:''})
fieldList.push({type:'string',value:'fkfsfjx',text:'付款方式否决项',dictCode:''})
fieldList.push({type:'string',value:'ggxhfjx',text:'规格型号否决项',dictCode:''})
fieldList.push({type:'string',value:'ppfjx',text:'品牌否决项',dictCode:''})
fieldList.push({type:'string',value:'xqdw',text:'需求单位',dictCode:''})
fieldList.push({type:'string',value:'bz',text:'备注',dictCode:''})
fieldList.push({type:'string',value:'xjbswjh',text:'询价标书文件号',dictCode:''})
fieldList.push({type:'string',value:'xmlx',text:'项目类型',dictCode:''})
fieldList.push({type:'string',value:'shdz',text:'送货地址',dictCode:''})
fieldList.push({type:'string',value:'yxdj',text:'优先等级',dictCode:''})
fieldList.push({type:'string',value:'xjjhwcsj',text:'询价计划完成日期',dictCode:''})
fieldList.push({type:'string',value:'bdlx',text:'标的类型',dictCode:''})
this.superFieldList = fieldList
}
}
},
onClearSelected() {
this.selectedRowKeys = []
this.selectionRows = []
this.selectedMainId = ''
this.clearData()
},
onSelectChange(selectedRowKeys, selectionRows) {
this.selectedMainId = selectedRowKeys[0]
this.selectedRowKeys = selectedRowKeys
this.selectionRows = selectionRows
this.tblTradeInquiryInfoMainId = selectionRows[0]['id']
this.tblTradeBidSubMainId = selectionRows[0]['id']
},
clearData() {
// 直接调用子组件方法
this.$refs.tabSskcList.clearData()
//询单情况
this.$refs.tblTradeTenderInfoTab2List.clearData()
//采买情况
this.$refs.tabCmInfoList.clearData()
},
// loadData(arg) {
// if(!this.url.list){
// this.$message.error("请设置url.list属性!")
// return
// }
// //加载数据 若传入参数1则加载第一页的内容
// if (arg === 1) {
// this.ipagination.current = 1;
// }
// this.onClearSelected()
// var params = this.getQueryParams();//查询条件
// this.loading = true;
// getAction(this.url.list, params).then((res) => {
// if (res.success) {
// this.dataSource = res.result.records;
// this.ipagination.total = res.result.total;
// }
// if(res.code===510){
// this.$message.warning(res.message)
// }
// this.loading = false;
// })
// },
getSuperFieldList() {
let fieldList = []
fieldList.push({ type: 'string', value: 'tenderNo', text: '招标号', dictCode: '' })
fieldList.push({ type: 'string', value: 'code', text: '物料编码', dictCode: '' })
fieldList.push({ type: 'string', value: 'tenderName', text: '标段(包)名称', dictCode: '' })
fieldList.push({ type: 'string', value: 'miaoshu', text: '物料长描述', dictCode: '' })
fieldList.push({ type: 'string', value: 'jldw', text: '计量单位', dictCode: '' })
fieldList.push({ type: 'string', value: 'xqsl', text: '需求数量', dictCode: '' })
fieldList.push({ type: 'date', value: 'xqjhq', text: '需求交货期' })
fieldList.push({ type: 'string', value: 'pinpai', text: '品牌', dictCode: '' })
fieldList.push({ type: 'string', value: 'sl', text: '税率', dictCode: '' })
fieldList.push({ type: 'string', value: 'xydj', text: '响应单价', dictCode: '' })
fieldList.push({ type: 'string', value: 'xysl', text: '响应数量', dictCode: '' })
fieldList.push({ type: 'string', value: 'xyjhq', text: '响应交货期', dictCode: '' })
fieldList.push({ type: 'Text', value: 'xysm', text: '响应说明', dictCode: '' })
fieldList.push({ type: 'string', value: 'xypp', text: '响应品牌', dictCode: '' })
fieldList.push({ type: 'string', value: 'xybz', text: '响应币种', dictCode: '' })
fieldList.push({ type: 'string', value: 'jhqfjx', text: '交货期否决项', dictCode: '' })
fieldList.push({ type: 'string', value: 'fkfsfjx', text: '付款方式否决项', dictCode: '' })
fieldList.push({ type: 'string', value: 'ggxhfjx', text: '规格型号否决项', dictCode: '' })
fieldList.push({ type: 'string', value: 'ppfjx', text: '品牌否决项', dictCode: '' })
fieldList.push({ type: 'string', value: 'xqdw', text: '需求单位', dictCode: '' })
fieldList.push({ type: 'string', value: 'bz', text: '备注', dictCode: '' })
fieldList.push({ type: 'string', value: 'xjbswjh', text: '询价标书文件号', dictCode: '' })
fieldList.push({ type: 'string', value: 'xmlx', text: '项目类型', dictCode: '' })
fieldList.push({ type: 'string', value: 'shdz', text: '送货地址', dictCode: '' })
fieldList.push({ type: 'string', value: 'yxdj', text: '优先等级', dictCode: '' })
fieldList.push({ type: 'string', value: 'xjjhwcsj', text: '询价计划完成日期', dictCode: '' })
fieldList.push({ type: 'string', value: 'bdlx', text: '标的类型', dictCode: '' })
this.superFieldList = fieldList
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less'
@import '~@assets/less/common.less'
</style>
\ No newline at end of file
... ...
<template>
<a-card :bordered="false" :class="'cust-erp-sub-tab'">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator" v-if="mainId">
<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('询价明细表')">导出</a-button>
<a-upload
name="file"
:showUploadList="false"
:multiple="false"
:headers="tokenHeader"
:action="importExcelUrl"
@change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown> -->
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
... ... @@ -46,54 +11,21 @@
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text,record">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</template>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
</span>
:loading="loading">
</a-table>
</div>
<TblTradeTenderInfoTab2Modal ref="modalForm" @ok="modalFormOk" :mainId="mainId"></TblTradeTenderInfoTab2Modal>
</a-card>
</template>
<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import TblTradeTenderInfoTab2Modal from './modules/TblTradeTenderInfoTab2Modal.vue'
import { getAction } from '@api/manage'
export default {
name: "TblTradeInquiryInfoList",
name: "TblTradeTenderInfoTab2List",
mixins:[JeecgListMixin],
components: { TblTradeTenderInfoTab2Modal },
components: { },
props:{
mainId:{
type:String,
... ... @@ -123,48 +55,93 @@
{
title: '#',
dataIndex: '',
key:'rowIndex',
width:60,
align:"center",
customRender:function (t,r,index) {
return parseInt(index)+1;
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function (t, r, index) {
return parseInt(index) + 1
}
},
{
title:'完成询价进度(%)',
align:"center",
title: '供货商名称',
align: 'center',
dataIndex: 'ghsmc'
},
{
title:'计划完成日期',
align:"center",
dataIndex: 'tel'
title: '专票单价',
align: 'center',
dataIndex: 'zpdj'
},
{
title: '专票税率(%)',
align: 'center',
dataIndex: 'zpsl'
},
{
title: '普票单价',
align: 'center',
dataIndex: 'ppdj'
},
{
title: '普票税率(%)',
align: 'center',
dataIndex: 'ppsl'
},
{
title: '无票单价',
align: 'center',
dataIndex: 'wpdj'
},
{
title:'询价时间是否超期',
align:"center",
dataIndex: 'wldz'
title: '是否含运费',
align: 'center',
dataIndex: 'sfhyf'
},
{
title:'询单状态',
align:"center",
dataIndex: 'wxh'
title: '运费',
align: 'center',
dataIndex: 'yf'
},
// {
// title: '操作',
// dataIndex: 'action',
// align:"center",
// fixed:"right",
// width:147,
// scopedSlots: { customRender: 'action' },
// }
{
title: '发货地址',
align: 'center',
dataIndex: 'fhdz'
},
{
title: '最小出货量',
align: 'center',
dataIndex: 'zxchl'
},
{
title: 'L/T(交货周期天)',
align: 'center',
dataIndex: 'jhzqt'
},
{
title: '价格评价',
align: 'center',
dataIndex: 'jgpj'
},
{
title: '是否需要重新询价',
align: 'center',
dataIndex: 'sfxycxxj',
customRender: (text, record) => {
if (text == 'Y') {
return '是'
} else if (text == 'N') {
return '否'
}
}
},
{
title: '原因/备注',
align: 'center',
dataIndex: 'bz'
}
],
url: {
list: "/trade/tblTradeTenderInfo/listTblTradeInquiryInfoByMainId",
delete: "/trade/tblTradeTenderInfo/deleteTblTradeInquiryInfo",
deleteBatch: "/trade/tblTradeTenderInfo/deleteBatchTblTradeInquiryInfo",
exportXlsUrl: "/trade/tblTradeTenderInfo/exportTblTradeInquiryInfo",
importUrl: "/trade/tblTradeTenderInfo/importTblTradeInquiryInfo",
getTenderInfo: "/trade/tblTradeBidSub/getTenderInfo",
},
dictOptions:{
}
... ... @@ -178,6 +155,28 @@
}
},
methods: {
clearData(){
this.dataSource = []
},
loadData(rows){
console.log("row:tab2",rows)
const row = rows[0]
console.log("row",row)
const materialCode = row.code
const xjbswjh = row.xjbswjh
const param = {
xjbswjh:xjbswjh,
wlbm:materialCode
}
getAction(this.url.getTenderInfo, param).then((res) => {
if (res.success) {
if (res.result) {
console.log("result...........",res.result)
this.dataSource = res.result
}
}
})
},
clearList(){
this.dataSource=[]
this.selectedRowKeys=[]
... ...
... ... @@ -113,16 +113,13 @@
</a-tab-pane>
<a-tab-pane tab="合同列表" key="2" forceRender>
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button @click="handleAdd" type="primary" icon="plus" :disabled="addHt">新增合同</a-button>
</div>
<a-table :dataSource="dataSource3" :columns="columns3" :scroll="{x:true}" >
<template slot="action" slot-scope="text, record">
<a @click="downloadContract(record)">下载</a>
</template>
</a-table>
</a-tab-pane>
</a-tabs>
... ... @@ -140,6 +137,15 @@
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="12">
<a-form-model-item label="询价标书文件号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contractNumber">
<a-input
v-model="model.xjbswjh"
placeholder="请输入询价标书文件号"
disabled="disabled"
></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="中标合同编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contractNumber">
<a-input
v-model="model.contractNumber"
... ... @@ -478,6 +484,7 @@
superFieldList:[],
dataSource2: [],
dataSource3: [],
addHt:true
}
},
created() {
... ... @@ -492,6 +499,7 @@
},
methods: {
onClearSelected() {
this.addHt = true
this.selectedRowKeys = [];
this.selectionRows = [];
this.getContractList();
... ... @@ -515,10 +523,12 @@
handleAdd(){
this.model = {}
this.visibleContract = true
this.model.xjbswjh = this.selectionRows[0].xjbswjh
},
handleOkInfo(){
this.$refs.form.validate((valid) => {
if (valid) {
this.model.xjbswjh = this.selectionRows[0].xjbswjh
postAction(this.url.addContract,this.model).then(
res=>{
if(res.success){
... ... @@ -546,8 +556,8 @@
this.getTblTradeBidMaterialDetailsList()
},
onSelectChange(selectedRowKeys, selectionRows) {
console.log("selectionRows",selectionRows[0].xjbswjh)
this.addHt = false
console.log("selectionRows",selectionRows[0])
this.selectedRowKeys = selectedRowKeys;
this.selectionRows = selectionRows;
... ... @@ -561,7 +571,7 @@
})
getAction(this.url.contractList, {
contractNumber: selectionRows[0].xjbswjh
xjbswjh: selectionRows[0].xjbswjh
}).then((res) => {
if (res.success) {
this.dataSource3 = res.result.records
... ...