Commit 861ae640 authored by 张冬's avatar 张冬

编辑

parent a64b6047
......@@ -212,10 +212,11 @@ export function makeFile(data) {
})
}
// 撤回投标文件
export function revocationBidbFile(bidFileId) {
export function revocationBidbFile(params) {
return request({
url: `tender/revocation/bidbFile/${bidFileId}`,
url: "tender/revocation/bidbFile",
method: 'put',
params:params
})
}
......
......@@ -8,20 +8,20 @@
<div class="content">
<div class="message">
<div class="flex-between">
<div>项目编号:ZBXM3456789456789</div>
<div>项目名称:大楼翻新</div>
<div>项目编号:{{projectCode}}</div>
<div>项目名称:{{projectName}}</div>
</div>
<div class="flex">
<div class="adjustment"> 评价报告</div>
<div class="adjustment">评价报告</div>
<Upload :limit="1" :max="100" tip="最多上传一个文件,每个文件不超过100M。" @input="getfile"></Upload>
</div>
<div class="flex">
<div class="adjustment ">评标报告扫描件</div>
<div class="adjustment">评标报告扫描件</div>
<Upload :limit="1" :max="100" tip="最多上传5个文件,每个文件不超过100M。" @input="getfile1"></Upload>
</div>
<div class="flex-center" style="margin:100px 0">
<div class="flex-center" style="margin: 100px 0">
<el-button>取消</el-button>
<el-button type="primary" style="margin-left: 20px;" @click="submitData">提交</el-button>
<el-button type="primary" style="margin-left: 20px" @click="submitData">提交</el-button>
</div>
</div>
</div>
......@@ -29,10 +29,9 @@
</template>
<script>
import {bidFailed} from '@api/purchaser/bid'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import Upload from '@components/Upload/Upload.vue'
import { bidFailed } from '@api/purchaser/bid';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
import Upload from '@components/Upload/Upload.vue';
export default {
components: {
dataBreadcrumb,
......@@ -41,67 +40,69 @@ export default {
data() {
return {
breads: ['招标管理', '招标项目管理', '工作台'],
file:[],
file1:[]
}
file: [],
file1: [],
projectName: '',
projectCode: ''
};
},
created() {
this.projectCode = localStorage.getItem('projectCode');
this.projectName = localStorage.getItem('projectName');
},
methods: {
//
getfile(val){
this.file=val
getfile(val) {
this.file = val;
},
getfile1(val){
this.file1=val
getfile1(val) {
this.file1 = val;
},
// 提交
async submitData() {
try {
let message={}
let filePOList=[];
let file=this.file;
let file1=this.file1;
for(let item of file){
item.type=1
};
for(let item1 of file1){
item1.type=2
};
filePOList=file.concat(file1)
message.filePOList=filePOList;
message.projectId=localStorage.getItem("projectId")
const {
code,
msg
} = await bidFailed(message)
if(code==200){
let message = {};
let filePOList = [];
let file = this.file;
let file1 = this.file1;
for (let item of file) {
item.type = 1;
}
for (let item1 of file1) {
item1.type = 2;
}
filePOList = file.concat(file1);
message.filePOList = filePOList;
message.projectId = localStorage.getItem('projectId');
const { code, msg } = await bidFailed(message);
if (code == 200) {
this.$message({
message: msg,
type: 'success',
duration:1500
})
setTimeout(()=>{
this.$router.go(-1)
},1500)
duration: 1500
});
setTimeout(() => {
this.$router.go(-1);
}, 1500);
}
} catch (e) {
console.log(e)
console.log(e);
}
}
}
}
};
</script>
<style scoped>
.message{
width:50%;
margin:50px auto
.message {
width: 50%;
margin: 50px auto;
}
.message>div{
.message > div {
margin-bottom: 20px;
}
.adjustment{
.adjustment {
width: 120px;
text-align: center;
}
......
......@@ -651,6 +651,7 @@
// })
// 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常
window.onbeforeunload = function() {
console.log("窗口关闭")
this.websocket.close()
}
},
......@@ -660,22 +661,12 @@
this.websocket.send(content)
}
},
// watch: {
// chatlog() {
// console.log("chatlog change");
// this.$nextTick(() => {
// var container = this.$el.querySelector("#chatContainer");
// console.log(container);
// container.scrollTop = container.scrollHeight;
// })
// // document.getElementById('chatContainer').scrollTop = document.getElementById('chatContainer').scrollHeight+150;
// }
// },
destroyed() {
//清除定时器
clearInterval(this.timer);
clearInterval(this.timer1);
console.log("定时器关闭")
this.websocket.close()
}
}
......
......@@ -38,6 +38,10 @@ export default {
{
label: '单位名称',
prop: 'companyName'
},
{
label: '联系人',
prop: 'contactsName'
},
{
label: '手机',
......
......@@ -11,15 +11,18 @@
</template>
</el-table-column>
</dataTable>
<div class="centerButton">
<el-button @click="back">返回</el-button>
</div>
</div>
</div>
</template>
<script>
import { clarifyInquirylist} from '@api/supply/bid'
import dataTable from '@components/nopageTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import changeNav from '@components/changeNav.vue'
import { clarifyInquirylist } from '@api/supply/bid';
import dataTable from '@components/nopageTable.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
import changeNav from '@components/changeNav.vue';
export default {
name: 'bidingList',
components: {
......@@ -29,10 +32,11 @@ export default {
},
data() {
return {
navs:["评标问题澄清"],
navs: ['评标问题澄清'],
breads: ['投标管理', '我参与的项目', '工作台 '],
tableData: [],
columns: [{
columns: [
{
label: '澄清标题',
prop: 'title'
},
......@@ -52,49 +56,47 @@ export default {
{
slot: 'operate'
}
], // 操作列
}
] // 操作列
};
},
methods: {
back() {
this.$router.go(-1);
},
reply(questionId) {
this.$router.push(`/supply/bid/joinProject/bidEvaluation/reply?questionId=${questionId}`)
this.$router.push(`/supply/bid/joinProject/bidEvaluation/reply?questionId=${questionId}`);
},
see(row){
see(row) {
this.$router.push({
path:"/supply/bid/joinProject/bidEvaluation/see",
query:{
questionId:row.questionId,
replyId:row.replyId
path: '/supply/bid/joinProject/bidEvaluation/see',
query: {
questionId: row.questionId,
replyId: row.replyId
}
})
});
},
async getclarifyInquirylist() {
let message={}
message.companyId=localStorage.getItem("companyId")
message.projectId=localStorage.getItem("projectId")
const {
data,
code
} = await clarifyInquirylist(message)
if(code==200){
for (let item of data){
if(item.replyId){
item.state="已回复"
}else{
item.state="未回复"
let message = {};
message.companyId = localStorage.getItem('companyId');
message.projectId = localStorage.getItem('projectId');
const { data, code } = await clarifyInquirylist(message);
if (code == 200) {
for (let item of data) {
if (item.replyId) {
item.state = '已回复';
} else {
item.state = '未回复';
}
}
this.tableData=data
this.tableData = data;
}
}
},
created() {
this.getclarifyInquirylist();
}
}
};
</script>
<style scoped>
</style>
......@@ -279,46 +279,49 @@ export default {
},
// websocket
createWebSocket() {
let token = localStorage.getItem('token');
let projectId = localStorage.getItem('projectId');
this.websocket = new WebSocket(`ws:${openUrl}/webSocket/${projectId}/${token}`);
let token = localStorage.getItem("token")
let projectId = localStorage.getItem("projectId")
this.websocket = new WebSocket(`ws:${openUrl}/webSocket/${projectId}/${token}`)
// this.websocket = new WebSocket('ws://192.168.3.35:8085/webSocket/' + projectId + "/" + token)
// this.websocket = new WebSocket('ws://60.205.251.80:8085/webSocket/' + projectId +"/"+token )
// 连接成功时
this.websocket.onopen = () => {};
this.websocket.onmessage = (event) => {
this.websocket.onopen = () => {}
this.websocket.onmessage = event => {
// 后端发送的消息在event.data中
let data = JSON.parse(event.data);
console.log(data);
console.log(data)
if (data.type == 1) {
if (data.userId == this.myId) {
data.mine = true;
} else {
data.mine = false;
if(data.userId==this.myId){
data.mine=true
}else{
data.mine=false
}
const msgObj = {
date: data.time,
text: {
text: data.chatContent
"date":data.time ,
"text": {
"text": data.chatContent
},
mine: data.mine,
name: data.name,
img: 'http://hsz1997.oss-cn-beijing.aliyuncs.com/img/1603292025286_67c099c6tou.jpg'
};
this.dialogueList.push(msgObj);
"mine": data.mine,
"name": data.name,
"img": "http://hsz1997.oss-cn-beijing.aliyuncs.com/img/1603292025286_67c099c6tou.jpg"
}
this.dialogueList.push(msgObj)
} else {
this.halList.push(data);
this.halList.push(data)
}
}
this.websocket.onclose = function() {
console.log('关闭了')
}
};
this.websocket.onclose = function () {
console.log('关闭了');
};
// 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常
(window.onbeforeunload = function () {
this.websocket.close();
}),
// 路由跳转时结束websocket链接
this.$router.afterEach(function () {
this.websocket.close();
});
// this.$router.afterEach(function() {
// this.websocket.close()
// })
// 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常
window.onbeforeunload = function() {
console.log("窗口关闭")
this.websocket.close()
}
},
bindEnter() {
const content = this.content;
......@@ -377,7 +380,14 @@ export default {
this.storagedecodeTime = Number(data.decodeTime);
this.storagesignatureTime = Number(data.signatureTime);
} else {
this.$message.error(msg);
this.$message({
message: msg,
type: 'error',
duration: 3000
})
setTimeout(() => {
this.$router.go(-1)
}, 3000)
}
var { data, code } = await signdetail(projectId);
if (code == 200) {
......@@ -435,6 +445,7 @@ export default {
// },
destroyed() {
//清除定时器
clearInterval(this.timer);
clearInterval(this.timer1);
this.websocket.close();
}
......
......@@ -198,10 +198,13 @@
// 撤回
async withdraw() {
try {
let message={}
message.projectId=localStorage.getItem("projectId")
message.bidFileId=this.form.bidbookId
const {
msg,
code
} = await revocationBidbFile(this.form.bidbookId)
} = await revocationBidbFile(message)
if (code == 200) {
this.$message({
message: msg,
......
......@@ -216,9 +216,9 @@ export default {
newlabel = label;
} else if (status == 1) {
newlabel = label;
newlabel = label.replace('发布', '编辑');
newlabel = label.replace('递交', '编辑');
} else {
newlabel = label.replace('发布', '查看');
newlabel = label.replace('递交', '查看');
}
return newlabel;
},
......@@ -239,23 +239,12 @@ export default {
for (let item2 of data) {
if (item1.id == item2.buttonId) {
item1.bright = true;
if (item2.buttonId == 4 && item2.status == 2) {
item1.url = '/purchaser/bid/reviewed/SeeinquiryAnnouncement';
item1.label = '查看询价公告';
} else if (item2.buttonId == 5 && item2.status == 2) {
item1.url = '/purchaser/bid/reviewed/SeetenderAnnouncement';
item1.label = '查看招标公告';
} else if (item2.buttonId == 9 && item2.status == 2) {
item1.url = '/purchaser/bid/bidStage/seeBidSet';
item1.label = '开标设置查看';
} else {
item1.url = this.geturl(item1.url, item2.status);
item1.label = this.getlabel(item1.label, item2.status);
}
}
}
}
}
this.remark = data[0].remark;
} else {
this.$message.error(msg);
......
......@@ -16,7 +16,7 @@
</slot>
</priceDetail>
<!-- 报价弹窗 -->
<el-dialog :visible.sync="dialogFormVisible" title="报价" width="50%">
<el-dialog :visible.sync="dialogFormVisible" title="报价" width="1000px">
<dataTable :table-data="commoditylist" :columns="commoditycolumns">
<el-table-column slot="operate" label="报价" align="center" fixed="right" width="150">
<template slot-scope="scope">
......@@ -230,4 +230,14 @@ export default {
</script>
<style scoped>
.el-table::before {
z-index: inherit;
}
.table-fixed>.el-table__fixed-right {
height: 100% !important;
}
</style>
......@@ -7,354 +7,699 @@
</div>
<div class="othercontent">
<div>
<div class="describe ">
基本信息
</div>
<div>
<el-form ref="perfectForm" :model="perfectForm" :rules="rules" label-width="120px" inline>
<div class="describe">基本信息</div>
<div style="margin-left: 30px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" inline>
<el-form-item label="单位名称" prop="companyName" class="item">
<el-input v-model.trim="perfectForm.companyName" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-input
v-model="form.companyName"
placeholder="请输入单位名称"
style="width: 240px"
maxlength="30"
@keyup.native="$event.target.value = $event.target.value.replace(/^\s+|\s+$/gm, '')"
></el-input>
</el-form-item>
<el-form-item label="注册角色" prop="role" class="item">
<el-input v-model.trim="perfectForm.role" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-form-item label="注册角色" prop="type" class="item" >
<el-select v-model="form.type" placeholder="请输入选择" disabled>
<el-option label="采购商" :value="1"></el-option>
<el-option label="供应商" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="法人姓名" prop="legalPerson" class="item">
<el-input v-model.trim="perfectForm.legalPerson" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-form-item label="法人姓名" prop="legalPersonName" class="item">
<el-input
v-model="form.legalPersonName"
placeholder="请输入"
style="width: 240px"
maxlength="30"
@keyup.native="$event.target.value = $event.target.value.replace(/^\s+|\s+$/gm, '')"
></el-input>
</el-form-item>
<el-form-item label="法人电话" prop="personPhone" class="item">
<el-input v-model.trim="perfectForm.personPhone" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-form-item label="法人电话" prop="legalPersonPhone" class="item">
<el-input
v-model="form.legalPersonPhone"
placeholder="请输入"
style="width: 240px"
maxlength="11"
@keyup.native="$event.target.value = $event.target.value.replace(/^\s+|\s+$/gm, '')"
></el-input>
</el-form-item>
<el-form-item label="统一社会信用代码" prop="creditCode" class="item">
<el-input v-model.trim="perfectForm.creditCode" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-form-item label="统一社会信用代码" prop="socialCode" class="item">
<el-input
v-model="form.socialCode"
placeholder="请输入"
style="width: 240px"
maxlength="18"
@keyup.native="$event.target.value = $event.target.value.replace(/^\s+|\s+$/gm, '')"
></el-input>
</el-form-item>
<el-form-item label="单位性质" prop="nature" class="item">
<el-input v-model.trim="perfectForm.nature" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-form-item label="单位性质" prop="companyNature" class="item">
<el-select v-model="form.companyNature" placeholder="请选择">
<el-option v-for="item in companyNatures" :key="item.id" :label="item.name" :value="item.id"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="单位所在地" prop="companyLocal" class="item">
<el-input v-model.trim="perfectForm.companyLocal" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-form-item label="单位所在地" prop="location" class="item">
<el-input
v-model="form.location"
placeholder="请输入"
style="width: 240px"
maxlength="30"
@keyup.native="$event.target.value = $event.target.value.replace(/^\s+|\s+$/gm, '')"
></el-input>
</el-form-item>
<el-form-item label="行业类型" prop="type" class="item">
<el-input v-model.trim="perfectForm.type" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-form-item label="行业类型" prop="industryType" class="item">
<el-select v-model="form.industryType" placeholder="请选择">
<el-option v-for="item in belongTypes" :key="item.id" :label="item.name" :value="item.id"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="资信等级" prop="CreditRating" class="item">
<el-input v-model.trim="perfectForm.CreditRating" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-form-item label="开户银行名称" prop="bankName" class="item">
<el-input
v-model="form.bankName"
placeholder="请输入"
style="width: 240px"
maxlength="30"
@keyup.native="$event.target.value = $event.target.value.replace(/^\s+|\s+$/gm, '')"
></el-input>
</el-form-item>
<el-form-item label="开户银行名称" prop="bank" class="item">
<el-input v-model.trim="perfectForm.bank" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-form-item label="结算账号" prop="bankAccount" class="item">
<el-input
v-model="form.bankAccount"
placeholder="请输入"
style="width: 240px"
minlength="12"
maxlength="30"
></el-input>
</el-form-item>
<el-form-item label="开户行行号" prop="bankNumber" class="item">
<el-input v-model.trim="perfectForm.bankNumber" placeholder="请输入" style="width:240px"></el-input>
<el-form-item label="结算账号名" prop="bankAccountName" class="item">
<el-input
v-model="form.bankAccountName"
placeholder="请输入"
style="width: 240px"
minlength="2"
maxlength="30"
@keyup.native="$event.target.value = $event.target.value.replace(/^\s+|\s+$/gm, '')"
></el-input>
</el-form-item>
<el-form-item label="注册资本(万元)" prop="capital" class="item">
<el-input v-model.trim="perfectForm.capital" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-form-item label="注册资本(万元)" prop="registeredCapital" class="item">
<el-input
v-model="form.registeredCapital"
placeholder="请输入"
style="width: 240px"
maxlength="10"
onkeyup="value=value.replace(/[^\d]/g,'')"
></el-input>
</el-form-item>
<el-form-item label="联系地址" prop="contactAddress" class="item">
<el-input v-model.trim="perfectForm.contactAddress" placeholder="请输入" style="width:240px" maxlength="30"></el-input>
<el-input
v-model="form.contactAddress"
placeholder="请输入"
style="width: 240px"
minlength="4"
maxlength="30"
@keyup.native="$event.target.value = $event.target.value.replace(/^\s+|\s+$/gm, '')"
></el-input>
</el-form-item>
<el-form-item label="管理员" prop="admin" class="item">
<el-input v-model.trim="perfectForm.admin" disabled style="width:240px" maxlength="30"></el-input>
<el-form-item label="管理员" class="item">
<el-input v-model.trim="form.contacts.userName" disabled style="width: 240px" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="联系电话" prop="contactNumber" class="item">
<el-input v-model.trim="perfectForm.contactNumber" disabled style="width:240px" maxlength="30"></el-input>
<el-form-item label="联系电话" class="item">
<el-input v-model.trim="form.contacts.phoneNumber" disabled style="width: 240px" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="身份证" prop="id" class="item">
<el-input v-model.trim="perfectForm.id" disabled style="width:240px" maxlength="30"></el-input>
<el-form-item label="身份证" class="item">
<el-input v-model.trim="form.contacts.idNumber" disabled style="width: 240px" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="电子邮箱" prop="id" class="item">
<el-input v-model.trim="perfectForm.email" disabled style="width:240px" maxlength="30"></el-input>
<el-form-item label="电子邮箱" class="item">
<el-input v-model.trim="form.contacts.email" disabled style="width: 240px" maxlength="30"></el-input>
</el-form-item>
<div>
<el-form-item label="经营范围" prop="businessScope" class="item">
<el-input v-model.trim="perfectForm.businessScope" :rows="4" type="textarea" placeholder="请输入内容" style="width:600px" maxlength="300"></el-input>
<el-input
v-model.trim="form.businessScope"
:rows="4"
type="textarea"
placeholder="请输入内容"
style="width: 600px"
maxlength="300"
></el-input>
</el-form-item>
</div>
<div class="margin-left">
<div>
<el-form-item label="法人身份证正反面" prop="identity" class="item">
<el-upload
:show-file-list="false"
:on-success="justSuccess"
:before-upload="beforejust"
class="avatar-uploader"
action="https://jsonplaceholder.typicode.com/posts/">
<img v-if="justimg" :src="justimg" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<el-upload
:show-file-list="false"
:on-success="backSuccess"
:before-upload="beforeback"
style="margin-top: 10px;"
class="avatar-uploader"
action="https://jsonplaceholder.typicode.com/posts/">
<img v-if="backimg" :src="backimg" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<imgUpload :limit="1" :max="10" @input="getJustimg" :fileList="justimg" tip=""></imgUpload>
<imgUpload :limit="1" :max="10" @input="getBackimg" :fileList="backimg" tip=""></imgUpload>
</el-form-item>
</div>
<div class="margin-left">
<el-form-item label="三证合一扫描件" prop="card" class="item">
<el-upload
:show-file-list="false"
:on-success="justSuccess"
:before-upload="beforejust"
class="avatar-uploader"
action="https://jsonplaceholder.typicode.com/posts/">
<img v-if="justimg" :src="justimg" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<div class="t1" style="color:#666666;margin-top:10px">(只可上传三张图片,大小不能超过10MB,此项为必填项)</div>
<div>
<el-form-item label="三证合一扫描件" prop="cardimg" class="item">
<imgUpload
:limit="3"
:max="10"
@input="getCardimg"
tip="只可上传三张图片,大小不能超过10MB,此项为必填项"
:fileList="cardimg"
></imgUpload>
</el-form-item>
</div>
<div class="margin-left">
<el-form-item prop="file" class="item" margin-left="-180px">
<el-form-item prop="file" class="item" margin-left="-1.8rem">
<div class="else">
<div>其他资料 <span class="red">用于上传其他证明性材料如法人变更证明,报名资料请勿在此上传,单个附件建议不超过2M。</span> </div>
<div>
其他资料
<span class="red"
>用于上传其他证明性材料如法人变更证明,报名资料请勿在此上传,单个附件建议不超过2M。</span
>
</div>
<el-upload
:on-preview="handlePreview"
:on-pxove="handlepxove"
:file-list="fileList"
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
list-type="picture">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip">支持扩展名:.rar .zip .doc .docx .pdf .jpg...</div>
</el-upload>
</el-form-item>
</div>
<Upload :limit="5" :max="10" @input="getfile" :fileList="files" tip="最多上传五份文件,每份不超过10M"></Upload>
</el-form-item>
</el-form>
</div>
</div>
<div class="bottomButton">
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="dialogFormVisible=true">提交审核</el-button>
<el-button type="primary" @click="submit">提交审核</el-button>
</div>
</div>
<el-dialog :visible.sync="dialogFormVisible" title="提交审核">
<el-form ref="dialogform" :model="form" :rules="rules">
<el-form ref="dialogform" :model="form1" :rules="rules">
<el-form-item label="修改位置" prop="modifyLocation" class="item">
<el-input v-model.trim="form.modifyLocation" style="width:240px" maxlength="30"></el-input>
<el-input v-model.trim="form.modifyLocation" style="width: 240px" maxlength="30"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="backButton">
<el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="sure">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import { companyDetail, industryList, companyNatureList } from '@api/common/list';
import { companyedit } from '@api/purchaser/organization';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
import Upload from '@components/Upload/Upload.vue';
import imgUpload from '@components/Upload/imgUpload.vue';
export default {
components: {
dataBreadcrumb
dataBreadcrumb,
Upload,
imgUpload
},
data() {
// 测试省份
let islocal = (rule, value, callback) => {
if (this.form.province && this.form.county && this.form.city) {
callback(new Error('请选择城市'))
console.log('1');
if (!this.form.provinceId) {
callback(new Error('请选择省份'));
} else if (!this.form.cityId) {
callback(new Error('请选择市'));
} else if (!this.form.districtId) {
callback(new Error('请选择区'));
} else {
callback();
}
};
// 测试正反图片是否上传
let checkidentity = (rule, value, callback) => {
if (this.justimg.length === 0) {
callback(new Error('请上传正面照片'));
} else if (this.backimg.length === 0) {
callback(new Error('请上传反面照片'));
} else {
callback();
}
};
// 测试三证合一是否上传
let checkcardimg = (rule, value, callback) => {
if (this.cardimg.length === 0) {
callback(new Error('请上传三证合一'));
} else {
callback();
}
};
let checkPhone = async (rule, value, callback) => {
if (!value) {
return callback(new Error('手机号不能为空'));
} else {
const reg = /^1[3|4|5|7|8][0-9]\d{8}$/;
console.log(reg.test(value));
if (reg.test(value)) {
callback();
} else {
return callback(new Error('请输入正确的手机号'));
}
}
};
//名字校验
let validateRealName = (rule, value, callback) => {
const realnameReg = /^[\u4E00-\u9FA5]{1,30}$/;
if (!realnameReg.test(value)) {
return callback(new Error('您的输入有误,请重新输入!'));
} else {
callback();
}
};
//身份证号校验
let validateRealId = (rule, value, callback) => {
const realnameReg = /(^\d{15}$)|(^\d{17}([0-9]|X|x)$)/;
if (!realnameReg.test(value)) {
return callback(new Error('您的输入有误,请重新输入!'));
} else {
callback();
}
};
//邮箱号校验
let validateEmailId = (rule, value, callback) => {
const realnameReg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
if (!realnameReg.test(value)) {
return callback(new Error('您的输入有误,请重新输入!'));
} else {
callback()
callback();
}
};
//结算账号校验
let validateAccount = (rule, value, callback) => {
const realnameReg = /^([1-9]{1})(\d{14}|\d{17})$/;
if (!realnameReg.test(value)) {
return callback(new Error('您的输入有误,请重新输入!'));
} else {
callback();
}
};
return {
files: [],
justimg: [],
backimg: [],
cardimg: [],
dialogFormVisible: false,
breads: ['组织管理', '单位信息'],
perfectForm: {
personPhone: '',
personName: '',
companyLocal: '',
grade: '',
bankCard: '',
contactPhone: '',
creditCode: '',
nature: '',
type: '',
bank: '',
capital: '',
management: '',
bankNumber: '',
contactAddress: '',
admin: '',
contactNumber: '',
id: '',
email: '',
businessScope: ''
},
form: {
form: {},
form1: {
modifyLocation: ''
},
rules: {
identity: [
{ required: true }
companyName: [
{
required: true,
message: '请输入单位名称',
trigger: 'blur'
},
{
validator: validateRealName
}
],
card: [
{ required: true }
local: [
{
required: true,
validator: islocal,
trigger: 'blur'
}
],
businessScope: [{
type: [
{
required: true,
message: '请选择角色',
trigger: 'blur'
}
],
name: [
{
required: true,
message: '请输入管理者姓名',
trigger: 'blur'
},
{
validator: validateRealName
}
],
idNumber: [
{
required: true,
message: '请输入',
message: '请输入身份证',
trigger: 'blur'
}],
legalPerson: [{
},
{
validator: validateRealId
}
],
password: [
{
required: true,
message: '请输入',
message: '请输入密码',
trigger: 'blur'
}],
personPhone: [{
},
{
pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/,
message: '密码需由8-16位数字字母组合'
}
],
email: [
{
required: true,
message: '请输入',
message: '请输入电子邮箱',
trigger: 'blur'
}],
creditCode: [{
},
{
validator: validateEmailId
}
],
phonenumber: [
{
required: true,
message: '请输入',
message: '请输入正确的验证码',
trigger: 'blur'
}],
type: [{
},
{
pattern: /^1[0-9]{10}$/,
message: '你的输入有误,请重新输入!'
}
],
code: [
{
required: true,
message: '请输入',
message: '请输入验证码',
trigger: 'blur'
}],
CreditRating: [{
}
],
phonecode: [
{
required: true,
message: '请输入',
message: '请输入短信验证码',
trigger: 'blur'
}],
bank: [{
}
],
legalPersonPhone: [
{
required: true,
message: '请输入',
message: '请输入法人电话',
trigger: 'blur'
}],
bankNumber: [{
},
{
pattern: /^1[0-9]{10}$/,
message: '你的输入有误,请重新输入!'
}
],
legalPersonName: [
{
required: true,
message: '请输入',
message: '请输入法人姓名',
trigger: 'blur'
}],
capital: [{
},
{
validator: validateRealName
}
],
location: [
{
required: true,
message: '请输入',
message: '请输入单位所在地',
trigger: 'blur'
}],
contactAddress: [{
},
{
validator: validateRealName
}
],
bankAccount: [
{
required: true,
message: '请输入',
message: '请输入结算账号',
trigger: 'blur'
}],
admin: [{
required: true
}],
contactNumber: [{
required: true
}],
id: [{
required: true
}],
email: [{
required: true
}],
modifyLocation: [{
},
{
validator: validateAccount
}
],
bankAccountName: [
{
required: true,
message: '请输入修改位置',
message: '请输入结算账号名',
trigger: 'blur'
}],
companyName: [{
},
{
validator: validateRealName
}
],
contactAddress: [
{
required: true,
message: '请输入单位名称',
message: '请输入联系地址',
trigger: 'blur'
}],
local: [{
},
{
validator: validateRealName
}
],
socialCode: [
{
required: true,
validator: islocal,
message: '请输入社会信用码',
trigger: 'blur'
},
{
pattern: /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/,
message: '您的输入有误,请重新输入!'
}
],
companyNature: [
{
required: true,
message: '请输入行业类型',
trigger: 'blur'
}
],
industryType: [
{
required: true,
message: '请选择行业类型',
trigger: 'blur'
}
],
bankName: [
{
required: true,
message: '开户银行名称',
trigger: 'blur'
}],
role: [{
},
{
validator: validateRealName
}
],
registeredCapital: [
{
required: true,
message: '请输入注册资本',
trigger: 'blur'
} /* {
pattern: /^[1-9]d*$/,
message: "你的输入有误,请重新输入!",
} */
],
businessScope: [
{
required: true,
message: '请输入经营范围',
trigger: 'blur'
},
{
pattern: /[\u4e00-\u9fa5]|[\(\)\《\》\—\;\,\。\“\”\<\>\!]/,
message: '你得输入有误,请重新输入!'
}
],
identity: [
{
required: true,
message: '请输入角色',
validator: checkidentity,
trigger: 'blur'
}]
}
],
cardimg: [
{
required: true,
validator: checkcardimg,
trigger: 'blur'
}
]
},
companyNatures: [],
belongTypes: []
};
},
methods: {
cancel() {
this.$router.go(-1)
this.$router.go(-1);
},
sure() {
this.dialogFormVisible = false
this.dialogFormVisible = false;
},
// 获取单位性质
async getCompanyNatureList() {
const res = await companyNatureList();
this.companyNatures = res;
},
//获取所属行业
async getIndustryList() {
const res = await industryList();
this.belongTypes = res;
},
getJustimg(val) {
console.log(val);
this.justimg = val;
},
getBackimg(val) {
console.log(val);
this.backimg = val;
},
getCardimg(val) {
console.log(val);
this.cardimg = val;
},
getfile(val) {
console.log(val);
this.files = val;
},
async getcompanyDetail() {
try {
let companyId = localStorage.getItem('companyId');
const { data, code } = await companyDetail(companyId);
if (code === 200) {
for (let item of data.fileList) {
item.name = item.fileName;
item.url = item.fileUrl;
if (item.type == 1) {
this.justimg.push(item);
} else if (item.type == 2) {
this.backimg.push(item);
} else if (item.type == 3) {
this.cardimg.push(item);
} else if (item.type == 4) {
this.files.push(item);
}
}
}
this.form = data;
}
} catch (e) {
console.log(e);
}
},
async submit() {
try {
const valid = await this.$refs['form'].validate();
if (valid) {
let form = this.form;
let justimg = this.justimg;
let backimg = this.backimg;
let cardimg = this.cardimg;
let files = this.files;
console.log(justimg)
console.log(backimg)
console.log(cardimg)
console.log(files)
justimg.forEach(function (item, index) {
item.type = 1;
});
backimg.forEach(function (item, index) {
item.type = 2;
});
cardimg.forEach(function (item, index) {
item.type = 3;
});
files.forEach(function (item, index) {
item.type = 4;
});
form.fileList = justimg.concat(backimg).concat(cardimg).concat(files);
const { code, msg } = await companyedit(form);
if (code == 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
});
setTimeout(() => {
history.go(0)
// this.$router.go(-1);
}, 1500);
} else {
this.$message.error(msg);
}
}
} catch (e) {}
}
},
created() {
this.getcompanyDetail();
this.getIndustryList();
this.getCompanyNatureList();
}
};
</script>
<style scoped>
.upload>div {
.upload > div {
color: rgba(102, 102, 102, 1);
font-weight: 400;
}
}
.label-form {
.label-form {
font-size: 16px;
margin-top: 30px;
margin-bottom: 1opx;
font-weight: 400;
}
}
.company h4 {
.company h4 {
font-size: 22px;
font-weight: bold;
color: rgba(0, 0, 0, 1);
margin-top: 62px;
margin-bottom: 50px;
}
}
.el-input {
.el-input {
width: 240px;
height: 40px;
}
}
.nextButton {
.nextButton {
width: 300px;
height: 48px;
background: rgba(4, 134, 254, 1);
border-radius: .40px;
border-radius: 0.4px;
line-height: 46px;
margin-top: 45px;
margin-bottom: 8px;
color: #fff
}
color: #fff;
}
.item .el-form-item__label {
.item .el-form-item__label {
font-weight: bold;
}
}
.password-tips {
.password-tips {
margin-bottom: 0;
color: rgba(144, 147, 153, 1);
font-weight: 400;
font-size: 12px;
}
}
.avatar-uploader .el-upload {
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 120px;
......@@ -362,20 +707,20 @@ export default {
line-height: 120px;
text-align: center;
background: rgba(247, 247, 247, 1);
}
}
.avatar {
.avatar {
width: 120px;
height: 120px;
display: block;
}
}
.getcode,
.getphonecode {
.getcode,
.getphonecode {
position: relative;
}
}
.getcode>.code {
.getcode > .code {
/*margin: 400px auto;*/
width: 68px;
height: 32px;
......@@ -383,58 +728,58 @@ export default {
position: absolute;
top: 0;
left: 330px;
}
}
.getphonecode>.phonecode {
.getphonecode > .phonecode {
font-size: 14px;
font-weight: 400;
color: rgba(51, 136, 255, 1);
position: absolute;
top: 13px;
left: 400px;
}
}
.else .red {
color: #FF6161;
.else .red {
color: #ff6161;
font-size: 14px;
}
}
.perfect-head {
.perfect-head {
width: 9px;
margin-top: 66px;
margin-bottom: 37px;
}
}
.perfect-head>div>text {
.perfect-head > div > text {
font-weight: bold;
}
}
.result {
.result {
width: 100%;
height: 300px
}
height: 300px;
}
.result h4 {
.result h4 {
font-size: 30px;
font-weight: 600;
color: rgba(75, 193, 103, 1);
margin-top: 100px;
margin-bottom: 20px;
}
}
.result h5 {
.result h5 {
font-size: 18px;
font-weight: 400;
color: rgba(128, 128, 128, 1);
line-height: 30px;
text-align: center;
}
}
.othercontent>div {
.othercontent > div {
background: #fff;
}
}
.margin-left {
.margin-left {
margin-left: 30px;
}
}
</style>
......@@ -5,299 +5,34 @@
<h3>查看</h3>
<div>查看基本信息、企业资质文件</div>
</div>
<div class="detail-list">
<div>
<h5>基本信息</h5>
<ul class="flex">
<li>
<div>单位名称</div>
<div>{{detail.companyName}}</div>
</li>
<li>
<div>注册角色</div>
<div>11</div>
</li>
<li>
<div>法人姓名</div>
<div>{{detail.legalPersonName}}</div>
</li>
<li>
<div>法人电话</div>
<div>11</div>
</li>
<li>
<div>统一社会信用代码</div>
<div>{{detail.socialCode}}</div>
</li>
<li>
<div>行政区域 </div>
<div>{{detail.companyName}}</div>
</li>
<li>
<div>单位性质</div>
<div>{{detail.companyNature}}</div>
</li>
<li>
<div>单位所在地</div>
<div>{{detail.location}}</div>
</li>
<li>
<div>行业类型</div>
<div>222</div>
</li>
<li>
<div>开户银行名称</div>
<div>222</div>
</li>
<li>
<div>结算账户</div>
<div>222</div>
</li>
<li>
<div>结算账户名</div>
<div>222</div>
</li>
<li>
<div>注册资本(万元)</div>
<div>{{detail.registeredCapital}}</div>
</li>
<li>
<div>联系地址</div>
<div>{{detail.contactAddress}}</div>
</li>
<li>
<div>管理员姓名</div>
<div>{{detail.companyName}}</div>
</li>
<li>
<div> 手机号 </div>
<div>{{detail.legalPersonPhone}}</div>
</li>
<li>
<div> 身份证 </div>
<div>222</div>
</li>
<li>
<div>电子邮箱 </div>
<div>{{detail.companyName}}</div>
</li>
</ul>
<div class="detail-item">
<div>经营范围</div>
<div>一般项目:技术服务,技术开发</div>
</div>
<div class="detail-item">
<div>法人身份证正反面</div>
<el-image v-for="(item,index) in imglist" :src="item.src" :key="index" style="margin-right:20px"></el-image>
</div>
<div class="detail-item">
<div>三证合一扫描件</div>
<el-image v-for="(item,index) in imglist" :src="item.src" :key="index" style="margin-right:20px"></el-image>
</div>
<div class="detail-item">
<div>其他资料</div>
<div class="flex-between pdf">
<div>pdf文件</div>
<div>预览</div>
<div>下载</div>
</div>
</div>
</div>
</div>
<div class="operation">
<button @click="edit">编辑</button>
<companyDetail></companyDetail>
<div class="bottomButton">
<el-button @click="edit">编辑</el-button>
</div>
</div>
</template>
<script>
import {
companyDetail
} from '@api/common/list'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
import companyDetail from '@components/detail/companyDetail.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
export default {
components: {
dataBreadcrumb
dataBreadcrumb,
companyDetail
},
data() {
return {
detail: "",
breads: ['查看基本信息', '企业资质文件'],
informationList: [{
title: '单位名称',
message: '腾讯'
}, {
title: '注册角色',
message: '采购商'
}, {
title: '法人姓名',
message: '谢墩满'
}, {
title: '法人电话',
message: '1784574567'
}, {
title: '统一社会信用代码',
message: '91330104MA27YU1X0K'
}, {
title: '行政区域',
message: '浙江省 杭州市 滨江区'
}, {
title: '单位性质',
message: '有限责任公司'
}, {
title: '单位所在地',
message: '浙江 温州'
}, {
title: '行业类型',
message: '娱乐业'
}, {
title: '开户银行名称',
message: '农行'
}, {
title: '结算账号',
message: '34567567856789'
}, {
title: '结算账户名',
message: '谢天'
}, {
title: '注册资本(万元)',
message: '100'
}, {
title: '联系地址',
message: '浙江温州'
}, {
title: '管理员姓名',
message: '谢'
}, {
title: '手机号',
message: '18957015590'
}, {
title: '身份证',
message: '456789056789078'
}, {
title: '电子邮箱',
message: '34567890@qq.com'
}],
imglist: [{
src: require('@static/images/img.png')
}, {
src: require('@static/images/img.png')
}]
}
breads: ['查看基本信息', '企业资质文件']
};
},
methods: {
edit() {
this.$router.push('/purchaser/organization/informationEdit')
},
async getcompanyDetail() {
try {
let companyId = localStorage.getItem("companyId")
const {
data,
code
} = await companyDetail(companyId)
if (code === 200) {
this.detail = data
}
} catch (e) {
console.log(e)
}
this.$router.push('/purchaser/organization/informationEdit');
}
},
created() {
this.getcompanyDetail()
}
}
created() {}
};
</script>
<style scoped>
.detail-list>div>ul>li {
margin-right: 150px;
margin-bottom: 50px;
width: 180px
}
.detail-list>div>ul {
flex-wrap: wrap;
margin-left: 30px;
margin-top: 20px;
}
.detail-head {
margin-left: 30px;
padding-top: 10px;
}
.detail-head>h3 {
font-weight: bold;
margin-top: 10px;
margin-bottom: 10px;
}
.detail-list {
box-sizing: border-box;
padding-top: 20px;
background-color: #F0F2F5;
margin-top: 10px;
}
.detail-list>div {
background-color: #FFFF;
padding-bottom: 20px;
}
.detail-list h5 {
font-weight: bold;
height: 50px;
line-height: 50px;
border-bottom: 1px solid #F0F2F5;
box-sizing: border-box;
padding-left: 30px;
}
.detail-item {
margin-left: 30px;
margin-bottom: 30px;
}
.detail-item>div:first-child {
margin-bottom: 10px;
}
.pdf {
width: 170px
}
.pdf>div:nth-child(2),
.pdf>div:last-child {
width: 50px;
height: 30px;
text-align: center;
line-height: 30px;
border-radius: 10px;
border: 1px solid #000
}
.operation {
margin-bottom: 10px;
display: flex;
justify-content: flex-end;
}
.operation>button {
width: 50px;
height: 30px;
border-radius: 2px;
background: #fff;
border: 1px solid #999;
}
.flex-button>button {
margin-left: 10px;
}
.flex-button>button:last-child {
background: #28e;
color: #fff
}
</style>
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