|
@@ -3,6 +3,7 @@
|
|
|
|
|
|
<div class="head-container" style="margin: 10px 0 10px 0;">
|
|
|
<!-- 搜索 -->
|
|
|
+ <span style="fontSize:13px">标题</span>
|
|
|
<el-input
|
|
|
v-model="query.value"
|
|
|
clearable
|
|
@@ -10,17 +11,57 @@
|
|
|
style="width: 200px;"
|
|
|
size="small"
|
|
|
class="filter-item"
|
|
|
+ @keyup.enter.native="handleFind"
|
|
|
+ @clear="handleFind"
|
|
|
/>
|
|
|
- <el-button class="filter-item" size="small" type="primary" icon="el-icon-search" plain @click="handleFind">搜索</el-button>
|
|
|
- <el-button
|
|
|
- class="filter-item"
|
|
|
- size="small"
|
|
|
- type="primary"
|
|
|
- icon="el-icon-plus"
|
|
|
- @click="handleAdd"
|
|
|
- >发布新标
|
|
|
- </el-button>
|
|
|
- </div>
|
|
|
+ <span style="fontSize:13px;marginLeft:20px">招标类型</span>
|
|
|
+ <el-select v-model="query.tenderType" style="width: 200px;" @keyup.enter.native="handleFind" @clear="handleFind" size="small" clearable value-key="areaId" filterable placeholder="请选择招标类型">
|
|
|
+ <el-option
|
|
|
+ v-for="item in tenderType"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+
|
|
|
+ <span style="fontSize:13px;marginLeft:20px">招标规则</span>
|
|
|
+ <el-select v-model="query.tenderRule" style="width: 200px;" @keyup.enter.native="handleFind" @clear="handleFind" size="small" clearable value-key="areaId" filterable placeholder="请选择招标规则">
|
|
|
+ <el-option
|
|
|
+ v-for="item in tenderRule"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+
|
|
|
+
|
|
|
+ <span style="fontSize:13px;marginLeft:20px">开始时间</span>
|
|
|
+ <el-date-picker
|
|
|
+ v-model="applyDateStart"
|
|
|
+ size="mini"
|
|
|
+ type="datetimerange"
|
|
|
+ style="width: 400px;"
|
|
|
+ range-separator="-"
|
|
|
+ clearable
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ :default-time="['00:00:00', '23:59:59']"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ @change="onApplyDate"
|
|
|
+ @clear="onApplyDate"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div style="float:right">
|
|
|
+ <el-button class="filter-item" size="small" type="primary" icon="el-icon-search" @click="handleFind">搜索</el-button>
|
|
|
+ <el-button
|
|
|
+ class="filter-item"
|
|
|
+ size="small"
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-plus"
|
|
|
+ @click="handleAdd"
|
|
|
+ >发布新标
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
<!--表格渲染-->
|
|
|
<el-table v-loading="loading" :data="data" style="width: 100%;">
|
|
|
<el-table-column label="序号" fixed="left" width="60" align="center">
|
|
@@ -29,49 +70,65 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
|
|
|
- <el-table-column prop="title" label="标题" :show-overflow-tooltip="true" width="250" align="center" />
|
|
|
+ <el-table-column prop="tenderTitle" label="标题" :show-overflow-tooltip="true" width="250" align="center" />
|
|
|
|
|
|
<el-table-column label="状态" align="center" width="100">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-tag v-if="scope.row.status ==1">进行中</el-tag>
|
|
|
- <el-tag v-if="scope.row.status ==2" type="info">已结束</el-tag>
|
|
|
- <el-tag v-if="scope.row.status ==3" type="danger">已作废</el-tag>
|
|
|
- <el-tag v-if="scope.row.status ==4" type="warning">未开始</el-tag>
|
|
|
+ <el-tag effect="plain" v-if="scope.row.status ==1">进行中</el-tag>
|
|
|
+ <el-tag effect="plain" v-if="scope.row.status ==2" type="info">已结束</el-tag>
|
|
|
+ <el-tag effect="plain" v-if="scope.row.status ==3" type="danger">已作废</el-tag>
|
|
|
+ <el-tag effect="plain" v-if="scope.row.status ==4" type="warning">未开始</el-tag>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
|
|
|
- <el-table-column prop="description" :show-overflow-tooltip="true" label="报价方式" width="100" align="center">
|
|
|
+ <el-table-column prop="description" :show-overflow-tooltip="true" label="招标类型" width="100" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag v-if="scope.row.tenderType == 1" >物流</el-tag>
|
|
|
+ <el-tag v-if="scope.row.tenderType == 2" >原料</el-tag>
|
|
|
+ <el-tag v-if="scope.row.tenderType == 3" >销售</el-tag>
|
|
|
+ <el-tag v-if="scope.row.tenderType == 4" >加工承揽</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="description" :show-overflow-tooltip="true" label="招标规则" width="100" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-tag v-if="scope.row.priceQuotes == 1" color="#5783E6" style="border-color:#5783E6" effect="dark">总价</el-tag>
|
|
|
- <el-tag v-if="scope.row.priceQuotes == 2" effect="dark" color="#82C497" style="border-color:#82C497">单价</el-tag>
|
|
|
+ <el-tag v-if="scope.row.tenderRule == 1" type="success" effect="plain">价低者得</el-tag>
|
|
|
+ <el-tag v-if="scope.row.tenderRule == 2" effect="plain" >价高者得</el-tag>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="remarks" label="备注" :show-overflow-tooltip="true" align="center" />
|
|
|
- <el-table-column prop="appendix" label="附件" align="center" width="100">
|
|
|
+ <!-- <el-table-column prop="description" :show-overflow-tooltip="true" label="是否作废" width="100" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag v-if="scope.row.isInvalid == 1" >正常</el-tag>
|
|
|
+ <el-tag v-if="scope.row.isInvalid == 2" type="danger" >已作废</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column> -->
|
|
|
+ <el-table-column prop="fileUrl" label="附件" align="center" width="200">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-button type="text" @click="onLoad(scope.row.appendix)">下载</el-button>
|
|
|
+ <!-- <el-button type="text" @click="onLoad(scope.row.appendix)">下载</el-button> -->
|
|
|
+ <el-link :href="'http://view.officeapps.live.com/op/view.aspx?src='+scope.row.fileUrl" type="primary" target="_target"><i class="el-icon-view"></i> 查看</el-link>
|
|
|
+ <el-link :href="scope.row.fileUrl" type="primary" target="_target"><i class="el-icon-download"></i> 下载</el-link>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="startTime" label="开始时间" align="center" width="160" />
|
|
|
<el-table-column prop="endTime" label="截止时间" align="center" width="160" />
|
|
|
+ <el-table-column prop="tenderRemark" label="备注" :show-overflow-tooltip="true" align="center" />
|
|
|
|
|
|
- <el-table-column label="操作" width="150" fixed="right" align="center">
|
|
|
+ <el-table-column label="操作" width="250" fixed="right" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
+ <el-button slot="reference" icon="el-icon-view" type="text" @click="handleView(scope.row)">标的详情</el-button>
|
|
|
<el-button v-if="scope.row.status == 1 || scope.row.status == 4" slot="reference" type="text" icon="el-icon-edit" @click="handleEdit(scope.row)">编辑</el-button>
|
|
|
<el-popover
|
|
|
- :ref="scope.row.id"
|
|
|
+ :ref="scope.row.tenderParentId"
|
|
|
placement="bottom"
|
|
|
width="180"
|
|
|
>
|
|
|
<p>此操作将作废该标,确定要作废吗?</p>
|
|
|
<div style="text-align: right; margin: 0">
|
|
|
<el-button size="mini" @click="$refs[scope.row.id].doClose()">取消</el-button>
|
|
|
- <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定
|
|
|
+ <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.tenderParentId,scope.row.tenderType)">确定
|
|
|
</el-button>
|
|
|
</div>
|
|
|
<el-button v-if="scope.row.status == 1 || scope.row.status == 4" slot="reference" icon="el-icon-delete" type="text">作废</el-button>
|
|
|
</el-popover>
|
|
|
- <el-button v-if="scope.row.status != 1 && scope.row.status != 4" slot="reference" icon="el-icon-view" type="text" @click="handleView(scope.row)">投标详情</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -91,49 +148,73 @@
|
|
|
</div>
|
|
|
|
|
|
<!--新增-->
|
|
|
- <el-dialog :append-to-body="true" :close-on-click-modal="false" :visible.sync="dialog" :title="isAdd ? '发布新标' : '修改新标'" width="40%">
|
|
|
+ <el-dialog :append-to-body="true" :close-on-click-modal="false" :visible.sync="dialog" :title="isAdd ? '发布新标' : '修改新标'" width="40%">
|
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
|
|
- <el-form-item label="标题" prop="title">
|
|
|
- <div class="padding" style="width: 370px;">
|
|
|
- <el-input v-model="form.title" maxlength="200" show-word-limit placeholder="请输入标题" />
|
|
|
+ <el-form-item label="标题" prop="tenderTitle">
|
|
|
+ <div class="padding" style="width: 80%;">
|
|
|
+ <el-input v-model="form.tenderTitle" maxlength="64" show-word-limit placeholder="请输入标题" />
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="备注" prop="remarks">
|
|
|
- <el-input
|
|
|
- v-model="form.remarks"
|
|
|
- type="textarea"
|
|
|
- style="width: 370px;"
|
|
|
- :autosize="{ minRows: 2, maxRows: 10}"
|
|
|
- placeholder="请输入内容"
|
|
|
- maxlength="500"
|
|
|
- show-word-limit
|
|
|
- />
|
|
|
+
|
|
|
+ <el-form-item label="招标类型" prop="tenderType" >
|
|
|
+ <el-select v-model="form.tenderType" style="width: 80%;" @change="onTenderType" :disabled="!isAdd" value-key="areaId" filterable placeholder="请选择招标类型">
|
|
|
+ <el-option
|
|
|
+ v-for="item in tenderType"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="招标规则" prop="tenderRule">
|
|
|
+ <el-radio v-model="form.tenderRule" @change="onShowType" :label="1">价低者得</el-radio>
|
|
|
+ <el-radio v-model="form.tenderRule" @change="onShowType" :label="2">价高者得</el-radio>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="附件" prop="appendix" class="is-required">
|
|
|
- <el-upload
|
|
|
- class="upload-demo"
|
|
|
- drag
|
|
|
- :limit="1"
|
|
|
- :on-preview="handlePreview"
|
|
|
- :on-change="handleChange"
|
|
|
- :on-remove="handleRemove"
|
|
|
- :before-remove="beforeRemove"
|
|
|
- :on-exceed="handleExceed"
|
|
|
- :on-error="hanndleErr"
|
|
|
- :action="BASE_API+'/tender/upload'"
|
|
|
- list-type="text"
|
|
|
- :file-list="fileList"
|
|
|
- multiple
|
|
|
- >
|
|
|
- <i class="el-icon-upload" />
|
|
|
- <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
|
|
- <!-- <div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div> -->
|
|
|
- </el-upload>
|
|
|
+ <el-form-item label="附件" prop="fileUrl" class="is-required">
|
|
|
+ <el-row type="flex" class="row-bg">
|
|
|
+ <div>
|
|
|
+ <el-upload
|
|
|
+ :disabled="!showType"
|
|
|
+ class="upload-demo"
|
|
|
+ :limit="1"
|
|
|
+ :on-preview="handlePreview"
|
|
|
+ :on-change="handleChange"
|
|
|
+ :on-remove="handleRemove"
|
|
|
+ :before-remove="beforeRemove"
|
|
|
+ :on-exceed="handleExceed"
|
|
|
+ :on-error="hanndleErr"
|
|
|
+ name="multipartFile"
|
|
|
+ :action="isAdd ? BASE_API+'/common/tender/file/'+form.tenderType+'/'+ form.tenderRule : BASE_API+'/common/tender/file/'+form.tenderType+'/'+ form.tenderRule +'?tenderParentId='+ form.tenderParentId"
|
|
|
+ list-type="text"
|
|
|
+ :data="fileData"
|
|
|
+ :file-list="fileList"
|
|
|
+ multiple
|
|
|
+ >
|
|
|
+ <el-button @click="handleUpload">上传文件</el-button>
|
|
|
+ </el-upload>
|
|
|
+ <div style="fontSize:12px;color:#303133">*上传填写好的文件</div>
|
|
|
+ </div>
|
|
|
+ <div style="border-right:0.5px solid #eee;margin:0 60px"></div>
|
|
|
+ <div>
|
|
|
+ <el-button @click="onFile">下载模板</el-button>
|
|
|
+ <div style="fontSize:12px;color:#303133">*下载模板,填写信息</div>
|
|
|
+ </div>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="报价方式" prop="priceQuotes">
|
|
|
- <el-radio v-model="form.priceQuotes" :label="1">总价</el-radio>
|
|
|
- <el-radio v-model="form.priceQuotes" :label="2">单价</el-radio>
|
|
|
+
|
|
|
+ <el-form-item label="备注" prop="remarks">
|
|
|
+ <el-input
|
|
|
+ v-model="form.tenderRemark"
|
|
|
+ type="textarea"
|
|
|
+ style="width: 80%;"
|
|
|
+ :autosize="{ minRows: 2, maxRows: 10}"
|
|
|
+ placeholder="请输入内容"
|
|
|
+ maxlength="200"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
+
|
|
|
<el-form-item label="发布时间" prop="startTime">
|
|
|
<!-- <el-date-picker
|
|
|
v-model="form.startTime"
|
|
@@ -158,10 +239,11 @@
|
|
|
<el-date-picker
|
|
|
v-model="bidDate"
|
|
|
type="datetimerange"
|
|
|
+ style="width:80%"
|
|
|
size="mini"
|
|
|
range-separator="~"
|
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
- :default-time="['00:00:00', '15:00:00']"
|
|
|
+ :default-time="['00:00:00', '23:59:59']"
|
|
|
start-placeholder="开始日期"
|
|
|
end-placeholder="结束日期"
|
|
|
@change="oncustom"
|
|
@@ -175,74 +257,42 @@
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <!-- 详情 -->
|
|
|
- <el-dialog :append-to-body="true" :visible.sync="viewDialog" title="投标详情" width="90%" center>
|
|
|
- <el-table center :data="Paramdata" style="width: 100%;">
|
|
|
-
|
|
|
- <el-table-column prop="customerName" label="客户名称" show-overflow-tooltip="true" align="center" />
|
|
|
-
|
|
|
- <el-table-column label="报价方式" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-tag v-if="scope.row.priceQuotes == 1" color="#5783E6" style="border-color:#5783E6" effect="dark">总价</el-tag>
|
|
|
- <el-tag v-if="scope.row.priceQuotes == 2" effect="dark" color="#82C497" style="border-color:#82C497">单价</el-tag>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
+
|
|
|
+ <div class="goodsNameCss">
|
|
|
+ <!-- 物流详情 -->
|
|
|
+ <ckTender ref="ckTender"/>
|
|
|
+ <!-- 销售详情 -->
|
|
|
+ <ckTender1 ref="ckTender1"></ckTender1>
|
|
|
+ <!-- 原料 -->
|
|
|
+ <ckTender2 ref="ckTender2"></ckTender2>
|
|
|
+ <!-- 加工承揽-->
|
|
|
+ <ckTender3 ref="ckTender3"></ckTender3>
|
|
|
+
|
|
|
+ </div>
|
|
|
|
|
|
- <el-table-column prop="price" :show-overflow-tooltip="true" label="报价金额" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div>
|
|
|
- {{ scope.row.price | toThousandFilter }}
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="remarks" label="备注" :show-overflow-tooltip="true" align="center" />
|
|
|
- <el-table-column prop="appendix" label="附件" align="center" width="100">
|
|
|
- <template slot-scope="scope">
|
|
|
- <!-- <el-link type="primary" :href="scope.row.appendix">查看</el-link> -->
|
|
|
- <el-button type="text" @click="onLoad(scope.row.appendix)">下载</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="createTime" label="投标时间" align="center" />
|
|
|
- <el-table-column prop="userName" label=" 投标帐号" align="center" />
|
|
|
- <el-table-column prop="status" label=" 投标结果" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-tag v-if="scope.row.status == 0" type="warning">已提交</el-tag>
|
|
|
- <el-tag v-if="scope.row.status == 1" type="success">已中标</el-tag>
|
|
|
- <el-tag v-if="scope.row.status == 2" type="danger">未中标</el-tag>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
-
|
|
|
- </el-table>
|
|
|
- <div class="pagination">
|
|
|
- <el-pagination
|
|
|
- :current-page.sync="param.page"
|
|
|
- :page-size="param.size"
|
|
|
- layout="total, sizes, prev, pager, next, jumper"
|
|
|
- :total="total1"
|
|
|
- :page-sizes="[10, 20, 30, 50]"
|
|
|
- background
|
|
|
- @size-change="handleSizeChangeParam"
|
|
|
- @current-change="handleCurrentChangeParam"
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="viewDialog = false">取消</el-button>
|
|
|
- <el-button :loading="loading" type="primary" @click="viewDialog = false">确认</el-button>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { getTableList, getQueryId, getQueryAdd, getQueryEdit, getQueryDelete, loadCustomer } from '@/api/bid'
|
|
|
+import { getTableList, getQueryId, getQueryAdd, getQueryEdit, getQueryDelete, loadCustomer,apiFile,getSaleId } from '@/api/bid'
|
|
|
import { Notification, MessageBox } from 'element-ui'
|
|
|
+import ckTender1 from "./tender1/tender.vue"
|
|
|
+import ckTender from "./tender/tender.vue"
|
|
|
+import ckTender2 from "./tender2/tender.vue"
|
|
|
+import ckTender3 from "./tender3/tender.vue"
|
|
|
export default {
|
|
|
+ components:{
|
|
|
+ckTender1,
|
|
|
+ckTender2,
|
|
|
+ckTender3,
|
|
|
+ ckTender
|
|
|
+ },
|
|
|
data() {
|
|
|
const checkTel = (rule, value, callback) => {
|
|
|
- console.log(this.form.appendix)
|
|
|
+ console.log(this.form.fileUrl)
|
|
|
console.log(value, 'value')
|
|
|
- if (this.form.appendix == null || this.form.appendix == '') {
|
|
|
+ if (this.form.fileUrl == null || this.form.fileUrl == '') {
|
|
|
callback(new Error('请选择附件'))
|
|
|
console.log('没过')
|
|
|
} else {
|
|
@@ -251,10 +301,16 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
return {
|
|
|
+ showType:false,
|
|
|
form: {
|
|
|
+ tenderType:"",
|
|
|
+ tenderRule:"",
|
|
|
+ fileUrl:""
|
|
|
},
|
|
|
+ applyDateStart:[],
|
|
|
data: [],
|
|
|
fileList: [],
|
|
|
+ fileData:{},
|
|
|
BASE_API: process.env.BASE_API,
|
|
|
dialog: false,
|
|
|
delLoading: false,
|
|
@@ -265,41 +321,113 @@ export default {
|
|
|
pageSize: 10,
|
|
|
total: 0, // 总数量
|
|
|
rules: {
|
|
|
- title: [
|
|
|
+ tenderTitle: [
|
|
|
{ required: true, message: '标题不为空', trigger: 'blur' }
|
|
|
],
|
|
|
- priceQuotes: [
|
|
|
- { required: true, message: '请选择报价方式', trigger: 'blur' }
|
|
|
+ tenderRule: [
|
|
|
+ { required: true, message: '请选择招标规则', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ tenderType: [
|
|
|
+ { required: true, message: '请选择投标类型', trigger: 'blur' }
|
|
|
],
|
|
|
- appendix: [
|
|
|
+ fileUrl: [
|
|
|
{ validator: checkTel, trigger: 'change' }
|
|
|
- ]
|
|
|
+ ],
|
|
|
// startTime: [
|
|
|
// { type:"array",required: true, message: '发布时间不为空', trigger: 'blur' }
|
|
|
// ]
|
|
|
},
|
|
|
+ tenderType:[
|
|
|
+ {id:1,name:"物流",value:"logistics"},
|
|
|
+ {id:2,name:"原料",value:"raw"},
|
|
|
+ {id:3,name:"销售",value:"sale"},
|
|
|
+ {id:4,name:"加工承揽",value:"processing"},
|
|
|
+ ],
|
|
|
+ tenderRule:[
|
|
|
+ {id:1,name:"价低者得"},
|
|
|
+ {id:2,name:"价高者得"},
|
|
|
+
|
|
|
+ ],
|
|
|
queryTypeOptions: [
|
|
|
{ key: 'name', display_name: '字典名称' },
|
|
|
{ key: 'remark', display_name: '描述' }
|
|
|
],
|
|
|
query: {
|
|
|
type: '',
|
|
|
- value: ''
|
|
|
+ value: '',
|
|
|
+ tenderRule:"",
|
|
|
+ tenderType:"",
|
|
|
+ startTime:"",
|
|
|
+ endTime:""
|
|
|
},
|
|
|
param: {
|
|
|
- page: 1,
|
|
|
+ current: 1,
|
|
|
size: 10
|
|
|
},
|
|
|
total1: 0,
|
|
|
Paramdata: [],
|
|
|
bidDate: [],
|
|
|
- buton: false
|
|
|
+ buton: false,
|
|
|
+ fileUrl:"",
|
|
|
+ tableLoading:false,
|
|
|
+ dialogTableVisible:false,
|
|
|
+ goodsName:"",
|
|
|
+ activeName:"first",
|
|
|
+ bidInfo:{},
|
|
|
+ saleViewDialog:false,
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
|
this.getDictData()
|
|
|
+ console.log( process.env.BASE_API+" process.env.BASE_API")
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 投标详情 向父元素传递数据
|
|
|
+ costPlannedAmountChange(val){
|
|
|
+ console.log(val)
|
|
|
+
|
|
|
+ this.dialogTableVisible = true
|
|
|
+ setTimeout(() => {
|
|
|
+ this.goodsName = val.goodsName
|
|
|
+ this.$refs.ckDialog.priceData = val
|
|
|
+ this.$refs.ckDialog.getTenantList()
|
|
|
+ console.log(this.$refs.ckDialog)
|
|
|
+ }, 300);
|
|
|
+ },
|
|
|
+ onApplyDate(){
|
|
|
+ let startTime
|
|
|
+ let endTime
|
|
|
+ if(this.applyDateStart != null){
|
|
|
+ this.query.startTime =this.applyDateStart[0]
|
|
|
+ this.query.endTime = this.applyDateStart[1]
|
|
|
+ }else{
|
|
|
+ this.query.startTime =""
|
|
|
+ this.query.endTime =""
|
|
|
+ }
|
|
|
+ this.handleFind()
|
|
|
+ },
|
|
|
+ onShowType(){
|
|
|
+ console.log(this.form.tenderType+"this.form.tenderType ")
|
|
|
+ console.log(this.form.tenderRule+"this.form.tenderRule")
|
|
|
+ if(this.form.tenderType ==undefined || this.form.tenderRule == undefined){
|
|
|
+ this.showType = false
|
|
|
+ }else{
|
|
|
+ this.showType = true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onTenderType(value,index){
|
|
|
+ console.log(value)
|
|
|
+ // let value= ""
|
|
|
+ this.onShowType()
|
|
|
+ let tenderType =this.tenderType
|
|
|
+ // id减一得到下标
|
|
|
+ let data = tenderType[value - 1].value
|
|
|
+ apiFile(data).then((res)=>{
|
|
|
+ console.log(res)
|
|
|
+ this.fileUrl = res.data.data.path
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
// 发布时间
|
|
|
oncustom() {
|
|
|
console.log(this.bidDate)
|
|
@@ -330,24 +458,76 @@ export default {
|
|
|
// 获取详情
|
|
|
getDictData: function() {
|
|
|
this.loading = true
|
|
|
- // const params = new URLSearchParams()
|
|
|
- // params.append('current', this.currentPage)
|
|
|
- // params.append('size', this.pageSize)
|
|
|
- const data = {
|
|
|
- page: this.currentPage,
|
|
|
- size: this.pageSize,
|
|
|
- title: this.query.value
|
|
|
- }
|
|
|
- getTableList(data).then(res => {
|
|
|
+
|
|
|
+ const params = new URLSearchParams()
|
|
|
+ params.append('current', this.currentPage)
|
|
|
+ params.append('size', this.pageSize)
|
|
|
+ params.append('tenderType', this.query.tenderType)
|
|
|
+ params.append('tenderTitle', this.query.value)
|
|
|
+ params.append('tenderRule', this.query.tenderRule)
|
|
|
+ params.append('startTime',this.query.startTime )
|
|
|
+ params.append('endTime', this.query.endTime)
|
|
|
+
|
|
|
+ // const data = {
|
|
|
+ // page: this.currentPage,
|
|
|
+ // size: this.pageSize,
|
|
|
+ // title: this.query.value
|
|
|
+ // }
|
|
|
+
|
|
|
+ getTableList(params).then(res => {
|
|
|
console.log(res)
|
|
|
- this.data = res.data.data.records
|
|
|
+ // this.data = res.data.data.records
|
|
|
+ let data = res.data.data.records
|
|
|
+ console.log(new Date().valueOf(),"当前时间")
|
|
|
+ data.map((res)=>{
|
|
|
+ // 开始时间
|
|
|
+ let startTime = res.startTime
|
|
|
+ // 投标结束时间
|
|
|
+ let endTime = res.endTime
|
|
|
+
|
|
|
+ const date = new Date(startTime)
|
|
|
+ const modify = new Date(endTime)
|
|
|
+
|
|
|
+ const start = date.valueOf() //开始时间
|
|
|
+ const end = modify.valueOf() //投标结束时间
|
|
|
+ const time = new Date().valueOf() //当前时间
|
|
|
+ console.log(start,"start")
|
|
|
+ console.log(end,"end")
|
|
|
+ if(res.isInvalid == 2){
|
|
|
+ res.status = 3
|
|
|
+ console.log("作废了")
|
|
|
+ }else if(time < start){
|
|
|
+ res.status = 4
|
|
|
+ console.log("当前时间小于开始时间,未开始")
|
|
|
+ }else if(time > start && time < end){
|
|
|
+ res.status = 1
|
|
|
+ console.log("当前时间大于开始时间并且小于结束时间,进行中")
|
|
|
+ }else if(time > end){
|
|
|
+ res.status = 2
|
|
|
+ console.log("当前时间大于结束时间,已结束")
|
|
|
+ }
|
|
|
+
|
|
|
+ return res
|
|
|
+ })
|
|
|
+ this.data = data
|
|
|
this.total = res.data.data.total
|
|
|
this.loading = false
|
|
|
})
|
|
|
},
|
|
|
+ // 点击时候
|
|
|
+ handleUpload(){
|
|
|
+ console.log("我被固定了")
|
|
|
+ if(this.form.tenderType ==undefined || this.form.tenderRule == undefined){
|
|
|
+ this.$message({
|
|
|
+ message: '请先选择招标类型和招标规则',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // return false
|
|
|
+ },
|
|
|
// 文件移除的时候
|
|
|
handleRemove(file, fileList) {
|
|
|
- this.form.appendix = ''
|
|
|
+ this.form.fileUrl = ''
|
|
|
console.log(file, fileList, this.fileList, '移出')
|
|
|
},
|
|
|
// 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用
|
|
@@ -356,7 +536,8 @@ export default {
|
|
|
if (file.response) {
|
|
|
console.log(file.response, 'file')
|
|
|
if (file.response.code == '200') {
|
|
|
- this.form.appendix = file.response.data
|
|
|
+ this.form.fileUrl = file.response.data.filePath
|
|
|
+ this.form.tenderParentId = file.response.data.tenderParentId
|
|
|
} else {
|
|
|
Notification.error({
|
|
|
title: file.response.msg,
|
|
@@ -368,8 +549,16 @@ export default {
|
|
|
},
|
|
|
// 点击文件列表中已上传的文件时的钩子
|
|
|
handlePreview(file) {
|
|
|
- console.log(file, 'file1')
|
|
|
-
|
|
|
+ console.log(file, 'file21')
|
|
|
+ // 判断添加 还是 编辑
|
|
|
+ let officeUrl
|
|
|
+ if(this.isAdd){
|
|
|
+ officeUrl = 'http://view.officeapps.live.com/op/view.aspx?src='+file.response.data.filePath
|
|
|
+ }else{
|
|
|
+ officeUrl = 'http://view.officeapps.live.com/op/view.aspx?src='+this.form.fileUrl
|
|
|
+ }
|
|
|
+// 在新窗口打开编码后 的链接
|
|
|
+window.open(officeUrl,'_target')
|
|
|
// window.location.href = file.url
|
|
|
},
|
|
|
handleExceed(files, fileList) {
|
|
@@ -383,6 +572,17 @@ export default {
|
|
|
beforeRemove(file, fileList) {
|
|
|
return this.$confirm(`确定移除 ${file.name}?`)
|
|
|
},
|
|
|
+ onFile(){
|
|
|
+ // let url = "https://fire-development.oss-cn-beijing.aliyuncs.com/bid/dev/客户批量上传模板.xlsx"
|
|
|
+ if(this.form.tenderType ==undefined || this.form.tenderRule == undefined){
|
|
|
+ this.$message({
|
|
|
+ message: '请先选择招标类型和招标规则',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ window.open(this.fileUrl, '_self');
|
|
|
+ }
|
|
|
+ },
|
|
|
|
|
|
// 字典名称提交动作
|
|
|
doSubmit() {
|
|
@@ -444,10 +644,12 @@ export default {
|
|
|
end.setTime(start.getTime() + 3600 * 1000 * 24 * 1)
|
|
|
console.log(this.formatDate(end))
|
|
|
this.form.startTime = this.formatDate(start) + ' 00:00:00'
|
|
|
- this.form.endTime = this.formatDate(end) + ' 15:00:00'
|
|
|
+ this.form.endTime = this.formatDate(end) + ' 23:59:59'
|
|
|
this.bidDate = [this.form.startTime, this.form.endTime]
|
|
|
- this.form.appendix = null
|
|
|
+ this.form.fileUrl = null
|
|
|
this.fileList = []
|
|
|
+ // 添加弹框中的附件,进来要隐藏
|
|
|
+ this.showType = false
|
|
|
this.dialog = true
|
|
|
if (this.$refs['form']) {
|
|
|
this.$refs['form'].resetFields()
|
|
@@ -463,39 +665,148 @@ export default {
|
|
|
this.bidDate = [data.startTime, data.endTime]
|
|
|
// this.form.
|
|
|
// let name = data.appendix.lastIndexOf('/') ;
|
|
|
- if (data.appendix) {
|
|
|
- let name = data.appendix.split('tender/')
|
|
|
+ if (data.fileUrl) {
|
|
|
+ let name = data.fileUrl.split('/')
|
|
|
name = name.pop()
|
|
|
// let name = data.appendix.replace(/(.*\/)*([^.]+).*/ig, "$2");
|
|
|
- this.fileList = [{ name: name, url: data.appendix }]
|
|
|
+ this.fileList = [{ name: name, url: data.fileUrl }]
|
|
|
}
|
|
|
-
|
|
|
+ // 编辑弹框中的附件,进来要展示
|
|
|
+ this.showType = true
|
|
|
this.dialog = true
|
|
|
this.isAdd = false
|
|
|
-
|
|
|
+ // 下载模板类型
|
|
|
+ let tenderValue = this.tenderType[data.tenderType-1].value
|
|
|
+ apiFile(tenderValue).then((res)=>{
|
|
|
+ console.log(res)
|
|
|
+ this.fileUrl = res.data.data.path
|
|
|
+ })
|
|
|
console.log(data)
|
|
|
+ },
|
|
|
+ handleClick(row,val){
|
|
|
+ console.log(row,val)
|
|
|
+ if(row.name == "second"){
|
|
|
+ this.$refs.ckTable.tenderParentId = this.param.tenderParentId
|
|
|
+ this.$refs.ckTable.getTenantList()
|
|
|
+ }
|
|
|
},
|
|
|
// 详情
|
|
|
handleView(row) {
|
|
|
- this.param.tenderId = row.id
|
|
|
- this.param.page = 1
|
|
|
- this.getParam()
|
|
|
- this.viewDialog = true
|
|
|
+
|
|
|
+ let tenderType = row.tenderType
|
|
|
+ if(tenderType == 1){
|
|
|
+ this.$refs.ckTender.viewDialog = true
|
|
|
+ let param = {
|
|
|
+ tenderParentId:row.tenderParentId,
|
|
|
+ current: 1,
|
|
|
+ size: 10
|
|
|
+ }
|
|
|
+ setTimeout(() => {
|
|
|
+
|
|
|
+ this.$refs.ckTender.activeName="first"
|
|
|
+ this.$refs.ckTender.param = param
|
|
|
+ this.$refs.ckTender.bidInfo = row
|
|
|
+ this.$refs.ckTender.applyDateStart = []
|
|
|
+ // this.$refs.ckTender.param.current = 1
|
|
|
+ this.$refs.ckTender.getParam()
|
|
|
+ console.log("物流")
|
|
|
+ }, 300);
|
|
|
+ }else if(tenderType == 2){
|
|
|
+ this.$refs.ckTender2.viewDialog = true
|
|
|
+ let param = {
|
|
|
+ tenderParentId:row.tenderParentId,
|
|
|
+ current: 1,
|
|
|
+ size: 10
|
|
|
+ }
|
|
|
+ setTimeout(() => {
|
|
|
+ this.$refs.ckTender2.activeName="first"
|
|
|
+ this.$refs.ckTender2.param = param
|
|
|
+ this.$refs.ckTender2.bidInfo = row
|
|
|
+ this.$refs.ckTender2.applyDateStart = []
|
|
|
+ this.$refs.ckTender2.getParam()
|
|
|
+ console.log("原料")
|
|
|
+ }, 300);
|
|
|
+ }else if(tenderType == 3){
|
|
|
+ this.$refs.ckTender1.viewDialog = true
|
|
|
+ let param = {
|
|
|
+ tenderParentId:row.tenderParentId,
|
|
|
+ current: 1,
|
|
|
+ size: 10
|
|
|
+ }
|
|
|
+ setTimeout(() => {
|
|
|
+ this.$refs.ckTender1.activeName="first"
|
|
|
+ this.$refs.ckTender1.param = param
|
|
|
+ this.$refs.ckTender1.bidInfo = row
|
|
|
+ this.$refs.ckTender1.applyDateStart = []
|
|
|
+ this.$refs.ckTender1.getParam()
|
|
|
+ }, 300);
|
|
|
+ console.log("销售")
|
|
|
+ }else if(tenderType == 4){
|
|
|
+ this.$refs.ckTender3.viewDialog = true
|
|
|
+ let param = {
|
|
|
+ tenderParentId:row.tenderParentId,
|
|
|
+ current: 1,
|
|
|
+ size: 10
|
|
|
+ }
|
|
|
+ setTimeout(() => {
|
|
|
+ this.$refs.ckTender3.activeName="first"
|
|
|
+ this.$refs.ckTender3.param = param
|
|
|
+ this.$refs.ckTender3.bidInfo = row
|
|
|
+ this.$refs.ckTender3.applyDateStart = []
|
|
|
+ this.$refs.ckTender3.getParam()
|
|
|
+ }, 300);
|
|
|
+ console.log("加工承揽")
|
|
|
+ }
|
|
|
},
|
|
|
- getParam() {
|
|
|
+ getParam(tenderParentId) {
|
|
|
const data = this.param
|
|
|
+ this.tableLoading = true
|
|
|
+ // getSaleId
|
|
|
+ // this.
|
|
|
getQueryId(data).then((res) => {
|
|
|
console.log(res.data.data.records, '')
|
|
|
- this.Paramdata = res.data.data.records
|
|
|
+ let data = res.data.data.records
|
|
|
+ data.map((res)=>{
|
|
|
+ // 开始时间
|
|
|
+ let startTime = res.startTime
|
|
|
+ // 投标结束时间
|
|
|
+ let endTime = res.endTime
|
|
|
+
|
|
|
+ const date = new Date(startTime)
|
|
|
+ const modify = new Date(endTime)
|
|
|
+
|
|
|
+ const start = date.valueOf() //开始时间
|
|
|
+ const end = modify.valueOf() //投标结束时间
|
|
|
+ const time = new Date().valueOf() //当前时间
|
|
|
+ console.log(start,"start")
|
|
|
+ console.log(end,"end")
|
|
|
+ if(res.isInvalid == 2){
|
|
|
+ res.status = 3
|
|
|
+ console.log("作废了")
|
|
|
+ }else if(time < start){
|
|
|
+ res.status = 4
|
|
|
+ console.log("当前时间小于开始时间,未开始")
|
|
|
+ }else if(time > start && time < end){
|
|
|
+ res.status = 1
|
|
|
+ console.log("当前时间大于开始时间并且小于结束时间,进行中")
|
|
|
+ }else if(time > end){
|
|
|
+ res.status = 2
|
|
|
+ console.log("当前时间大于结束时间,已结束")
|
|
|
+ }
|
|
|
+
|
|
|
+ return res
|
|
|
+ })
|
|
|
+ this.Paramdata = data
|
|
|
+ this.tableLoading = false
|
|
|
this.total1 = res.data.data.total
|
|
|
})
|
|
|
},
|
|
|
// 删除操作
|
|
|
- subDelete(val) {
|
|
|
- const data = {
|
|
|
- id: val
|
|
|
- }
|
|
|
- getQueryDelete(data).then(res => {
|
|
|
+ subDelete(tenderParentId,tenderType) {
|
|
|
+ // const data = {
|
|
|
+ // id: val
|
|
|
+ // }
|
|
|
+ getQueryDelete(tenderType,tenderParentId).then(res => {
|
|
|
if (res.data.code === 200) {
|
|
|
this.$message({ message: '已作废', type: 'success' })
|
|
|
this.getDictData()
|
|
@@ -503,7 +814,7 @@ export default {
|
|
|
}).catch(err => {
|
|
|
console.log(err.response.data.message)
|
|
|
})
|
|
|
- this.$refs[val].doClose()
|
|
|
+ this.$refs[tenderParentId].doClose()
|
|
|
},
|
|
|
// 换页
|
|
|
handleCurrentChange: function(val) {
|
|
@@ -515,7 +826,7 @@ export default {
|
|
|
this.getDictData()
|
|
|
},
|
|
|
handleCurrentChangeParam(val) {
|
|
|
- this.param.page = val
|
|
|
+ this.param.current = val
|
|
|
this.getParam()
|
|
|
},
|
|
|
handleSizeChangeParam(val) {
|
|
@@ -526,7 +837,7 @@ export default {
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
-<style scoped>
|
|
|
+<style scoped lang="scss">
|
|
|
/* 去掉上传附件时候的过度效果 */
|
|
|
::v-deep .el-upload-list__item{transition: none !important;}
|
|
|
::v-deep .el-textarea__inner{
|
|
@@ -535,4 +846,69 @@ export default {
|
|
|
.padding /deep/ .el-input--medium .el-input__inner {
|
|
|
padding-right: 56px;
|
|
|
}
|
|
|
+/deep/ .el-upload-list__item-name {
|
|
|
+ width: 150px;
|
|
|
+}
|
|
|
+.ckTable{
|
|
|
+ width: 100%;
|
|
|
+ border: #eee;
|
|
|
+ text-align: center;
|
|
|
+ tr,td{
|
|
|
+ border: 0.5px solid#dfe6ec;
|
|
|
+ line-height: 23px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+.paginationParam{
|
|
|
+ // bottom: 0;
|
|
|
+ // left: 0;
|
|
|
+ line-height: 80px;
|
|
|
+ width: 100%;
|
|
|
+ // left: 45%;
|
|
|
+ // text-align: right;
|
|
|
+ z-index: 999;
|
|
|
+ background: #fff;
|
|
|
+}
|
|
|
+/deep/ .el-tabs__item{
|
|
|
+ font-size: 16px !important;
|
|
|
+ // padding: 35px ;
|
|
|
+}
|
|
|
+.el-card {
|
|
|
+ border: 0px solid #fff;
|
|
|
+}
|
|
|
+.clearfix {
|
|
|
+ line-height: 20px;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 600;
|
|
|
+ color: #409EFF;
|
|
|
+}
|
|
|
+/deep/.el-dialog.is-fullscreen {
|
|
|
+
|
|
|
+ background-color: #f5f7f9;
|
|
|
+}
|
|
|
+.box-card{
|
|
|
+ margin-bottom: 20px;
|
|
|
+ .row-bg{
|
|
|
+ padding: 15px 40px 0 40px;
|
|
|
+ .flex_text{
|
|
|
+ line-height: 50px;
|
|
|
+ color: #8C8C8C;
|
|
|
+ font-size: 14px;
|
|
|
+ // border:1px solid red;
|
|
|
+ // font-weight: 600;
|
|
|
+ }
|
|
|
+ .flex_name{
|
|
|
+ font-size: 14px;
|
|
|
+ padding-left: 25px;
|
|
|
+ color: #575757;
|
|
|
+ font-weight: 550;
|
|
|
+ }
|
|
|
+}
|
|
|
+}
|
|
|
+/deep/ .el-card__body{
|
|
|
+ padding: 20px 0;
|
|
|
+}
|
|
|
+/deep/.el-tabs__nav-wrap::after {
|
|
|
+
|
|
|
+ background-color: #dfe4ed00;
|
|
|
+}
|
|
|
</style>
|