Commit a85e3b7e authored by danfuman's avatar danfuman

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

parents d49d0ca1 d96a96bf
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
"url": "https://gitee.com/y_project/RuoYi-Vue.git" "url": "https://gitee.com/y_project/RuoYi-Vue.git"
}, },
"dependencies": { "dependencies": {
"@cell-x/el-table-sticky": "^1.0.2",
"@riophae/vue-treeselect": "0.4.0", "@riophae/vue-treeselect": "0.4.0",
"axios": "0.24.0", "axios": "0.24.0",
"clipboard": "2.0.8", "clipboard": "2.0.8",
......
import request from '@/utils/request' import request from '@/utils/request';
//新增项目 //新增项目
export function addProject(param) { export function addProject(param) {
return request({ return request({
url: '/business/info/add', url: '/business/info/add',
method: 'POST', method: 'POST',
data: param data: param
}) });
} }
//商机列表 //商机列表
export function getProjectlist(param) { export function getProjectlist(param) {
...@@ -13,52 +13,52 @@ export function getProjectlist(param) { ...@@ -13,52 +13,52 @@ export function getProjectlist(param) {
url: '/business/info/list', url: '/business/info/list',
method: 'GET', method: 'GET',
params: param params: param
}) });
} }
//删除项目 //删除项目
export function delProject(param) { export function delProject(param) {
return request({ return request({
url: '/business/info/remove/'+param, url: '/business/info/remove/' + param,
method: 'DELETE', method: 'DELETE',
}) });
} }
//建设内容 //建设内容
export function getJSNR(param) { export function getJSNR(param) {
return request({ return request({
url: '/business/info/construction/'+param, url: '/business/info/construction/' + param,
method: 'GET', method: 'GET',
}) });
} }
//项目速览 //项目速览
export function getXMSL(param) { export function getXMSL(param) {
return request({ return request({
url: '/business/info/browse/'+param, url: '/business/info/browse/' + param,
method: 'GET', method: 'GET',
}) });
} }
//项目内容修改 //项目内容修改
export function editXMNR(param) { export function editXMNR(param) {
return request({ return request({
url: '/business/info/edit', url: '/business/info/edit',
method: 'POST', method: 'POST',
data:param data: param
}) });
} }
//项目标签新增 //项目标签新增
export function addLabel(param) { export function addLabel(param) {
return request({ return request({
url: '/business/label/add', url: '/business/label/add',
method: 'POST', method: 'POST',
data:param data: param
}) });
} }
//项目标签删除 //项目标签删除
export function removeLabel(param) { export function removeLabel(param) {
return request({ return request({
url: '/business/label/remove', url: '/business/label/remove',
method: 'POST', method: 'POST',
data:param data: param
}) });
} }
...@@ -68,8 +68,8 @@ export function getLXR(param) { ...@@ -68,8 +68,8 @@ export function getLXR(param) {
// url: '/business/contacts/list', // url: '/business/contacts/list',
url: '/contact/info/list', url: '/contact/info/list',
method: 'GET', method: 'GET',
params:param params: param
}) });
} }
//修改项目联系人 //修改项目联系人
export function editLXR(param) { export function editLXR(param) {
...@@ -77,8 +77,8 @@ export function editLXR(param) { ...@@ -77,8 +77,8 @@ export function editLXR(param) {
// url: '/business/contacts/edit', // url: '/business/contacts/edit',
url: '/contact/info', url: '/contact/info',
method: 'PUT', method: 'PUT',
data:param data: param
}) });
} }
//新增项目联系人 //新增项目联系人
...@@ -87,16 +87,16 @@ export function addLXR(param) { ...@@ -87,16 +87,16 @@ export function addLXR(param) {
// url: '/business/contacts/add', // url: '/business/contacts/add',
url: '/contact/info', url: '/contact/info',
method: 'POST', method: 'POST',
data:param data: param
}) });
} }
//删除项目联系人 //删除项目联系人
export function delLXR(param) { export function delLXR(param) {
return request({ return request({
url: '/contact/info/'+param, url: '/contact/info/' + param,
method: 'DELETE', method: 'DELETE',
}) });
} }
//跟进记录 //跟进记录
...@@ -104,8 +104,8 @@ export function getGJJL(param) { ...@@ -104,8 +104,8 @@ export function getGJJL(param) {
return request({ return request({
url: '/business/record/list', url: '/business/record/list',
method: 'get', method: 'get',
params:param params: param
}) });
} }
//新增跟进记录 //新增跟进记录
...@@ -113,15 +113,15 @@ export function addGJJL(param) { ...@@ -113,15 +113,15 @@ export function addGJJL(param) {
return request({ return request({
url: '/business/record/add', url: '/business/record/add',
method: 'POST', method: 'POST',
data:param data: param
}) });
} }
//删除跟进记录 //删除跟进记录
export function delGJJL(param) { export function delGJJL(param) {
return request({ return request({
url: '/business/record/remove/'+param, url: '/business/record/remove/' + param,
method: 'DELETE', method: 'DELETE',
}) });
} }
...@@ -130,8 +130,8 @@ export function getGZDB(param) { ...@@ -130,8 +130,8 @@ export function getGZDB(param) {
return request({ return request({
url: '/business/backlog/list', url: '/business/backlog/list',
method: 'GET', method: 'GET',
params:param params: param
}) });
} }
//添加工作待办 //添加工作待办
...@@ -139,8 +139,8 @@ export function addGZDB(param) { ...@@ -139,8 +139,8 @@ export function addGZDB(param) {
return request({ return request({
url: '/business/backlog/add', url: '/business/backlog/add',
method: 'post', method: 'post',
data:param data: param
}) });
} }
//修改工作待办 //修改工作待办
...@@ -148,16 +148,16 @@ export function editGZDB(param) { ...@@ -148,16 +148,16 @@ export function editGZDB(param) {
return request({ return request({
url: '/business/backlog/edit', url: '/business/backlog/edit',
method: 'post', method: 'post',
data:param data: param
}) });
} }
//查询相关企业 //查询相关企业
export function getXGQY(param) { export function getXGQY(param) {
return request({ return request({
url: '/business/company/list', url: '/business/company/list',
method: 'GET', method: 'GET',
params:param params: param
}) });
} }
//新增相关企业 //新增相关企业
...@@ -165,8 +165,8 @@ export function addXGQY(param) { ...@@ -165,8 +165,8 @@ export function addXGQY(param) {
return request({ return request({
url: '/business/company/add', url: '/business/company/add',
method: 'POST', method: 'POST',
data:param data: param
}) });
} }
//编辑相关企业 //编辑相关企业
...@@ -174,24 +174,24 @@ export function saveXGQY(param) { ...@@ -174,24 +174,24 @@ export function saveXGQY(param) {
return request({ return request({
url: '/business/company/edit', url: '/business/company/edit',
method: 'POST', method: 'POST',
data:param data: param
}) });
} }
//删除相关企业 //删除相关企业
export function delXGQY(param) { export function delXGQY(param) {
return request({ return request({
url: '/business/company/remove/'+param, url: '/business/company/remove/' + param,
method: 'DELETE', method: 'DELETE',
}) });
} }
//查询资料文档 //查询资料文档
export function getZLWD(param) { export function getZLWD(param) {
return request({ return request({
url: '/business/file/list', url: '/business/file/list',
method: 'GET', method: 'GET',
params:param params: param
}) });
} }
//删除资料文档 //删除资料文档
...@@ -199,16 +199,16 @@ export function delZLWD(param) { ...@@ -199,16 +199,16 @@ export function delZLWD(param) {
return request({ return request({
url: '/business/file/remove', url: '/business/file/remove',
method: 'POST', method: 'POST',
data:param data: param
}) });
} }
//查询关联项目 //查询关联项目
export function relateProject(param) { export function relateProject(param) {
return request({ return request({
url: '/business/record/relate/project/'+param, url: '/business/record/relate/project/' + param,
method: 'get', method: 'get',
}) });
} }
//查询跟进动态 //查询跟进动态
...@@ -216,8 +216,8 @@ export function allRecord(param) { ...@@ -216,8 +216,8 @@ export function allRecord(param) {
return request({ return request({
url: '/business/record/all/list', url: '/business/record/all/list',
method: 'get', method: 'get',
params:param, params: param,
}) });
} }
//项目状态统计 //项目状态统计
...@@ -225,46 +225,92 @@ export function getStatistics(param) { ...@@ -225,46 +225,92 @@ export function getStatistics(param) {
return request({ return request({
url: '/business/overview/status/statistics', url: '/business/overview/status/statistics',
method: 'get', method: 'get',
params:param, params: param,
}) });
} }
//储备项目统计 //储备项目统计
export function getCount(param) { export function getCount(param) {
return request({ return request({
url: '/business/overview/category/analyze/'+param, url: '/business/overview/category/analyze/' + param,
method: 'get', method: 'get',
params:param, params: param,
}) });
} }
//储备项目资金 //储备项目资金
export function getAmount(param) { export function getAmount(param) {
return request({ return request({
url: '/business/overview/amount/analyze', url: '/business/overview/amount/analyze',
method: 'get', method: 'get',
params:param, params: param,
}) });
} }
//跟进动态 //跟进动态
export function getAllRecord(param) { export function getAllRecord(param) {
return request({ return request({
url: '/business/record/all/list', url: '/business/record/all/list',
method: 'get', method: 'get',
params:param, params: param,
}) });
} }
//公招项目地区统计 //公招项目地区统计
export function countGroupByProvince(param) { export function countGroupByProvince(param) {
return request({ return request({
url: '/business/overview/countGroupByProvince', url: '/business/overview/countGroupByProvince',
method: 'post', method: 'post',
data:param data: param
}) });
} }
//公招项目投资金额统计 //公招项目投资金额统计
export function rangByMoney(param) { export function rangByMoney(param) {
return request({ return request({
url: '/business/overview/rangByMoney', url: '/business/overview/rangByMoney',
method: 'post', method: 'post',
data:param data: param
}) });
} }
/**
* 获取项目管理 商机列表 详情页开标记录列表
* @param {object} params
* @returns
*/
export const getBidOpeningRecordListApi = (params) => request({
method: "get",
url: "/business/open/tender/list",
params
});
/**
* 新增项目管理 商机列表 详情页开标记录
* @param {object} data
* @returns
*/
export const addBidOpeningRecordApi = (data) => request({
method: "post",
url: "/business/open/tender",
data
});
/**
* 修改项目管理 商机列表 详情页开标记录
* @param {object} data
* @returns
*/
export const modifyBidOpeningRecordApi = (data) => request({
method: "put",
url: "/business/open/tender",
data
});
/**
* 删除项目管理 商机列表 详情页开标记录
* @param {object} data
* @returns
*/
export const removeBidOpeningRecordApi = (params) => request({
method: "DELETE",
url: "/business/open/tender",
params
});
<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"><g transform="matrix(1,5.551115123125783e-17,-5.551115123125783e-17,1,0,0)"><g><path d="M1.166015625,7.0003221875C1.166015625,3.7786621875,3.777685625,1.1669921875,6.999345625,1.1669921875C10.221015625,1.1669921875,12.832715625,3.7786621875,12.832715625,7.0003221875C12.832715625,10.2219921875,10.221015625,12.8336921875,6.999345625,12.8336921875C3.777685625,12.8336921875,1.166015625,10.2219921875,1.166015625,7.0003221875C1.166015625,7.0003221875,1.166015625,7.0003221875,1.166015625,7.0003221875ZM4.732635625,5.5586421875C4.732635625,5.5586421875,6.176295625,7.0023121875,6.176295625,7.0023121875C6.176295625,7.0023121875,4.732635625,8.4460021875,4.732635625,8.4460021875C4.732635625,8.4460021875,5.557585625,9.2709521875,5.557585625,9.2709521875C5.557585625,9.2709521875,7.001245625,7.8272621875,7.001245625,7.8272621875C7.001245625,7.8272621875,8.444935625,9.2709521875,8.444935625,9.2709521875C8.444935625,9.2709521875,9.269885625,8.4460021875,9.269885625,8.4460021875C9.269885625,8.4460021875,7.826225625,7.0023121875,7.826225625,7.0023121875C7.826225625,7.0023121875,9.269885625,5.5586421875,9.269885625,5.5586421875C9.269885625,5.5586421875,8.444935625,4.7336621875,8.444935625,4.7336621875C8.444935625,4.7336621875,7.001245625,6.1773621875,7.001245625,6.1773621875C7.001245625,6.1773621875,5.557585625,4.7336621875,5.557585625,4.7336621875C5.557585625,4.7336621875,4.732635625,5.5586421875,4.732635625,5.5586421875C4.732635625,5.5586421875,4.732635625,5.5586421875,4.732635625,5.5586421875Z" fill-rule="evenodd" fill="#BFBFBF" fill-opacity="1"/></g></g></svg>
\ No newline at end of file
<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_143431/829_061997"><rect x="0" y="0" width="14" height="14" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_1539_143431/829_061997)"><g><path d="M6.417314375,6.4163378125C6.417314375,6.4163378125,6.417314375,1.4580078125,6.417314375,1.4580078125C6.417314375,1.4580078125,7.583984375,1.4580078125,7.583984375,1.4580078125C7.583984375,1.4580078125,7.583984375,6.4163378125,7.583984375,6.4163378125C7.583984375,6.4163378125,12.542284375,6.4163378125,12.542284375,6.4163378125C12.542284375,6.4163378125,12.542284375,7.5830078125,12.542284375,7.5830078125C12.542284375,7.5830078125,7.583984375,7.5830078125,7.583984375,7.5830078125C7.583984375,7.5830078125,7.583984375,12.5413078125,7.583984375,12.5413078125C7.583984375,12.5413078125,6.417314375,12.5413078125,6.417314375,12.5413078125C6.417314375,12.5413078125,6.417314375,7.5830078125,6.417314375,7.5830078125C6.417314375,7.5830078125,1.458984375,7.5830078125,1.458984375,7.5830078125C1.458984375,7.5830078125,1.458984375,6.4163378125,1.458984375,6.4163378125C1.458984375,6.4163378125,6.417314375,6.4163378125,6.417314375,6.4163378125C6.417314375,6.4163378125,6.417314375,6.4163378125,6.417314375,6.4163378125Z" fill-rule="evenodd" fill="#FFFFFF" fill-opacity="1"/></g></g></svg>
\ No newline at end of file
<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>
\ No newline at end of file
<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"><g><g><path d="M9.91682609375,2.624921953125C9.91682609375,2.624921953125,9.91682609375,1.458251953125,9.91682609375,1.458251953125C9.91682609375,1.458251953125,4.08349609375,1.458253204825,4.08349609375,1.458253204825C4.08349609375,1.458253204825,4.08349609375,2.624921953125,4.08349609375,2.624921953125C4.08349609375,2.624921953125,1.45849609375,2.624921953125,1.45849609375,2.624921953125C1.45849609375,2.624921953125,1.45849609375,3.791581953125,1.45849609375,3.791581953125C1.45849609375,3.791581953125,2.47932609375,3.791581953125,2.47932609375,3.791581953125C2.47932609375,3.791581953125,2.47932609375,11.666551953125,2.47932609375,11.666551953125C2.47932609375,12.149851953125,2.87107609375,12.541551953125,3.35432609375,12.541551953125C3.35432609375,12.541551953125,10.64599609375,12.541551953125,10.64599609375,12.541551953125C11.12925609375,12.541551953125,11.52099609375,12.149851953125,11.52099609375,11.666551953125C11.52099609375,11.666551953125,11.52099609375,3.791591953125,11.52099609375,3.791591953125C11.52099609375,3.791591953125,12.54179609375,3.791591953125,12.54179609375,3.791591953125C12.54179609375,3.791591953125,12.54179609375,2.624921953125,12.54179609375,2.624921953125C12.54179609375,2.624921953125,9.91682609375,2.624921953125,9.91682609375,2.624921953125C9.91682609375,2.624921953125,9.91682609375,2.624921953125,9.91682609375,2.624921953125ZM3.64599609375,11.374921953125C3.64599609375,11.374921953125,3.64599609375,3.791581953125,3.64599609375,3.791581953125C3.64599609375,3.791581953125,10.35432609375,3.791591953125,10.35432609375,3.791591953125C10.35432609375,3.791591953125,10.35432609375,11.374921953125,10.35432609375,11.374921953125C10.35432609375,11.374921953125,3.64599609375,11.374921953125,3.64599609375,11.374921953125C3.64599609375,11.374921953125,3.64599609375,11.374921953125,3.64599609375,11.374921953125ZM5.25016609375,5.249921953125C5.25016609375,5.249921953125,5.25016609375,9.624921953125,5.25016609375,9.624921953125C5.25016609375,9.624921953125,6.41682609375,9.624921953125,6.41682609375,9.624921953125C6.41682609375,9.624921953125,6.41682609375,5.249921953125,6.41682609375,5.249921953125C6.41682609375,5.249921953125,5.25016609375,5.249921953125,5.25016609375,5.249921953125C5.25016609375,5.249921953125,5.25016609375,5.249921953125,5.25016609375,5.249921953125ZM7.58349609375,5.249921953125C7.58349609375,5.249921953125,7.58349609375,9.624921953125,7.58349609375,9.624921953125C7.58349609375,9.624921953125,8.75016609375,9.624921953125,8.75016609375,9.624921953125C8.75016609375,9.624921953125,8.75016609375,5.249921953125,8.75016609375,5.249921953125C8.75016609375,5.249921953125,7.58349609375,5.249921953125,7.58349609375,5.249921953125C7.58349609375,5.249921953125,7.58349609375,5.249921953125,7.58349609375,5.249921953125Z" fill-rule="evenodd" fill="#FF3C3C" fill-opacity="1"/></g></g></svg>
\ No newline at end of file
...@@ -227,15 +227,17 @@ li { ...@@ -227,15 +227,17 @@ li {
} }
.app-main { .app-main {
position: relative;
background-color: #f5f5f5; background-color: #f5f5f5;
>div{ // >div{
width: calc(100% - 48px); // width: calc(100% - 48px);
} // }
} }
.app-container { .app-container {
margin: 16px 24px; padding: 16px 24px;
background-color: #f5f5f5; background-color: #f5f5f5;
box-sizing: border-box; box-sizing: border-box;
width: 100%;
.el-input__inner { .el-input__inner {
border-color: #d9d9d9; border-color: #d9d9d9;
color: #232323; color: #232323;
......
.el-card{ .el-card {
overflow: initial; overflow: initial;
} }
//小导航 //小导航
.miantitle{ .miantitle {
color: #232323; color: #232323;
font-size: 12px; font-size: 12px;
margin: 12px 0; margin: 12px 0;
>span{ padding: 0px 24px;
box-sizing: border-box;
> span {
opacity: 0.4; opacity: 0.4;
&:last-child{opacity:0.8} &:last-child {
&.on:hover{ opacity: 0.8;
color: #0081FF; }
&.on:hover {
color: #0081ff;
opacity: 1; opacity: 1;
cursor: pointer; cursor: pointer;
} }
} }
} }
.overflows{ .overflows {
overflow: initial; overflow: initial;
} }
.pad16{ .pad16 {
padding: 16px; padding: 16px;
} }
//提示弹窗 //提示弹窗
.delform{ .delform {
width: 200px; width: 200px;
height: 114px; height: 114px;
background: #FFFFFF; background: #ffffff;
box-shadow: 0px 0px 8px 0px rgba(0,0,0,0.12); box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.12);
border-radius: 2px; border-radius: 2px;
position: absolute; position: absolute;
z-index: 20; z-index: 20;
text-align: center; text-align: center;
.words{ .words {
padding: 24px 0; padding: 24px 0;
line-height: 14px; line-height: 14px;
} }
...@@ -58,27 +62,27 @@ ...@@ -58,27 +62,27 @@
} }
//项目速览板块 //项目速览板块
.baseinfo{ .baseinfo {
position: relative; position: relative;
.btns{ .btns {
position: absolute; position: absolute;
bottom: 24px; bottom: 24px;
left: 838px; left: 838px;
line-height: 28px; line-height: 28px;
} }
.row{ .row {
display: flex; display: flex;
padding-bottom: 8px; padding-bottom: 8px;
padding-left: 16px; padding-left: 16px;
font-size: 14px; font-size: 14px;
width: 100%; width: 100%;
.con{ .con {
>span{ > span {
opacity: 0.8; opacity: 0.8;
float: left; float: left;
margin-top: 3px; margin-top: 3px;
} }
.inputxt{ .inputxt {
display: inline-block; display: inline-block;
width: 184px; width: 184px;
height: 28px; height: 28px;
...@@ -93,45 +97,45 @@ ...@@ -93,45 +97,45 @@
visibility: hidden; visibility: hidden;
height: 0; height: 0;
} }
&:hover{ &:hover {
background: #F3F4F5; background: #f3f4f5;
} }
.el-input{ .el-input {
margin-right: 8px; margin-right: 8px;
.el-input__inner{ .el-input__inner {
width: 184px; width: 184px;
height: 28px; height: 28px;
background: #F3F4F5; background: #f3f4f5;
border-radius: 2px; border-radius: 2px;
border: 1px solid #D9D9D9; border: 1px solid #d9d9d9;
padding: 0; padding: 0;
text-indent: 8px; text-indent: 8px;
} }
} }
.el-date-editor--date{ .el-date-editor--date {
.el-input__prefix{ .el-input__prefix {
display: none; display: none;
} }
} }
&.i{ &.i {
.el-input{ .el-input {
.el-input__inner{ .el-input__inner {
width: 100px; width: 100px;
} }
} }
} }
} }
.txt{ .txt {
padding-left: 8px; padding-left: 8px;
color: rgba(35,35,35,0.4); color: rgba(35, 35, 35, 0.4);
display: inline-block; display: inline-block;
width: 100%; width: 100%;
} }
width: 438px; width: 438px;
&.i{ &.i {
width: auto; width: auto;
} }
.inputime{ .inputime {
display: inline-block; display: inline-block;
width: 184px; width: 184px;
height: 28px; height: 28px;
...@@ -139,17 +143,17 @@ ...@@ -139,17 +143,17 @@
line-height: 28px; line-height: 28px;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
>span{ > span {
padding-left: 8px; padding-left: 8px;
} }
.el-icon-caret-bottom{ .el-icon-caret-bottom {
color: rgba(35,35,32,0.4); color: rgba(35, 35, 32, 0.4);
margin-left: 4px; margin-left: 4px;
} }
.timeinput{ .timeinput {
opacity: 0; opacity: 0;
position: absolute; position: absolute;
.el-input__inner{ .el-input__inner {
padding: 0; padding: 0;
margin: 0; margin: 0;
border: 0; border: 0;
...@@ -158,7 +162,7 @@ ...@@ -158,7 +162,7 @@
} }
} }
} }
.tipinput{ .tipinput {
display: inline-block; display: inline-block;
margin-top: 1px; margin-top: 1px;
width: calc(100% - 116px); width: calc(100% - 116px);
...@@ -170,46 +174,48 @@ ...@@ -170,46 +174,48 @@
visibility: hidden; visibility: hidden;
height: 0; height: 0;
} }
.el-input{ .el-input {
float: left; float: left;
margin-right: 8px; margin-right: 8px;
min-width: 70px; min-width: 70px;
width: auto; width: auto;
margin-bottom: 10px; margin-bottom: 10px;
.el-input__inner{ .el-input__inner {
min-width: 70px; min-width: 70px;
padding: 0 14px; padding: 0 14px;
height: 24px; height: 24px;
background: #F3F4F5; background: #f3f4f5;
border-radius: 2px; border-radius: 2px;
border: 0; border: 0;
} }
} }
.addbtn{ .addbtn {
float: left; float: left;
width: 20px; width: 20px;
height: 20px; height: 20px;
background: url("../../assets/images/project/add.png") no-repeat center center; background: url("../../assets/images/project/add.png") no-repeat center
center;
background-size: 100%; background-size: 100%;
display: inline-block; display: inline-block;
margin-left: 8px; margin-left: 8px;
margin-top: 2px; margin-top: 2px;
&:hover{ &:hover {
background: url("../../assets/images/project/add_1.png") no-repeat center center; background: url("../../assets/images/project/add_1.png") no-repeat
center center;
background-size: 100%; background-size: 100%;
} }
} }
.tips{ .tips {
float: left; float: left;
height: 24px; height: 24px;
line-height: 24px; line-height: 24px;
padding: 0 14px; padding: 0 14px;
font-size: 14px; font-size: 14px;
color: #0081FF; color: #0081ff;
background: #E4F3FD; background: #e4f3fd;
margin-right: 8px; margin-right: 8px;
margin-bottom: 5px; margin-bottom: 5px;
img{ img {
margin-left: 8px; margin-left: 8px;
margin-top: 4px; margin-top: 4px;
float: right; float: right;
...@@ -217,58 +223,58 @@ ...@@ -217,58 +223,58 @@
display: none; display: none;
cursor: pointer; cursor: pointer;
} }
&:hover{ &:hover {
background: #DCEAF3; background: #dceaf3;
img{ img {
display: block; display: block;
} }
} }
} }
} }
.textarea{ .textarea {
margin: 0 16px 24px; margin: 0 16px 24px;
width: 800px; width: 800px;
.el-textarea__inner{ .el-textarea__inner {
padding: 5px 10px; padding: 5px 10px;
width: 800px; width: 800px;
height: 184px; height: 184px;
border-radius: 2px; border-radius: 2px;
border: 1px solid #D9D9D9; border: 1px solid #d9d9d9;
} }
} }
} }
.cancels{ .cancels {
font-size: 12px; font-size: 12px;
margin-left: 4px; margin-left: 4px;
width: 28px; width: 28px;
opacity: 0.4; opacity: 0.4;
cursor: pointer; cursor: pointer;
&:hover{ &:hover {
opacity: 0.8; opacity: 0.8;
} }
} }
.otherdata{ .otherdata {
padding: 0 16px 29px; padding: 0 16px 29px;
display: flex; display: flex;
.det{ .det {
width: 230px; width: 230px;
height: 100px; height: 100px;
margin-right: 17px; margin-right: 17px;
padding: 22px 0; padding: 22px 0;
>img{ > img {
float: left; float: left;
margin-right: 8px; margin-right: 8px;
width: 56px; width: 56px;
} }
.i{ .i {
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
line-height: 22px; line-height: 22px;
padding: 7px 0; padding: 7px 0;
} }
.j{ .j {
opacity: 0.8; opacity: 0.8;
font-size: 14px; font-size: 14px;
line-height: 14px; line-height: 14px;
...@@ -276,68 +282,73 @@ ...@@ -276,68 +282,73 @@
} }
} }
//表格样式 //表格样式
.tables{ .tables {
padding: 0 16px 24px; padding: 0 16px 24px;
.el-table .el-table__header-wrapper th,.el-table th.el-table__cell.is-leaf{ .el-table .el-table__header-wrapper th,
.el-table th.el-table__cell.is-leaf {
color: #4f4f4f; color: #4f4f4f;
background: #F0F3FA; background: #f0f3fa;
font-size: 13px; font-size: 13px;
font-weight: 400; font-weight: 400;
} }
.el-table__fixed::before{ .el-table__fixed::before {
background: none; background: none;
} }
.is-sortable .sort-caret.ascending{ .is-sortable .sort-caret.ascending {
border-bottom-color: #0081FF; border-bottom-color: #0081ff;
opacity: 0.4; opacity: 0.4;
} }
.el-table .sort-caret.descending{ .el-table .sort-caret.descending {
border-top-color:#0081FF; border-top-color: #0081ff;
opacity: 0.4; opacity: 0.4;
} }
.el-table .ascending .sort-caret.ascending{ .el-table .ascending .sort-caret.ascending {
opacity: 1; opacity: 1;
} }
.el-table .descending .sort-caret.descending{ .el-table .descending .sort-caret.descending {
opacity: 1; opacity: 1;
} }
.el-table .cell{ .el-table .cell {
line-height: 20px; line-height: 20px;
padding: 0 12px; padding: 0 12px;
color: #232323; color: #232323;
font-size: 13px; font-size: 13px;
} }
.el-table--border .el-table__cell{ .el-table--border .el-table__cell {
border-color: #E6EAF1; border-color: #e6eaf1;
border-bottom: 0; border-bottom: 0;
} }
.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{ .el-table--striped
background: #F9FCFF; .el-table__body
tr.el-table__row--striped
td.el-table__cell {
background: #f9fcff;
} }
.el-table th.el-table__cell.is-leaf{ .el-table th.el-table__cell.is-leaf {
border-bottom: 0; border-bottom: 0;
} }
.el-table__body tr.hover-row > td.el-table__cell,.el-table__body tr.el-table__row--striped.hover-row > td.el-table__cell{ .el-table__body tr.hover-row > td.el-table__cell,
background: #DCEBFF; .el-table__body tr.el-table__row--striped.hover-row > td.el-table__cell {
background: #dcebff;
} }
.has-gutter{ .has-gutter {
th{ th {
height: 40px; height: 40px;
padding: 0; padding: 0;
.cell{ .cell {
line-height: 40px; line-height: 40px;
} }
} }
} }
.empty{ .empty {
padding: 32px 0; padding: 32px 0;
text-align: center; text-align: center;
>img{ > img {
width: 109px; width: 109px;
display: block; display: block;
margin: 0 auto 24px; margin: 0 auto 24px;
} }
.p1{ .p1 {
height: 21px; height: 21px;
font-size: 16px; font-size: 16px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei; font-family: Microsoft YaHei-Regular, Microsoft YaHei;
...@@ -346,7 +357,7 @@ ...@@ -346,7 +357,7 @@
line-height: 21px; line-height: 21px;
margin-bottom: 8px; margin-bottom: 8px;
} }
.p2{ .p2 {
height: 18px; height: 18px;
font-size: 14px; font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei; font-family: Microsoft YaHei-Regular, Microsoft YaHei;
...@@ -356,19 +367,21 @@ ...@@ -356,19 +367,21 @@
margin-bottom: 8px; margin-bottom: 8px;
} }
} }
.edit{ .edit {
>img{ > img {
float:left; float: left;
margin: 2px 4px 0 0; margin: 2px 4px 0 0;
width: 16px; width: 16px;
} }
} }
.bottems{ .bottems {
padding-top: 16px; padding-top: 16px;
.el-pagination{ .el-pagination {
float: right; float: right;
padding: 0; padding: 0;
.btn-prev, .btn-next, .el-pager li{ .btn-prev,
.btn-next,
.el-pager li {
min-width: 24px; min-width: 24px;
margin: 0 4px; margin: 0 4px;
height: 24px; height: 24px;
...@@ -377,44 +390,48 @@ ...@@ -377,44 +390,48 @@
color: #4f4f4f; color: #4f4f4f;
font-weight: 400; font-weight: 400;
} }
.el-pager li:not(.disabled):hover{ .el-pager li:not(.disabled):hover {
opacity: 0.3; opacity: 0.3;
background: #0081FF; background: #0081ff;
color: #FFFFFF; color: #ffffff;
} }
.btn-prev .el-icon, .btn-next .el-icon{ .btn-prev .el-icon,
font-weight: 400; .btn-next .el-icon {
} font-weight: 400;
.el-pager .more::before{ }
.el-pager .more::before {
line-height: 24px; line-height: 24px;
} }
} }
} }
a:hover, a:visited, a:link, a:active{ a:hover,
color: #0081FF; a:visited,
a:link,
a:active {
color: #0081ff;
} }
} }
//弹出层样式 //弹出层样式
.popups{ .popups {
.el-dialog__headerbtn{ .el-dialog__headerbtn {
top: 14px; top: 14px;
right: 12px; right: 12px;
z-index: 3; z-index: 3;
} }
.poptitle{ .poptitle {
line-height: 48px; line-height: 48px;
border-bottom: 1px solid #E1E1E1; border-bottom: 1px solid #e1e1e1;
height: 48px; height: 48px;
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
width: 100%; width: 100%;
>img{ > img {
width: 17px; width: 17px;
margin: 16px; margin: 16px;
float: left; float: left;
} }
>span{ > span {
font-weight: bold; font-weight: bold;
font-size: 16px; font-size: 16px;
color: #232323; color: #232323;
...@@ -426,22 +443,22 @@ ...@@ -426,22 +443,22 @@
text-overflow: ellipsis; text-overflow: ellipsis;
} }
} }
.popform{ .popform {
padding-top: 24px; padding-top: 24px;
.row{ .row {
margin-bottom: 16px; margin-bottom: 16px;
position: relative; position: relative;
.resultlist{ .resultlist {
position: absolute; position: absolute;
width: 100%; width: 100%;
max-height: 218px; max-height: 218px;
background: #FFFFFF; background: #ffffff;
box-shadow: 0px 4px 10px 0px rgba(0,0,0,0.1); box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.1);
overflow: auto; overflow: auto;
z-index: 2; z-index: 2;
text-indent: 13px; text-indent: 13px;
cursor: pointer; cursor: pointer;
>div{ > div {
font-size: 14px; font-size: 14px;
color: #333; color: #333;
height: 32px; height: 32px;
...@@ -449,159 +466,164 @@ ...@@ -449,159 +466,164 @@
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
&:hover{ &:hover {
background: #F1F6FB; background: #f1f6fb;
} }
} }
} }
.el-form-item__label{ .el-form-item__label {
font-weight: 400; font-weight: 400;
opacity: 0.8; opacity: 0.8;
padding: 0; padding: 0;
} }
.el-input,.el-textarea{ .el-input,
.el-textarea {
display: inline-block; display: inline-block;
width: 240px; width: 240px;
.el-input__inner,.el-textarea__inner{ .el-input__inner,
.el-textarea__inner {
width: 100%; width: 100%;
height: 32px; height: 32px;
border-radius: 0px; border-radius: 0px;
&:hover{ &:hover {
border-color: #0081FF; border-color: #0081ff;
} }
} }
.el-textarea__inner{ .el-textarea__inner {
height: 90px; height: 90px;
font-family: inherit; font-family: inherit;
color: #000; color: #000;
} }
.el-input__suffix{ .el-input__suffix {
height: 32px; height: 32px;
} }
.el-input__icon{ .el-input__icon {
line-height: 32px; line-height: 32px;
} }
.el-icon-arrow-up:before{ .el-icon-arrow-up:before {
content: "\e78f"; content: "\e78f";
opacity: 0.4; opacity: 0.4;
} }
.el-icon-arrow-down:before{ .el-icon-arrow-down:before {
content: "\e790"; content: "\e790";
opacity: 0.4; opacity: 0.4;
color: #232323; color: #232323;
} }
} }
.el-form-item__error{ .el-form-item__error {
padding-top: 2px; padding-top: 2px;
} }
} }
.popbot{ .popbot {
text-align: right; text-align: right;
padding-top: 8px; padding-top: 8px;
padding-right: 0; padding-right: 0;
.btn{ .btn {
border-radius: 2px; border-radius: 2px;
width: 80px; width: 80px;
} }
} }
.row.i{ .row.i {
.el-form-item__label{ .el-form-item__label {
line-height: 18px; line-height: 18px;
text-align: left; text-align: left;
} }
} }
} }
.popform.i{ .popform.i {
.el-input,.el-textarea{ .el-input,
.el-textarea {
width: 335px; width: 335px;
} }
} }
.popform.j{ .popform.j {
.el-input{ .el-input {
width: 364px; width: 364px;
} }
} }
.types{ .types {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
padding: 24px 0; padding: 24px 0;
>div{ > div {
cursor: pointer; cursor: pointer;
>i{ > i {
width: 14px; width: 14px;
height: 14px; height: 14px;
border-radius: 150%; border-radius: 150%;
border: 1px solid #DCDFE6; border: 1px solid #dcdfe6;
float: left; float: left;
margin: 3px 8px 0 0;; margin: 3px 8px 0 0;
} }
&.on{ &.on {
color: #0081FF; color: #0081ff;
>i{ > i {
border-color: #0081FF; border-color: #0081ff;
&:after{ &:after {
content: " "; content: " ";
width: 8px; width: 8px;
height: 8px; height: 8px;
border-radius: 50%; border-radius: 50%;
background: #0081FF; background: #0081ff;
float: left; float: left;
margin: 2px; margin: 2px;
} }
} }
} }
} }
} }
} }
.el-select-dropdown__item.hover, .el-select-dropdown__item:hover{ .el-select-dropdown__item.hover,
background: #F4F6F9; .el-select-dropdown__item:hover {
color: #0081FF; background: #f4f6f9;
color: #0081ff;
} }
//跟进记录、工作待办 //跟进记录、工作待办
.records{ .records {
width: 800px; width: 800px;
box-sizing: content-box; box-sizing: content-box;
padding: 0 16px 24px; padding: 0 16px 24px;
.writeIn{ .writeIn {
margin-top: -10px; margin-top: -10px;
.default{ .default {
width: 800px; width: 800px;
height: 46px; height: 46px;
background: #F3F4F5; background: #f3f4f5;
border-radius: 6px; border-radius: 6px;
line-height: 46px; line-height: 46px;
>img{ > img {
float: left; float: left;
width: 16px; width: 16px;
margin: 15px 4px 0px 16px; margin: 15px 4px 0px 16px;
} }
>div{ > div {
font-size: 14px; font-size: 14px;
opacity: 0.4; opacity: 0.4;
} }
} }
.writting{ .writting {
width: 800px; width: 800px;
padding: 16px; padding: 16px;
border-radius: 6px; border-radius: 6px;
border: 1px solid #68AEFF; border: 1px solid #68aeff;
&.w836{ &.w836 {
width: 836px; width: 836px;
} }
.wri_top{ .wri_top {
>img{ > img {
float: left; float: left;
width: 16px; width: 16px;
} }
.el-input,.el-textarea { .el-input,
.el-textarea {
width: calc(100% - 26px); width: calc(100% - 26px);
display: inline-block; display: inline-block;
} }
.el-input__inner,.el-textarea__inner{ .el-input__inner,
.el-textarea__inner {
line-height: 16px; line-height: 16px;
height: 16px; height: 16px;
border: 0; border: 0;
...@@ -611,13 +633,13 @@ ...@@ -611,13 +633,13 @@
font-size: 14px; font-size: 14px;
} }
} }
.wr_bot{ .wr_bot {
position: relative; position: relative;
padding-top: 25px; padding-top: 25px;
display: flex; display: flex;
.sels{ .sels {
position: relative; position: relative;
>img{ > img {
position: absolute; position: absolute;
left: 10px; left: 10px;
z-index: 1; z-index: 1;
...@@ -625,117 +647,119 @@ ...@@ -625,117 +647,119 @@
width: 16px; width: 16px;
} }
} }
.el-input{ .el-input {
display: inline-block; display: inline-block;
margin-right: 12px; margin-right: 12px;
position: relative; position: relative;
.el-input__inner{ .el-input__inner {
height: 32px; height: 32px;
padding: 0; padding: 0;
text-indent: 30px; text-indent: 30px;
width: 100px; width: 100px;
&:hover{ &:hover {
border-color: #0081FF; border-color: #0081ff;
} }
} }
.el-input__prefix .el-input__icon{ .el-input__prefix .el-input__icon {
//left: 8px; //left: 8px;
top: -2px; top: -2px;
position: absolute; position: absolute;
} }
.el-input__suffix{ .el-input__suffix {
height: 32px; height: 32px;
right: 13px; right: 13px;
} }
.el-input__icon{ .el-input__icon {
line-height: 32px; line-height: 32px;
} }
.el-icon-arrow-up:before{ .el-icon-arrow-up:before {
content: "\e78f"; content: "\e78f";
opacity: 0.4; opacity: 0.4;
} }
} }
.times{ .times {
display: inline-block; display: inline-block;
position: relative; position: relative;
>img{ > img {
position: absolute; position: absolute;
left: 8px; left: 8px;
top: 8px; top: 8px;
width: 16px; width: 16px;
z-index: 1; z-index: 1;
} }
.el-input{ .el-input {
position: absolute; position: absolute;
} }
.el-input__icon{ .el-input__icon {
opacity: 0; opacity: 0;
} }
} }
.w128{ .w128 {
.el-input__inner{ .el-input__inner {
width: 128px; width: 128px;
} }
} }
.w120{ .w120 {
.el-input__inner{ .el-input__inner {
width: 120px; width: 120px;
} }
} }
} }
} }
} }
.recordlist{ .recordlist {
padding-left: 10px; padding-left: 10px;
padding-top: 19px; padding-top: 19px;
.rec_detail{ .rec_detail {
border-left: 1px dashed rgba(0,129,255,0.5); border-left: 1px dashed rgba(0, 129, 255, 0.5);
font-size: 14px; font-size: 14px;
padding-bottom: 34px; padding-bottom: 34px;
&:last-child{ &:last-child {
border: 0; border: 0;
} }
.rec_time{ .rec_time {
color: #0081FF; color: #0081ff;
position: relative; position: relative;
.el-icon-time{ .el-icon-time {
font-size: 16px; font-size: 16px;
float: left; float: left;
margin: -1px 10px 0 -8px; margin: -1px 10px 0 -8px;
background: #fff; background: #fff;
} }
.operate{ .operate {
display: none; display: none;
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
>img{ > img {
margin-left: 16px; margin-left: 16px;
cursor: pointer; cursor: pointer;
width: 20px; width: 20px;
} }
} }
} }
.rec_con{ .rec_con {
margin: 12px 0 0 18px; margin: 12px 0 0 18px;
background: #F6F9FD; background: #f6f9fd;
border-radius: 6px; border-radius: 6px;
padding: 24px; padding: 24px;
border: 1px solid #F6F9FD; border: 1px solid #f6f9fd;
//box-sizing: content-box; //box-sizing: content-box;
box-sizing: border-box; box-sizing: border-box;
>div{ > div {
>span{opacity: 0.8;} > span {
opacity: 0.8;
}
line-height: 30px; line-height: 30px;
&.rec_text{ &.rec_text {
opacity: 0.4; opacity: 0.4;
>span{ > span {
padding-right: 24px; padding-right: 24px;
} }
} }
>strong{ > strong {
opacity: 1; opacity: 1;
font-size: 18px; font-size: 18px;
line-height: 14px; line-height: 14px;
...@@ -744,229 +768,231 @@ ...@@ -744,229 +768,231 @@
} }
} }
.rec_detail:hover{ .rec_detail:hover {
.operate{ .operate {
display: block; display: block;
} }
.rec_con{ .rec_con {
border: 1px solid #68AEFF; border: 1px solid #68aeff;
} }
} }
} }
.tasktitle{ .tasktitle {
color: #3D3D3D; color: #3d3d3d;
line-height: 28px; line-height: 28px;
font-size: 14px; font-size: 14px;
padding-left: 11px; padding-left: 11px;
margin-top: 24px; margin-top: 24px;
&:after{ &:after {
content: ' '; content: " ";
width: 4px; width: 4px;
height: 4px; height: 4px;
background: #0081FF; background: #0081ff;
border-radius: 50%; border-radius: 50%;
float: left; float: left;
margin-top: 12px; margin-top: 12px;
margin-left: -9px; margin-left: -9px;
} }
>span{ > span {
width: 88px; width: 88px;
height: 26px; height: 26px;
border-radius: 14px; border-radius: 14px;
border: 1px solid #FF3C3C; border: 1px solid #ff3c3c;
color: #FF3C3C; color: #ff3c3c;
line-height: 26px; line-height: 26px;
text-align: center; text-align: center;
display: inline-block; display: inline-block;
margin-left: 10px; margin-left: 10px;
&.on{ &.on {
background: #FF3C3C; background: #ff3c3c;
color: #FF3C3C; color: #ff3c3c;
} }
&:hover{ &:hover {
border: 1px solid #FF3C3C; border: 1px solid #ff3c3c;
color: #FF3C3C; color: #ff3c3c;
background: #FFEBEB; background: #ffebeb;
} }
} }
} }
.tasklist{ .tasklist {
padding: 24px; padding: 24px;
background: #F6F9FD; background: #f6f9fd;
border-radius: 6px; border-radius: 6px;
margin-top: 16px; margin-top: 16px;
position: relative; position: relative;
.task_name{ .task_name {
font-size: 16px; font-size: 16px;
} }
.task_con{ .task_con {
padding-top: 12px; padding-top: 12px;
line-height: 14px; line-height: 14px;
font-size: 14px; font-size: 14px;
>span{ > span {
color: rgb(167,167,167); color: rgb(167, 167, 167);
padding-right: 28px; padding-right: 28px;
} }
} }
.select{ .select {
position: absolute; position: absolute;
width: 88px; width: 88px;
height: 32px; height: 32px;
background: #E0E4EA; background: #e0e4ea;
border-radius: 4px; border-radius: 4px;
right: 16px; right: 16px;
top: 30px; top: 30px;
padding: 8px 12px; padding: 8px 12px;
line-height: 16px; line-height: 16px;
box-sizing: border-box; box-sizing: border-box;
&.on{ &.on {
background: #D3F0E8; background: #d3f0e8;
.color_text{ .color_text {
color: #0CBC6D; color: #0cbc6d;
} }
} }
.select-popper{ .select-popper {
margin: 0; margin: 0;
} }
.el-icon-caret-bottom{ .el-icon-caret-bottom {
color:rgba(35,35,35,0.4) ; color: rgba(35, 35, 35, 0.4);
} }
} }
} }
} }
//资料文档、相关企业 //资料文档、相关企业
.searchbtns{ .searchbtns {
position: absolute; position: absolute;
left: 100px; left: 100px;
top: 17px; top: 17px;
width: calc(100% - 116px); width: calc(100% - 116px);
.searchInput, .el-select { .searchInput,
.el-select {
float: left; float: left;
} }
.btn{ .btn {
float: right; float: right;
} }
.searchInput{ .searchInput {
position: relative; position: relative;
&.small{ &.small {
border: 1px solid #fff; border: 1px solid #fff;
width: 240px; width: 240px;
.el-input{ .el-input {
//width: 180px; //width: 180px;
} }
.el-input__inner{ .el-input__inner {
//padding-right: 32px; //padding-right: 32px;
} }
.el-input__prefix{ .el-input__prefix {
left: 8px; left: 8px;
top: -3px; top: -3px;
img{ img {
width: 16px; width: 16px;
} }
} }
} }
} }
.b2{ .b2 {
width: 80px; width: 80px;
border-radius: 2px; border-radius: 2px;
} }
.b3{ .b3 {
padding: 0 10px; padding: 0 10px;
border-radius: 2px; border-radius: 2px;
} }
.select{ .select {
width: 94px; width: 94px;
.el-input__inner{ .el-input__inner {
//width: 110px; //width: 110px;
height: 32px; height: 32px;
background: #FFFFFF; background: #ffffff;
border-radius: 4px; border-radius: 4px;
border: 0; border: 0;
padding:5px 28px 5px 8px; padding: 5px 28px 5px 8px;
} }
.el-input--medium .el-input__icon{ .el-input--medium .el-input__icon {
line-height: 32px; line-height: 32px;
} }
margin-right: 10px; margin-right: 10px;
.is-focus{ .is-focus {
.el-input__inner{ .el-input__inner {
background: #F4F6F9; background: #f4f6f9;
} }
} }
} }
} }
.document{ .document {
padding:0 16px 16px; padding: 0 16px 16px;
margin-top: -14px; margin-top: -14px;
.el-table { .el-table {
color: #232323; color: #232323;
&::before{ &::before {
background: #FFFFFF; background: #ffffff;
} }
th.el-table__cell.is-leaf, td.el-table__cell{ th.el-table__cell.is-leaf,
td.el-table__cell {
border: 0; border: 0;
color: #232323; color: #232323;
padding: 2px 0 0; padding: 2px 0 0;
} }
td.el-table__cell{ td.el-table__cell {
padding: 12px 0; padding: 12px 0;
} }
.el-table__header-wrapper{ .el-table__header-wrapper {
border-bottom: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee;
} }
.el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell{ .el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell {
background: #F6F9FC;; background: #f6f9fc;
} }
.el-table__header-wrapper th, th.el-table__cell.is-leaf{ .el-table__header-wrapper th,
th.el-table__cell.is-leaf {
background: #fff; background: #fff;
} }
.hoverbtn{ .hoverbtn {
display: none; display: none;
>div{ > div {
cursor: pointer; cursor: pointer;
margin-right: 24px; margin-right: 24px;
} }
.xz{ .xz {
opacity: 0.8; opacity: 0.8;
} }
.xg{ .xg {
//color: #FF3C3C; //color: #FF3C3C;
} }
.sc{ .sc {
color: #FF3C3C; color: #ff3c3c;
} }
} }
tr:hover{ tr:hover {
.hoverbtn{ .hoverbtn {
display: flex; display: flex;
justify-content: right; justify-content: right;
} }
} }
.el-table__header-wrapper th{ .el-table__header-wrapper th {
background: #FFFFFF; background: #ffffff;
font-size: 13px; font-size: 13px;
opacity: 0.8; opacity: 0.8;
font-weight: 400; font-weight: 400;
} }
.is-sortable .sort-caret.ascending{ .is-sortable .sort-caret.ascending {
border-bottom-color: #0081FF; border-bottom-color: #0081ff;
opacity: 0.4; opacity: 0.4;
} }
.sort-caret.descending{ .sort-caret.descending {
border-top-color:#0081FF; border-top-color: #0081ff;
opacity: 0.4; opacity: 0.4;
} }
.ascending .sort-caret.ascending{ .ascending .sort-caret.ascending {
opacity: 1; opacity: 1;
} }
.descending .sort-caret.descending{ .descending .sort-caret.descending {
opacity: 1; opacity: 1;
} }
.img{ .img {
float: left; float: left;
margin-right: 8px; margin-right: 8px;
margin-top: -2px; margin-top: -2px;
...@@ -975,19 +1001,17 @@ ...@@ -975,19 +1001,17 @@
} }
} }
/* /*
客户管理 客户管理
*/ */
//表格搜索 //表格搜索
.table_search{ .table_search {
padding-bottom: 16px; padding-bottom: 16px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.searchInput{ .searchInput {
width: 320px; width: 320px;
.el-input__inner{ .el-input__inner {
font-size: 12px; font-size: 12px;
} }
} }
...@@ -997,100 +1021,100 @@ ...@@ -997,100 +1021,100 @@
} }
} }
} }
.p10{ .p10 {
padding: 0 10px; padding: 0 10px;
} }
.tips{ .tips {
display: inline-block; display: inline-block;
padding: 4px 8px; padding: 4px 8px;
border-radius: 2px; border-radius: 2px;
font-size: 12px; font-size: 12px;
margin-right: 8px; margin-right: 8px;
&.tip1{ &.tip1 {
background-color: #E4F3FD; background-color: #e4f3fd;
color: #41A1FD; color: #41a1fd;
} }
&.tip2{ &.tip2 {
background-color: #F3F3FF; background-color: #f3f3ff;
color: #8491E8; color: #8491e8;
} }
&.tip3{ &.tip3 {
background-color: #DEF6F0; background-color: #def6f0;
color: #0BAE8D; color: #0bae8d;
} }
} }
//批量导入 //批量导入
.uploadwin{ .uploadwin {
background: rgba(0,0,0,0.3); background: rgba(0, 0, 0, 0.3);
width: 100%; width: 100%;
height: 100%; height: 100%;
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
z-index: 10; z-index: 1024;
.upload{ .upload {
width: 528px; width: 528px;
height: 430px; height: 430px;
background: #F4F9FF; background: #f4f9ff;
border-radius: 4px; border-radius: 4px;
position: absolute; position: absolute;
top: 50%; top: 50%;
left: 50%; left: 50%;
transform: translate(-50%,-50%); transform: translate(-50%, -50%);
.up_title{ .up_title {
font-size: 14px; font-size: 14px;
font-weight: 700; font-weight: 700;
text-align: center; text-align: center;
line-height: 50px; line-height: 50px;
} }
.up_box{ .up_box {
margin: 0 24px; margin: 0 24px;
width: 480px; width: 480px;
height: 296px; height: 296px;
background: #FFFFFF; background: #ffffff;
border-radius: 2px; border-radius: 2px;
border: 1px dashed #0081FF; border: 1px dashed #0081ff;
position: relative; position: relative;
.el-upload-dragger{ .el-upload-dragger {
height: 294px; height: 294px;
width: 478px; width: 478px;
border: 0; border: 0;
} }
.up_img{ .up_img {
margin: 56px auto 13px; margin: 56px auto 13px;
width: 50px; width: 50px;
} }
.up_text{ .up_text {
color: #666; color: #666;
font-size: 14px; font-size: 14px;
line-height: 18px; line-height: 18px;
padding-bottom: 12px; padding-bottom: 12px;
} }
.up_tip{ .up_tip {
color: #999; color: #999;
font-size: 12px; font-size: 12px;
line-height: 16px; line-height: 16px;
padding-bottom: 12px; padding-bottom: 12px;
text-align: left; text-align: left;
padding-left: 82px; padding-left: 82px;
&:before{ &:before {
content: " "; content: " ";
width: 4px; width: 4px;
height: 4px; height: 4px;
background: #D8D8D8; background: #d8d8d8;
border-radius: 50%; border-radius: 50%;
float: left; float: left;
margin: 6px 6px 0 0; margin: 6px 6px 0 0;
} }
} }
.up_success{ .up_success {
padding-top: 135px; padding-top: 135px;
font-size: 18px; font-size: 18px;
color: #46AF41; color: #46af41;
font-weight: 700; font-weight: 700;
line-height: 24px; line-height: 24px;
>img{ > img {
float: left; float: left;
width: 24px; width: 24px;
margin-right: 10px; margin-right: 10px;
...@@ -1098,22 +1122,22 @@ ...@@ -1098,22 +1122,22 @@
} }
} }
} }
.btn_download{ .btn_download {
position: absolute; position: absolute;
width: 78px; width: 78px;
height: 22px; height: 22px;
background: #E2EEFF; background: #e2eeff;
border-radius: 2px; border-radius: 2px;
color: #0081FF; color: #0081ff;
background: rgba(0, 129, 255, 0.16); background: rgba(0, 129, 255, 0.16);
font-size: 12px; font-size: 12px;
line-height: 22px; line-height: 22px;
top: 148px; top: 148px;
right: 61px; right: 61px;
cursor: pointer; cursor: pointer;
.img{ .img {
float: left; float: left;
background: url('../images/upload.png')no-repeat center center; background: url("../images/upload.png") no-repeat center center;
transform: rotateX(180deg); transform: rotateX(180deg);
width: 9px; width: 9px;
height: 11px; height: 11px;
...@@ -1121,103 +1145,107 @@ ...@@ -1121,103 +1145,107 @@
} }
} }
} }
.btns{ .btns {
text-align: center; text-align: center;
.btn_primary,.btn_disabled,.btn_default{ .btn_primary,
.btn_disabled,
.btn_default {
border-radius: 2px; border-radius: 2px;
margin: 24px 8px 0; margin: 24px 8px 0;
width: 104px; width: 104px;
} }
.btn_disabled{ .btn_disabled {
background: #999; background: #999;
} }
} }
.success{ .success {
min-width: 240px; min-width: 240px;
padding: 0 24px; padding: 0 24px;
height: 175px; height: 175px;
background: #FFFFFF; background: #ffffff;
border-radius: 4px; border-radius: 4px;
position: absolute; position: absolute;
top: 50%; top: 50%;
left: 50%; left: 50%;
transform: translate(-50%,-50%); transform: translate(-50%, -50%);
text-align: center; text-align: center;
.img{ .img {
display: block; display: block;
margin: 24px auto 16px; margin: 24px auto 16px;
width: 60px; width: 60px;
} }
.p1{ .p1 {
font-size: 16px; font-size: 16px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei; font-family: Microsoft YaHei-Bold, Microsoft YaHei;
font-weight: 700; font-weight: 700;
color: rgba(35,35,35,0.8); color: rgba(35, 35, 35, 0.8);
line-height: 21px; line-height: 21px;
} }
.p2{ .p2 {
margin-top: 16px; margin-top: 16px;
font-size: 14px; font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei; font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400; font-weight: 400;
color: rgba(35,35,35,0.4); color: rgba(35, 35, 35, 0.4);
line-height: 14px; line-height: 14px;
} }
.p3{ .p3 {
padding-top: 35px; padding-top: 35px;
font-size: 18px; font-size: 18px;
color: #46AF41; color: #46af41;
font-weight: 700; font-weight: 700;
line-height: 24px; line-height: 24px;
text-align: left; text-align: left;
>img{ > img {
float: left; float: left;
width: 24px; width: 24px;
margin-right: 10px; margin-right: 10px;
margin-left: 67px; margin-left: 67px;
} }
} }
.btn_primary{ .btn_primary {
margin-top: 16px; margin-top: 16px;
} }
} }
} }
.el-input__inner{ .el-input__inner {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
padding-right: 10px; padding-right: 10px;
} }
.none{display: none} .none {
.el-dialog__body{ display: none;
}
.el-dialog__body {
padding-top: 14px; padding-top: 14px;
padding-bottom: 18px; padding-bottom: 18px;
} }
.tables{ .tables {
.el-table__body-wrapper{ .el-table__body-wrapper {
&::-webkit-scrollbar { &::-webkit-scrollbar {
width: 16px; //竖轴宽度 width: 16px; //竖轴宽度
height: 16px; //横轴宽度 height: 16px; //横轴宽度
} }
&::-webkit-scrollbar-track { &::-webkit-scrollbar-track {
background-color: #F3F4F5; background-color: #f3f4f5;
border-radius: 0; border-radius: 0;
} }
&::-webkit-scrollbar-thumb { &::-webkit-scrollbar-thumb {
background-color: rgba(98,110,126,0.2); background-color: rgba(98, 110, 126, 0.2);
border: 4px solid #F3F4F5; border: 4px solid #f3f4f5;
border-radius: 10px; border-radius: 10px;
} }
&::-webkit-scrollbar-corner { &::-webkit-scrollbar-corner {
background: #F3F4F5; background: #f3f4f5;
/*border-left: 1px solid #E0EAF2;*/ /*border-left: 1px solid #E0EAF2;*/
} }
} }
::-webkit-scrollbar-track-piece { ::-webkit-scrollbar-track-piece {
//滚动条凹槽的颜色,还可以设置边框属性 //滚动条凹槽的颜色,还可以设置边框属性
background-color: #F3F4F5; background-color: #f3f4f5;
height: 16px; height: 16px;
padding: 0 4px; padding: 0 4px;
} }
...@@ -1225,7 +1253,7 @@ ...@@ -1225,7 +1253,7 @@
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 8px; width: 8px;
height: 16px; height: 16px;
background-color: #F3F4F5; background-color: #f3f4f5;
border-radius: 6px; border-radius: 6px;
} }
//滚动条的滑块 //滚动条的滑块
...@@ -1233,14 +1261,15 @@ ...@@ -1233,14 +1261,15 @@
border-radius: 8px; border-radius: 8px;
height: 8px; height: 8px;
margin: 0 4px; margin: 0 4px;
background: rgba(98,110,126,0.2); background: rgba(98, 110, 126, 0.2);
border: 4px solid #F3F4F5; border: 4px solid #f3f4f5;
&:hover{ &:hover {
background: #566380; background: #566380;
} }
} }
} }
.select-multiple,.select-popper .el-input{ .select-multiple,
.select-popper .el-input {
//top: 10px !important; //top: 10px !important;
line-height: 34px !important; line-height: 34px !important;
} }
...@@ -1251,7 +1280,7 @@ ...@@ -1251,7 +1280,7 @@
//box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12); //box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12);
//-webkit-box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12); //-webkit-box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12);
} }
.el-select .el-input__inner{ .el-select .el-input__inner {
padding-left: 16px; padding-left: 16px;
} }
.el-tooltip__popper.is-dark { .el-tooltip__popper.is-dark {
...@@ -1270,23 +1299,23 @@ ...@@ -1270,23 +1299,23 @@
top: 56px; top: 56px;
z-index: 9; z-index: 9;
} }
.el-table__fixed-header-wrapper{ .el-table__fixed-header-wrapper {
position: sticky; position: sticky;
z-index: 9; z-index: 9;
top: 56px; top: 56px;
} }
.el-table__fixed{ .el-table__fixed {
overflow-x: clip; overflow-x: clip;
overflow-y: clip; overflow-y: clip;
} }
} }
.tables{ .tables {
.el-table__fixed { .el-table__fixed {
.el-table__body { .el-table__body {
padding-bottom: 16px; padding-bottom: 16px;
} }
} }
} }
.top12{ .top12 {
margin-top: 12px; margin-top: 12px;
} }
#app { #app {
.main-container { .main-container {
height: 100%; height: 100%;
transition: margin-left .28s; transition: margin-left 0.28s;
margin-left: $base-sidebar-width; margin-left: $base-sidebar-width;
width: calc(100% - $base-sidebar-width);
position: relative; position: relative;
background: #F5F5F5; background: #f5f5f5;
} }
.sidebarHide { .sidebarHide {
margin-left: 0!important; margin-left: 0 !important;
} }
.sidebar-container { .sidebar-container {
-webkit-transition: width .28s; -webkit-transition: width 0.28s;
transition: width 0.28s; transition: width 0.28s;
width: $base-sidebar-width !important; width: $base-sidebar-width !important;
background-color: $base-menu-background; background-color: $base-menu-background;
...@@ -28,25 +28,30 @@ ...@@ -28,25 +28,30 @@
// -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35); // -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);
// box-shadow: 2px 0 6px rgba(0,21,41,.35); // box-shadow: 2px 0 6px rgba(0,21,41,.35);
//展开、收起箭头 //展开、收起箭头
.side-expand{ .side-expand {
position: absolute; position: absolute;
top: 180px; top: 180px;
width: 21px; width: 21px;
height: 62px; height: 62px;
cursor: pointer; cursor: pointer;
animation: left-right .2s; animation: left-right 0.2s;
animation-fill-mode: forwards; animation-fill-mode: forwards;
z-index: 1002; z-index: 1002;
} }
@keyframes left-right{ @keyframes left-right {
0%{right: 0;} 0% {
100%{right: -21px;} right: 0;
}
100% {
right: -21px;
}
} }
// reset element-ui css // reset element-ui css
.horizontal-collapse-transition { .horizontal-collapse-transition {
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; transition: 0s width ease-in-out, 0s padding-left ease-in-out,
0s padding-right ease-in-out;
} }
.scrollbar-wrapper { .scrollbar-wrapper {
...@@ -59,11 +64,8 @@ ...@@ -59,11 +64,8 @@
.el-scrollbar { .el-scrollbar {
height: 100%; height: 100%;
} }
&.has-logo { &.has-logo {
.el-scrollbar { .el-scrollbar {
height: calc(100% - 50px); height: calc(100% - 50px);
...@@ -83,104 +85,105 @@ ...@@ -83,104 +85,105 @@
.svg-icon { .svg-icon {
margin-right: 6px; margin-right: 6px;
} }
.el-submenu__icon-arrow{ .el-submenu__icon-arrow {
top: 54%; top: 54%;
right: 5px; right: 5px;
color: #d8d8d8; color: #d8d8d8;
} }
.el-menu { .el-menu {
border: none; border: none;
height: 100%; height: 100%;
width: calc(100% - 16px) !important; width: calc(100% - 16px) !important;
margin: 0 8px; margin: 0 8px;
} }
.el-menu--inline{ .el-menu--inline {
margin: 0; margin: 0;
width: 100%!important; width: 100% !important;
} }
.el-menu--inline .nest-menu .el-menu-item{ .el-menu--inline .nest-menu .el-menu-item {
width: 100%!important; width: 100% !important;
min-width: 128px; min-width: 128px;
font-size: 12px; font-size: 12px;
color: #fff!important; color: #fff !important;
padding-left: 23px!important; padding-left: 23px !important;
} }
.el-menu--inline .nest-menu .el-menu-item .svg-icon{ .el-menu--inline .nest-menu .el-menu-item .svg-icon {
display: none; display: none;
} }
.el-menu-item, .el-submenu__title { .el-menu-item,
height: 40px; .el-submenu__title {
line-height: 40px; height: 40px;
border: 1px solid #141b2f; line-height: 40px;
color: #fff; border: 1px solid #141b2f;
margin-bottom: 6px; color: #fff;
padding: 0 6px!important; margin-bottom: 6px;
padding: 0 6px !important;
overflow: hidden !important; overflow: hidden !important;
text-overflow: ellipsis !important; text-overflow: ellipsis !important;
white-space: nowrap !important; white-space: nowrap !important;
} }
// menu hover // menu hover
.el-menu-item.is-active { .el-menu-item.is-active {
// 点击菜单的颜色 // 点击菜单的颜色
background-color: #1e2c4c!important; background-color: #1e2c4c !important;
color: #fff!important; color: #fff !important;
border-radius: 10px;
border: 1px solid #2b3f69;
&:hover {
background-color: #1e2c4c!important;
border-radius: 10px;
color: #fff!important;
border: 1px solid #2b3f69;
}
&:before{
background: #fff!important;
}
}
// menu hover
.submenu-title-noDropdown, .el-submenu__title {
color: #fff!important;
&:hover {
background-color: #1e2c4c!important;
color: #fff!important;
border-radius: 10px;
border: 1px solid #2b3f69;
}
}
}
.sidebar-container .el-submenu .el-menu-item:hover,.sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover {
background-color: #1e2c4c!important;
color: #fff!important;
border-radius: 10px; border-radius: 10px;
border: 1px solid #2b3f69; border: 1px solid #2b3f69;
&:hover {
background-color: #1e2c4c !important;
border-radius: 10px;
color: #fff !important;
border: 1px solid #2b3f69;
}
&:before {
background: #fff !important;
}
}
// menu hover
.submenu-title-noDropdown,
.el-submenu__title {
color: #fff !important;
&:hover {
background-color: #1e2c4c !important;
color: #fff !important;
border-radius: 10px;
border: 1px solid #2b3f69;
}
}
}
.sidebar-container .el-submenu .el-menu-item:hover,
.sidebar-container .nest-menu .el-submenu > .el-submenu__title:hover {
background-color: #1e2c4c !important;
color: #fff !important;
border-radius: 10px;
border: 1px solid #2b3f69;
} }
.sidebar-container .el-submenu .el-menu-item:before, .sidebar-container .nest-menu .el-submenu>.el-submenu__title:before { .sidebar-container .el-submenu .el-menu-item:before,
position: absolute; .sidebar-container .nest-menu .el-submenu > .el-submenu__title:before {
width: 2px; position: absolute;
height: 2px; width: 2px;
border-radius: 50%; height: 2px;
background: #344062; border-radius: 50%;
left: 16px; background: #344062;
top: 50%; left: 16px;
content: ""; top: 50%;
content: "";
} }
.sidebar-container .el-submenu .el-menu-item:hover:before, .sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover:before{ .sidebar-container .el-submenu .el-menu-item:hover:before,
position: absolute; .sidebar-container .nest-menu .el-submenu > .el-submenu__title:hover:before {
width: 2px; position: absolute;
height: 2px; width: 2px;
border-radius: 50%; height: 2px;
background: #fff; border-radius: 50%;
left: 16px; background: #fff;
top: 50%; left: 16px;
content: ""; top: 50%;
content: "";
} }
.hideSidebar { .hideSidebar {
...@@ -190,11 +193,12 @@ ...@@ -190,11 +193,12 @@
.main-container { .main-container {
margin-left: 48px; margin-left: 48px;
width: calc(100% - 48px);
} }
.submenu-title-noDropdown { .submenu-title-noDropdown {
margin-bottom: 6px; margin-bottom: 6px;
padding: 0 6px!important; padding: 0 6px !important;
text-align: center; text-align: center;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
...@@ -203,15 +207,14 @@ ...@@ -203,15 +207,14 @@
padding: 0 !important; padding: 0 !important;
.svg-icon { .svg-icon {
margin: 0px!important; margin: 0px !important;
width: 1em; width: 1em;
height: 1em; height: 1em;
font-size: 16px; font-size: 16px;
margin-bottom: -2px; margin-bottom: -2px;
vertical-align: -0.15em; vertical-align: -0.15em;
fill: currentColor; fill: currentColor;
overflow: hidden; overflow: hidden;
} }
} }
} }
...@@ -219,31 +222,30 @@ ...@@ -219,31 +222,30 @@
.el-submenu { .el-submenu {
overflow: hidden; overflow: hidden;
&>.el-submenu__title { & > .el-submenu__title {
margin-bottom: 6px; margin-bottom: 6px;
padding: 0 6px!important; padding: 0 6px !important;
text-align: center; text-align: center;
cursor: pointer; cursor: pointer;
.svg-icon { .svg-icon {
margin: 0px!important; margin: 0px !important;
width: 1em; width: 1em;
height: 1em; height: 1em;
font-size: 16px; font-size: 16px;
margin-bottom: -2px; margin-bottom: -2px;
vertical-align: -0.15em; vertical-align: -0.15em;
fill: currentColor; fill: currentColor;
overflow: hidden; overflow: hidden;
margin-left: 0px; margin-left: 0px;
} }
} }
} }
.el-menu--collapse { .el-menu--collapse {
.el-submenu { .el-submenu {
&>.el-submenu__title { & > .el-submenu__title {
&>span { & > span {
height: 0; height: 0;
width: 0; width: 0;
overflow: hidden; overflow: hidden;
...@@ -266,7 +268,7 @@ ...@@ -266,7 +268,7 @@
} }
.sidebar-container { .sidebar-container {
transition: transform .28s; transition: transform 0.28s;
width: $base-sidebar-width !important; width: $base-sidebar-width !important;
} }
...@@ -280,7 +282,6 @@ ...@@ -280,7 +282,6 @@
} }
.withoutAnimation { .withoutAnimation {
.main-container, .main-container,
.sidebar-container { .sidebar-container {
transition: none; transition: none;
...@@ -290,13 +291,13 @@ ...@@ -290,13 +291,13 @@
// when menu collapsed // when menu collapsed
.el-menu--vertical { .el-menu--vertical {
&>.el-menu { & > .el-menu {
.svg-icon { .svg-icon {
margin-right: 16px; margin-right: 16px;
} }
} }
.nest-menu .el-submenu>.el-submenu__title, .nest-menu .el-submenu > .el-submenu__title,
.el-menu-item { .el-menu-item {
&:hover { &:hover {
// you can use $subMenuHover // you can use $subMenuHover
...@@ -305,7 +306,7 @@ ...@@ -305,7 +306,7 @@
} }
// the scroll bar appears when the subMenu is too long // the scroll bar appears when the subMenu is too long
>.el-menu--popup { > .el-menu--popup {
max-height: 100vh; max-height: 100vh;
overflow-y: auto; overflow-y: auto;
...@@ -323,24 +324,24 @@ ...@@ -323,24 +324,24 @@
} }
} }
} }
.side-popover{ .side-popover {
min-width: 80px; min-width: 80px;
font-size: 12px; font-size: 12px;
color: #232323; color: #232323;
padding: 0 8px 32px 8px; padding: 0 8px 32px 8px;
margin-left: 16px !important; margin-left: 16px !important;
.side-title{ .side-title {
font-size: 16px; font-size: 16px;
height: 54px; height: 54px;
line-height: 58px; line-height: 58px;
padding: 0 6px; padding: 0 6px;
border-bottom: 1px solid #F0F0F0; border-bottom: 1px solid #f0f0f0;
} }
.side-list{ .side-list {
li{ li {
padding: 24px 6px 0 6px; padding: 24px 6px 0 6px;
&:hover{ &:hover {
color: #3D3D3D; color: #3d3d3d;
} }
} }
} }
...@@ -348,32 +349,32 @@ ...@@ -348,32 +349,32 @@
.side-retract { .side-retract {
height: 40px; height: 40px;
line-height: 48px; line-height: 48px;
border: 1px solid #141B2F; border: 1px solid #141b2f;
margin-bottom: 6px; margin-bottom: 6px;
padding: 0 6px !important; padding: 0 6px !important;
text-align: center; text-align: center;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background-color: #1E2C4C !important; background-color: #1e2c4c !important;
border-radius: 10px; border-radius: 10px;
border: 1px solid #2B3F69; border: 1px solid #2b3f69;
} }
.svg-icon { .svg-icon {
margin-right: 0 !important; margin-right: 0 !important;
width: 1em; width: 1em;
height: 1em; height: 1em;
font-size: 16px; font-size: 16px;
margin-bottom: -2px; margin-bottom: -2px;
vertical-align: -0.15em; vertical-align: -0.15em;
fill: currentColor; fill: currentColor;
overflow: hidden; overflow: hidden;
margin-left: 0px; margin-left: 0px;
} }
} }
.side-one-popover{ .side-one-popover {
min-width: 52px; min-width: 52px;
padding-bottom: 0; padding-bottom: 0;
.side-title{ .side-title {
font-size: 12px; font-size: 12px;
height: 24px; height: 24px;
line-height: 24px; line-height: 24px;
...@@ -381,23 +382,23 @@ ...@@ -381,23 +382,23 @@
} }
} }
.side-logo-popover{ .side-logo-popover {
width: 120px; width: 120px;
padding-top: 16px; padding-top: 16px;
padding-bottom: 0; padding-bottom: 0;
margin-left: 16px !important; margin-left: 16px !important;
.sidebar-logo{ .sidebar-logo {
width: 24px; width: 24px;
height: 24px; height: 24px;
background: #F5F5F5; background: #f5f5f5;
margin: 0 auto; margin: 0 auto;
text-align: center; text-align: center;
img{ img {
width: 16px; width: 16px;
height: 23px; height: 23px;
} }
} }
.side-title{ .side-title {
text-align: center; text-align: center;
font-size: 12px; font-size: 12px;
height: auto; height: auto;
......
<template>
<div class="no-data">
<div class="no-data-box">
<img :src="noData" alt="抱歉,没找到相关数据" />
<div v-if="record">抱歉,您还未添加跟进动态</div>
<template v-else>
<div v-if="text">抱歉,您还未添加{{text}}项目</div>
<div v-else>抱歉,没找到相关数据</div>
</template>
<span v-if="condition">建议调整关键词或筛选条件,重新搜索</span>
</div>
</div>
</template>
<script>
export default {
name: "noData",
props: {
record: {
type: Boolean,
default: false
},
condition: {
type: Boolean,
default: false
},
text: {
type: String,
default: ''
}
},
data() {
return {
noData: require("@/assets/images/detail/noData.png")
};
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.no-data {
font-size: 14px;
color: #999999;
width: 100%;
height: 100%;
min-height: 120px;
display: flex;
justify-content: center;
align-items: center;
background: #ffffff;
//border: 1px solid #eeeeee;
.no-data-box {
display: flex;
flex-direction: column;
align-items: center;
img {
width: 108px;
height: 109px;
margin-bottom: 22px;
}
div {
font-size: 16px;
line-height: 1;
color: #333333;
}
span {
margin-top: 4px;
}
}
}
</style>
<template>
<div class="Tables table-list-com-ins">
<div class="table-item">
<el-table v-if="tableDataTotal>0" class="fixed-table" :class="headerFixed ? 'headerFixed':''" v-loading="tableLoading" :data="tableData"
element-loading-text="Loading" ref="tableRef" border fit highlight-current-row v-sticky-header.always="stickyHeader"
:default-sort="defaultSort?defaultSort:{}" @sort-change="sortChange" @selection-change="selectionChange">
<el-table-column type="selection" :width="needSelection.width ? needSelection.width : '38px'" v-if="needSelection.flag"
:fixed="needSelection.fixed" :align="needSelection.align">
</el-table-column>
<el-table-column v-if="isIndex" label="序号" :width="flexWidth(tableData)" align="left" :fixed="indexFixed" :resizable="false">
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<template>
<el-table-column v-for="(item,index) in formColum" :key="index" :label="item.label" :prop="item.prop" :width="item.width"
:min-width="item.minWidth" :align="item.align?item.align:'left'" :fixed="item.fixed"
:sortable="item.sortable ?item.sortable=='custom'? 'custom':true : false" :resizable="false">
<template v-if="item.children&&item.children.length">
<el-table-column v-for="(cld, i) in item.children" :key="i" :prop="cld.prop" :label="cld.label" :width="cld.width" :resizable="false">
<template slot-scope="cldscope">
<template v-if="cld.slot">
<slot :name="cld.prop" :row="cldscope.row" :data="cld"></slot>
</template>
<template v-else>
<span>{{cldscope.row[cld.prop] || '--'}}</span>
</template>
</template>
</el-table-column>
</template>
<template v-else-if="item.slotHeader" slot="header">
<slot :name="item.slotName"></slot>
</template>
<template slot-scope="scope">
<slot v-if="item.slot" :name="item.prop" :row="scope.row" :index="scope.$index" :data="item"></slot>
<!-- 操作栏 -->
<slot v-else-if="item.prop == 'action-field-bar'" name="action-field-bar" :row="scope.row" :index="scope.$index" :data="item"></slot>
<span v-else>
{{ scope.row[item.prop] || '--' }}
</span>
</template>
</el-table-column>
</template>
<template slot="empty">
</template>
</el-table>
<div style="padding: 30px 0" v-else>
<no-data />
</div>
</div>
<div class="pagination-box" v-if="show_page && tableDataTotal>queryParams.pageSize">
<el-pagination background :current-page="current_page" :page-size="queryParams.pageSize" :total="tableDataTotal"
layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</div>
</template>
<script>
import NoData from '@/components/NoData';
export default {
name: "tableListCom",
props: {
isIndex: {
type: Boolean,
default: true
},
needSelection: {
type: Object,
default: () => ({
flag: false,
width: "39px",
fixed: false,
align: "left"
})
},
// 吸顶偏移量
stickyHeader: {
type: Object,
default: () => ({
offsetBottom: '10px',
offsetTop: "0px"
})
},
headerFixed: {
type: Boolean,
default: false
},
indexFixed: {
type: Boolean,
default: false
},
tableLoading: {
type: Boolean,
default: false
},
defaultSort: {
type: Object,
default: null
},
tableData: {
type: Array,
default: () => []
},
formColum: {
type: Array,
default: () => []
},
tableDataTotal: {
type: Number,
default: 0
},
queryParams: {
type: Object,
default: () => ({})
},
paging: {
type: Boolean,
default: true
},
MaxPage: { //最大页码
type: Number,
default: 500
},
},
components: {
NoData
},
data() {
return {
current_page: this.queryParams.pageNum,
show_page: this.paging
};
},
watch: {
'queryParams.pageNum'(newVal, oldVal) {
this.current_page = newVal;
}
},
created() {
},
methods: {
handleCurrentChange(e) {
if (this.MaxPage < e) {
this.show_page = false;
this.$nextTick(() => {
this.current_page = this.queryParams.pageNum;
this.$message.warning(`对不起,最多只能访问${this.MaxPage}页`);
this.show_page = true;
});
} else {
this.$emit('handle-current-change', e);
}
},
handleSizeChange(e) {
this.$emit('handle-current-change', e);
},
sortChange(e) {
this.$emit('sort-change', e);
},
selectionChange(selectionArray) {
this.$emit("selectionChange", selectionArray);
},
flexWidth(tableData) {
let currentMax = this.queryParams.pageNum * this.queryParams.pageSize - this.queryParams.pageSize + tableData.length, wdth = 59;
if (currentMax.toString().length > 3) {
wdth = wdth + (currentMax.toString().length - 3) * 10;
}
return wdth + 'px';
}
}
}
</script>
<style lang="scss" scoped>
.Tables {
::v-deep .el-table__body tr.current-row > td.el-table__cell {
background-color: #ffffff;
}
/*::v-deep .el-table__fixed{
height: calc(100% - 16px) !important;
}*/
::v-deep .el-table__row {
&:nth-child(even) {
background-color: #f9fcff;
.more {
background: #f8fbff;
span {
color: #0081ff;
}
}
}
&:nth-child(odd) {
.more {
span {
color: #0081ff;
}
}
}
}
.table-item {
::v-deep .el-table td.el-table__cell {
border-bottom: 0;
}
}
::v-deep .el-table th.el-table__cell.is-leaf,
::v-deep .el-table td.el-table__cell {
border-bottom: 1px solid #e6eaf1;
}
::v-deep .el-table--border .el-table__cell {
border-right: 1px solid #e6eaf1;
}
::v-deep .el-table__body tr.hover-row.current-row > td,
::v-deep .el-table__body tr.hover-row.el-table__row--striped.current-row > td,
::v-deep .el-table__body tr.hover-row.el-table__row--striped > td,
::v-deep .el-table__body tr.hover-row > td {
background-color: #dcebff !important;
.more {
background: #dcebff;
}
}
::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: #dcebff;
}
::v-deep .el-table__header-wrapper {
position: sticky;
top: 0;
z-index: 99;
}
::v-deep .el-table__fixed {
overflow-x: clip;
overflow-y: clip;
}
}
.table-list-com-ins {
::v-deep .el-table {
.el-table__fixed-header-wrapper {
top: 0px;
}
}
}
</style>
...@@ -15,6 +15,7 @@ import directive from './directive'; // directive ...@@ -15,6 +15,7 @@ import directive from './directive'; // directive
import plugins from './plugins'; // plugins import plugins from './plugins'; // plugins
import { download } from '@/utils/request'; import { download } from '@/utils/request';
import horizontalScroll from 'el-table-horizontal-scroll'; import horizontalScroll from 'el-table-horizontal-scroll';
import elTableSticky from '@cell-x/el-table-sticky';
import './assets/icons'; // icon import './assets/icons'; // icon
import './permission'; // permission control import './permission'; // permission control
...@@ -61,6 +62,7 @@ Vue.component('ImageUpload', ImageUpload); ...@@ -61,6 +62,7 @@ Vue.component('ImageUpload', ImageUpload);
Vue.component('ImagePreview', ImagePreview); Vue.component('ImagePreview', ImagePreview);
Vue.use(horizontalScroll); Vue.use(horizontalScroll);
Vue.use(elTableSticky);
Vue.use(directive); Vue.use(directive);
Vue.use(plugins); Vue.use(plugins);
Vue.use(VueMeta); Vue.use(VueMeta);
......
...@@ -21,18 +21,26 @@ ...@@ -21,18 +21,26 @@
<!-- 输入框 --> <!-- 输入框 -->
<template v-if="form.type==3"> <template v-if="form.type==3">
<!-- 未点击前的输入框样式 --> <!-- 未点击前的输入框样式 -->
<div class="normal-search-container" @click="showSearchBox = true" v-if="!showSearchBox"> <div class="normal-search-container" :class="{'is-hover-search' : form.hover}" @mouseover="searchHover($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" alt="">
<span>搜索</span> <span v-show="!form.hover && !form.value">搜索</span>
</div> <el-input v-model="form.value" :placeholder="form.placeholder ? form.placeholder : '输入关键词查询'"
<!-- 输入框展开后样式 --> :style="form.width?'width:'+form.width+'px':'width:180px'" @focus="searchFocus($event,form)" @blur="searchBlur($event,form)"
<transition @enter="onEnter" appear mode="out-in"> @input="value => searchInput(value,form)" v-show="form.hover || form.value">
<div class="cooperate-name enterprise-search-container" :id="'focus'+i" v-if="showSearchBox"> <template slot="suffix">
<transition mode="out-in" appear name="fade">
<img src="@/assets/images/enterprise/search-input-clear-icon.svg" alt="" @click.stop="form.value = '';changeSelect()"
v-show="form.showClearIcon">
</transition>
</template>
</el-input>
<!-- <div class="cooperate-name enterprise-search-container" :id="'focus'+i">
<el-input clearable @clear="changeSelect" @focus="clickFocus('focus'+i)" @blur="clickFocus('focus'+i)" v-model="form.value" <el-input clearable @clear="changeSelect" @focus="clickFocus('focus'+i)" @blur="clickFocus('focus'+i)" v-model="form.value"
:placeholder="form.placeholder" :style="form.width?'width:'+form.width+'px':'width:180px'"></el-input> :placeholder="form.placeholder" :style="form.width?'width:'+form.width+'px':'width:180px'"></el-input>
<span @click="changeSelect">搜索</span> <span @click="changeSelect">搜索</span>
</div> </div> -->
</transition> </div>
</template> </template>
<!-- 多选 --> <!-- 多选 -->
<template v-if="form.type==4"> <template v-if="form.type==4">
...@@ -135,6 +143,28 @@ export default { ...@@ -135,6 +143,28 @@ export default {
CustomMoneySelect CustomMoneySelect
}, },
methods: { methods: {
searchFocus(event, formData) {
const { target } = event;
if (target?.value?.length) {
this.$set(formData, "showClearIcon", true);
}
},
searchBlur(event, formData) {
this.$set(formData, "showClearIcon", false);
},
searchInput(value, formData) {
if (value?.length) {
this.$set(formData, "showClearIcon", true);
}
},
searchHover(event, formData) {
this.$set(formData, "hover", true);
},
searchUnHover(event, formData) {
if (!formData.value) {
this.$set(formData, "hover", false);
}
},
async getPlaceholder() { async getPlaceholder() {
try { try {
await this.$nextTick(); await this.$nextTick();
...@@ -284,7 +314,7 @@ export default { ...@@ -284,7 +314,7 @@ export default {
::v-deep .el-popper[x-placement^="bottom"] { ::v-deep .el-popper[x-placement^="bottom"] {
margin-top: 5px; margin-top: 5px;
} }
.headerFixed{ .headerFixed {
position: sticky; position: sticky;
top: 0; top: 0;
z-index: 10; z-index: 10;
...@@ -401,10 +431,19 @@ export default { ...@@ -401,10 +431,19 @@ export default {
} }
} }
.normal-search-container { ::v-deep .normal-search-container {
display: flex; display: flex;
align-items: center; align-items: center;
cursor: pointer;
&.is-hover-search {
width: 238px;
background: #f4f6f9;
border-radius: 4px 4px 4px 4px;
& > img {
cursor: unset;
}
}
&:hover { &:hover {
& > span { & > span {
...@@ -416,6 +455,7 @@ export default { ...@@ -416,6 +455,7 @@ export default {
width: 16px; width: 16px;
height: 16px; height: 16px;
margin-left: 12px; margin-left: 12px;
cursor: pointer;
} }
& > span { & > span {
...@@ -424,6 +464,42 @@ export default { ...@@ -424,6 +464,42 @@ export default {
margin-left: 8px; margin-left: 8px;
line-height: 22px; line-height: 22px;
font-size: 14px; font-size: 14px;
cursor: pointer;
}
.el-input {
& > .el-input__inner {
border: none;
height: 32px;
line-height: 32px;
caret-color: #0081ff;
color: rgba(35, 35, 35, 0.8);
font-size: 14px;
background: #f4f6f9;
padding-right: 26px;
padding-left: 8px;
&::placeholder {
color: rgba(35, 35, 35, 0.4) !important;
font-size: 14px !important;
line-height: 32px;
}
}
.el-input__suffix {
right: 12px;
display: flex;
align-items: center;
.el-input__suffix-inner {
height: 14px;
width: 14px;
}
img {
cursor: pointer;
vertical-align: unset;
}
}
} }
} }
} }
......
...@@ -112,9 +112,10 @@ ...@@ -112,9 +112,10 @@
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="table-item-jf table-item" v-if="!isSkeleton&&tableData.length>0"> <div class="table-item-jf table-item" v-if="!isSkeleton&&tableData.length>0">
<el-table :data="tableData" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" v-horizontal-scroll="'hover'" <el-table :data="tableData" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}"
class="table-item1 fixed-table" border highlight-current-row :header-row-class-name="setHeaderRow" :cell-class-name="setCellClass" v-sticky-header.always="{offsetTop : '56px',offsetBottom : '10px'}" class="table-item1 fixed-table" border highlight-current-row
:row-class-name="setRowClass" :header-cell-class-name="setCellClass" @sort-change="sortChange" ref="theOwnerListTable"> :header-row-class-name="setHeaderRow" :cell-class-name="setCellClass" :row-class-name="setRowClass" :header-cell-class-name="setCellClass"
@sort-change="sortChange" ref="theOwnerListTable">
<el-table-column type="index" label="序号" :fixed="tableColumnFixed" width="60" :resizable="false"> <el-table-column type="index" label="序号" :fixed="tableColumnFixed" width="60" :resizable="false">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -180,7 +181,8 @@ ...@@ -180,7 +181,8 @@
<el-table-column label="历史发包总金额" min-width="120" :resizable="false" :sortable="'custom'" prop="inviteTenderSumAmount"> <el-table-column label="历史发包总金额" min-width="120" :resizable="false" :sortable="'custom'" prop="inviteTenderSumAmount">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="text-align:right;white-space: nowrap;">{{parseFloat(scope.row.inviteTenderSumAmount) ? `${scope.row.inviteTenderSumAmount}万元`:"--"}} <div style="text-align:right;white-space: nowrap;">
{{parseFloat(scope.row.inviteTenderSumAmount) ? `${scope.row.inviteTenderSumAmount}万元`:"--"}}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
......
<template>
<el-dialog :visible="dialogShow" width="464px" custom-class="add-bid-opening-record" :show-close="false">
<div class="add-bid-opening-record-inner">
<slot name="dialog-main">
<!-- 弹窗header -->
<slot name="dialog-header">
<div class="add-header">
<div class="header-left-container">
<slot name="dialog-header-icon">
<img src="@/assets/images/economies/icon.png" alt="" class="header-icon">
</slot>
<slot name="dialog-header-title">
<span class="header-title">{{title}}</span>
</slot>
</div>
<div class="header-right-container">
<slot name="dialog-header-close-icon">
<i class="el-icon-close dialog-header-close-icon" @click="dialogClose('contentFormIns')"></i>
</slot>
</div>
</div>
</slot>
<!-- 弹窗表单 -->
<slot name="dialog-content">
<div class="add-content-form">
<el-form :model="formData" :rules="formRules" label-width="auto" class="content-form-ins" ref="contentFormIns">
<el-form-item label="投标人 :" prop="tenderer">
<el-input v-model="formData.tenderer" placeholder="请输入投标人"></el-input>
</el-form-item>
<el-form-item label="企业性质 :" prop="tendererNature">
<el-input v-model="formData.tendererNature" placeholder="请输入企业性质"></el-input>
</el-form-item>
<el-form-item label="项目经理 :" prop="businessManager">
<el-input v-model="formData.businessManager" placeholder="请输入项目经理"></el-input>
</el-form-item>
<el-form-item label="联系方式 :" prop="contact">
<el-input v-model="formData.contact" placeholder="请输入联系方式"></el-input>
</el-form-item>
<el-form-item label="投标金额 :" class="has-unit" prop="tenderAmount">
<el-input v-model="formData.tenderAmount" placeholder="请输入投标金额" @input="(value) => tenderAmountInput(value,formData)"></el-input>
<span class="content-form-item-unit">万元</span>
</el-form-item>
</el-form>
</div>
</slot>
<!-- 底部按钮 -->
<slot name="dialog-footer">
<div class="add-footer">
<div class="add-footer-btn cancel-btn" @click="dialogClose('contentFormIns')">{{cancelText}}</div>
<div class="add-footer-btn ok-btn" @click="ok('contentFormIns')">{{okText}}</div>
</div>
</slot>
</slot>
</div>
</el-dialog>
</template>
<script>
export default {
name: "addBidOpeningRecord",
props: {
show: {
type: Boolean,
default: false
},
title: {
type: String,
default: ""
},
formData: {
type: Object,
default: () => ({})
},
formRules: {
type: Object,
default: () => ({})
},
okText: {
type: String,
default: "确定"
},
cancelText: {
type: String,
default: "取消"
}
},
watch: {
"show": {
handler(newValue, oldValue) {
this.dialogShow = newValue;
}
}
},
data() {
return {
dialogShow: this.show
};
},
//可访问data属性
created() {
},
//计算集
computed: {
},
//方法集
methods: {
dialogClose(refStr) {
Object.assign(this.$data, this.$options.data.call(this));
this.$refs[refStr].clearValidate();
this.$emit("dialogClose");
},
ok(refStr) {
this.$refs[refStr].validate(flag => {
console.log(flag);
if (flag) {
this.$emit("validatorSuccess");
}
});
},
tenderAmountInput(value, data) {
data.tenderAmount = value.replace(/[^\d.]/g, "")
.replace(/\.{2,}/g, ".")
.replace(".", "$#$")
.replace(/\./g, "")
.replace("$#$", ".")
.replace(/^(\-)*(\d+)\.(\d+).*$/, '$1$2.$3')
.replace(/^\./g, "").replace(/^0+(\d)/, '');
}
},
}
</script>
<style lang="scss" scoped>
::v-deep .add-bid-opening-record {
.el-dialog__body,
.el-dialog__header {
padding: 0px;
}
.add-bid-opening-record-inner {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.add-header {
width: 100%;
height: 48px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0px 16px;
box-sizing: border-box;
border-bottom: 1px solid #e1e1e1;
.header-left-container {
display: flex;
align-items: center;
& > .header-icon {
width: 17px;
height: 17px;
}
& > .header-title {
margin-left: 8px;
color: #232323;
font-size: 16px;
font-weight: bold;
}
}
.header-right-container {
.dialog-header-close-icon {
font-size: 16px;
color: #999999;
cursor: pointer;
&:hover {
color: #0081ff;
}
}
}
}
.add-content-form {
padding: 24px;
box-sizing: border-box;
.content-form-ins {
.el-form-item {
margin-bottom: 16px;
display: flex;
align-items: center;
.el-form-item__label {
padding: 0px;
line-height: 32px;
font-size: 14px;
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
white-space: nowrap;
}
.el-form-item__content {
width: 100%;
margin-left: 0px !important;
line-height: 32px;
.el-input {
.el-input__inner {
height: 32px;
line-height: 32px;
padding: 0px 8px;
box-sizing: border-box;
&:focus {
border-color: #0081ff;
}
&::placeholder {
color: rgba(35, 35, 35, 0.4) !important;
font-size: 14px;
}
}
}
.el-form-item__error {
padding-top: 2px;
}
}
&.has-unit {
.el-form-item__content {
display: flex;
align-items: center;
.content-form-item-unit {
white-space: nowrap;
margin-left: 8px;
}
}
}
}
}
}
.add-footer {
display: flex;
justify-content: flex-end;
align-items: center;
padding: 24px;
padding-top: 0px;
box-sizing: border-box;
.add-footer-btn {
min-width: 80px;
padding: 0px 13px;
height: 32px;
line-height: 32px;
text-align: center;
border-radius: 2px;
color: rgba(35, 35, 35, 0.8);
font-size: 14px;
font-weight: 400;
cursor: pointer;
box-sizing: border-box;
&.cancel-btn {
background: #fff;
border: 1px solid #d9d9d9;
}
&.ok-btn {
background: #0081ff;
color: #fff;
margin-left: 8px;
}
}
}
}
}
</style>
<template>
<div class="bid-opening-record">
<div class="bid-opening-record-inner">
<!-- 查询功能 -->
<div class="search-form-container">
<div class="left-form-title">基本信息</div>
<div class="right-form-btn-box">
<div class="search-btn add" @click.stop="addBidOpeningRecord">
<img src="@/assets/images/project/project-bid-opening-record-add.svg" alt="">
<span>新增</span>
</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">
<img src="@/assets/images/project/project-bid-opening-record-import.svg" alt="">
<span>批量导入</span>
</div>
</div>
</div>
<!-- 骨架屏 -->
<skeleton v-if="isLoadingData"></skeleton>
<!-- 列表 -->
<div class="table-data-list-container" v-else-if="!isLoadingData || !tableDataList.length">
<table-list-com :formColum="formColum" :queryParams="queryParams" :tableData="tableDataList" :tableDataTotal="tableDataTotal"
:needSelection="needSelection" :stickyHeader="{offsetTop:'48px',offsetBottom : '10px'}" @selectionChange="selectionChange"
@sort-change="sortChange" @handle-current-change="pageCurrentChange" ref="tableListComParent">
<template slot="action-field-bar" slot-scope="scope">
<div class="action-field-bar-container">
<span class="action-field-bar-btn modify" @click.stop="modifyBidOpeningRecord(scope.row)">编辑</span>
<span class="action-field-bar-btn remove" @click.stop="batchDeletion(scope.row.id)">删除</span>
</div>
</template>
</table-list-com>
</div>
</div>
<!-- 新增开标记录弹窗 -->
<add-bid-opening-record :show="showAddDialog" :title="title" @dialogClose="dialogClose" @validatorSuccess="validatorSuccess"
:formRules="formRules" :formData="formData"></add-bid-opening-record>
<!-- 导入弹窗 -->
<batch-import-reset v-if="showImport" :importtype="types" @cancels="cancelimport" @getdatas="getdatas"></batch-import-reset>
</div>
</template>
<script>
import skeleton from './skeleton';
import TableListCom from "@/components/TableListCom";
import BatchImportReset from "./batchImportReset";
import { getBidOpeningRecordListApi, addBidOpeningRecordApi, modifyBidOpeningRecordApi, removeBidOpeningRecordApi } from "@/api/project/project";
import AddBidOpeningRecord from "./AddBidOpeningRecord.vue";
export default {
components: { skeleton, TableListCom, AddBidOpeningRecord, BatchImportReset },
name: "bidOpeningRecord",
data() {
// 必填字符串长度验证
function requiredStrLengthValidator(target) {
return function (rule, value, callback) {
if (!value || !value?.toString()?.trim()) {
return callback(new Error(`请输入${target}`));
}
return callback();
};
};
// 字符串长度验证
function strLengthValidator(target) {
return function (rule, value, callback) {
if (value && !value?.toString()?.trim()) {
return callback(new Error(`请输入${target}`));
}
return callback();
};
};
// 电话验证
const phoneReg = /^1[3-9]\d{9}$/;
function phoneNumberValidator(rule, value, callback) {
if (value && !value?.toString()?.trim()) {
return callback(new Error(`请输入联系方式`));
}
if (value && !phoneReg.test(value)) {
return callback(new Error(`请输入正确的手机号码`));
}
return callback();
};
// 金额验证
const amountReg = /^(?!0\d)\d+(\.\d+)?$/;
function amountValidator(rule, value, callback) {
if ((!value && value != "0") || !value?.toString()?.trim()) {
return callback(new Error(`请输入投标金额`));
}
if (value && !amountReg.test(value)) {
return callback(new Error("请输入正确的投标金额"));
}
return callback();
}
return {
title: "新增开标记录",
// 加载状态
isLoadingData: false,
// 列表列数据
formColum: [
{ label: '投标人', prop: 'tenderer', width: "468px" },
{ label: '企业性质', prop: 'tendererNature', width: "96px" },
{ label: '项目经理', prop: 'businessManager', width: "115px" },
{ label: '联系方式', prop: 'contact', width: "133px" },
{ label: '投标金额(万元)', prop: 'tenderAmount', width: "168px", sortable: "custom" },
{ label: '操作', prop: 'action-field-bar', minWidth: "151px", fixed: "right" },
],
needSelection: {
flag: true,
width: "39px",
},
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 20,
orderByColumn: "tenderAmount",
isAsc: "asc",
businessId: this.$route.query.id,
},
tableDataTotal: 0,
tableDataList: [],
// 表单验证规则
// 表单数据
formData: {
businessId: this.$route.query.id,
tenderer: "",
tendererNature: "",
businessManager: "",
contact: "",
tenderAmount: ""
},
formRules: {
tenderer: [{ required: true, trigger: "blur", validator: requiredStrLengthValidator("投标人") }],
tendererNature: [{ required: true, trigger: "blur", validator: requiredStrLengthValidator("企业性质") }],
businessManager: [{ trigger: ["change", "blur"], validator: strLengthValidator("项目经理") }],
contact: [{ trigger: ["blur"], validator: phoneNumberValidator }],
tenderAmount: [{ required: true, trigger: ["blur"], validator: amountValidator }],
},
selectionArray: [],
// 展示新增弹窗
showAddDialog: false,
// 导入弹窗
showImport: false
};
},
//可访问data属性
created() {
this.dataInit();
},
//计算集
computed: {
},
//方法集
methods: {
async dataInit() {
try {
await this.getTableList();
} catch (error) {
console.log(error);
}
},
async getTableList(pageNum, pageSize, orderByColumn, isAsc) {
try {
this.searchCheck(pageNum, pageSize, orderByColumn, isAsc);
this.isLoadingData = true;
const result = await getBidOpeningRecordListApi(this.queryParams);
if (result.code == 200) {
this.tableDataList = result.rows;
this.tableDataTotal = result.total;
}
} catch (error) {
console.log(error);
} finally {
this.isLoadingData = false;
await this.resetSelection();
}
},
searchCheck(pageNum, pageSize, orderByColumn, isAsc) {
if (!pageNum) {
this.queryParams.pageNum = 1;
}
if (!pageSize) {
this.queryParams.pageSize = 20;
}
if (!orderByColumn) {
this.queryParams.orderByColumn = "tenderAmount";
}
if (!isAsc) {
this.queryParams.isAsc = "asc";
}
},
addBidOpeningRecord() {
this.title = "新增开标记录";
this.showAddDialog = true;
},
// 修改开标记录
modifyBidOpeningRecord({ businessId, businessManager, contact, id, tenderAmount, tenderer, tendererNature }) {
const params = {
businessId,
businessManager,
contact,
id,
tenderAmount,
tenderer,
tendererNature
};
this.formData = { ...this.formData, ...params };
this.title = "修改开标记录";
this.showAddDialog = true;
},
dialogClose() {
this.showAddDialog = false;
this.formData = this.$options.data.call(this).formData;
},
// 验证通过提交数据
async validatorSuccess() {
try {
const result = this.formData.id ? await modifyBidOpeningRecordApi(this.formData) : await addBidOpeningRecordApi(this.formData);
if (result.code == 200) {
console.log(result);
this.dialogClose();
await this.getTableList();
}
} catch (error) {
console.log(error);
}
},
// 重置复选框
async resetSelection() {
try {
await this.$nextTick();
// 清空复选框选项
this.$refs["tableListComParent"].$refs["tableRef"].clearSelection();
this.selectionArray = [];
} catch (error) {
console.log(error);
}
},
// 批量删除
async batchDeletion(id) {
try {
if (!this.selectionArray?.length && !id) return;
const array = id ? [{ id }] : this.selectionArray;
const result = await removeBidOpeningRecordApi({
ids: (array.map(item => item.id))
});
if (result.code == 200) {
this.getTableList();
}
} catch (error) {
console.log(error);
}
},
// 复选框选中
selectionChange(array) {
this.selectionArray = array;
},
hasConditions() {
const { pageNum, pageSize, orderByColumn, isAsc } = this.queryParams;
this.getTableList(pageNum, pageSize, orderByColumn, isAsc);
},
// 列排序
sortChange({ column, order, prop }) {
this.queryParams.orderByColumn = prop;
if (order == "ascending") {
this.queryParams.isAsc = "asc";
} else if (order == "descending") {
this.queryParams.isAsc = "desc";
}
this.hasConditions();
},
// 翻页
pageCurrentChange(page) {
this.queryParams.pageNum = page;
this.hasConditions();
},
// 批量导入
batchImport() {
this.showImport = true;
},
cancelimport() {
this.showImport = false;
},
getdatas() {
this.getTableList();
}
},
}
</script>
<style lang="scss" scoped>
.bid-opening-record {
width: 100%;
background: #fff;
padding: 16px;
box-sizing: border-box;
.bid-opening-record-inner {
width: 100%;
height: 100%;
.search-form-container {
display: flex;
align-items: center;
justify-content: space-between;
.left-form-title {
font-size: 16px;
line-height: 16px;
font-weight: bold;
color: #232323;
position: relative;
padding-left: 8px;
box-sizing: border-box;
&::before {
content: "";
position: absolute;
left: 0px;
width: 2px;
height: 14px;
background: #445781;
}
}
.right-form-btn-box {
display: flex;
align-items: center;
& > .search-btn:first-of-type {
margin-left: 0px;
}
.search-btn {
height: 32px;
display: flex;
align-items: center;
justify-content: center;
padding: 0px 16px;
box-sizing: border-box;
font-size: 14px;
margin-left: 12px;
cursor: pointer;
& > span {
margin-left: 8px;
}
& > img {
width: 14px;
height: 14px;
}
&.add {
background: #0081ff;
border-radius: 4px;
color: #fff;
}
&.remove {
background: #fff;
border: 1px solid #ff3c3c;
color: #ff3c3c;
border-radius: 2px;
}
&.import {
background: #fff;
border: 1px solid #d9d9d9;
color: #232323;
border-radius: 2px;
}
}
}
}
.table-data-list-container {
width: 100%;
margin-top: 16px;
.action-field-bar-container {
display: flex;
.action-field-bar-btn {
font-size: 12px;
font-weight: 400;
line-height: 20px;
padding: 0px 12px;
box-sizing: border-box;
cursor: pointer;
&.modify {
color: #0081ff;
}
&.remove {
color: #ff3c3c;
}
}
}
}
}
}
</style>
<template>
<div class="uploadwin batch-import-reset">
<div class="upload" v-if="addfile==false">
<div class="up_title">批量导入{{titletext}}</div>
<div class="up_box">
<el-upload :class="{'none':isUpload == true}" class="upload-demo" :action="action" :multiple="false" accept=".xls,.xlsx" drag ref="upload"
:auto-upload="false" :file-list="fileList" :on-change="handleFileListChange" :headers="headers" :on-success="onSuccess">
<img class="up_img" src="@/assets/images/project/upload.png">
<div class="up_text">点击选择或将文件(xls,xlsx)拖拽至此上传项目表格</div>
<div class="up_tip">导入的文件内容必须依照下载模板的要求填写</div>
<div class="up_tip">上传文件最大为2M,仅支持Excel表格文件(xls,xlsx)</div>
<div class="up_tip">导入已存在的{{titletext}}将自动跳过</div>
</el-upload>
<div class="up_success" v-if="isUpload == true">
<img src="@/assets/images/project/success.png">上传成功
</div>
<div class="btn_download" v-if="isUpload == false" @click="downloadClick">
<div class="img"></div>点击下载
</div>
</div>
<div class="btns">
<div class="btn btn_primary btn_disabled h34" v-if="isUpload==false">确定导入</div>
<div class="btn btn_primary h34" @click="importConfirmClick" v-else>确定导入</div>
<div class="btn btn_default h34" @click="importCancel">取消</div>
</div>
</div>
<div class="success" v-if="addfile==true">
<div v-if="addsuccess==false">
<img class="img" src="@/assets/images/project/clock.png">
<div class="p1">查询数据中...</div>
<div class="p2">请耐心等待,过程大概30秒</div>
</div>
<div v-if="addsuccess == true">
<div class="p3">
<img src="@/assets/images/project/success.png">查询成功
</div>
<!--<div class="p2">导入成功,已为您去掉重复{{titletext}}{{successCount}}</div>-->
<div class="p2">{{messages}}</div>
<div class="btns">
<div class="btn btn_primary h32" @click="getmsg">查看</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { getToken } from "@/utils/auth";
import "@/assets/styles/project.scss";
export default {
name: 'batchImportReset',
props: {
importtype: ''
},
data() {
return {
isUpload: false,//有上传的文件
addfile: false,//已上传文件
addsuccess: false,//已成功加入数据
//批量导入
action: "",
fileList: [],
headers: {
Authorization: "Bearer " + getToken(),
},
downloadhref: '',//样例地址
titletext: '',
successCount: 0,//成功条数
messages: '',
};
},
created() {
this.downloadhref = '/file/bidOpeningRecordTemplate.xlsx';
this.titletext = '开标记录';
this.action = process.env.VUE_APP_BASE_API + `/business/open/tender/importData/${this.$route.query.id}`;
},
methods: {
getmsg() {
this.importCancel();
this.$emit('getdatas');
},
handleFileListChange(file, fileList) {
var testmsg = file.name.substring(file.name.lastIndexOf(".") + 1);
const extension = testmsg === "xlsx";
const extension1 = testmsg === "xls";
if (!extension && !extension1) {
this.$message({
message: "上传文件只能是.xls,.xlsx格式!",
type: "warning",
});
return false;
}
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
this.$refs.upload.clearFiles();
this.$message({
message: '上传文件大小不能超过 2MB!',
type: 'warning'
});
return false;
}
if (fileList.length > 0) {
this.fileList = [fileList[fileList.length - 1]];
this.isUpload = true;
}
},
onSuccess(res, file, fileList) {
if (res.code == 200) {
this.successCount = res.successCount;
let str = '成功导入条数' + res.successCount + ',失败条数' + res.errorCount;
this.messages = str;
this.addsuccess = true;
} else {
this.importCancel();
this.$message.error({ message: res.msg, showClose: true });
}
},
downloadClick() {
let a = document.createElement("a");
a.setAttribute("href", this.downloadhref);
a.setAttribute("download", "批量导入模版.xlsx");
document.body.appendChild(a);
a.click();
a.remove();
},
// 批量导入
importConfirmClick() {
if (this.fileList.length > 0) {
this.$refs["upload"].submit();
this.addfile = true;
} else {
this.$message("请先选择文件");
}
},
importCancel() {
this.addfile = false;
this.isUpload = false;
this.addsuccess = false;
this.$emit('cancels');
},
}
}
</script>
<style scoped>
</style>
<template> <template>
<div id="jsnr"> <div id="jsnr" class="project-detail-list">
<div class="miantitle"> <div class="project-detail-list-inner">
<template v-if="!detailId"> <div class="miantitle">
<span>项目管理</span> <template v-if="!detailId">
<span class="on" @click="tolist"> / 商机列表</span> <span>项目管理</span>
</template> <span class="on" @click="tolist"> / 商机列表</span>
<span class="on" v-else @click="cooperateList">合作情况</span> </template>
<span> / 项目详情</span> <span class="on" v-else @click="cooperateList">合作情况</span>
</div> <span> / 项目详情</span>
<div class="app-container" v-if="ProjectData"> </div>
<el-card class="box-card noborder pad16 overflows"> <div class="app-container" v-if="ProjectData">
<div class="head baseinfo"> <el-card class="box-card noborder pad16 overflows">
<div class="titles"> <div class="head baseinfo">
<img src="@/assets/images/project/headimg.png" class="headimg"> <div class="titles">
<strong class="text">{{ProjectData.projectName}}</strong> <img src="@/assets/images/project/headimg.png" class="headimg">
<div class="protypes" :class="{'i1':ProjectData.status == 0,'i2':ProjectData.status == 1,'i3':ProjectData.status == 2}" <strong class="text">{{ProjectData.projectName}}</strong>
v-if="isDisabled == false"> <div class="protypes" :class="{'i1':ProjectData.status == 0,'i2':ProjectData.status == 1,'i3':ProjectData.status == 2}"
<span v-for="(item,index) in projectStatus"><i v-if="ProjectData.status == item.dictValue">{{item.dictLabel}}</i></span> v-if="isDisabled == false">
<el-select class="sels" v-model="ProjectData.status" @change="editXMSL({status:ProjectData.status})"> <span v-for="(item,index) in projectStatus"><i v-if="ProjectData.status == item.dictValue">{{item.dictLabel}}</i></span>
<el-option v-for="(item,index) in projectStatus" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option> <el-select class="sels" v-model="ProjectData.status" @change="editXMSL({status:ProjectData.status})">
</el-select> <el-option v-for="(item,index) in projectStatus" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</div> </el-select>
<div class="locks" v-if="ProjectData.isFounder == 1">
<div @click="islock=true">
<img v-if="ProjectData.isPrivate == 0" src="@/assets/images/project/lock.png">
<img v-else src="@/assets/images/project/lockopen.png">
{{ProjectData.isPrivate == 0?"仅自己可见":"他人可见"}}
</div> </div>
<div class="delform" v-if="islock"> <div class="locks" v-if="ProjectData.isFounder == 1">
<div class="words">{{ProjectData.isPrivate == 0?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div> <div @click="islock=true">
<div> <img v-if="ProjectData.isPrivate == 0" src="@/assets/images/project/lock.png">
<div class="btnsmall btn_primary h28" @click="locks(ProjectData.isPrivate)">确定</div> <img v-else src="@/assets/images/project/lockopen.png">
<div class="btnsmall btn_cancel h28" @click="islock=false">取消</div> {{ProjectData.isPrivate == 0?"仅自己可见":"他人可见"}}
</div>
<div class="delform" v-if="islock">
<div class="words">{{ProjectData.isPrivate == 0?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div>
<div>
<div class="btnsmall btn_primary h28" @click="locks(ProjectData.isPrivate)">确定</div>
<div class="btnsmall btn_cancel h28" @click="islock=false">取消</div>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="contets row" readonly>
<div class="contets row" readonly> <div class="det-con">
<div class="det-con"> <span>项目阶段:</span>
<span>项目阶段:</span>
<div class="select-popper">
<span :class="{'txt':xmjd == '请选择'}">
{{xmjd}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-if="isDisabled == false" v-model="xmjd" class="select-multiple" placeholder="请选择"
@change="editXMSL({projectStage:xmjd})">
<el-option v-for="(item,index) in projectStage" :key="item.dictCode" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
</div>
<div class="det-con">
<span>项目类别:</span>
<span>
<div class="select-popper"> <div class="select-popper">
<span :class="{'txt':xmlb == '请选择'}"> <span :class="{'txt':xmjd == '请选择'}">
{{xmlb}} {{xmjd}}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-select v-if="isDisabled==false" v-model="xmlb" class="select-multiple" placeholder="请选择" <el-select v-if="isDisabled == false" v-model="xmjd" class="select-multiple" placeholder="请选择"
@change="editXMSL({projectCategory:xmlb})"> @change="editXMSL({projectStage:xmjd})">
<el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option> <el-option v-for="(item,index) in projectStage" :key="item.dictCode" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select> </el-select>
</div> </div>
</span> </div>
</div> <div class="det-con">
<div class="det-con con"> <span>项目类别:</span>
<span>投资估算(万元):</span> <span>
<div class="inputxt i" :class="{'nomar':nowedit != 3}" :key="keys2" id="inputxt"> <div class="select-popper">
<div class="flex" v-if="nowedit == 3 && isDisabled == false"> <span :class="{'txt':xmlb == '请选择'}">
<el-input v-model="ProjectData.investmentAmount" placeholder="待添加" @input="number"></el-input> {{xmlb}}
<div class="flex"> <i class="el-icon-caret-bottom"></i>
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({investmentAmount:ProjectData.investmentAmount})">确定 </span>
<el-select v-if="isDisabled==false" v-model="xmlb" class="select-multiple" placeholder="请选择"
@change="editXMSL({projectCategory:xmlb})">
<el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
</span>
</div>
<div class="det-con con">
<span>投资估算(万元):</span>
<div class="inputxt i" :class="{'nomar':nowedit != 3}" :key="keys2" id="inputxt">
<div class="flex" v-if="nowedit == 3 && isDisabled == false">
<el-input v-model="ProjectData.investmentAmount" placeholder="待添加" @input="number"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({investmentAmount:ProjectData.investmentAmount})">确定
</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div> </div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div> </div>
<span :class="{txt:ProjectData.investmentAmoun==''}" v-else @click="nowedit = 3">{{ProjectData.investmentAmount||'待添加'}}</span>
</div> </div>
<span :class="{txt:ProjectData.investmentAmoun==''}" v-else @click="nowedit = 3">{{ProjectData.investmentAmount||'待添加'}}</span>
</div> </div>
</div> <div class="det-con">
<div class="det-con"> <span>建设地点:</span>
<span>建设地点:</span>
<div class="select-popper"> <div class="select-popper">
<span> <span>
{{addresstxt}} {{addresstxt}}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-cascader separator="-" :disabled="isDisabled" class="cascader-region select-location" v-model="ProjectData.address" <el-cascader separator="-" :disabled="isDisabled" class="cascader-region select-location" v-model="ProjectData.address"
ref="myCascader" :props="props" :options="addressList" @change="handleChange"></el-cascader> ref="myCascader" :props="props" :options="addressList" @change="handleChange"></el-cascader>
</div>
</div>
<div class="det-con">
<span>商务团队:</span>
<span>{{ProjectData.team}}</span>
</div> </div>
</div> </div>
<div class="det-con"> <!-- <div class="schedule">
<span>商务团队:</span>
<span>{{ProjectData.team}}</span>
</div>
</div>
<!-- <div class="schedule">
<div class="child" v-for="(item,index) in projectStage" @click="choose(item.dictValue)" :class="{'on':item.dictValue == thisindex}"> <div class="child" v-for="(item,index) in projectStage" @click="choose(item.dictValue)" :class="{'on':item.dictValue == thisindex}">
<div class="left"></div> <div class="left"></div>
<span>{{item.dictLabel}}</span> <span>{{item.dictLabel}}</span>
...@@ -104,30 +105,33 @@ ...@@ -104,30 +105,33 @@
</div> </div>
</div> --> </div> -->
</div> </div>
</el-card> </el-card>
<el-card class="box-card noborder top12" style="margin-bottom: 12px"> <el-card class="box-card noborder top12 project-detail-tablist" style="margin-bottom: 12px">
<div class="tabslist"> <div class="tabslist">
<div class="tab" v-for="(item,index) in tabslist" :class="{'on':thistag == item.tag}" @click="getCom(item.tag)"> <div class="tab" v-for="(item,index) in tabslist" :class="{'on':thistag == item.tag}" @click="getCom(item.tag)">
<span>{{item.name}}</span> <span>{{item.name}}</span>
</div>
</div> </div>
</div> </el-card>
</el-card> <!--项目速览-->
<!--项目速览--> <xmsl v-if="thistag == 'xmsl'" :key="keys" @Refreshs="getsl" :detailId="detailId"></xmsl>
<xmsl v-if="thistag == 'xmsl'" :key="keys" @Refreshs="getsl" :detailId="detailId"></xmsl> <!--建设内容-->
<!--建设内容--> <jsnr v-if="thistag == 'jsnr'" :key="keys1" :isDisabled='isDisabled' @Refrehmoney="getXMSL" :detailId="detailId"></jsnr>
<jsnr v-if="thistag == 'jsnr'" :key="keys1" :isDisabled='isDisabled' @Refrehmoney="getXMSL" :detailId="detailId"></jsnr> <!--联系人-->
<!--联系人--> <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>
<gjjl v-if="thistag == 'gjjl'" :isDisabled='isDisabled' types="gjjl" :detailId="detailId"></gjjl> <!--跟进记录-->
<!--工作待办--> <gjjl v-if="thistag == 'gjjl'" :isDisabled='isDisabled' types="gjjl" :detailId="detailId"></gjjl>
<gzdb v-if="thistag == 'gzdb'" :isDisabled='isDisabled' :detailId="detailId"></gzdb> <!--工作待办-->
<!--资料文档--> <gzdb v-if="thistag == 'gzdb'" :isDisabled='isDisabled' :detailId="detailId"></gzdb>
<zlwd v-if="thistag == 'zlwd'" :isDisabled='isDisabled' :detailId="detailId"></zlwd> <!--资料文档-->
<!--相关企业--> <zlwd v-if="thistag == 'zlwd'" :isDisabled='isDisabled' :detailId="detailId"></zlwd>
<xgqy v-if="thistag == 'xgqy'" :isDisabled='isDisabled' :detailId="detailId"></xgqy> <!--相关企业-->
<xgqy v-if="thistag == 'xgqy'" :isDisabled='isDisabled' :detailId="detailId"></xgqy>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -143,11 +147,12 @@ import gjjl from './component/gjjl.vue'; ...@@ -143,11 +147,12 @@ import gjjl from './component/gjjl.vue';
import gzdb from './component/gzdb.vue'; import gzdb from './component/gzdb.vue';
import zlwd from './component/zlwd.vue'; import zlwd from './component/zlwd.vue';
import xgqy from './component/xgqy.vue'; import xgqy from './component/xgqy.vue';
import BidOpeningRecord from "./component/BidOpeningRecord.vue";
import prvinceTree from '@/assets/json/provinceTree'; import prvinceTree from '@/assets/json/provinceTree';
import { getXMSL, editXMNR } from '@/api/project/project'; import { getXMSL, editXMNR } from '@/api/project/project';
export default { export default {
name: 'detail', name: 'detail',
components: { xmsl, jsnr, lxr, gjjl, gzdb, zlwd, xgqy }, components: { xmsl, jsnr, lxr, gjjl, gzdb, zlwd, xgqy, BidOpeningRecord },
props: { props: {
detailId: { //从企业详情跳转过来ID detailId: { //从企业详情跳转过来ID
type: Number, type: Number,
...@@ -162,6 +167,7 @@ export default { ...@@ -162,6 +167,7 @@ export default {
{ tag: 'xmsl', name: '项目速览' }, { tag: 'xmsl', name: '项目速览' },
{ tag: 'jsnr', name: '建设内容' }, { tag: 'jsnr', name: '建设内容' },
{ tag: 'lxr', name: '联系人' }, { tag: 'lxr', name: '联系人' },
{ tag: 'bidOpeningRecord', name: '开标记录' },
{ tag: 'gjjl', name: '跟进记录' }, { tag: 'gjjl', name: '跟进记录' },
{ tag: 'gzdb', name: '工作待办' }, { tag: 'gzdb', name: '工作待办' },
{ tag: 'zlwd', name: '资料文档' }, { tag: 'zlwd', name: '资料文档' },
...@@ -410,6 +416,34 @@ export default { ...@@ -410,6 +416,34 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.project-detail-list {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
overflow: auto;
.project-detail-list-inner {
width: 100%;
height: 100%;
.miantitle {
margin: 0px;
padding: 12px 24px;
}
.app-container {
padding-top: 0px;
}
}
.project-detail-tablist {
position: sticky;
top: 0px;
z-index: 10;
}
}
.select-popper { .select-popper {
top: 0; top: 0;
} }
......
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