Commit ead87a57 authored by yht15023815643's avatar yht15023815643

评标助手

parent d8ffcc9d
<template>
</template>
<script>
export default {
}
</script>
<style>
</style>
\ No newline at end of file
<template>
<div class="app-container enterprise_contatiner">
<div class="header">
<el-tabs v-model="activeName" >
<el-tab-pane label="查资质" name="first"></el-tab-pane>
<el-tab-pane label="现行资质标准" name="second"></el-tab-pane>
<el-tab-pane label="历史批量查询结果" name="third"></el-tab-pane>
</el-tabs>
</div>
<SearchAptitude v-if="activeName === 'first'"></SearchAptitude>
<AptitudeStandard v-if="activeName === 'second'"></AptitudeStandard>
<SearchResult v-if="activeName === 'third'"></SearchResult>
</div>
</template>
<script>
import SearchAptitude from './components/SearchAptitude'
import AptitudeStandard from './components/AptitudeStandard'
import SearchResult from './components/SearchResult'
export default {
name: 'Assistant',
components: {
SearchAptitude,AptitudeStandard,SearchResult
},
data() {
return {
activeName: 'first'
}
},
}
</script>
<style lang="scss" scoped>
.header{
justify-content: space-between;
height: 48px;
background: #FFFFFF;
border-radius: 4px 4px 0 0 ;
border-bottom: 1px solid #EEEEEE;
color: #232323;
position: sticky;
top: 54px;
z-index: 999;
::v-deep .el-tabs{
height: 48px;
line-height: 48px;
.el-tabs__nav-wrap::after {
position: static !important;
}
.el-tabs__header{
margin: 0;
.el-tabs__item{
padding: 0 16px;
font-size: 16px;
}
.is-active{
font-weight: bold;
}
}
.el-tabs__content{
width: 100%;
}
}
.location{
font-size: 14px;
color: #0081FF;
i{
margin-right: 6px;
font-size: 16px;
}
}
}
</style>
\ No newline at end of file
<template>
<div>
<div class="apt_stan_header">
<span v-for="(item,index) in list" class="apt_stan_header_span" :class="activeIndex==index?'active_span':''" :key="index" @click="activeIndex=index">{{item}}</span>
</div>
<div class="apt_stan_content">
<div class="apt_stan_content_header">
<el-select v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div style="padding:16px;">
<el-table :data="tableData" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" v-horizontal-scroll="'hover'"
class="table-item1 fixed-table" border highlight-current-row>
<el-table-column label="资质名称" fixed >
<template slot-scope="scope">
{{scope.row.province}}
</template>
</el-table-column>
<el-table-column label="等级" width="274">
<template slot-scope="scope">
{{scope.row.biddingCount||"--"}}
</template>
</el-table-column>
<el-table-column label="经营范围" >
<template slot-scope="scope">
{{scope.row.landInfoCount||"--"}}
</template>
</el-table-column>
</el-table>
<div class="apt_stan_content_text_box">·建筑工程是指各类结构形式的民用建筑工程、工业建筑工程、构筑物工程以及相配套的道路、通信、管网管线等设施工程。工程内容包括地基与基础、主体结构、建筑屋面、装修装饰、建筑幕墙、附建人防工程以及给水排水及供暖、通风与空调、电气、消防、智能化、防雷等配套工程;</div>
</div>
</div>
</div>
</template>
<script>
export default {
data(){
return{
tableData:[],
activeIndex:0,
list:['建筑业企业资质','工程监理','工程设计','工程勘察','工程造价咨询'],
options: [
{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}
],
value: ''
}
},
}
</script>
<style lang="scss" scoped>
.apt_stan_header{
border-radius: 0px 0px 4px 4px;
display: flex;
padding: 16px;
background: #FFFFFF;
.apt_stan_header_span{
cursor: pointer;
font-size: 14px;
color: #3D3D3D;
height: 32px;
border-radius: 4px;
padding: 5px 12px;
margin-right: 12px;
display: inline-block;
background: #F3F4F5;
}
.active_span{
background: #F6F9FC;
color: #0081FF;
}
}
.apt_stan_content{
margin-top: 16px;
background: #FFFFFF;
border-radius: 4px 4px 0px 0px;
.apt_stan_content_header{
padding: 16px;
border-width: 0px 0px 1px 0px;
border-style: solid;
border-color: #EEEEEE;
}
::v-deep .el-input__inner{
border: none;
}
.apt_stan_content_text_box{
border-radius: 0px 0px 4px 4px;
padding: 16px;
background: #FFFFFF;
border: 1px solid #E6EAF1;
color: #3D3D3D;
font-size: 12px;
margin-top: 16px;
}
}
</style>
\ No newline at end of file
<template>
<el-dialog title="批量查资质" custom-class="batch_import_dialog" :visible.sync="visible">
<div class="upload" v-if="addfile==false">
<div class="up_title">导入Excel文件,高效查询或导出企业信息;查询成功后可使用筛选项二次筛选</div>
<div>
<div class="step_box" v-for="(item,index) in list" :key="index">
<span class="step">{{ index+1 }}</span><span class="step_text">{{ item }}</span><span class="step_line" v-if="index!=3"></span>
</div>
</div>
<div class="up_box">
<el-upload class="batch_import_upload"
:action="action"
:multiple="false"
accept=".xls,.xlsx"
drag
ref="upload"
:auto-upload="false"
:file-list="fileList"
:on-change="handleFileListChange"
:headers="headers"
:on-success="onSuccess">
<img class="up_img" src="@/assets/images/plus.png">
<div class="up_text">点击选择文件或将文件拖拽至此导入企业名录</div>
<div class="up_tip">· 导入的文件内容必须依照下载模板的要求填写);</div>
<div class="up_tip">· 上传文件最大为2M,仅支持Excel表格文件(xls,xlsx);</div>
<div class="up_tip">· 单次查询企业数量限时免费 5000 家。</div>
</el-upload>
</div>
<div class="bd"></div>
<div class="btns1 clearfix">
<div class="btn btn_default dowload" @click="downloadClick"><img src="@/assets/images/download.png" alt="">下载模板</div>
<div class="btn btn_primary btn_disabled fr" v-if="isUpload==false">查询</div>
<div class="btn btn_primary fr" @click="importConfirmClick" v-else>查询</div>
<div class="btn btn_default fr" @click="importCancel">取消</div>
</div>
</div>
<div class="success" v-if="addfile==true">
<div v-if="addsuccess==false">
<img class="img" src="@/assets/images/project/clock.png">
<div class="p1">查询客户中...</div>
<div class="p2">请耐心等待,过程大概30秒</div>
</div>
<div v-if="addsuccess == true">
<div class="p3">
<img src="@/assets/images/project/success.png">查询成功
</div>
<div class="p2">{{messages}}</div>
<div class="btns">
<div class="btn btn_primary h32" @click="getmsg">查看</div>
</div>
</div>
</div>
</el-dialog>
</template>
<script>
import { getToken } from "@/utils/auth";
import "@/assets/styles/project.scss"
import {importData} from '@/api/custom/custom'
export default {
name: 'batchImport',
props:{
importtype:''
},
data(){
return{
list:['下载模版','按要求在模板内填写企业全称名录','上传文件','查询结果'],
visible:false,
isUpload:false,//有上传的文件
addfile:false,//已上传文件
addsuccess:false,//已成功加入数据
//批量导入
action:"",
fileList: [],
headers: {
Authorization: "Bearer " + getToken(),
},
downloadhref:'',//样例地址
successCount:0,//成功条数
messages:'',
}
},
created(){
if(this.importtype == 'project'){//项目管理
this.downloadhref = '/file/projectTemplate.xlsx'
this.action = process.env.VUE_APP_BASE_API + '/business/info/upload'
}
if(this.importtype == 'custom'){//客户管理
this.downloadhref = '/file/Template.xlsx'
this.action = process.env.VUE_APP_BASE_API + "/customer/importData"
}
},
methods:{
getmsg(){
this.importCancel()
this.$emit('getdatas')
},
handleFileListChange(file, fileList) {
var testmsg = file.name.substring(file.name.lastIndexOf(".") + 1);
const extension = testmsg === "xlsx";
const extension1 = testmsg === "xls";
if (!extension && !extension1 ) {
this.$message({
message: "上传文件只能是.xls,.xlsx格式!",
type: "warning",
});
return false;
}
const isLt2M = file.size / 1024 / 1024 < 2
if (!isLt2M) {
this.$refs.upload.clearFiles()
this.$message({
message: '上传文件大小不能超过 2MB!',
type: 'warning'
})
return false
}
if (fileList.length > 0) {
this.fileList = [fileList[fileList.length - 1]];
this.isUpload = true
}
},
onSuccess(res, file, fileList) {
if (res.code == 200) {
this.successCount = res.successCount
if(this.importtype == 'project'){//项目管理
this.messages = res.msg
}
if(this.importtype == 'custom'){//客户管理
let num = res.data?res.data.length:0
let str = '成功导入客户条数'+res.successCount+',客户去重条数'+ num
this.messages = str
}
this.addsuccess = true
}else {
this.importCancel()
this.$message.error({ message: res.msg, showClose: true })
}
},
downloadClick() {
let a = document.createElement("a");
a.setAttribute("href", this.downloadhref);
a.setAttribute("download", "批量导入模版.xlsx");
document.body.appendChild(a);
a.click();
a.remove();
},
// 批量导入
importConfirmClick() {
if (this.fileList.length > 0) {
this.$refs["upload"].submit();
this.addfile = true
} else {
this.$message("请先选择文件");
}
},
importCancel(){
this.addfile = false
this.isUpload = false
this.addsuccess = false
this.fileList = []
this.$emit('cancels')
},
}
}
</script>
<style lang="scss" scoped>
::v-deep .batch_import_dialog{
width: 656px;
border-radius: 4px;
.el-dialog__header{
font-size: 16px;
color:#232323;
font-weight:700;
}
.el-dialog__body{
border-top: 1px solid #E5E6EB;
}
.up_title{
font-size: 12px;
color: #666666;
position: absolute;
top: 23px;
left: 116px;
}
.upload{
.step_box{
display: inline-block;
font-size: 12px;
color: #3D3D3D;
.step{
display: inline-block;
width: 12px;
height: 12px;
background: #0081FF;
color: #ffffff;
margin-right: 4px;
text-align: center;
border-radius: 50%;
}
.step_line{
width: 27px;
height: 1px;
display: inline-block;
background:#D8D8D8;
position: relative;
top: -4px;
margin:0 12px;
}
}
.up_box{
margin-top: 20px;
.batch_import_upload{
.el-upload-dragger{
width: 616px;
height: 224px;
background: #F2F3F5;
border-radius: 2px 2px 2px 2px;
border: 1px solid #E5E6EB;
.up_img{
width: 14px;
height: 14px;
margin-top: 50px;
margin-bottom: 24px;
}
.up_text{
font-size: 14px;
color: #232323;
margin-bottom: 4px;
}
.up_tip{
color: #999999;
font-size: 12px;
height: 20px;
line-height: 20px;
}
}
}
.el-upload-list__item{
height: 36px;
line-height: 36px;
background: #F7F8FA;
border-radius: 2px 2px 2px 2px;
a{
color: #1D2129;
}
.el-icon-close{
top: 10px;
}
}
}
.bd{
width: 656px;
margin-left: -20px;
height: 1px;
background:#E5E6EB ;
margin-top: 17px;
}
.btns1{
.btn{
border-radius: 2px;
padding: 0 16px;
width: auto;
height: 32px;
line-height: 32px;
margin-top: 16px;
}
.btn_default{
border-color: #DCDFE6;
color: #232323;
margin-left: 0;
}
.fr{
float:right;
}
.dowload{
img{
width: 16px;
height: 16px;
}
}
.btn_disabled{
background: #94BFFF;
color: #ffffff;
}
}
}
}
</style>
<template>
<div class="search_result_box">
<el-table :data="tableData" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" v-horizontal-scroll="'hover'"
class="table-item1 fixed-table" border highlight-current-row>
<el-table-column type="index" label="序号" fixed width="60">
<template slot-scope="scope">
<span>{{(pageNum - 1) *pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="表格名称" >
<template slot-scope="scope">
{{scope.row.biddingCount||"--"}}
</template>
</el-table-column>
<el-table-column label="查询时间" width="189">
<template slot-scope="scope">
{{scope.row.landInfoCount||"--"}}
</template>
</el-table-column>
<el-table-column label="操作" width="154">
<template slot-scope="scope">
{{scope.row.bondBalance||"--"}}
</template>
</el-table-column>
</el-table>
<el-pagination background :current-page="pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
</template>
<script>
export default {
data(){
return{
tableData:[],
total: 0,
pageNum: 1,
}
},
methods:{
handleCurrentChange(pageNum) {
this.pageNum = pageNum;
},
}
}
</script>
<style lang="scss" scoped>
.search_result_box{
background: #ffffff;
padding: 16px;
.el-pagination{
display: flex;
justify-content: end;
padding: 0;
margin-right: -5px;
margin-top: 16px;
}
}
</style>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment