Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsk-operate-sys-cscec
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fulixin
dsk-operate-sys-cscec
Commits
a85e3b7e
Commit
a85e3b7e
authored
Oct 26, 2023
by
danfuman
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'V20230915' of
http://192.168.60.201/root/dsk-operate-sys
into V20230915
parents
d49d0ca1
d96a96bf
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
2048 additions
and
702 deletions
+2048
-702
package.json
dsk-operate-ui/package.json
+1
-0
bidOpeningRecordTemplate.xlsx
dsk-operate-ui/public/file/bidOpeningRecordTemplate.xlsx
+0
-0
project.js
dsk-operate-ui/src/api/project/project.js
+110
-64
search-input-clear-icon.svg
.../src/assets/images/enterprise/search-input-clear-icon.svg
+1
-0
project-bid-opening-record-add.svg
.../assets/images/project/project-bid-opening-record-add.svg
+1
-0
project-bid-opening-record-import.svg
...sets/images/project/project-bid-opening-record-import.svg
+1
-0
project-bid-opening-record-remove.svg
...sets/images/project/project-bid-opening-record-remove.svg
+1
-0
index.scss
dsk-operate-ui/src/assets/styles/index.scss
+6
-4
project.scss
dsk-operate-ui/src/assets/styles/project.scss
+389
-360
sidebar.scss
dsk-operate-ui/src/assets/styles/sidebar.scss
+155
-154
index.vue
dsk-operate-ui/src/components/NoData/index.vue
+74
-0
index.vue
dsk-operate-ui/src/components/TableListCom/index.vue
+244
-0
main.js
dsk-operate-ui/src/main.js
+2
-0
HeadFormNew.vue
...ate-ui/src/views/detail/party-a/component/HeadFormNew.vue
+87
-11
index.vue
.../views/enterpriseData/components/searchTheOwner/index.vue
+6
-4
AddBidOpeningRecord.vue
...ews/project/projectList/component/AddBidOpeningRecord.vue
+279
-0
BidOpeningRecord.vue
.../views/project/projectList/component/BidOpeningRecord.vue
+405
-0
batchImportReset.vue
.../views/project/projectList/component/batchImportReset.vue
+147
-0
detail.vue
dsk-operate-ui/src/views/project/projectList/detail.vue
+139
-105
No files found.
dsk-operate-ui/package.json
View file @
a85e3b7e
...
@@ -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"
,
...
...
dsk-operate-ui/public/file/bidOpeningRecordTemplate.xlsx
0 → 100644
View file @
a85e3b7e
File added
dsk-operate-ui/src/api/project/project.js
View file @
a85e3b7e
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
});
dsk-operate-ui/src/assets/images/enterprise/search-input-clear-icon.svg
0 → 100644
View file @
a85e3b7e
<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
dsk-operate-ui/src/assets/images/project/project-bid-opening-record-add.svg
0 → 100644
View file @
a85e3b7e
<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
dsk-operate-ui/src/assets/images/project/project-bid-opening-record-import.svg
0 → 100644
View file @
a85e3b7e
<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
dsk-operate-ui/src/assets/images/project/project-bid-opening-record-remove.svg
0 → 100644
View file @
a85e3b7e
<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
dsk-operate-ui/src/assets/styles/index.scss
View file @
a85e3b7e
...
@@ -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
;
...
...
dsk-operate-ui/src/assets/styles/project.scss
View file @
a85e3b7e
.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
:
#
F3F4F
5
;
background
:
#
f3f4f
5
;
}
}
.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
:
#
F3F4F
5
;
background
:
#
f3f4f
5
;
border-radius
:
2px
;
border-radius
:
2px
;
border
:
1px
solid
#
D9D9D
9
;
border
:
1px
solid
#
d9d9d
9
;
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
:
#
F3F4F
5
;
background
:
#
f3f4f
5
;
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
:
#0081
FF
;
color
:
#0081
ff
;
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
:
#
DCEAF
3
;
background
:
#
dceaf
3
;
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
#
D9D9D
9
;
border
:
1px
solid
#
d9d9d
9
;
}
}
}
}
}
}
.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
:
#0081
FF
;
border-bottom-color
:
#0081
ff
;
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
:
#
E6EAF
1
;
border-color
:
#
e6eaf
1
;
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
:
#0081
FF
;
background
:
#0081
ff
;
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
#
E1E1E
1
;
border-bottom
:
1px
solid
#
e1e1e
1
;
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
:
#0081
FF
;
border-color
:
#0081
ff
;
}
}
}
}
.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
#
DCDFE
6
;
border
:
1px
solid
#
dcdfe
6
;
float
:
left
;
float
:
left
;
margin
:
3px
8px
0
0
;
;
margin
:
3px
8px
0
0
;
}
}
&
.on
{
&
.on
{
color
:
#0081
FF
;
color
:
#0081
ff
;
>
i
{
>
i
{
border-color
:
#0081
FF
;
border-color
:
#0081
ff
;
&
:after
{
&
:after
{
content
:
" "
;
content
:
" "
;
width
:
8px
;
width
:
8px
;
height
:
8px
;
height
:
8px
;
border-radius
:
50%
;
border-radius
:
50%
;
background
:
#0081
FF
;
background
:
#0081
ff
;
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
:
#
F3F4F
5
;
background
:
#
f3f4f
5
;
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
#68
AEFF
;
border
:
1px
solid
#68
aeff
;
&
.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
:
#0081
FF
;
border-color
:
#0081
ff
;
}
}
}
}
.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
:
#0081
FF
;
color
:
#0081
ff
;
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
#68
AEFF
;
border
:
1px
solid
#68
aeff
;
}
}
}
}
}
}
.tasktitle
{
.tasktitle
{
color
:
#3
D3D3D
;
color
:
#3
d3d3d
;
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
:
#0081
FF
;
background
:
#0081
ff
;
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
:
#
D3F0E
8
;
background
:
#
d3f0e
8
;
.color_text
{
.color_text
{
color
:
#0
CBC6D
;
color
:
#0
cbc6d
;
}
}
}
}
.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
:
#
F4F6F
9
;
background
:
#
f4f6f
9
;
}
}
}
}
}
}
}
}
.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
:
#0081
FF
;
border-bottom-color
:
#0081
ff
;
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
:
#41
A1FD
;
color
:
#41
a1fd
;
}
}
&
.tip2
{
&
.tip2
{
background-color
:
#
F3F3FF
;
background-color
:
#
f3f3ff
;
color
:
#8491
E
8
;
color
:
#8491
e
8
;
}
}
&
.tip3
{
&
.tip3
{
background-color
:
#
DEF6F
0
;
background-color
:
#
def6f
0
;
color
:
#0
BAE8D
;
color
:
#0
bae8d
;
}
}
}
}
//批量导入
//批量导入
.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
:
10
24
;
.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
#0081
FF
;
border
:
1px
dashed
#0081
ff
;
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
:
#
D8D8D
8
;
background
:
#
d8d8d
8
;
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
:
#46
AF
41
;
color
:
#46
af
41
;
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
:
#0081
FF
;
color
:
#0081
ff
;
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
:
#46
AF
41
;
color
:
#46
af
41
;
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
:
#
F3F4F
5
;
background-color
:
#
f3f4f
5
;
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
#
F3F4F
5
;
border
:
4px
solid
#
f3f4f
5
;
border-radius
:
10px
;
border-radius
:
10px
;
}
}
&
:
:-
webkit-scrollbar-corner
{
&
:
:-
webkit-scrollbar-corner
{
background
:
#
F3F4F
5
;
background
:
#
f3f4f
5
;
/*border-left: 1px solid #E0EAF2;*/
/*border-left: 1px solid #E0EAF2;*/
}
}
}
}
::-webkit-scrollbar-track-piece
{
::-webkit-scrollbar-track-piece
{
//滚动条凹槽的颜色,还可以设置边框属性
//滚动条凹槽的颜色,还可以设置边框属性
background-color
:
#
F3F4F
5
;
background-color
:
#
f3f4f
5
;
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
:
#
F3F4F
5
;
background-color
:
#
f3f4f
5
;
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
#
F3F4F
5
;
border
:
4px
solid
#
f3f4f
5
;
&
: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
;
}
}
dsk-operate-ui/src/assets/styles/sidebar.scss
View file @
a85e3b7e
#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
:
#
F5F5F
5
;
background
:
#
f5f5f
5
;
}
}
.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
#
F0F0F
0
;
border-bottom
:
1px
solid
#
f0f0f
0
;
}
}
.side-list
{
.side-list
{
li
{
li
{
padding
:
24px
6px
0
6px
;
padding
:
24px
6px
0
6px
;
&
:hover
{
&
:hover
{
color
:
#3
D3D3D
;
color
:
#3
d3d3d
;
}
}
}
}
}
}
...
@@ -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
#141
B2F
;
border
:
1px
solid
#141
b2f
;
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
:
#1
E2C4C
!
important
;
background-color
:
#1
e2c4c
!
important
;
border-radius
:
10px
;
border-radius
:
10px
;
border
:
1px
solid
#2
B3F
69
;
border
:
1px
solid
#2
b3f
69
;
}
}
.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
:
#
F5F5F
5
;
background
:
#
f5f5f
5
;
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
;
...
...
dsk-operate-ui/src/components/NoData/index.vue
0 → 100644
View file @
a85e3b7e
<
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
>
dsk-operate-ui/src/components/TableListCom/index.vue
0 → 100644
View file @
a85e3b7e
<
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
>
dsk-operate-ui/src/main.js
View file @
a85e3b7e
...
@@ -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
);
...
...
dsk-operate-ui/src/views/detail/party-a/component/HeadFormNew.vue
View file @
a85e3b7e
...
@@ -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
;
}
}
}
}
}
}
}
}
...
...
dsk-operate-ui/src/views/enterpriseData/components/searchTheOwner/index.vue
View file @
a85e3b7e
...
@@ -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
>
...
...
dsk-operate-ui/src/views/project/projectList/component/AddBidOpeningRecord.vue
0 → 100644
View file @
a85e3b7e
<
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
>
dsk-operate-ui/src/views/project/projectList/component/BidOpeningRecord.vue
0 → 100644
View file @
a85e3b7e
<
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
>
dsk-operate-ui/src/views/project/projectList/component/batchImportReset.vue
0 → 100644
View file @
a85e3b7e
<
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
>
dsk-operate-ui/src/views/project/projectList/detail.vue
View file @
a85e3b7e
<
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':xm
lb
== '请选择'}"
>
<span
:class=
"{'txt':xm
jd
== '请选择'}"
>
{{xm
lb
}}
{{xm
jd
}}
<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({project
Category:xmlb
})"
>
@
change=
"editXMSL({project
Stage:xmjd
})"
>
<el-option
v-for=
"(item,index) in project
Category"
:key=
"index
"
:label=
"item.dictLabel"
:value=
"item.dictValue"
></el-option>
<el-option
v-for=
"(item,index) in project
Stage"
: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
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment