Commit 397a0c95 authored by danfuman's avatar danfuman

Merge branch 'master' of http://192.168.60.201/root/dsk-operate-sys

# Conflicts:
#	dsk-operate-ui/vue.config.js
parents 1b53ff94 0401c8f0
# 页面标题
VUE_APP_TITLE = 数字化经营履约全生命链路管理系统
NODE_ENV = "production"
# 生产环境配置
ENV = 'test'
# 数字化经营履约全生命链路管理系统/生产环境
VUE_APP_BASE_API = '/prod-api'
\ No newline at end of file
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
"scripts": { "scripts": {
"dev": "vue-cli-service serve", "dev": "vue-cli-service serve",
"build:prod": "vue-cli-service build", "build:prod": "vue-cli-service build",
"build:test": "vue-cli-service build --mode test",
"build:stage": "vue-cli-service build --mode staging", "build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview", "preview": "node build/index.js --preview",
"lint": "eslint --ext .js,.vue src" "lint": "eslint --ext .js,.vue src"
......
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="14" height="14" viewBox="0 0 14 14"><defs><clipPath id="master_svg0_1539_143591"><rect x="0" y="0" width="14" height="14" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_1539_143591)"><g><path d="M7.00035,1.508544921875C7.00035,1.508544921875,10.05856,4.566754921875,10.05856,4.566754921875C10.05856,4.566754921875,9.233609999999999,5.391704921875,9.233609999999999,5.391704921875C9.233609999999999,5.391704921875,7.584,3.742104921875,7.584,3.742104921875C7.584,3.742104921875,7.584,9.666634921875,7.584,9.666634921875C7.584,9.666634921875,6.41734,9.666634921875,6.41734,9.666634921875C6.41734,9.666634921875,6.41734,3.741484921875,6.41734,3.741484921875C6.41734,3.741484921875,4.76709,5.391704921875,4.76709,5.391704921875C4.76709,5.391704921875,3.94214,4.566754921875,3.94214,4.566754921875C3.94214,4.566754921875,7.00035,1.508544921875,7.00035,1.508544921875C7.00035,1.508544921875,7.00035,1.508544921875,7.00035,1.508544921875ZM2.91667,11.375164921875C2.91667,11.375164921875,2.91667,10.208494921875,2.91667,10.208494921875C2.91667,10.208494921875,1.75,10.208494921875,1.75,10.208494921875C1.75,10.208494921875,1.75,12.541844921875,1.75,12.541844921875C1.75,12.541844921875,12.25,12.541844921875,12.25,12.541844921875C12.25,12.541844921875,12.25,10.208494921875,12.25,10.208494921875C12.25,10.208494921875,11.08333,10.208494921875,11.08333,10.208494921875C11.08333,10.208494921875,11.08333,11.375164921875,11.08333,11.375164921875C11.08333,11.375164921875,2.91667,11.375164921875,2.91667,11.375164921875C2.91667,11.375164921875,2.91667,11.375164921875,2.91667,11.375164921875Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g></g></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="14" height="14" viewBox="0 0 14 14"><defs><clipPath id="master_svg0_1582_133303"><rect x="0" y="0" width="14" height="14" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_1582_133303)"><g><path d="M2.5419921875,2.541748046875L9.0419921875,2.541748046875L9.0419921875,1.541748046875L1.5419921875,1.541748046875L1.5419921875,12.458448046875L9.0419921875,12.458448046875L9.0419921875,11.458418046875L2.5419921875,11.458418046875L2.5419921875,2.541748046875ZM12.5419921875,7.500078046875L12.5419921875,6.500078046875L5.5419921875,6.500078046875L5.5419921875,7.500078046875L12.5419921875,7.500078046875Z" fill-rule="evenodd" fill="#0081FF" fill-opacity="1"/></g><g><path d="M6.20757528125,7.0001821875L8.49947828125,4.7080261875L7.7923282812500005,4.0009581875L4.79340128125,7.0002221875L7.7926382812499995,9.9994621875L8.49974828125,9.2923521875L6.20757528125,7.0001821875Z" fill-rule="evenodd" fill="#0081FF" fill-opacity="1"/></g></g></svg>
\ No newline at end of file \ No newline at end of file
...@@ -10,13 +10,22 @@ ...@@ -10,13 +10,22 @@
.fade-enter-active, .fade-enter-active,
.fade-leave-active { .fade-leave-active {
transition: opacity 0.3s; transition: opacity 0.3s ease-in;
} }
.fade-enter, .fade-enter,
.fade-leave-to /* .fade-leave-active below version 2.1.8 */ { .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0; opacity: 0;
} }
.fade-position-enter-active,
.fade-position-leave-active {
transition: all 0.3s ease-in;
}
.fade-position-enter,
.fade-position-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
.el-message { .el-message {
z-index: 3000 !important; z-index: 3000 !important;
} }
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
/* fade */ /* fade */
.fade-enter-active, .fade-enter-active,
.fade-leave-active { .fade-leave-active {
transition: opacity 0.28s; transition: opacity 0.3s;
} }
.fade-enter, .fade-enter,
......
...@@ -181,7 +181,7 @@ export const constantRoutes = [ ...@@ -181,7 +181,7 @@ export const constantRoutes = [
children: [ children: [
{ {
path: '/company/:id', path: '/company/:id',
component: () => import('@/views/detail/party-b/index'), component: () => import('@/views/detail'),
name: 'Company', name: 'Company',
meta: { title: '企业详情' } meta: { title: '企业详情' }
} }
......
...@@ -23,18 +23,20 @@ ...@@ -23,18 +23,20 @@
<!-- 未点击前的输入框样式 --> <!-- 未点击前的输入框样式 -->
<div class="normal-search-container" :class="{'is-hover-search' : form.hover}" @mouseover="searchHover($event,form)" <div class="normal-search-container" :class="{'is-hover-search' : form.hover}" @mouseover="searchHover($event,form)"
@mouseleave="searchUnHover($event,form)"> @mouseleave="searchUnHover($event,form)">
<img src="@/assets/images/enterprise/enterprise-search-icon.svg" alt=""> <img src="@/assets/images/enterprise/enterprise-search-icon.svg">
<span v-show="!form.hover && !form.value">搜索</span> <transition name="fade-position" appear mode="out-in">
<span v-if="!form.hover && !form.value">搜索</span>
<el-input v-model="form.value" :placeholder="form.placeholder ? form.placeholder : '输入关键词查询'" <el-input v-model="form.value" :placeholder="form.placeholder ? form.placeholder : '输入关键词查询'"
:style="form.width?'width:'+form.width+'px':'width:238px'" @focus="searchFocus($event,form)" @blur="searchBlur($event,form)" :style="form.width?'width:'+form.width+'px':'width:238px'" @focus="searchFocus($event,form)" @blur="searchBlur($event,form)"
@input="value => searchInput(value,form)" v-show="form.hover || form.value" @keydown.native.enter="changeSelect"> @input="value => searchInput(value,form)" v-else @keydown.native.enter="changeSelect">
<template slot="suffix"> <template slot="suffix">
<transition mode="out-in" appear name="fade"> <transition mode="out-in" appear name="fade">
<img src="@/assets/images/enterprise/search-input-clear-icon.svg" alt="" @click.stop="form.value = '';changeSelect()" <img src="@/assets/images/enterprise/search-input-clear-icon.svg" @click.stop="form.value = '';changeSelect()"
v-show="form.showClearIcon"> v-show="form.showClearIcon">
</transition> </transition>
</template> </template>
</el-input> </el-input>
</transition>
</div> </div>
</template> </template>
<!-- 多选 --> <!-- 多选 -->
...@@ -145,11 +147,19 @@ export default { ...@@ -145,11 +147,19 @@ export default {
} }
}, },
searchBlur(event, formData) { searchBlur(event, formData) {
const { target } = event;
// 失去焦点没有文字
if (!target?.value?.length) {
this.$set(formData, "hover", false);
}
this.$set(formData, "showClearIcon", false); this.$set(formData, "showClearIcon", false);
this.changeSelect();
}, },
searchInput(value, formData) { searchInput(value, formData) {
if (value?.length) { if (value?.length) {
this.$set(formData, "showClearIcon", true); this.$set(formData, "showClearIcon", true);
} else {
this.$set(formData, "showClearIcon", false);
} }
}, },
searchHover(event, formData) { searchHover(event, formData) {
...@@ -157,6 +167,7 @@ export default { ...@@ -157,6 +167,7 @@ export default {
}, },
searchUnHover(event, formData) { searchUnHover(event, formData) {
if (!formData.value) { if (!formData.value) {
this.$set(formData, "showClearIcon", false);
this.$set(formData, "hover", false); this.$set(formData, "hover", false);
} }
}, },
...@@ -429,6 +440,13 @@ export default { ...@@ -429,6 +440,13 @@ export default {
::v-deep .normal-search-container { ::v-deep .normal-search-container {
display: flex; display: flex;
align-items: center; align-items: center;
transition-property: width, background;
transition-duration: 0.3s;
width: 64px;
height: 32px;
padding-left: 12px;
box-sizing: border-box;
position: relative;
&.is-hover-search { &.is-hover-search {
width: 238px; width: 238px;
...@@ -440,19 +458,13 @@ export default { ...@@ -440,19 +458,13 @@ export default {
} }
} }
&:hover {
& > span {
color: #0081ff;
}
}
& > img { & > img {
width: 16px; width: 16px;
height: 16px; height: 16px;
margin-left: 12px;
cursor: pointer; cursor: pointer;
} }
// & > .search-transition-container > span {
& > span { & > span {
color: rgba(35, 35, 35, 0.8); color: rgba(35, 35, 35, 0.8);
font-weight: 400; font-weight: 400;
...@@ -462,7 +474,12 @@ export default { ...@@ -462,7 +474,12 @@ export default {
cursor: pointer; cursor: pointer;
} }
.search-transition-container {
width: 100%;
}
.el-input { .el-input {
width: 100% !important;
& > .el-input__inner { & > .el-input__inner {
border: none; border: none;
height: 32px; height: 32px;
...@@ -470,7 +487,7 @@ export default { ...@@ -470,7 +487,7 @@ export default {
caret-color: #0081ff; caret-color: #0081ff;
color: rgba(35, 35, 35, 0.8); color: rgba(35, 35, 35, 0.8);
font-size: 14px; font-size: 14px;
background: #f4f6f9; background: transparent;
padding-right: 26px; padding-right: 26px;
padding-left: 8px; padding-left: 8px;
...@@ -488,6 +505,9 @@ export default { ...@@ -488,6 +505,9 @@ export default {
.el-input__suffix-inner { .el-input__suffix-inner {
height: 14px; height: 14px;
width: 14px; width: 14px;
display: flex;
align-items: center;
justify-content: center;
} }
img { img {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<!-- 导入弹窗 --> <!-- 导入弹窗 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px"> <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px">
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url" :disabled="upload.isUploading" <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url" :disabled="upload.isUploading"
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag> :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" on-error="handleFileError" :auto-upload="false" drag>
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
</el-upload> </el-upload>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button> <el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button> <el-button @click="cancelimport">取 消</el-button>
</div> </div>
</el-dialog> </el-dialog>
<!--导入结果--> <!--导入结果-->
...@@ -99,13 +99,16 @@ export default { ...@@ -99,13 +99,16 @@ export default {
if (response.data) { if (response.data) {
this.uploadResult.successCount = response.data.sucessCount; this.uploadResult.successCount = response.data.sucessCount;
this.uploadResult.errorCount = response.data.errorCount; this.uploadResult.errorCount = response.data.errorCount;
response.data.errorMsg ? this.uploadResult.errorMsg = response.data.errorMsg : null; (response.data?.errorMsg && response.data?.errorMsg?.length) ? ((this.uploadResult.errorMsg = response.data.errorMsg) && (this.upload.showResult = true)) : null;
this.upload.showResult = true;
} }
this.$emit("success-upload");
} else { } else {
this.$message.error(`上传失败,${response.msg ? response.msg : "请根据模板正确填写表格内容!"}`); this.$message.error(`上传失败,${response.msg ? response.msg : "请根据模板正确填写表格内容!"}`);
} }
}, },
handleFileError(err, file, fileList) {
this.$message.error(`上传失败,${response.msg ? response.msg : "请根据模板正确填写表格内容!"}`);
},
// 提交上传文件 // 提交上传文件
submitFileForm() { submitFileForm() {
this.$refs.upload.submit(); this.$refs.upload.submit();
...@@ -123,6 +126,9 @@ export default { ...@@ -123,6 +126,9 @@ export default {
this.upload.showResult = false; this.upload.showResult = false;
this.uploadResult = this.$options.data.call(this).uploadResult; this.uploadResult = this.$options.data.call(this).uploadResult;
}, },
cancelimport() {
this.$emit("cancel-import");
}
}, },
} }
</script> </script>
......
...@@ -4,19 +4,19 @@ ...@@ -4,19 +4,19 @@
<!-- 查询功能 --> <!-- 查询功能 -->
<div class="search-form-container"> <div class="search-form-container">
<div class="left-form-title">开标记录</div> <div class="left-form-title">开标记录</div>
<div class="right-form-btn-box"> <div class="right-form-btn-box" v-if="!notHasPermission">
<div class="search-btn add" @click.stop="addBidOpeningRecord"> <div class="search-btn add" @click.stop="addBidOpeningRecord">
<img src="@/assets/images/project/project-bid-opening-record-add.svg" alt=""> <img src="@/assets/images/project/project-bid-opening-record-add.svg" alt="">
<span>新增</span> <span>新增</span>
</div> </div>
<div class="search-btn remove" @click.stop="batchDeletion()">
<img src="@/assets/images/project/project-bid-opening-record-remove.svg" alt="">
<span>批量删除</span>
</div>
<div class="search-btn import" @click.stop="batchImport"> <div class="search-btn import" @click.stop="batchImport">
<img src="@/assets/images/project/project-bid-opening-record-import.svg" alt=""> <img src="@/assets/images/project/project-bid-opening-record-import.svg" alt="">
<span>批量导入</span> <span>批量导入</span>
</div> </div>
<div class="search-btn remove" @click.stop="batchDeletion()">
<img src="@/assets/images/project/project-bid-opening-record-remove.svg" alt="">
<span>批量删除</span>
</div>
</div> </div>
</div> </div>
<!-- 骨架屏 --> <!-- 骨架屏 -->
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
:formRules="formRules" :formData="formData"></add-bid-opening-record> :formRules="formRules" :formData="formData"></add-bid-opening-record>
<!-- 导入弹窗 --> <!-- 导入弹窗 -->
<batch-import-com :uploadOptions="uploadOptions"></batch-import-com> <batch-import-com :uploadOptions="uploadOptions" @success-upload="successUpload" @cancel-import="cancelimport"></batch-import-com>
</div> </div>
</template> </template>
<script> <script>
...@@ -68,6 +68,32 @@ import { getToken } from "@/utils/auth"; ...@@ -68,6 +68,32 @@ import { getToken } from "@/utils/auth";
export default { export default {
components: { skeleton, TableListCom, AddBidOpeningRecord, BatchImportCom }, components: { skeleton, TableListCom, AddBidOpeningRecord, BatchImportCom },
name: "bidOpeningRecord", name: "bidOpeningRecord",
props: {
detailId: {
type: Number,
default: 0
},
projectData: {
type: Object,
default: () => ({})
},
isDisabled: {
type: Boolean,
default: false
}
},
watch: {
projectData: {
handler(newValue, oldValue) {
this.projectDetail = newValue;
}
},
isDisabled: {
handler(newValue, oldValue) {
this.notHasPermission = newValue;
}
}
},
data() { data() {
// 必填字符串长度验证 // 必填字符串长度验证
function tendererStrLengthValidator(target) { function tendererStrLengthValidator(target) {
...@@ -118,6 +144,10 @@ export default { ...@@ -118,6 +144,10 @@ export default {
return callback(); return callback();
} }
return { return {
// 项目详情
projectDetail: this.projectData,
// 是否拥有权限
notHasPermission: this.isDisabled,
title: "新增开标记录", title: "新增开标记录",
// 加载状态 // 加载状态
isLoadingData: false, isLoadingData: false,
...@@ -128,7 +158,6 @@ export default { ...@@ -128,7 +158,6 @@ export default {
{ label: '项目经理', prop: 'businessManager', minWidth: "115px" }, { label: '项目经理', prop: 'businessManager', minWidth: "115px" },
{ label: '联系方式', prop: 'contact', width: "133px", }, { label: '联系方式', prop: 'contact', width: "133px", },
{ label: '投标金额(万元)', prop: 'tenderAmount', width: "168px", slot: true, slotHeader: true, slotName: "tenderAmountHeader" }, { label: '投标金额(万元)', prop: 'tenderAmount', width: "168px", slot: true, slotHeader: true, slotName: "tenderAmountHeader" },
{ label: '操作', prop: 'action-field-bar', width: "151px", fixed: "right" },
], ],
needSelection: { needSelection: {
flag: true, flag: true,
...@@ -140,14 +169,14 @@ export default { ...@@ -140,14 +169,14 @@ export default {
pageSize: 20, pageSize: 20,
orderByColumn: "tenderAmount", orderByColumn: "tenderAmount",
isAsc: "asc", isAsc: "asc",
businessId: this.$route.query.id, businessId: this.detailId ? this.detailId : parseInt(this.$route.query.id),
}, },
tableDataTotal: 0, tableDataTotal: 0,
tableDataList: [], tableDataList: [],
// 表单验证规则 // 表单验证规则
// 表单数据 // 表单数据
formData: { formData: {
businessId: this.$route.query.id, businessId: this.detailId ? this.detailId : parseInt(this.$route.query.id),
tenderer: "", tenderer: "",
tendererNature: "", tendererNature: "",
businessManager: "", businessManager: "",
...@@ -169,13 +198,13 @@ export default { ...@@ -169,13 +198,13 @@ export default {
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
// 弹出层标题 // 弹出层标题
title: "导入开标信息", title: "导入开标记录",
// 是否禁用上传 // 是否禁用上传
isUploading: false, isUploading: false,
// 设置上传的请求头部 // 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() }, headers: { Authorization: "Bearer " + getToken() },
// 上传的地址 // 上传的地址
url: process.env.VUE_APP_BASE_API + `/business/open/tender/importData/${this.$route.query.id}`, url: process.env.VUE_APP_BASE_API + `${process.env.NODE_ENV == "production" ? "business/open/tender/importData/" : "/business/open/tender/importData/"}${this.detailId ? this.detailId : parseInt(this.$route.query.id)}`,
// 展示上传结果 // 展示上传结果
showResult: false, showResult: false,
// 模板下载地址 // 模板下载地址
...@@ -197,6 +226,14 @@ export default { ...@@ -197,6 +226,14 @@ export default {
methods: { methods: {
async dataInit() { async dataInit() {
try { try {
if (!this.notHasPermission) {
this.formColum.push({ label: '操作', prop: 'action-field-bar', width: "151px", fixed: "right" });
} else {
this.needSelection = {
flag: false,
width: "39px",
};
}
await this.getTableList(); await this.getTableList();
} catch (error) { } catch (error) {
console.log(error); console.log(error);
...@@ -269,6 +306,8 @@ export default { ...@@ -269,6 +306,8 @@ export default {
this.$message.success(`${this.formData.id ? "修改成功!" : "新增成功!"}`); this.$message.success(`${this.formData.id ? "修改成功!" : "新增成功!"}`);
this.dialogClose(); this.dialogClose();
await this.getTableList(); await this.getTableList();
} else {
this.$message.error(`${result.msg}`);
} }
} catch (error) { } catch (error) {
console.log(error); console.log(error);
...@@ -279,7 +318,7 @@ export default { ...@@ -279,7 +318,7 @@ export default {
try { try {
await this.$nextTick(); await this.$nextTick();
// 清空复选框选项 // 清空复选框选项
this.$refs["tableListComParent"].$refs["tableRef"].clearSelection(); this.$refs["tableListComParent"]?.$refs["tableRef"] ? this.$refs["tableListComParent"].$refs["tableRef"].clearSelection() : null;
this.selectionArray = []; this.selectionArray = [];
} catch (error) { } catch (error) {
console.log(error); console.log(error);
...@@ -338,7 +377,8 @@ export default { ...@@ -338,7 +377,8 @@ export default {
cancelimport() { cancelimport() {
this.uploadOptions.open = false; this.uploadOptions.open = false;
}, },
getdatas() { // 导入成功
successUpload() {
this.getTableList(); this.getTableList();
} }
}, },
...@@ -417,14 +457,14 @@ export default { ...@@ -417,14 +457,14 @@ export default {
background: #fff; background: #fff;
border: 1px solid #ff3c3c; border: 1px solid #ff3c3c;
color: #ff3c3c; color: #ff3c3c;
border-radius: 2px; border-radius: 4px;
} }
&.import { &.import {
background: #fff; background: #fff;
border: 1px solid #d9d9d9; border: 1px solid #0081ff;
color: #232323; color: #0081ff;
border-radius: 2px; border-radius: 4px;
} }
} }
} }
......
...@@ -15,7 +15,8 @@ ...@@ -15,7 +15,8 @@
<div class="titles"> <div class="titles">
<img src="@/assets/images/project/headimg.png" class="headimg"> <img src="@/assets/images/project/headimg.png" class="headimg">
<strong class="text">{{ProjectData.projectName}}</strong> <strong class="text">{{ProjectData.projectName}}</strong>
<div class="protypes" :class="{'i1':ProjectData.status == 0,'i2':ProjectData.status == 1,'i3':ProjectData.status == 2}" <div class="protypes"
:class="{'i1':ProjectData.status == 0,'i2':ProjectData.status == 1,'i3':ProjectData.status == 2,'i4':ProjectData.status == 3}"
v-if="isDisabled == false"> v-if="isDisabled == false">
<span v-for="(item,index) in projectStatus"><i v-if="ProjectData.status == item.dictValue">{{item.dictLabel}}</i></span> <span v-for="(item,index) in projectStatus"><i v-if="ProjectData.status == item.dictValue">{{item.dictLabel}}</i></span>
<el-select class="sels" v-model="ProjectData.status" @change="editXMSL({status:ProjectData.status})"> <el-select class="sels" v-model="ProjectData.status" @change="editXMSL({status:ProjectData.status})">
...@@ -122,7 +123,8 @@ ...@@ -122,7 +123,8 @@
<!--联系人--> <!--联系人-->
<lxr v-if="thistag == 'lxr'" :isDisabled='isDisabled' :detailId="detailId" listtype="project"></lxr> <lxr v-if="thistag == 'lxr'" :isDisabled='isDisabled' :detailId="detailId" listtype="project"></lxr>
<!-- 开标记录 --> <!-- 开标记录 -->
<bid-opening-record v-if="thistag == 'bidOpeningRecord'"></bid-opening-record> <bid-opening-record v-if="thistag == 'bidOpeningRecord'" :isDisabled='isDisabled' :detailId="detailId"
:projectData="ProjectData"></bid-opening-record>
<!--跟进记录--> <!--跟进记录-->
<gjjl v-if="thistag == 'gjjl'" :isDisabled='isDisabled' types="gjjl" :detailId="detailId"></gjjl> <gjjl v-if="thistag == 'gjjl'" :isDisabled='isDisabled' types="gjjl" :detailId="detailId"></gjjl>
<!--工作待办--> <!--工作待办-->
...@@ -484,6 +486,13 @@ export default { ...@@ -484,6 +486,13 @@ export default {
background: #cbe5ff; background: #cbe5ff;
} }
} }
&.i4 {
background: #f3f4f5;
color: #999999;
&:hover {
background: #d9d9d9;
}
}
> span { > span {
width: 100%; width: 100%;
} }
......
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