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
Expand all
Show 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 @@
"url"
:
"https://gitee.com/y_project/RuoYi-Vue.git"
},
"dependencies"
:
{
"@cell-x/el-table-sticky"
:
"^1.0.2"
,
"@riophae/vue-treeselect"
:
"0.4.0"
,
"axios"
:
"0.24.0"
,
"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
)
{
return
request
({
url
:
'/business/info/add'
,
method
:
'POST'
,
data
:
param
})
})
;
}
//商机列表
export
function
getProjectlist
(
param
)
{
...
...
@@ -13,52 +13,52 @@ export function getProjectlist(param) {
url
:
'/business/info/list'
,
method
:
'GET'
,
params
:
param
})
})
;
}
//删除项目
export
function
delProject
(
param
)
{
return
request
({
url
:
'/business/info/remove/'
+
param
,
url
:
'/business/info/remove/'
+
param
,
method
:
'DELETE'
,
})
})
;
}
//建设内容
export
function
getJSNR
(
param
)
{
return
request
({
url
:
'/business/info/construction/'
+
param
,
url
:
'/business/info/construction/'
+
param
,
method
:
'GET'
,
})
})
;
}
//项目速览
export
function
getXMSL
(
param
)
{
return
request
({
url
:
'/business/info/browse/'
+
param
,
url
:
'/business/info/browse/'
+
param
,
method
:
'GET'
,
})
})
;
}
//项目内容修改
export
function
editXMNR
(
param
)
{
return
request
({
url
:
'/business/info/edit'
,
method
:
'POST'
,
data
:
param
})
data
:
param
})
;
}
//项目标签新增
export
function
addLabel
(
param
)
{
return
request
({
url
:
'/business/label/add'
,
method
:
'POST'
,
data
:
param
})
data
:
param
})
;
}
//项目标签删除
export
function
removeLabel
(
param
)
{
return
request
({
url
:
'/business/label/remove'
,
method
:
'POST'
,
data
:
param
})
data
:
param
})
;
}
...
...
@@ -68,8 +68,8 @@ export function getLXR(param) {
// url: '/business/contacts/list',
url
:
'/contact/info/list'
,
method
:
'GET'
,
params
:
param
})
params
:
param
})
;
}
//修改项目联系人
export
function
editLXR
(
param
)
{
...
...
@@ -77,8 +77,8 @@ export function editLXR(param) {
// url: '/business/contacts/edit',
url
:
'/contact/info'
,
method
:
'PUT'
,
data
:
param
})
data
:
param
})
;
}
//新增项目联系人
...
...
@@ -87,16 +87,16 @@ export function addLXR(param) {
// url: '/business/contacts/add',
url
:
'/contact/info'
,
method
:
'POST'
,
data
:
param
})
data
:
param
})
;
}
//删除项目联系人
export
function
delLXR
(
param
)
{
return
request
({
url
:
'/contact/info/'
+
param
,
url
:
'/contact/info/'
+
param
,
method
:
'DELETE'
,
})
})
;
}
//跟进记录
...
...
@@ -104,8 +104,8 @@ export function getGJJL(param) {
return
request
({
url
:
'/business/record/list'
,
method
:
'get'
,
params
:
param
})
params
:
param
})
;
}
//新增跟进记录
...
...
@@ -113,15 +113,15 @@ export function addGJJL(param) {
return
request
({
url
:
'/business/record/add'
,
method
:
'POST'
,
data
:
param
})
data
:
param
})
;
}
//删除跟进记录
export
function
delGJJL
(
param
)
{
return
request
({
url
:
'/business/record/remove/'
+
param
,
url
:
'/business/record/remove/'
+
param
,
method
:
'DELETE'
,
})
})
;
}
...
...
@@ -130,8 +130,8 @@ export function getGZDB(param) {
return
request
({
url
:
'/business/backlog/list'
,
method
:
'GET'
,
params
:
param
})
params
:
param
})
;
}
//添加工作待办
...
...
@@ -139,8 +139,8 @@ export function addGZDB(param) {
return
request
({
url
:
'/business/backlog/add'
,
method
:
'post'
,
data
:
param
})
data
:
param
})
;
}
//修改工作待办
...
...
@@ -148,16 +148,16 @@ export function editGZDB(param) {
return
request
({
url
:
'/business/backlog/edit'
,
method
:
'post'
,
data
:
param
})
data
:
param
})
;
}
//查询相关企业
export
function
getXGQY
(
param
)
{
return
request
({
url
:
'/business/company/list'
,
method
:
'GET'
,
params
:
param
})
params
:
param
})
;
}
//新增相关企业
...
...
@@ -165,8 +165,8 @@ export function addXGQY(param) {
return
request
({
url
:
'/business/company/add'
,
method
:
'POST'
,
data
:
param
})
data
:
param
})
;
}
//编辑相关企业
...
...
@@ -174,24 +174,24 @@ export function saveXGQY(param) {
return
request
({
url
:
'/business/company/edit'
,
method
:
'POST'
,
data
:
param
})
data
:
param
})
;
}
//删除相关企业
export
function
delXGQY
(
param
)
{
return
request
({
url
:
'/business/company/remove/'
+
param
,
url
:
'/business/company/remove/'
+
param
,
method
:
'DELETE'
,
})
})
;
}
//查询资料文档
export
function
getZLWD
(
param
)
{
return
request
({
url
:
'/business/file/list'
,
method
:
'GET'
,
params
:
param
})
params
:
param
})
;
}
//删除资料文档
...
...
@@ -199,16 +199,16 @@ export function delZLWD(param) {
return
request
({
url
:
'/business/file/remove'
,
method
:
'POST'
,
data
:
param
})
data
:
param
})
;
}
//查询关联项目
export
function
relateProject
(
param
)
{
return
request
({
url
:
'/business/record/relate/project/'
+
param
,
url
:
'/business/record/relate/project/'
+
param
,
method
:
'get'
,
})
})
;
}
//查询跟进动态
...
...
@@ -216,8 +216,8 @@ export function allRecord(param) {
return
request
({
url
:
'/business/record/all/list'
,
method
:
'get'
,
params
:
param
,
})
params
:
param
,
})
;
}
//项目状态统计
...
...
@@ -225,46 +225,92 @@ export function getStatistics(param) {
return
request
({
url
:
'/business/overview/status/statistics'
,
method
:
'get'
,
params
:
param
,
})
params
:
param
,
})
;
}
//储备项目统计
export
function
getCount
(
param
)
{
return
request
({
url
:
'/business/overview/category/analyze/'
+
param
,
url
:
'/business/overview/category/analyze/'
+
param
,
method
:
'get'
,
params
:
param
,
})
params
:
param
,
})
;
}
//储备项目资金
export
function
getAmount
(
param
)
{
return
request
({
url
:
'/business/overview/amount/analyze'
,
method
:
'get'
,
params
:
param
,
})
params
:
param
,
})
;
}
//跟进动态
export
function
getAllRecord
(
param
)
{
return
request
({
url
:
'/business/record/all/list'
,
method
:
'get'
,
params
:
param
,
})
params
:
param
,
})
;
}
//公招项目地区统计
export
function
countGroupByProvince
(
param
)
{
return
request
({
url
:
'/business/overview/countGroupByProvince'
,
method
:
'post'
,
data
:
param
})
data
:
param
})
;
}
//公招项目投资金额统计
export
function
rangByMoney
(
param
)
{
return
request
({
url
:
'/business/overview/rangByMoney'
,
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 {
}
.app-main
{
position
:
relative
;
background-color
:
#f5f5f5
;
>
div
{
width
:
calc
(
100%
-
48px
);
}
//
>div{
//
width: calc(100% - 48px);
//
}
}
.app-container
{
margin
:
16px
24px
;
padding
:
16px
24px
;
background-color
:
#f5f5f5
;
box-sizing
:
border-box
;
width
:
100%
;
.el-input__inner
{
border-color
:
#d9d9d9
;
color
:
#232323
;
...
...
dsk-operate-ui/src/assets/styles/project.scss
View file @
a85e3b7e
This diff is collapsed.
Click to expand it.
dsk-operate-ui/src/assets/styles/sidebar.scss
View file @
a85e3b7e
#app
{
.main-container
{
height
:
100%
;
transition
:
margin-left
.28s
;
transition
:
margin-left
0
.28s
;
margin-left
:
$base-sidebar-width
;
width
:
calc
(
100%
-
$base-sidebar-width
);
position
:
relative
;
background
:
#
F5F5F
5
;
background
:
#
f5f5f
5
;
}
.sidebarHide
{
margin-left
:
0
!
important
;
margin-left
:
0
!
important
;
}
.sidebar-container
{
-webkit-transition
:
width
.28s
;
-webkit-transition
:
width
0
.28s
;
transition
:
width
0
.28s
;
width
:
$base-sidebar-width
!
important
;
background-color
:
$base-menu-background
;
...
...
@@ -28,25 +28,30 @@
// -webkit-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
;
top
:
180px
;
width
:
21px
;
height
:
62px
;
cursor
:
pointer
;
animation
:
left-right
.2s
;
animation
:
left-right
0
.2s
;
animation-fill-mode
:
forwards
;
z-index
:
1002
;
}
@keyframes
left-right
{
0
%
{
right
:
0
;}
100
%
{
right
:
-21px
;}
@keyframes
left-right
{
0
%
{
right
:
0
;
}
100
%
{
right
:
-21px
;
}
}
// reset element-ui css
.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
{
...
...
@@ -59,11 +64,8 @@
.el-scrollbar
{
height
:
100%
;
}
&
.has-logo
{
.el-scrollbar
{
height
:
calc
(
100%
-
50px
);
...
...
@@ -83,7 +85,7 @@
.svg-icon
{
margin-right
:
6px
;
}
.el-submenu__icon-arrow
{
.el-submenu__icon-arrow
{
top
:
54%
;
right
:
5px
;
color
:
#d8d8d8
;
...
...
@@ -95,28 +97,29 @@
width
:
calc
(
100%
-
16px
)
!
important
;
margin
:
0
8px
;
}
.el-menu--inline
{
.el-menu--inline
{
margin
:
0
;
width
:
100%
!
important
;
width
:
100%
!
important
;
}
.el-menu--inline
.nest-menu
.el-menu-item
{
width
:
100%
!
important
;
.el-menu--inline
.nest-menu
.el-menu-item
{
width
:
100%
!
important
;
min-width
:
128px
;
font-size
:
12px
;
color
:
#fff
!
important
;
padding-left
:
23px
!
important
;
color
:
#fff
!
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
;
}
.el-menu-item
,
.el-submenu__title
{
.el-menu-item
,
.el-submenu__title
{
height
:
40px
;
line-height
:
40px
;
border
:
1px
solid
#141b2f
;
color
:
#fff
;
margin-bottom
:
6px
;
padding
:
0
6px
!
important
;
padding
:
0
6px
!
important
;
overflow
:
hidden
!
important
;
text-overflow
:
ellipsis
!
important
;
white-space
:
nowrap
!
important
;
...
...
@@ -125,44 +128,43 @@
// menu hover
.el-menu-item.is-active
{
// 点击菜单的颜色
background-color
:
#1e2c4c
!
important
;
color
:
#fff
!
important
;
background-color
:
#1e2c4c
!
important
;
color
:
#fff
!
important
;
border-radius
:
10px
;
border
:
1px
solid
#2b3f69
;
&
:hover
{
background-color
:
#1e2c4c
!
important
;
background-color
:
#1e2c4c
!
important
;
border-radius
:
10px
;
color
:
#fff
!
important
;
color
:
#fff
!
important
;
border
:
1px
solid
#2b3f69
;
}
&
:before
{
background
:
#fff
!
important
;
&
:before
{
background
:
#fff
!
important
;
}
}
// menu hover
.submenu-title-noDropdown
,
.el-submenu__title
{
color
:
#fff
!
important
;
.submenu-title-noDropdown
,
.el-submenu__title
{
color
:
#fff
!
important
;
&
:hover
{
background-color
:
#1e2c4c
!
important
;
color
:
#fff
!
important
;
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
;
.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
,
.sidebar-container
.nest-menu
.el-submenu
>
.el-submenu__title
:before
{
position
:
absolute
;
width
:
2px
;
height
:
2px
;
...
...
@@ -172,7 +174,8 @@
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
,
.sidebar-container
.nest-menu
.el-submenu
>
.el-submenu__title
:hover:before
{
position
:
absolute
;
width
:
2px
;
height
:
2px
;
...
...
@@ -190,11 +193,12 @@
.main-container
{
margin-left
:
48px
;
width
:
calc
(
100%
-
48px
);
}
.submenu-title-noDropdown
{
margin-bottom
:
6px
;
padding
:
0
6px
!
important
;
padding
:
0
6px
!
important
;
text-align
:
center
;
cursor
:
pointer
;
position
:
relative
;
...
...
@@ -203,7 +207,7 @@
padding
:
0
!
important
;
.svg-icon
{
margin
:
0px
!
important
;
margin
:
0px
!
important
;
width
:
1em
;
height
:
1em
;
font-size
:
16px
;
...
...
@@ -211,7 +215,6 @@
vertical-align
:
-0
.15em
;
fill
:
currentColor
;
overflow
:
hidden
;
}
}
}
...
...
@@ -219,14 +222,14 @@
.el-submenu
{
overflow
:
hidden
;
&
>
.el-submenu__title
{
&
>
.el-submenu__title
{
margin-bottom
:
6px
;
padding
:
0
6px
!
important
;
padding
:
0
6px
!
important
;
text-align
:
center
;
cursor
:
pointer
;
.svg-icon
{
margin
:
0px
!
important
;
margin
:
0px
!
important
;
width
:
1em
;
height
:
1em
;
font-size
:
16px
;
...
...
@@ -236,14 +239,13 @@
overflow
:
hidden
;
margin-left
:
0px
;
}
}
}
.el-menu--collapse
{
.el-submenu
{
&
>
.el-submenu__title
{
&
>
span
{
&
>
.el-submenu__title
{
&
>
span
{
height
:
0
;
width
:
0
;
overflow
:
hidden
;
...
...
@@ -266,7 +268,7 @@
}
.sidebar-container
{
transition
:
transform
.28s
;
transition
:
transform
0
.28s
;
width
:
$base-sidebar-width
!
important
;
}
...
...
@@ -280,7 +282,6 @@
}
.withoutAnimation
{
.main-container
,
.sidebar-container
{
transition
:
none
;
...
...
@@ -290,13 +291,13 @@
// when menu collapsed
.el-menu--vertical
{
&
>
.el-menu
{
&
>
.el-menu
{
.svg-icon
{
margin-right
:
16px
;
}
}
.nest-menu
.el-submenu
>
.el-submenu__title
,
.nest-menu
.el-submenu
>
.el-submenu__title
,
.el-menu-item
{
&
:hover
{
// you can use $subMenuHover
...
...
@@ -305,7 +306,7 @@
}
// the scroll bar appears when the subMenu is too long
>
.el-menu--popup
{
>
.el-menu--popup
{
max-height
:
100vh
;
overflow-y
:
auto
;
...
...
@@ -323,24 +324,24 @@
}
}
}
.side-popover
{
.side-popover
{
min-width
:
80px
;
font-size
:
12px
;
color
:
#232323
;
padding
:
0
8px
32px
8px
;
margin-left
:
16px
!
important
;
.side-title
{
.side-title
{
font-size
:
16px
;
height
:
54px
;
line-height
:
58px
;
padding
:
0
6px
;
border-bottom
:
1px
solid
#
F0F0F
0
;
border-bottom
:
1px
solid
#
f0f0f
0
;
}
.side-list
{
li
{
.side-list
{
li
{
padding
:
24px
6px
0
6px
;
&
:hover
{
color
:
#3
D3D3D
;
&
:hover
{
color
:
#3
d3d3d
;
}
}
}
...
...
@@ -348,15 +349,15 @@
.side-retract
{
height
:
40px
;
line-height
:
48px
;
border
:
1px
solid
#141
B2F
;
border
:
1px
solid
#141
b2f
;
margin-bottom
:
6px
;
padding
:
0
6px
!
important
;
text-align
:
center
;
cursor
:
pointer
;
&
:hover
{
background-color
:
#1
E2C4C
!
important
;
background-color
:
#1
e2c4c
!
important
;
border-radius
:
10px
;
border
:
1px
solid
#2
B3F
69
;
border
:
1px
solid
#2
b3f
69
;
}
.svg-icon
{
margin-right
:
0
!
important
;
...
...
@@ -370,10 +371,10 @@
margin-left
:
0px
;
}
}
.side-one-popover
{
.side-one-popover
{
min-width
:
52px
;
padding-bottom
:
0
;
.side-title
{
.side-title
{
font-size
:
12px
;
height
:
24px
;
line-height
:
24px
;
...
...
@@ -381,23 +382,23 @@
}
}
.side-logo-popover
{
.side-logo-popover
{
width
:
120px
;
padding-top
:
16px
;
padding-bottom
:
0
;
margin-left
:
16px
!
important
;
.sidebar-logo
{
.sidebar-logo
{
width
:
24px
;
height
:
24px
;
background
:
#
F5F5F
5
;
background
:
#
f5f5f
5
;
margin
:
0
auto
;
text-align
:
center
;
img
{
img
{
width
:
16px
;
height
:
23px
;
}
}
.side-title
{
.side-title
{
text-align
:
center
;
font-size
:
12px
;
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
import
plugins
from
'./plugins'
;
// plugins
import
{
download
}
from
'@/utils/request'
;
import
horizontalScroll
from
'el-table-horizontal-scroll'
;
import
elTableSticky
from
'@cell-x/el-table-sticky'
;
import
'./assets/icons'
;
// icon
import
'./permission'
;
// permission control
...
...
@@ -61,6 +62,7 @@ Vue.component('ImageUpload', ImageUpload);
Vue
.
component
(
'ImagePreview'
,
ImagePreview
);
Vue
.
use
(
horizontalScroll
);
Vue
.
use
(
elTableSticky
);
Vue
.
use
(
directive
);
Vue
.
use
(
plugins
);
Vue
.
use
(
VueMeta
);
...
...
dsk-operate-ui/src/views/detail/party-a/component/HeadFormNew.vue
View file @
a85e3b7e
...
...
@@ -21,18 +21,26 @@
<!-- 输入框 -->
<
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=
""
>
<span>
搜索
</span>
</div>
<!-- 输入框展开后样式 -->
<transition
@
enter=
"onEnter"
appear
mode=
"out-in"
>
<div
class=
"cooperate-name enterprise-search-container"
:id=
"'focus'+i"
v-if=
"showSearchBox"
>
<span
v-show=
"!form.hover && !form.value"
>
搜索
</span>
<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)"
@
input=
"value => searchInput(value,form)"
v-show=
"form.hover || form.value"
>
<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"
:placeholder="form.placeholder" :style="form.width?'width:'+form.width+'px':'width:180px'"></el-input>
<span @click="changeSelect">搜索</span>
</div> -->
</div>
</transition>
</template>
<!-- 多选 -->
<
template
v-if=
"form.type==4"
>
...
...
@@ -135,6 +143,28 @@ export default {
CustomMoneySelect
},
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
()
{
try
{
await
this
.
$nextTick
();
...
...
@@ -284,7 +314,7 @@ export default {
::v-deep
.el-popper
[
x-placement
^=
"bottom"
]
{
margin-top
:
5px
;
}
.headerFixed
{
.headerFixed
{
position
:
sticky
;
top
:
0
;
z-index
:
10
;
...
...
@@ -401,10 +431,19 @@ export default {
}
}
.normal-search-container
{
::v-deep
.normal-search-container
{
display
:
flex
;
align-items
:
center
;
cursor
:
pointer
;
&
.is-hover-search
{
width
:
238px
;
background
:
#f4f6f9
;
border-radius
:
4px
4px
4px
4px
;
&
>
img
{
cursor
:
unset
;
}
}
&
:hover
{
&
>
span
{
...
...
@@ -416,6 +455,7 @@ export default {
width
:
16px
;
height
:
16px
;
margin-left
:
12px
;
cursor
:
pointer
;
}
&
>
span
{
...
...
@@ -424,6 +464,42 @@ export default {
margin-left
:
8px
;
line-height
:
22px
;
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 @@
<skeleton
style=
"margin-left:16px;"
v-if=
"isSkeleton"
></skeleton>
<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'"
class=
"table-item1 fixed-table"
border
highlight-current-row
: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
:data=
"tableData"
:header-cell-style=
"{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}"
v-sticky-header
.
always=
"{offsetTop : '56px',offsetBottom : '10px'}"
class=
"table-item1 fixed-table"
border
highlight-current-row
: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"
>
<
template
slot-scope=
"scope"
>
...
...
@@ -180,7 +181,8 @@
<
el
-
table
-
column
label
=
"历史发包总金额"
min
-
width
=
"120"
:
resizable
=
"false"
:
sortable
=
"'custom'"
prop
=
"inviteTenderSumAmount"
>
<
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
>
<
/template
>
<
/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
This diff is collapsed.
Click to expand it.
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
>
<div
id=
"jsnr"
>
<div
id=
"jsnr"
class=
"project-detail-list"
>
<div
class=
"project-detail-list-inner"
>
<div
class=
"miantitle"
>
<template
v-if=
"!detailId"
>
<span>
项目管理
</span>
...
...
@@ -107,7 +108,7 @@
</div>
</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=
"tab"
v-for=
"(item,index) in tabslist"
:class=
"{'on':thistag == item.tag}"
@
click=
"getCom(item.tag)"
>
<span>
{{item.name}}
</span>
...
...
@@ -120,6 +121,8 @@
<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>
<!-- 开标记录 -->
<bid-opening-record
v-if=
"thistag == 'bidOpeningRecord'"
></bid-opening-record>
<!--跟进记录-->
<gjjl
v-if=
"thistag == 'gjjl'"
:isDisabled=
'isDisabled'
types=
"gjjl"
:detailId=
"detailId"
></gjjl>
<!--工作待办-->
...
...
@@ -130,6 +133,7 @@
<xgqy
v-if=
"thistag == 'xgqy'"
:isDisabled=
'isDisabled'
:detailId=
"detailId"
></xgqy>
</div>
</div>
</div>
</template>
<
script
>
...
...
@@ -143,11 +147,12 @@ import gjjl from './component/gjjl.vue';
import
gzdb
from
'./component/gzdb.vue'
;
import
zlwd
from
'./component/zlwd.vue'
;
import
xgqy
from
'./component/xgqy.vue'
;
import
BidOpeningRecord
from
"./component/BidOpeningRecord.vue"
;
import
prvinceTree
from
'@/assets/json/provinceTree'
;
import
{
getXMSL
,
editXMNR
}
from
'@/api/project/project'
;
export
default
{
name
:
'detail'
,
components
:
{
xmsl
,
jsnr
,
lxr
,
gjjl
,
gzdb
,
zlwd
,
xgqy
},
components
:
{
xmsl
,
jsnr
,
lxr
,
gjjl
,
gzdb
,
zlwd
,
xgqy
,
BidOpeningRecord
},
props
:
{
detailId
:
{
//从企业详情跳转过来ID
type
:
Number
,
...
...
@@ -162,6 +167,7 @@ export default {
{
tag
:
'xmsl'
,
name
:
'项目速览'
},
{
tag
:
'jsnr'
,
name
:
'建设内容'
},
{
tag
:
'lxr'
,
name
:
'联系人'
},
{
tag
:
'bidOpeningRecord'
,
name
:
'开标记录'
},
{
tag
:
'gjjl'
,
name
:
'跟进记录'
},
{
tag
:
'gzdb'
,
name
:
'工作待办'
},
{
tag
:
'zlwd'
,
name
:
'资料文档'
},
...
...
@@ -410,6 +416,34 @@ export default {
</
script
>
<
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
{
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