Commit ff7ce936 by 严立

pdf预览功能

parent 32fa130e
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
}, },
"dependencies": { "dependencies": {
"miment": "0.0.9", "miment": "0.0.9",
"vue": "^2.5.2", "vue": "^2.6.11",
"vue-router": "^3.0.1" "vue-router": "^3.3.4"
}, },
"devDependencies": { "devDependencies": {
"autoprefixer": "^7.1.2", "autoprefixer": "^7.1.2",
...@@ -27,19 +27,19 @@ ...@@ -27,19 +27,19 @@
"chalk": "^2.0.1", "chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1", "copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0", "css-loader": "^0.28.0",
"element-ui": "^2.13.1", "element-ui": "^2.13.2",
"extract-text-webpack-plugin": "^3.0.0", "extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.4", "file-loader": "^1.1.4",
"font-spider": "^1.3.5", "font-spider": "^1.3.5",
"friendly-errors-webpack-plugin": "^1.6.1", "friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1", "html-webpack-plugin": "^2.30.1",
"js-base64": "^2.5.2", "js-base64": "^2.6.2",
"less": "^3.11.1", "less": "^3.11.3",
"less-loader": "^4.1.0", "less-loader": "^4.1.0",
"node-notifier": "^5.1.2", "node-notifier": "^5.1.2",
"optimize-css-assets-webpack-plugin": "^3.2.0", "optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.2.0", "ora": "^1.2.0",
"portfinder": "^1.0.13", "portfinder": "^1.0.26",
"postcss-import": "^11.0.0", "postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8", "postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1", "postcss-url": "^7.2.1",
...@@ -52,9 +52,10 @@ ...@@ -52,9 +52,10 @@
"vue-baidu-map": "^0.21.22", "vue-baidu-map": "^0.21.22",
"vue-cli-plugin-style-resources-loader": "^0.1.4", "vue-cli-plugin-style-resources-loader": "^0.1.4",
"vue-loader": "^13.3.0", "vue-loader": "^13.3.0",
"vue-pdf": "^4.1.0",
"vue-style-loader": "^3.0.1", "vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.5.2", "vue-template-compiler": "^2.6.11",
"vuex": "^3.4.0", "vuex": "^3.5.1",
"webpack": "^3.6.0", "webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.9.0", "webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.9.1", "webpack-dev-server": "^2.9.1",
......

2.34 KB | W: | H:

16.1 KB | W: | H:

src/assets/code.png
src/assets/code.png
src/assets/code.png
src/assets/code.png
  • 2-up
  • Swipe
  • Onion skin

338 KB | W: | H:

270 KB | W: | H:

src/assets/home-banner.png
src/assets/home-banner.png
src/assets/home-banner.png
src/assets/home-banner.png
  • 2-up
  • Swipe
  • Onion skin
let output = { let output = {
// 开发路径 // 开发路径
base: 'http://bid-server.meiqicloud.com/', base: 'http://bid-server.meiqicloud.com/',
resources: 'http://bid-web.meiqicloud.com/',
agentSignIn: 'http://bid-vue.meiqicloud.com/' agentSignIn: 'http://bid-vue.meiqicloud.com/'
// 正式路径 // 正式路径
// base: '/Api/', // base: '/Api/',
// resources: 'http://bid-web.meiqicloud.com',
// agentSignIn: 'http://bid-vue.meiqicloud.com/' // agentSignIn: 'http://bid-vue.meiqicloud.com/'
} }
......
...@@ -52,6 +52,7 @@ let output = { ...@@ -52,6 +52,7 @@ let output = {
let funStatus = funcXMLHttpRequest.status let funStatus = funcXMLHttpRequest.status
if ((funStatus >= 200 && funStatus < 300) || funStatus === 304) { if ((funStatus >= 200 && funStatus < 300) || funStatus === 304) {
try { try {
let funcInterceptorsResponse = iInterceptors.response(funcConfigure, funcXMLHttpRequest.responseText) let funcInterceptorsResponse = iInterceptors.response(funcConfigure, funcXMLHttpRequest.responseText)
if (funcInterceptorsResponse.state) { if (funcInterceptorsResponse.state) {
funcResolve(funcInterceptorsResponse.response) funcResolve(funcInterceptorsResponse.response)
......
// 0630
let output = { let output = {
isInt: function (value, isZero) {
let regExp
if (isZero) {
regExp = new RegExp('^(0|[1-9][0-9]*)$')
} else {
regExp = new RegExp('^([1-9][0-9]*)$')
}
return regExp.test(value)
},
isMoney: function (value) { isMoney: function (value) {
let regExp = new RegExp('^(([1-9][0-9]*\.[0-9][0-9]*)|([0]\.[0-9][0-9]*)|([1-9][0-9]*)|([0]{1}))$') let regExp = new RegExp('^(([1-9][0-9]*\.[0-9][0-9]*)|([0]\.[0-9][0-9]*)|([1-9][0-9]*)|([0]{1}))$')
return regExp.test(value) return regExp.test(value)
......
...@@ -2,150 +2,146 @@ import iAtom from './atom.js' ...@@ -2,150 +2,146 @@ import iAtom from './atom.js'
let output = { let output = {
// 文本,除emoji符号 // 文本,除emoji符号
predefineRoutineText: function (funcRule, funcValue, funcCallback) { predefineRoutineText: function (rule, value, callback) {
let funcRegExp = new RegExp(/[\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]|\uD83D[\uDE80-\uDEFF]|[\u2700-\u27BF]\uFE0F]/, 'ig') let funcRegExp = new RegExp(/[\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]|\uD83D[\uDE80-\uDEFF]|[\u2700-\u27BF]\uFE0F]/, 'ig')
if (funcRegExp.test(funcValue)) { if (funcRegExp.test(value)) {
funcCallback(new Error('不允许使用表情符号')) callback(new Error('不允许使用表情符号'))
return return
} }
funcCallback() callback()
}, },
// 文本,仅数字、英文字母(区分大小写) // 文本,仅数字、英文字母(区分大小写)
predefineNumeralText: function (funcRule, funcValue, funcCallback) { predefineNumeralText: function (rule, value, callback) {
let funcRegExp = new RegExp(/^[0-9a-z]+$/, 'ig') let funcRegExp = new RegExp(/^[0-9a-z]+$/, 'ig')
if (!funcRegExp.test(funcValue)) { if (!funcRegExp.test(value)) {
funcCallback(new Error(funcRule.message)) callback(new Error(rule.message))
return return
} }
funcCallback() callback()
}, },
// 文本,仅数字 // 文本,仅数字
predefineNumeral: function (funcRule, funcValue, funcCallback) { predefineNumeral: function (rule, value, callback) {
let funcRegExp = new RegExp(/^[0-9]+$/, 'ig') let funcRegExp = new RegExp(/^[0-9]+$/, 'ig')
if (!funcRegExp.test(funcValue)) { if (!funcRegExp.test(value)) {
funcCallback(new Error(funcRule.message)) callback(new Error(rule.message))
return return
} }
funcCallback() callback()
}, },
email: function (funcRule, funcValue, funcCallback) { email: function (rule, value, callback) {
let funcRegExp = new RegExp(/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/, 'ig') let funcRegExp = new RegExp(/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/, 'ig')
if (!funcRegExp.test(funcValue)) { if (!funcRegExp.test(value)) {
funcCallback(new Error(funcRule.message)) callback(new Error(rule.message))
return return
} }
funcCallback() callback()
}, },
idCard: function (funcRule, funcValue, funcCallback) { idCard: function (rule, value, callback) {
let funcRegExp = new RegExp(/^[1-9][0-9]{5}(18|19|20)[0-9]{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)[0-9]{3}[0-9Xx]$/, 'ig') let funcRegExp = new RegExp(/^[1-9][0-9]{5}(18|19|20)[0-9]{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)[0-9]{3}[0-9Xx]$/, 'ig')
if (!funcRegExp.test(funcValue)) { if (!funcRegExp.test(value)) {
funcCallback(new Error(funcRule.message)) callback(new Error(rule.message))
return return
} }
funcCallback() callback()
}, },
phone: function (funcRule, funcValue, funcCallback) { phone: function (rule, value, callback) {
let funcRegExp = new RegExp(/^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9]|19[0-9])[0-9]{8}$/, 'ig') let funcRegExp = new RegExp(/^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9]|19[0-9])[0-9]{8}$/, 'ig')
if (!funcRegExp.test(funcValue)) { if (!funcRegExp.test(value)) {
funcCallback(new Error(funcRule.message)) callback(new Error(rule.message))
return return
} }
funcCallback() callback()
}, },
fixedPhone: function (funcRule, funcValue, funcCallback) { fixedPhone: function (rule, value, callback) {
let funcRegExp = new RegExp(/^[0-9*#-]+$/, 'ig') let funcRegExp = new RegExp(/^[0-9*#-]+$/, 'ig')
if (!funcRegExp.test(funcValue)) { if (!funcRegExp.test(value)) {
funcCallback(new Error(funcRule.message)) callback(new Error(rule.message))
return return
} }
funcCallback() callback()
}, },
phoneAndFixedPhone: function (funcRule, funcValue, funcCallback) { phoneAndFixedPhone: function (rule, value, callback) {
if (!iAtom.isPhone(funcValue) && !iAtom.isFixedPhone(funcValue)) { if (!iAtom.isPhone(value) && !iAtom.isFixedPhone(value)) {
funcCallback(new Error(funcRule.message)) callback(new Error(rule.message))
return return
} }
funcCallback() callback()
}, },
password: function (funcRule, funcValue, funcCallback) { password: function (rule, value, callback) {
let funcCombinedStrength = 0 let funcRegExp = new RegExp(/[0-9a-z]+/, 'ig')
if (!funcRegExp.test(value)) {
// 是否包含数字 callback(new Error(rule.message))
let funcRegExp = new RegExp(/[0-9]+/, 'ig')
if (funcRegExp.test(funcValue)) {
funcCombinedStrength = funcCombinedStrength + 1
}
// 是否包含字母
funcRegExp = new RegExp(/[a-z]+/, 'ig')
if (funcRegExp.test(funcValue)) {
funcCombinedStrength = funcCombinedStrength + 1
}
// 是否包含特殊符号
funcRegExp = new RegExp(/(?=[\x21-\x7e]+)[^a-z0-9]+/, 'ig')
if (funcRegExp.test(funcValue)) {
funcCombinedStrength = funcCombinedStrength + 1
}
// 组合强度验证
if (funcCombinedStrength < 2) {
funcCallback(new Error(funcRule.message))
return
} }
callback()
funcCallback()
}, },
passwordRepeat: function (funcRule, funcValue, funcCallback, funcPassword) { passwordRepeat: function (rule, value, callback, password) {
if (funcValue !== funcPassword) { if (value !== password) {
funcCallback(new Error(funcRule.message)) callback(new Error(rule.message))
return return
} }
funcCallback() callback()
}, },
unEmoji: function (funcRule, funcValue, funcCallback) { unEmoji: function (rule, value, callback) {
let funcRegExp = new RegExp(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/, 'ig') let funcRegExp = new RegExp(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/, 'ig')
if (funcRegExp.test(funcValue)) { if (funcRegExp.test(value)) {
funcCallback(new Error(funcRule.message)) callback(new Error(rule.message))
return return
} }
funcCallback() callback()
}, },
unSpace: function (funcRule, funcValue, funcCallback) { unSpace: function (rule, value, callback) {
let funcRegExp = new RegExp(/ /, 'ig') let funcRegExp = new RegExp(/ /, 'ig')
if (funcRegExp.test(funcValue)) { if (funcRegExp.test(value)) {
funcCallback(new Error(funcRule.message)) callback(new Error(rule.message))
return return
} }
funcCallback() callback()
}, },
unChinese: function (rule, value, callback) { unChinese: function (rule, value, callback) {
let regExp = new RegExp('[\u4e00-\u9fa5]+', 'ig') let regExp = new RegExp('[\u4e00-\u9fa5]+', 'ig')
regExp.test(value) ? callback(new Error(rule.message)) : callback() regExp.test(value) ? callback(new Error(rule.message)) : callback()
}, },
// 无符号正整数
signlessInteger: function (rule, value, callback) {
if (!iAtom.isInt(value, true)) {
callback(new Error(rule.message))
return
}
callback()
},
// 无符号非零正整数
signlessIntegerNonZero: function (rule, value, callback) {
if (!iAtom.isInt(value, false)) {
callback(new Error(rule.message))
return
}
callback()
}
} }
export default output export default output
\ No newline at end of file
...@@ -33,7 +33,7 @@ let output = { ...@@ -33,7 +33,7 @@ let output = {
if (funcNowDate < funcDate) { if (funcNowDate < funcDate) {
// 判断当前时间是否小于令牌期限 // 判断当前时间是否小于令牌期限
if (funcNowDate + 3600 < funcDate) { if (funcNowDate + 1200 < funcDate) {
// 令牌有效时间大于安全时间 // 令牌有效时间大于安全时间
return 'valid' return 'valid'
} else { } else {
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<div class="other-link-item"> <div class="other-link-item">
<span>采购服务</span> <span>采购服务</span>
<span>发布招标</span> <span>发布招标</span>
<span>供应商入驻</span> <span>网上竞价</span>
<span>政策法规招标</span> <span>政策法规招标</span>
</div> </div>
<div class="other-link-item"> <div class="other-link-item">
...@@ -27,13 +27,13 @@ ...@@ -27,13 +27,13 @@
</div> </div>
<div class="other-link-item"> <div class="other-link-item">
<span>招标资讯</span> <span>招标资讯</span>
<span @click="$router.push('/policy')">政策法规</span> <span class="valid" @click="$router.push('/policy')">政策法规</span>
<span @click="$router.push('/trends')">招标动态</span> <span class="valid" @click="$router.push('/trends')">招标动态</span>
</div> </div>
<div class="other-link-item"> <div class="other-link-item">
<span>特色服务</span> <span>特色服务</span>
<span @click="$router.push('/question')">在线咨询</span> <span class="valid" @click="$router.push('/question')">在线咨询</span>
<span><a href="https://banyan.xmhy.ltd/" target="view_window">法律服务</a></span> <span class="valid"><a href="https://banyan.xmhy.ltd/" target="view_window">法律服务</a></span>
</div> </div>
</div> </div>
<div class="follow-us col"> <div class="follow-us col">
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
span { span {
display: block; display: block;
margin-bottom: 4px; margin-bottom: 4px;
cursor: pointer; cursor: default;
} }
span:nth-child(1) { span:nth-child(1) {
...@@ -121,6 +121,10 @@ ...@@ -121,6 +121,10 @@
text-decoration: none; text-decoration: none;
color: #666666; color: #666666;
} }
.valid {
cursor: pointer;
}
} }
} }
......
...@@ -115,6 +115,7 @@ ...@@ -115,6 +115,7 @@
*/ */
init: function () { init: function () {
let funcToken = localStorage.getItem('token') let funcToken = localStorage.getItem('token')
console.log('funcToken - 1', funcToken)
if (!funcToken) { if (!funcToken) {
this.$store.commit('isSignIn', false) this.$store.commit('isSignIn', false)
this.$store.commit('info', null) this.$store.commit('info', null)
...@@ -194,7 +195,11 @@ ...@@ -194,7 +195,11 @@
}, },
onRedirectSearch: function () { onRedirectSearch: function () {
console.log('onRedirectSearch') if (!this.searchKey) {
this.$message.error('请输入搜索内容')
return
}
this.$router.push('/bid?search=' + this.searchKey)
}, },
onMenuControl: function (funcType) { onMenuControl: function (funcType) {
...@@ -250,6 +255,8 @@ ...@@ -250,6 +255,8 @@
localStorage.clear() localStorage.clear()
}, },
onMain: function () { onMain: function () {
// 审核未通过账号无法通过点击头像进入工作台
if (this.info.register !== 1) return
switch(this.info.identity) { switch(this.info.identity) {
case 1: case 1:
this.$router.push('/specialist') this.$router.push('/specialist')
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<el-menu :default-active="active" class="el-menu-demo" mode="horizontal" @select="onSelect"> <el-menu :default-active="active" class="el-menu-demo" mode="horizontal" @select="onSelect">
<el-menu-item index="home">首页</el-menu-item> <el-menu-item index="home">首页</el-menu-item>
<el-menu-item index="bid">招标采购</el-menu-item> <el-menu-item index="bid">招标采购</el-menu-item>
<el-menu-item index="quote">竞价招标</el-menu-item> <el-menu-item index="quote">网上竞价</el-menu-item>
<el-menu-item index="change">变更公告</el-menu-item> <el-menu-item index="change">变更公告</el-menu-item>
<el-menu-item index="result">结果公告</el-menu-item> <el-menu-item index="result">结果公告</el-menu-item>
<el-submenu index="information"> <el-submenu index="information">
......
...@@ -86,6 +86,7 @@ ...@@ -86,6 +86,7 @@
setSkillList: function (funcRankIndex, funcSkillData) { setSkillList: function (funcRankIndex, funcSkillData) {
function createSkillList () { function createSkillList () {
console.log('funcSkillData', funcSkillData)
if (!funcSkillData) return if (!funcSkillData) return
let funcList = [] let funcList = []
...@@ -94,7 +95,7 @@ ...@@ -94,7 +95,7 @@
'index': i, 'index': i,
'value': funcSkillData[i].value, 'value': funcSkillData[i].value,
'label': funcSkillData[i].label, 'label': funcSkillData[i].label,
'idPath': funcSkillData[i].parentIds 'isChildren': funcSkillData[i].children ? true : false
} }
funcList.push(funcItem) funcList.push(funcItem)
} }
...@@ -102,10 +103,8 @@ ...@@ -102,10 +103,8 @@
This.$set(This.skillList, funcRankIndex, funcList) This.$set(This.skillList, funcRankIndex, funcList)
This.$set(This.selectIndex, funcRankIndex, This.selectIndexBuffer[funcRankIndex] ? This.selectIndexBuffer[funcRankIndex] : 0) This.$set(This.selectIndex, funcRankIndex, This.selectIndexBuffer[funcRankIndex] ? This.selectIndexBuffer[funcRankIndex] : 0)
This.$set(This.selectItem, funcRankIndex, This.skillList[funcRankIndex][This.selectIndex[funcRankIndex]]) This.$set(This.selectItem, funcRankIndex, This.skillList[funcRankIndex][This.selectIndex[funcRankIndex]])
This.saveSelect(This.selectIndex) This.saveSelect(This.selectIndex)
// 当子分类只有一个的时候无法触发组件 change 事件 // 当子分类只有一个的时候无法触发组件 change 事件
// 因此主动触发一次选择当前分类事件 // 因此主动触发一次选择当前分类事件
if (funcList.length === 1) { if (funcList.length === 1) {
...@@ -122,6 +121,11 @@ ...@@ -122,6 +121,11 @@
return return
} }
// 如果当前索引之下的元素还有子元素,则追加默认选择为第一个继续遍历
if (funcRankIndex === This.selectIndexBuffer.length && This.selectItem[funcRankIndex].isChildren) {
This.selectIndexBuffer.push(0)
}
if (funcRankIndex < This.selectIndexBuffer.length) { if (funcRankIndex < This.selectIndexBuffer.length) {
let funcSelectItem = funcSkillData[This.selectIndexBuffer[funcRankIndex]] let funcSelectItem = funcSkillData[This.selectIndexBuffer[funcRankIndex]]
...@@ -135,6 +139,13 @@ ...@@ -135,6 +139,13 @@
let This = this let This = this
createSkillList() createSkillList()
// 初始组件完毕需要传递当前选择的 id
let funcInitSelectId = []
for (let i = 0, l = this.selectItem.length; i < l; i++) {
funcInitSelectId.push(this.selectItem[i].value)
}
this.$emit('change', funcInitSelectId)
}, },
saveSelect: function (funcSelectIndexBuffer) { saveSelect: function (funcSelectIndexBuffer) {
...@@ -153,10 +164,12 @@ ...@@ -153,10 +164,12 @@
funcSkillData = funcSkillData[this.selectIndex[i]].children funcSkillData = funcSkillData[this.selectIndex[i]].children
} }
} }
console.log(funcSelectId)
this.$emit('change', funcSelectId) // 设置完成数据触发一次选择事件使父组件获取选择数据 this.$emit('change', funcSelectId) // 设置完成数据触发一次选择事件使父组件获取选择数据
}, },
onSelect: function (funcItem, funcRankIndex) { onSelect: function (funcItem, funcRankIndex) {
console.log(funcItem, funcRankIndex)
// 清除选择分类之后所有数据 // 清除选择分类之后所有数据
this.selectIndex[funcRankIndex] = funcItem.index this.selectIndex[funcRankIndex] = funcItem.index
this.selectIndexBuffer[funcRankIndex] = funcItem.index this.selectIndexBuffer[funcRankIndex] = funcItem.index
......
...@@ -16,18 +16,13 @@ ...@@ -16,18 +16,13 @@
<script> <script>
import iHost from '@/common/js/host.js' import iHost from '@/common/js/host.js'
export default { export default {
data () { data () {
return { return {
file: ''
} }
}, },
created: function () {
},
computed: { computed: {
componentFile: function () { componentFile: function () {
return this.$store.state.componentFile return this.$store.state.componentFile
...@@ -46,7 +41,12 @@ ...@@ -46,7 +41,12 @@
methods: { methods: {
onDownload: function (funcItem) { onDownload: function (funcItem) {
window.open(iHost.base + funcItem.url) // 下载文档
// window.open(iHost.base + funcItem.url)
// 预览组件
let routeData = this.$router.resolve({ path:'/file?file=' + funcItem.url })
window.open(routeData.href, '_blank')
} }
} }
} }
......
...@@ -24,5 +24,6 @@ let output = new Vue({ ...@@ -24,5 +24,6 @@ let output = new Vue({
'components': { App }, 'components': { App },
'template': '<App/>' 'template': '<App/>'
}) })
window.Promise = Promise
export default output export default output
\ No newline at end of file
...@@ -60,6 +60,7 @@ export default new Router({ ...@@ -60,6 +60,7 @@ export default new Router({
] ]
}, },
{ path: '/about', name: 'about', mapText: '关于我们', component: () => import('@/view/about.vue') }, { path: '/about', name: 'about', mapText: '关于我们', component: () => import('@/view/about.vue') },
{ path: '/file', name: 'file', mapText: '预览', component: () => import('@/view/pdf.vue') },
// 用户中心 - 商家 // 用户中心 - 商家
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<componentHeader></componentHeader> <componentHeader></componentHeader>
<componentNavigation></componentNavigation> <componentNavigation></componentNavigation>
<div class="about-banner"> <div class="about-banner">
<img src="../assets/home-banner.png" alt=""> <img src="../assets/about.png" alt="">
</div> </div>
<div class="global-maxwidth about-us row con-c"> <div class="global-maxwidth about-us row con-c">
<div class="about-us-info"> <div class="about-us-info">
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<componentHeader></componentHeader> <componentHeader></componentHeader>
<componentNavigation></componentNavigation> <componentNavigation></componentNavigation>
<div class="home-banner"> <div class="home-banner">
<el-carousel v-if="listBanner.length > 0" class="home-carousel" trigger="click" height="500px" :autoplay="false"> <el-carousel v-if="listBanner.length > 0" class="home-carousel" trigger="click" height="400px" :autoplay="false">
<el-carousel-item v-for="(item, index) in listBanner" :key="index"> <el-carousel-item v-for="(item, index) in listBanner" :key="index">
<img :src="listBanner[index].url" alt="" :class="item.isLink ? 'global-cursor' : ''" @click="onBanner(item)"> <img :src="listBanner[index].url" alt="" :class="item.isLink ? 'global-cursor' : ''" @click="onBanner(item)">
</el-carousel-item> </el-carousel-item>
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<span>{{item.timeRelease}}</span> <span>{{item.timeRelease}}</span>
</div> </div>
</div> </div>
<div v-if="listBid.length === 0" class="nothing col con-c align-c"> <div v-if="!listBid.length" class="nothing col con-c align-c">
<img src="../assets/nothing.png" alt=""> <img src="../assets/nothing.png" alt="">
<span>今日暂无开标项目</span> <span>今日暂无开标项目</span>
</div> </div>
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
<span class="global-cursor" @click="queryNotice(item.value, item.index)">{{item.label}}</span> <span class="global-cursor" @click="queryNotice(item.value, item.index)">{{item.label}}</span>
</div> </div>
</div> </div>
<div class="notice-list"> <div v-if="listNotice.length" class="notice-list">
<div v-for="(item, index) in listNotice" :key="index"> <div v-for="(item, index) in listNotice" :key="index">
<div class="notice-item-title global-hover row align-c" @click="onDetail(item)"> <div class="notice-item-title global-hover row align-c" @click="onDetail(item)">
<span class="global-cursor global-overflow-ellipsis">{{item.buyWay}}</span> <span class="global-cursor global-overflow-ellipsis">{{item.buyWay}}</span>
...@@ -127,6 +127,9 @@ ...@@ -127,6 +127,9 @@
</div> </div>
</div> </div>
</div> </div>
<div v-if="!listNotice.length" class="notice-list row con-c align-c">
<span>暂无数据</span>
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -136,8 +139,8 @@ ...@@ -136,8 +139,8 @@
<div class="global-maxwidth row"> <div class="global-maxwidth row">
<div class="bidding-result"> <div class="bidding-result">
<div class="row align-c"> <div class="row align-c">
<span class="title global-cursor" :class="auctionActive === 0 ? '' : 'title-disable'" @click="onQueryAuction(0)">竞标采购</span> <span class="title global-cursor" :class="auctionActive === 0 ? '' : 'title-disable'" @click="onQueryAuction(0)">网上竞价</span>
<span class="title global-cursor" :class="auctionActive === 1 ? '' : 'title-disable'" @click="onQueryAuction(1)">结果</span> <span class="title global-cursor" :class="auctionActive === 1 ? '' : 'title-disable'" @click="onQueryAuction(1)">结果</span>
<span class="more" @click="onMoreAuction()">+ MORE</span> <span class="more" @click="onMoreAuction()">+ MORE</span>
</div> </div>
<div class="list"> <div class="list">
...@@ -158,7 +161,7 @@ ...@@ -158,7 +161,7 @@
<span class="more" @click="onMoreNews()">+ MORE</span> <span class="more" @click="onMoreNews()">+ MORE</span>
</div> </div>
<div class="bidding-news-detail" @click="onNewsDetail()"> <div class="bidding-news-detail" @click="onNewsDetail()">
<div> <div v-if="infoNew.id">
<div class="col"> <div class="col">
<span class="bidding-news-detail-month">{{infoNew.month}}</span> <span class="bidding-news-detail-month">{{infoNew.month}}</span>
<span class="bidding-news-detail-year">{{infoNew.year}}</span> <span class="bidding-news-detail-year">{{infoNew.year}}</span>
...@@ -168,6 +171,9 @@ ...@@ -168,6 +171,9 @@
</div> </div>
<div class="bidding-news-detail-html" v-html="infoNew.content"></div> <div class="bidding-news-detail-html" v-html="infoNew.content"></div>
</div> </div>
<div v-if="!infoNew.id" class="row con-c align-c">
<span>暂无数据</span>
</div>
<img src="../assets/bg-01.png" alt=""> <img src="../assets/bg-01.png" alt="">
</div> </div>
</div> </div>
...@@ -181,7 +187,7 @@ ...@@ -181,7 +187,7 @@
<span class="title">最新成交</span> <span class="title">最新成交</span>
<!-- <span class="more">+MORE</span> --> <!-- <span class="more">+MORE</span> -->
</div> </div>
<div class="deal-list row"> <div v-if="listDealBuffer.length" class="deal-list row">
<img v-if="dealIndex === 0 && dealActive === 0" class="arrow-l" src="../assets/arrow/arrow-l.png" alt="" @click="onDealPrevious()"> <img v-if="dealIndex === 0 && dealActive === 0" class="arrow-l" src="../assets/arrow/arrow-l.png" alt="" @click="onDealPrevious()">
<img v-if="dealIndex !== 0 || dealActive === 1" class="arrow-l" src="../assets/arrow/arrow-l-active.png" alt="" @click="onDealPrevious()"> <img v-if="dealIndex !== 0 || dealActive === 1" class="arrow-l" src="../assets/arrow/arrow-l-active.png" alt="" @click="onDealPrevious()">
<img v-if="dealIndex < listDealBuffer.length" class="arrow-r" src="../assets/arrow/arrow-r-active.png" alt="" @click="onDealNext()"> <img v-if="dealIndex < listDealBuffer.length" class="arrow-r" src="../assets/arrow/arrow-r-active.png" alt="" @click="onDealNext()">
...@@ -197,6 +203,9 @@ ...@@ -197,6 +203,9 @@
</div> </div>
</div> </div>
</div> </div>
<div v-if="!listDealBuffer.length" class="deal-list row con-c align-c">
<span>暂无数据</span>
</div>
</div> </div>
</div> </div>
<componentFooter></componentFooter> <componentFooter></componentFooter>
...@@ -382,8 +391,12 @@ ...@@ -382,8 +391,12 @@
funcList.push(funcItem) funcList.push(funcItem)
} }
this.dealActive = 0 this.dealActive = 0
this.listDeal[0] = funcList[this.dealActive] if (funcList[this.dealActive]) {
this.listDeal[1] = funcList[this.dealActive + 1] this.listDeal[0] = funcList[this.dealActive]
}
if (funcList[this.dealActive + 1]) {
this.listDeal[1] = funcList[this.dealActive + 1]
}
this.listDealBuffer = funcList this.listDealBuffer = funcList
}, },
queryNotice: function (funcType, funcIndex) { queryNotice: function (funcType, funcIndex) {
...@@ -598,7 +611,7 @@ ...@@ -598,7 +611,7 @@
} }
img { img {
min-height: 500px; height: 400px;
} }
} }
} }
...@@ -901,6 +914,7 @@ ...@@ -901,6 +914,7 @@
} }
.deal-list { .deal-list {
position: relative; position: relative;
min-height: 100px;
margin: 0 30px; margin: 0 30px;
.arrow-l { .arrow-l {
position: absolute; position: absolute;
......
<template>
<div class="component-pdf-preview row con-c">
<div class="pdf-content" :style="'width: ' + pdfWidth[pdfWidthIndex] + 'px;'">
<pdf class="pdf"
ref="wrapper"
:src="src"
:page="pageCurrent"
@progress="initProgress"
@num-pages="initPageTotal"
@page-loaded="initPageCurrent"
@loaded="onLoaded"
>
</pdf>
</div>
<div class="operate">
<el-input class="operate-input" v-model="redirectPage" @change="onRedirectPage"></el-input>
<el-button icon="el-icon-caret-left" @click="onPrev()">上一页</el-button>
<el-button icon="el-icon-caret-right" @click="onNext()">下一页</el-button>
<el-button :disabled="pdfWidthIndex === pdfWidth.length - 1" icon="el-icon-zoom-in" @click="onEnlarge()">放大</el-button>
<el-button :disabled="pdfWidthIndex === 0" icon="el-icon-zoom-out" @click="onReduce()">缩小</el-button>
</div>
</div>
</template>
<script>
import iPdf from 'vue-pdf'
import iHost from '@/common/js/host.js'
export default {
components: {
'pdf': iPdf,
},
data() {
return {
src: '', // 文件地址
pdfWidth: [500, 625, 750, 875, 1000], // 页面宽度占比
pdfWidthIndex: 0,
pageScale: 100, // 缩放百分比
pageTotal: 0, // 页数
pageCurrent: 1, // 当前页码
redirectPage: '',
loadingProgress: 0, // 加载进度
};
},
created() {
this.src = iHost.resources + this.$route.query.file
},
methods: {
initPageTotal: function (funcValue) {
if (funcValue) {
this.pageTotal = funcValue
this.redirectPage = this.pageCurrent + ' / ' + this.pageTotal
}
},
initPageCurrent: function (funcValue) {
this.pageCurrent = funcValue
this.redirectPage = this.pageCurrent + ' / ' + this.pageTotal
},
initProgress: function (funcValue) {
this.loadingProgress = funcValue
},
onLoaded: function () {
this.pageCurrent = 1
},
onNext: function () {
if (this.pageCurrent === this.pageTotal) return
this.pageCurrent = this.pageCurrent + 1
},
onPrev: function () {
if (this.pageCurrent === 1) return
this.pageCurrent = this.pageCurrent - 1
},
onEnlarge: function () {
if (this.pdfWidthIndex === this.pdfWidth.length - 1) return
this.pdfWidthIndex = this.pdfWidthIndex + 1
},
onReduce: function () {
if (this.pdfWidthIndex === 0) return
this.pdfWidthIndex = this.pdfWidthIndex - 1
},
onRedirectPage: function (funcValue) {
let funcPageCurrent = 0
let funcRegExp = new RegExp(/^[0-9 ]+\/[0-9 ]+$/, 'ig')
// 输入页面格式不正确
if (!funcRegExp.test(funcValue)) {
this.redirectPage = this.pageCurrent + ' / ' + this.pageTotal
this.$message.error('请输入正确页码')
return
}
funcValue = funcValue.replace(/ /g, '')
funcValue = funcValue.replace(/\/[0-90]+/g, '')
funcPageCurrent = Number(funcValue)
if (funcPageCurrent > this.pageTotal) {
this.$message.error('不能大于最大页数')
this.redirectPage = this.pageCurrent + ' / ' + this.pageTotal
return
}
if (funcPageCurrent === 0) {
funcPageCurrent = 1
}
this.pageCurrent = funcPageCurrent
this.redirectPage = this.pageCurrent + ' / ' + this.pageTotal
},
},
mounted() {}
};
</script>
<style lang="less">
.component-pdf-preview {
position: relative;
width: 100%;
min-height: 100vh;
padding-top: 80px;
padding-bottom: 20px;
text-align: center;
background: #ababab;
.pdf-content {
overflow: hidden;
}
.operate {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 50px;
padding-top: 5px;
box-shadow: 0 0 10px #888888;
background: #ffffff;
.operate-input {
width: 100px;
margin-right: 10px;
}
}
}
</style>
\ No newline at end of file
...@@ -68,6 +68,7 @@ ...@@ -68,6 +68,7 @@
*/ */
init: function () { init: function () {
let funcToken = localStorage.getItem('token') let funcToken = localStorage.getItem('token')
console.log('funcToken - 2', funcToken)
if (!funcToken) { if (!funcToken) {
this.$router.push('/signIn') this.$router.push('/signIn')
return return
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<div class="col con-c align-c"> <div class="col con-c align-c">
<div :class="progressState > 3 ? 'personal-node-point' : 'personal-node-point-unactive'"></div> <div :class="progressState > 3 ? 'personal-node-point' : 'personal-node-point-unactive'"></div>
<div class="personal-node-name">{{progressNode[2].text}}</div> <div class="personal-node-name">{{progressNode[2].text}}</div>
<div class="personal-node-time">{{' '}}</div> <div class="personal-node-time">{{progressNode[2].time}}</div>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -190,7 +190,7 @@ ...@@ -190,7 +190,7 @@
'pageNo': 1, 'pageNo': 1,
'pageSize': 3 'pageSize': 3
} }
let funcNowBid = iRequest.request(iHost.base + 'bid/zIndex/todayOpenTender', {}, 'json', 'get') let funcNowBid = iRequest.request(iHost.base + 'bid/zIndex/todayOpenTender', { 'isCompany': 1 }, 'json', 'get')
.then((funcResponse) => { .then((funcResponse) => {
this.rawBidOpen = funcResponse this.rawBidOpen = funcResponse
}) })
......
...@@ -414,7 +414,7 @@ ...@@ -414,7 +414,7 @@
switch (funcType) { switch (funcType) {
case 'license': case 'license':
if (funcFile.raw.type !== 'image/png' && funcFile.raw.type !== 'image/jpeg') { if (funcFile.raw.type !== 'image/png' && funcFile.raw.type !== 'image/jpeg') {
this.$message.error('图片仅支持JPG、PNG格式') this.$message.error('仅支持JPG、PNG格式图片')
return false return false
} }
if (funcFile.size >= 6291456) { if (funcFile.size >= 6291456) {
......
...@@ -70,6 +70,7 @@ let output = function (thisVue, id, type) { ...@@ -70,6 +70,7 @@ let output = function (thisVue, id, type) {
'budget': funcRawData[i].fixedPrice, // 预算金额 'budget': funcRawData[i].fixedPrice, // 预算金额
'quantity': funcRawData[i].num, // 标的数量 'quantity': funcRawData[i].num, // 标的数量
'requirement': funcRawData[i].requirement, // 竞价参数要求 'requirement': funcRawData[i].requirement, // 竞价参数要求
'isWin': funcRawData[i].selected
} }
funcPackage.push(funcItem) funcPackage.push(funcItem)
} }
......
...@@ -76,8 +76,9 @@ ...@@ -76,8 +76,9 @@
<el-table-column prop="budget" label="限价(元)" align="center"></el-table-column> <el-table-column prop="budget" label="限价(元)" align="center"></el-table-column>
<el-table-column align="center"> <el-table-column align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="global-cursor quote-record col"> <div class="global-cursor row">
<span class="global-color-blue" @click="onQueryQuoteRecord(index, scope.row)">报价记录</span> <span class="global-color-blue" @click="onQueryQuoteRecord(index, scope.row)">报价记录</span>
<span v-if="scope.row.isWin" class="is-win global-color-green">中标</span>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -335,6 +336,8 @@ ...@@ -335,6 +336,8 @@
this.componentContract = funcPackage this.componentContract = funcPackage
this.componentNotice = funcOther this.componentNotice = funcOther
console.log(this.componentContract)
// 公告状态设置 // 公告状态设置
let funcIndex = 0 let funcIndex = 0
for (funcIndex; funcIndex < this.componentProgress.timestamp.length; funcIndex++) { for (funcIndex; funcIndex < this.componentProgress.timestamp.length; funcIndex++) {
...@@ -674,6 +677,7 @@ ...@@ -674,6 +677,7 @@
<style lang="less"> <style lang="less">
.supplier-notice { .supplier-notice {
width: 100%; width: 100%;
max-width: 1140px;
.info-map { .info-map {
height: 66px; height: 66px;
...@@ -761,6 +765,10 @@ ...@@ -761,6 +765,10 @@
.info-item { .info-item {
margin-bottom: 54px; margin-bottom: 54px;
.is-win {
margin-left: 40px;
}
.bid-result-nopackage { .bid-result-nopackage {
margin-bottom: 30px; margin-bottom: 30px;
padding: 14px 0 14px 80px; padding: 14px 0 14px 80px;
...@@ -794,8 +802,26 @@ ...@@ -794,8 +802,26 @@
} }
} }
// 公告富文本相关默认样式
.content { .content {
overflow: hidden; overflow: hidden !important;
line-height: 1.5;
// 对应后台富文本编辑边框样式
table {
border-top: 1px solid #ccc;
border-left: 1px solid #ccc;
th {
border-bottom: 1px solid #ccc;
border-right: 1px solid #ccc;
text-align: center;
}
td {
border-bottom: 1px solid #ccc;
border-right: 1px solid #ccc;
padding: 3px 5px;
}
}
p { p {
line-height: 2; line-height: 2;
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<span>恭喜您,报名成功!</span> <span>恭喜您,报名成功!</span>
<div class="row"> <div class="row">
<span class="finished-tip-id">{{ '订单号:' + ordersNumber }}</span> <span class="finished-tip-id">{{ '订单号:' + ordersNumber }}</span>
<span class="finished-tip-amount">总金额:<span class="global-color-red">{{ '¥' + ordersAmount }}</span></span> <span class="finished-tip-amount">总金额:<span class="global-color-red">{{ ordersAmount + ' 元' }}</span></span>
</div> </div>
</div> </div>
</div> </div>
...@@ -66,9 +66,6 @@ ...@@ -66,9 +66,6 @@
}, },
created: function () { created: function () {
// 测试数据
// localStorage.setItem('payInfo', JSON.stringify({ id: '111111', amount: 0, state: 2}))
// localStorage.removeItem('payInfo')
this.init() this.init()
}, },
......
...@@ -276,6 +276,7 @@ ...@@ -276,6 +276,7 @@
if (funcResponse.state !== '0') { if (funcResponse.state !== '0') {
clearInterval(this.payTimer) clearInterval(this.payTimer)
let funcPayState = funcResponse.state
iRequest.request(iHost.base + 'bid/order/getCompanyOrderDetail', { 'orderId': this.payId[Number(this.payway)] } , 'json', 'post') iRequest.request(iHost.base + 'bid/order/getCompanyOrderDetail', { 'orderId': this.payId[Number(this.payway)] } , 'json', 'post')
.then((funcResponse) => { .then((funcResponse) => {
let funcLocalStorage = {} let funcLocalStorage = {}
...@@ -283,14 +284,14 @@ ...@@ -283,14 +284,14 @@
funcLocalStorage = { funcLocalStorage = {
'id': this.payId[Number(this.payway)], 'id': this.payId[Number(this.payway)],
'amount': this.contractSelection.total, 'amount': this.contractSelection.total,
'state': funcResponse.state, 'state': funcPayState,
'number': funcResponse.order.sn 'number': funcResponse.order.sn
} }
} else { } else {
funcLocalStorage = { funcLocalStorage = {
'id': this.payId[Number(this.payway)], 'id': this.payId[Number(this.payway)],
'amount': this.componentContract[0].budget, 'amount': this.componentContract[0].budget,
'state': funcResponse.state, 'state': funcPayState,
'number': funcResponse.order.sn 'number': funcResponse.order.sn
} }
} }
......
...@@ -90,6 +90,7 @@ ...@@ -90,6 +90,7 @@
watch:{ watch:{
$route() { $route() {
if (this.$route.query.search) this.limitKeyword = this.$route.query.search
this.queryList() this.queryList()
this.setActiveLimitItem() this.setActiveLimitItem()
} }
...@@ -97,6 +98,7 @@ ...@@ -97,6 +98,7 @@
created: function () { created: function () {
this.setQueryTab() this.setQueryTab()
if (this.$route.query.search) this.limitKeyword = this.$route.query.search
}, },
methods: { methods: {
......
...@@ -96,6 +96,22 @@ let output = function (thisVue, id, type, isPreview) { ...@@ -96,6 +96,22 @@ let output = function (thisVue, id, type, isPreview) {
} }
thisVue.$store.commit('componentProgress', funcProgress) thisVue.$store.commit('componentProgress', funcProgress)
// 代理信息
if (funcResponse.agencyInfo) {
funcRawData = funcResponse.agencyInfo
funcAgency = {
'id': funcRawData.agencyInfoId,
'name': funcRawData.companyName,
'address': funcRawData.area.replace(/\//g, '') + funcRawData.address,
'phone': funcRawData.phone,
'liaison': funcRawData.contactor,
'email': funcRawData.email
}
thisVue.$store.commit('componentAgency', funcAgency)
}
// 附件组件 // 附件组件
...@@ -229,16 +245,18 @@ let output = function (thisVue, id, type, isPreview) { ...@@ -229,16 +245,18 @@ let output = function (thisVue, id, type, isPreview) {
funcRawData = funcResponse.agencyInfo if (funcResponse.agencyInfo) {
funcAgency = { funcRawData = funcResponse.agencyInfo
'id': funcRawData.agencyInfoId, funcAgency = {
'name': funcRawData.companyName, 'id': funcRawData.agencyInfoId,
'address': funcRawData.area.replace(/\//g, '') + funcRawData.address, 'name': funcRawData.companyName,
'phone': funcRawData.phone, 'address': funcRawData.area.replace(/\//g, '') + funcRawData.address,
'liaison': funcRawData.contactor, 'phone': funcRawData.phone,
'email': funcRawData.email 'liaison': funcRawData.contactor,
'email': funcRawData.email
}
thisVue.$store.commit('componentAgency', funcAgency)
} }
thisVue.$store.commit('componentAgency', funcAgency)
...@@ -968,13 +986,10 @@ let output = function (thisVue, id, type, isPreview) { ...@@ -968,13 +986,10 @@ let output = function (thisVue, id, type, isPreview) {
funcRawData = funcResponse.result funcRawData = funcResponse.result
for (let i = 0, len = funcPackage.length; i < len; i++) { for (let i = 0, len = funcPackage.length; i < len; i++) {
for (let j = 0, lenj = funcRawData.length; j < lenj; j++) { for (let j = 0, lenj = funcRawData.length; j < lenj; j++) {
if (funcPackage[i].id === funcRawData[j].tenderPackageId) { funcPackage[i].resultName.push(funcRawData[j].companyName)
funcPackage[i].resultName.push(funcRawData[j].companyName) funcPackage[i].resultPrice.push(funcRawData[j].amount)
funcPackage[i].resultPrice.push(funcRawData[j].amount)
}
} }
} }
for (let i = 0, len = funcPackage.length; i < len; i++) { for (let i = 0, len = funcPackage.length; i < len; i++) {
if (funcPackage[i].resultName.length === 0) { if (funcPackage[i].resultName.length === 0) {
funcPackage[i].resultName.push('流标') funcPackage[i].resultName.push('流标')
......
...@@ -62,9 +62,12 @@ ...@@ -62,9 +62,12 @@
<div> <div>
<span>{{'定标时间:' + componentProject.timedDeadLine}}</span> <span>{{'定标时间:' + componentProject.timedDeadLine}}</span>
</div> </div>
<div v-for="(item, index) in componentContract" :key="index"> <div v-for="(item, index) in componentContract" :key="index">
<span class="bid-result-nopackage-item">中标(成交)供应商:<span :class="item.resultName[0] === '流标' ? 'global-color-red' : ''">{{item.resultName[0]}}</span></span> <div v-for="(itemWin, indexWin) in item.resultName" :key="indexWin" class="row con-b bid-result-nopackage-item">
<span class="bid-result-nopackage-item">中标(成交)金额:<span>{{item.resultPrice[0]}}</span></span> <span>中标(成交)供应商:<span :class="item.resultName[indexWin] === '流标' ? 'global-color-red' : ''">{{item.resultName[indexWin]}}</span></span>
<span>中标(成交)金额:<span>{{item.resultPrice[indexWin] + ' 元'}}</span></span>
</div>
</div> </div>
</div> </div>
...@@ -122,7 +125,7 @@ ...@@ -122,7 +125,7 @@
</div> </div>
<!-- 代理机构 --> <!-- 代理机构 -->
<div v-if="[1, 2, 3, 4, 5, 6, 9].indexOf(noticeType) >= 0" class="info-item"> <div v-if="[1, 2, 3, 4, 5, 6, 9].indexOf(noticeType) >= 0 && JSON.stringify(componentAgency) !== '{}'" class="info-item">
<div class="title title-decorate row align-c"> <div class="title title-decorate row align-c">
<span>招标代理机构</span> <span>招标代理机构</span>
</div> </div>
...@@ -541,8 +544,10 @@ ...@@ -541,8 +544,10 @@
let funcTableTotal = 0 let funcTableTotal = 0
for (let i = 0, len = funcSelection.length; i < len; i++) { for (let i = 0, len = funcSelection.length; i < len; i++) {
funcTableTotal = funcTableTotal + Number(funcSelection[i].price) // 此处乘以 1000 是为了避免 js 小数计算带来的精度误差错误
funcTableTotal = funcTableTotal + Number(funcSelection[i].price) * 1000
} }
funcTableTotal = parseInt(funcTableTotal / 10) / 100
funcContractSelection.total = funcTableTotal funcContractSelection.total = funcTableTotal
funcContractSelection.contract = funcSelection funcContractSelection.contract = funcSelection
...@@ -824,7 +829,7 @@ ...@@ -824,7 +829,7 @@
} }
.bid-result-nopackage-item { .bid-result-nopackage-item {
margin-right: 320px; padding-right: 400px;
} }
} }
......
...@@ -698,6 +698,7 @@ ...@@ -698,6 +698,7 @@
// 职称上传 // 职称上传
case 3: case 3:
console.log(this.formRegister)
this.$refs.formSkill.validate(funcValid => { this.$refs.formSkill.validate(funcValid => {
if (funcValid) { if (funcValid) {
if (this.uploadOption.skill.image.length > 0) { if (this.uploadOption.skill.image.length > 0) {
...@@ -833,8 +834,8 @@ ...@@ -833,8 +834,8 @@
break break
case 'statement': case 'statement':
if (funcFile.raw.type !== 'image/png' && funcFile.raw.type !== 'image/jpeg' && funcFile.raw.type !== 'application/pdf') { if (funcFile.raw.type !== 'image/png' && funcFile.raw.type !== 'image/jpeg') {
this.$message.error('请上传图片或PDF文档') this.$message.error('请上传图片')
return false return false
} }
if (funcFile.size >= 6291456) { if (funcFile.size >= 6291456) {
......
...@@ -68,11 +68,13 @@ ...@@ -68,11 +68,13 @@
*/ */
init: function () { init: function () {
let funcToken = localStorage.getItem('token') let funcToken = localStorage.getItem('token')
console.log('funcToken - 3', funcToken)
if (!funcToken) { if (!funcToken) {
this.$router.push('/signIn') this.$router.push('/signIn')
return return
} }
console.log(iToken.state(funcToken))
switch (iToken.state(funcToken)) { switch (iToken.state(funcToken)) {
case 'valid': case 'valid':
this.$store.commit('isSignIn', true) this.$store.commit('isSignIn', true)
...@@ -84,6 +86,7 @@ ...@@ -84,6 +86,7 @@
this.$store.commit('info', JSON.parse(localStorage.getItem('info'))) this.$store.commit('info', JSON.parse(localStorage.getItem('info')))
iRequest.request(iHost.base + 'bid/zLogin/refreshToken', { 'refreshToken': localStorage.getItem('refresh') }, 'json', 'get') iRequest.request(iHost.base + 'bid/zLogin/refreshToken', { 'refreshToken': localStorage.getItem('refresh') }, 'json', 'get')
.then((funcResponse) => { .then((funcResponse) => {
console.log(funcResponse)
localStorage.setItem('token', funcResponse.token) localStorage.setItem('token', funcResponse.token)
localStorage.setItem('refresh', funcResponse.refreshToken) localStorage.setItem('refresh', funcResponse.refreshToken)
this.queryUserInfo() this.queryUserInfo()
......
...@@ -74,6 +74,10 @@ ...@@ -74,6 +74,10 @@
<span>政府专家证明材料:</span> <span>政府专家证明材料:</span>
<img v-for="(item, index) in uploadOption.official.image" :key="index" :src="item.url" alt=""> <img v-for="(item, index) in uploadOption.official.image" :key="index" :src="item.url" alt="">
</div> </div>
<div class="item-text row">
<span>专家入库声明:</span>
<img v-for="(item, index) in uploadOption.statement.image" :key="index" :src="item.url" alt="">
</div>
</div> </div>
<div class="detail-title row align-c"> <div class="detail-title row align-c">
...@@ -139,6 +143,14 @@ ...@@ -139,6 +143,14 @@
}, },
image: [] image: []
}, },
statement: {
url: iHost.uploadFile,
params: {
'file': '',
'uploadPath': 'register/specialist/Statement/'
},
image: []
},
}, },
} }
}, },
...@@ -192,7 +204,7 @@ ...@@ -192,7 +204,7 @@
let funImageUrl let funImageUrl
// 设置政府专家图片 // 设置政府专家图片
if (funcResponse.multipleStatement !== '') { if (funcResponse.multipleStatement !== '') {
funImageUrl = funcResponse.multipleStatement.split(',') funImageUrl = funcResponse.multipleStatement.split('|')
for (let i = 0, len = funImageUrl.length; i < len; i++) { for (let i = 0, len = funImageUrl.length; i < len; i++) {
this.uploadOption.official.image.push({ this.uploadOption.official.image.push({
'status': 'success', 'status': 'success',
...@@ -235,6 +247,18 @@ ...@@ -235,6 +247,18 @@
} }
} }
// 设置入库申明
if (funcResponse.statement !== '') {
this.uploadOption.statement.image.push({
'status': 'success',
'url': funcResponse.statement,
'name': 'image.png',
'size': 100,
'percentage': 100,
'uid': 5000000000000
})
}
switch(this.formRegister.sex) { switch(this.formRegister.sex) {
case 1: case 1:
this.formRegister.sexText = '男' this.formRegister.sexText = '男'
......
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 sign in to comment