Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
data-collect
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wenyi.chen
data-collect
Commits
d203b03e
Commit
d203b03e
authored
Apr 06, 2024
by
cwy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
0406
parent
3f78e4f1
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
1020 additions
and
189 deletions
+1020
-189
src/api/excelFile/index.js
src/api/excelFile/index.js
+7
-0
src/api/system/index.js
src/api/system/index.js
+0
-35
src/stores/userInfo.js
src/stores/userInfo.js
+1
-0
src/utils/getHost.js
src/utils/getHost.js
+12
-0
src/views/auditManagement/admin/reviewed/index.vue
src/views/auditManagement/admin/reviewed/index.vue
+4
-4
src/views/auditManagement/admin/unaudited/index.vue
src/views/auditManagement/admin/unaudited/index.vue
+4
-4
src/views/balance/settlementStatement/index.vue
src/views/balance/settlementStatement/index.vue
+6
-6
src/views/claimTasks/user/list/index.vue
src/views/claimTasks/user/list/index.vue
+2
-2
src/views/dataScreening/list/details.vue
src/views/dataScreening/list/details.vue
+283
-0
src/views/dataScreening/list/index.vue
src/views/dataScreening/list/index.vue
+274
-0
src/views/dataScreening/list/ss.vue
src/views/dataScreening/list/ss.vue
+266
-0
src/views/norm/list/details.vue
src/views/norm/list/details.vue
+1
-1
src/views/norm/list/impor.vue
src/views/norm/list/impor.vue
+116
-128
src/views/norm/list/index.vue
src/views/norm/list/index.vue
+43
-8
vite.config.js
vite.config.js
+1
-1
No files found.
src/api/excelFile/index.js
View file @
d203b03e
...
...
@@ -21,6 +21,13 @@ export function excelFileApi() {
data
,
});
},
multipleExportFile
:
(
data
)
=>
{
return
request
({
url
:
'
/api/multipleExportFile
'
,
method
:
'
post
'
,
data
,
});
},
};
}
...
...
src/api/system/index.js
View file @
d203b03e
...
...
@@ -84,41 +84,6 @@ export function systemApi() {
data
});
},
bedList
:
(
params
)
=>
{
return
request
({
url
:
'
/bed/list
'
,
method
:
'
get
'
,
params
:
params
});
},
disableBed
:
(
data
)
=>
{
return
request
({
url
:
'
/bed/disable
'
,
method
:
'
post
'
,
data
});
},
enableBed
:
(
data
)
=>
{
return
request
({
url
:
'
/bed/enable
'
,
method
:
'
post
'
,
data
});
},
hideBed
:
(
data
)
=>
{
return
request
({
url
:
'
/bed/hidden
'
,
method
:
'
post
'
,
data
});
},
showBed
:
(
data
)
=>
{
return
request
({
url
:
'
/bed/display
'
,
method
:
'
post
'
,
data
});
},
};
}
...
...
src/stores/userInfo.js
View file @
d203b03e
...
...
@@ -46,6 +46,7 @@ export const useUserInfo = defineStore('userInfo', {
async
setVersion
()
{
const
versions
=
await
this
.
getVersionInfo
();
this
.
versions
=
versions
;
Session
.
set
(
'
resource_address
'
,
this
.
versions
.
resource_address
)
},
async
getVersionInfo
()
{
...
...
src/utils/getHost.js
View file @
d203b03e
import
{
Session
}
from
'
/@/utils/storage
'
;
export
function
getHost
()
{
if
(
process
.
env
.
NODE_ENV
===
'
development
'
)
{
return
'
/dev
'
...
...
@@ -11,4 +12,15 @@ export function getUploadUrl() {
}
else
{
return
'
/data-collect-api/api/upload/picture
'
}
}
export
function
getServerUrl
()
{
if
(
process
.
env
.
NODE_ENV
===
'
development
'
)
{
return
'
/dev/api
'
}
else
{
return
'
/data-collect-api/api
'
}
}
export
function
getServerPublic
()
{
return
Session
.
get
(
'
resource_address
'
);
}
\ No newline at end of file
src/views/auditManagement/admin/reviewed/index.vue
View file @
d203b03e
...
...
@@ -10,7 +10,7 @@
<el-option
v-for=
"(item, index) in state.taskList"
:key=
"index"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<el-select
v-model=
"state.apiListParam.norm_id"
placeholder=
"请选择
指标
"
size=
"default"
@
change=
"searchChange"
clearable
filterable
style=
"width:300px;margin-right: 20px;"
>
<el-select
v-model=
"state.apiListParam.norm_id"
placeholder=
"请选择
子任务
"
size=
"default"
@
change=
"searchChange"
clearable
filterable
style=
"width:300px;margin-right: 20px;"
>
<el-option
v-for=
"(item, index) in state.normList"
:key=
"index"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
...
...
@@ -25,12 +25,12 @@
ref=
"multipleTableRef"
>
<el-table-column
label=
"序号"
type=
"index"
width=
"100"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"userInfo.name"
label=
"领取用户"
show-overflow-tooltip
align=
"center"
>
</el-table-column>
<el-table-column
prop=
"taskInfo.name"
label=
"任务名称"
show-overflow-tooltip
align=
"center"
>
<template
#default
="
scope
"
>
<span
style=
"color: #409EFF;"
>
{{
scope
.
row
.
task
Info
.
name
}}
</span>
<span
style=
"color: #409EFF;"
>
{{
scope
.
row
.
user
Info
.
name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"taskInfo.name"
label=
"任务名称"
show-overflow-tooltip
align=
"center"
>
</el-table-column>
<el-table-column
prop=
"taskInfo.unit"
label=
"单位"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"norm_list_info.name"
label=
"指标名称"
show-overflow-tooltip
align=
"center"
>
</el-table-column>
...
...
src/views/auditManagement/admin/unaudited/index.vue
View file @
d203b03e
...
...
@@ -10,7 +10,7 @@
<el-option
v-for=
"(item, index) in state.taskList"
:key=
"index"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<el-select
v-model=
"state.apiListParam.norm_id"
placeholder=
"请选择
指标
"
size=
"default"
@
change=
"searchChange"
clearable
filterable
style=
"width:300px;margin-right: 20px;"
>
<el-select
v-model=
"state.apiListParam.norm_id"
placeholder=
"请选择
子任务
"
size=
"default"
@
change=
"searchChange"
clearable
filterable
style=
"width:300px;margin-right: 20px;"
>
<el-option
v-for=
"(item, index) in state.normList"
:key=
"index"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
...
...
@@ -25,12 +25,12 @@
ref=
"multipleTableRef"
>
<el-table-column
label=
"序号"
type=
"index"
width=
"100"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"userInfo.name"
label=
"领取用户"
show-overflow-tooltip
align=
"center"
>
</el-table-column>
<el-table-column
prop=
"taskInfo.name"
label=
"任务名称"
show-overflow-tooltip
align=
"center"
>
<template
#default
="
scope
"
>
<span
style=
"color: #409EFF;"
>
{{
scope
.
row
.
task
Info
.
name
}}
</span>
<span
style=
"color: #409EFF;"
>
{{
scope
.
row
.
user
Info
.
name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"taskInfo.name"
label=
"任务名称"
show-overflow-tooltip
align=
"center"
>
</el-table-column>
<el-table-column
prop=
"taskInfo.unit"
label=
"单位"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"norm_list_info.name"
label=
"指标名称"
show-overflow-tooltip
align=
"center"
>
</el-table-column>
...
...
src/views/balance/settlementStatement/index.vue
View file @
d203b03e
...
...
@@ -14,7 +14,7 @@
<el-option
v-for=
"(item, index) in state.userList"
:key=
"index"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<el-select
v-model=
"state.apiListParam.norm_id"
placeholder=
"请选择
指标
"
size=
"default"
@
change=
"searchChange"
clearable
filterable
style=
"width:300px;margin-right: 20px;"
>
<el-select
v-model=
"state.apiListParam.norm_id"
placeholder=
"请选择
子任务
"
size=
"default"
@
change=
"searchChange"
clearable
filterable
style=
"width:300px;margin-right: 20px;"
>
<el-option
v-for=
"(item, index) in state.normList"
:key=
"index"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
...
...
@@ -26,17 +26,17 @@
<div
class=
"page-main"
v-loading=
"state.tableData.loading"
ref=
"pageMain"
>
<el-card
shadow=
"hover"
style=
"height:100%;"
>
<el-button
size=
"default"
type=
"danger"
@
click=
"settlementIndicators"
style=
"margin-bottom: 10px;"
>
结算
</el-button>
<el-table
:data=
"state.tableData.data"
style=
"width: 100%"
:height=
"state.tableHeight"
<el-table
:data=
"state.tableData.data"
:row-key=
"(row) => row.id"
style=
"width: 100%"
:height=
"state.tableHeight"
ref=
"multipleTableRef"
@
selection-change=
"tableSelection"
>
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
type=
"selection"
width=
"55"
:reserve-selection=
"true"
/>
<el-table-column
label=
"序号"
type=
"index"
width=
"100"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"userInfo.name"
label=
"领取用户"
show-overflow-tooltip
align=
"center"
>
</el-table-column>
<el-table-column
prop=
"taskInfo.name"
label=
"任务名称"
show-overflow-tooltip
align=
"center"
>
<template
#default
="
scope
"
>
<span
style=
"color: #409EFF;"
>
{{
scope
.
row
.
task
Info
.
name
}}
</span>
<span
style=
"color: #409EFF;"
>
{{
scope
.
row
.
user
Info
.
name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"taskInfo.name"
label=
"任务名称"
show-overflow-tooltip
align=
"center"
>
</el-table-column>
<el-table-column
prop=
"taskInfo.unit"
label=
"单位"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"norm_list_info.name"
label=
"指标名称"
show-overflow-tooltip
align=
"center"
>
</el-table-column>
...
...
src/views/claimTasks/user/list/index.vue
View file @
d203b03e
...
...
@@ -25,9 +25,9 @@
<div
class=
"page-main"
v-loading=
"state.tableData.loading"
ref=
"pageMain"
>
<el-card
shadow=
"hover"
style=
"height:100%;"
>
<el-button
size=
"default"
type=
"danger"
@
click=
"batchSelection"
style=
"margin-bottom: 10px;"
>
领取
</el-button>
<el-table
:data=
"state.tableData.data"
style=
"width: 100%"
:height=
"state.tableHeight"
<el-table
:data=
"state.tableData.data"
:row-key=
"(row) => row.id"
style=
"width: 100%"
:height=
"state.tableHeight"
ref=
"multipleTableRef"
@
selection-change=
"tableSelection"
>
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
type=
"selection"
width=
"55"
:reserve-selection=
"true"
/>
<el-table-column
label=
"序号"
type=
"index"
width=
"100"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"taskPackageInfo.name"
label=
"任务名称1"
show-overflow-tooltip
align=
"center"
>
</el-table-column>
...
...
src/views/dataScreening/list/details.vue
0 → 100644
View file @
d203b03e
This diff is collapsed.
Click to expand it.
src/views/dataScreening/list/index.vue
0 → 100644
View file @
d203b03e
<
template
>
<div
class=
"system-menu-container"
>
<div
class=
"breadcrumb-box"
>
<Breadcrumb
/>
</div>
<div
class=
"header-search flex space-between"
>
<div>
<el-select
v-model=
"state.apiData.search_task_id"
placeholder=
"请选择任务"
size=
"default"
@
change=
"searchChange"
clearable
filterable
style=
"width:200px;margin-right: 20px;"
>
<el-option
v-for=
"(item, index) in state.taskList"
:key=
"index"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<!--
<el-input
class=
"search-item"
placeholder=
"请输入子任务名称"
v-model=
"state.apiData.name"
size=
"default"
style=
"width: 220px;"
clearable
@
change=
"searchChange()"
>
</el-input>
<el-button
size=
"default"
type=
"primary"
@
click=
"searchChange()"
>
查询
</el-button>
<el-button
size=
"default"
@
click=
"reset()"
>
重置
</el-button>
-->
</div>
</div>
<div
class=
"page-main"
v-loading=
"state.tableData.loading"
ref=
"pageMain"
>
<el-card
shadow=
"hover"
style=
"height:100%;"
>
<el-button
size=
"default"
type=
"danger"
@
click=
"multipleExports"
style=
"margin-bottom: 10px;"
>
导出
</el-button>
<el-table
:scrollbar-always-on=
"true"
:row-key=
"(row) => row.id"
:data=
"state.tableData.data"
style=
"width: 100%"
:height=
"state.tableHeight"
@
selection-change=
"tableSelection"
ref=
"multipleTableRef"
>
<el-table-column
type=
"selection"
width=
"55"
:reserve-selection=
"true"
/>
<el-table-column
label=
"序号"
type=
"index"
width=
"100"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
v-for=
"column in state.columns"
:key=
"column.prop"
:label=
"column.label"
:prop=
"column.prop"
:width=
"column.width"
show-overflow-tooltip
align=
"center"
>
<template
#default
="
scope
"
>
<span
v-if=
"scope.row[column.prop] =='' || scope.row[column.prop] ==null || scope.row[column.prop] ==undefined"
>
--
</span>
<span
v-else
>
{{
scope
.
row
[
column
.
prop
]
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"200"
fixed=
"right"
align=
"center"
>
<
template
#default=
"scope"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"details(scope.row.id)"
>
查看详情
</el-button>
<el-button
size=
"small"
type=
"warning"
@
click=
"exportFile(scope.row.id)"
>
导出数据
</el-button>
</
template
>
</el-table-column>
</el-table>
<div
class=
"pagination-box"
>
<el-pagination
@
size-change=
"onHandleSizeChange"
@
current-change=
"onHandleCurrentChange"
class=
"mt15"
:pager-count=
"5"
:page-sizes=
"[10, 20, 30]"
v-model:current-page=
"state.apiData.page"
background
v-model:page-size=
"state.apiData.limit"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"state.tableData.total"
>
</el-pagination>
</div>
<DetailDialog
ref=
"DetailDialogRef"
@
refresh=
"getList()"
/>
<AddDialog
ref=
"AddDialogRef"
@
refresh=
"getList()"
/>
<EditDialog
ref=
"EditDialogRef"
@
refresh=
"getList()"
/>
<ImporDialog
ref=
"ImporDialogRef"
@
refresh=
"getList()"
/>
</el-card>
</div>
</div>
</template>
<
script
setup
name=
"taskPackage-list"
>
import
{
getCurrentInstance
}
from
'
vue
'
;
import
{
normApi
}
from
'
/@/api/norm/index
'
;
import
{
taskPackageApi
}
from
'
/@/api/taskPackage/index
'
;
import
{
excelFileApi
}
from
'
/@/api/excelFile/index
'
;
import
{
ElMessageBox
,
ElMessage
}
from
'
element-plus
'
;
// 引入组件
const
Breadcrumb
=
defineAsyncComponent
(()
=>
import
(
'
/@/layout/navBars/breadcrumb/breadcrumb.vue
'
));
const
AddDialog
=
defineAsyncComponent
(()
=>
import
(
'
/@/views/norm/list/dialog.vue
'
));
const
DetailDialog
=
defineAsyncComponent
(()
=>
import
(
'
/@/views/norm/list/details.vue
'
));
const
EditDialog
=
defineAsyncComponent
(()
=>
import
(
'
/@/views/norm/list/edit.vue
'
));
const
ImporDialog
=
defineAsyncComponent
(()
=>
import
(
'
/@/views/norm/list/impor.vue
'
));
const
router
=
useRouter
();
// 定义变量内容
const
AddDialogRef
=
ref
()
const
DetailDialogRef
=
ref
()
const
EditDialogRef
=
ref
()
const
ImporDialogRef
=
ref
()
const
multipleTableRef
=
ref
()
const
state
=
reactive
({
apiData
:
{
page
:
1
,
limit
:
10
,
name
:
''
,
task_id
:
''
,
search_task_id
:
''
,
},
tableData
:
{
data
:
[],
loading
:
false
,
total
:
0
},
tableHeight
:
'
30vh
'
,
isHide
:
false
,
taskList
:[],
Ids
:[],
columns
:[],
collectsTableData
:[],
collectsColumns
:[],
});
// 获取任务列表
const
getTaskList
=
()
=>
{
taskPackageApi
().
taskPackageList
({
page
:
-
1
,
limit
:
-
1
}).
then
(
res
=>
{
state
.
taskList
=
res
.
data
})
}
// 页面加载时
onMounted
(()
=>
{
// getDepatment()
if
(
router
.
currentRoute
.
value
.
query
.
task_id
){
state
.
apiData
.
task_id
=
router
.
currentRoute
.
value
.
query
.
task_id
state
.
isHide
=
true
// 如果有任务ID才允许发布
}
getList
()
getTaskList
()
state
.
tableHeight
=
getCurrentInstance
().
refs
.
pageMain
.
offsetHeight
-
120
-
32
+
"
px
"
;
});
const
searchChange
=
()
=>
{
state
.
apiData
.
page
=
1
getList
()
}
// 分页改变
const
onHandleSizeChange
=
(
val
)
=>
{
state
.
apiData
.
limit
=
val
;
getList
();
};
const
onHandleCurrentChange
=
(
val
)
=>
{
state
.
apiData
.
page
=
val
;
getList
();
};
// 获取列表
const
getList
=
()
=>
{
state
.
tableData
.
loading
=
true
normApi
().
normList
(
state
.
apiData
).
then
(
res
=>
{
let
listAll
=
res
.
data
.
data
// state.tableData.data = res.data.data
state
.
tableData
.
total
=
res
.
data
.
total
state
.
tableData
.
loading
=
false
let
customTitle
=
[];
// 自定义标题
if
(
listAll
){
let
arr
=
[
{
label
:
'
ID
'
,
prop
:
'
id
'
},
{
label
:
'
任务名称
'
,
prop
:
'
task_info.name
'
,
width
:
120
},
{
label
:
'
单位名称
'
,
prop
:
'
task_info.unit
'
,
width
:
180
},
{
label
:
'
子任务名称
'
,
prop
:
'
name
'
,
width
:
180
},
{
label
:
'
难度等级
'
,
prop
:
'
level
'
,
width
:
180
},
{
label
:
'
参考信源
'
,
prop
:
'
refer
'
,
width
:
180
},
{
label
:
'
参考指南
'
,
prop
:
'
guide
'
,
width
:
180
},
{
label
:
'
单价
'
,
prop
:
'
price
'
,
width
:
180
},
{
label
:
'
优先级
'
,
prop
:
'
sort
'
,
width
:
180
},
{
label
:
'
发布时间
'
,
prop
:
'
created_at
'
,
width
:
180
},
{
label
:
'
领取进度
'
,
prop
:
'
receivedQuantity
'
,
width
:
180
},
{
label
:
'
完成进度
'
,
prop
:
'
collectsQuantity
'
,
width
:
180
},
{
label
:
'
操作
'
,
prop
:
'
cao
'
,
width
:
280
},
];
state
.
columns
=
arr
;
let
sign
=
0
;
listAll
.
forEach
(
function
(
item
,
index
,
arr
)
{
let
list
=
{
'
id
'
:
item
.
id
,
'
task_info.name
'
:
item
.
taskPackageInfo
.
name
,
'
task_info.unit
'
:
item
.
taskPackageInfo
.
unit
,
'
name
'
:
item
.
name
,
'
level
'
:
item
.
level
,
'
refer
'
:
item
.
refer
,
'
guide
'
:
item
.
guide
,
'
price
'
:
item
.
price
,
'
sort
'
:
item
.
sort
,
'
created_at
'
:
item
.
created_at
,
'
receivedQuantity
'
:
item
.
receivedQuantity
,
'
collectsQuantity
'
:
item
.
collectsQuantity
,
'
cao
'
:
'
cao
'
,
}
item
.
custom
.
forEach
(
function
(
items
,
indexs
,
arrs
)
{
if
(
items
.
user_filled
==
0
){
let
vlues
=
customTitle
.
map
(
itemsss
=>
itemsss
.
label
).
indexOf
(
items
.
extend_name
)
if
(
vlues
==
-
1
){
customTitle
.
push
(
{
label
:
items
.
extend_name
,
index
:
'
extend_value
'
+
sign
})
state
.
columns
.
push
(
{
label
:
items
.
extend_name
,
prop
:
'
extend_value
'
+
sign
,
width
:
180
})
list
[
'
extend_value
'
+
sign
]
=
items
.
extend_value
;
sign
++
;
}
else
{
list
[
customTitle
[
vlues
][
'
index
'
]]
=
items
.
extend_value
;
}
}
});
// state.columns.push({ label: '操作', width="200", prop: ''})
// list[customTitle[vlues]['index']] =items.extend_value;
// state.columns.push( { label: '操作' })
state
.
tableData
.
data
.
push
(
list
);
});
console
.
log
(
customTitle
)
}
}).
catch
(()
=>
{
state
.
tableData
.
loading
=
false
})
}
// 多选按钮
const
tableSelection
=
(
val
)
=>
{
if
(
val
){
state
.
Ids
=
[];
val
.
forEach
(
item
=>
{
state
.
Ids
.
push
(
item
.
id
);
});
}
console
.
log
(
state
.
Ids
)
}
// 详情弹窗
const
details
=
(
norm_id
)
=>
{
DetailDialogRef
.
value
.
openDialog
(
norm_id
);
}
// 导出文件
const
exportFile
=
(
id
)
=>
{
let
query
=
{
id
:
id
}
excelFileApi
().
normExportFile
(
query
).
then
(
res
=>
{
if
(
res
.
data
){
let
url
=
res
.
data
;
const
iframe
=
document
.
createElement
(
'
iframe
'
);
// 创建一个HTML 元素
iframe
.
style
.
display
=
'
none
'
;
// 隐藏iframe 防止影响页面
iframe
.
style
.
height
=
0
;
// 高度设置0 防止影响页面
iframe
.
src
=
url
;
// 下载链接
document
.
body
.
appendChild
(
iframe
);
// 这一行必须,iframe挂在到dom树上才会发请求 // 5分钟之后删除
setTimeout
(()
=>
{
iframe
.
remove
();
},
5
*
60
*
1000
);
ElMessage
.
success
(
'
导出成功,请点击下载列表查看!
'
);
}
else
{
ElMessage
.
error
(
'
导出失败!
'
);
}
}).
catch
(()
=>
{
})
}
// 多选导出
const
multipleExports
=
()
=>
{
excelFileApi
().
multipleExportFile
({
ids
:
state
.
Ids
}).
then
(
res
=>
{
excelFileApi
().
multipleExportFile
({
ids
:
state
.
Ids
}).
then
(
res
=>
{
if
(
res
.
data
){
let
url
=
res
.
data
;
const
iframe
=
document
.
createElement
(
'
iframe
'
);
// 创建一个HTML 元素
iframe
.
style
.
display
=
'
none
'
;
// 隐藏iframe 防止影响页面
iframe
.
style
.
height
=
0
;
// 高度设置0 防止影响页面
iframe
.
src
=
url
;
// 下载链接
document
.
body
.
appendChild
(
iframe
);
// 这一行必须,iframe挂在到dom树上才会发请求 // 5分钟之后删除
setTimeout
(()
=>
{
iframe
.
remove
();
},
5
*
60
*
1000
);
ElMessage
.
success
(
'
导出成功,请点击下载列表查看!
'
);
}
else
{
ElMessage
.
error
(
'
导出失败!
'
);
}
multipleTableRef
.
value
.
clearSelection
();
getList
();
}).
catch
(()
=>
{
getList
();
})
}).
catch
(()
=>
{
getList
();
})
}
</
script
>
<
style
lang=
"scss"
scoped
>
.page-main
{
height
:
calc
(
100vh
-
90px
-
75px
);
}
</
style
>
src/views/dataScreening/list/ss.vue
0 → 100644
View file @
d203b03e
<
template
>
<div
class=
"system-menu-container"
>
<div
class=
"breadcrumb-box"
>
<Breadcrumb
/>
</div>
<div
class=
"header-search flex space-between"
>
<div>
<el-select
v-model=
"state.apiData.search_task_id"
placeholder=
"请选择任务"
size=
"default"
@
change=
"searchChange"
clearable
filterable
style=
"width:200px;margin-right: 20px;"
>
<el-option
v-for=
"(item, index) in state.taskList"
:key=
"index"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<!--
<el-input
class=
"search-item"
placeholder=
"请输入子任务名称"
v-model=
"state.apiData.name"
size=
"default"
style=
"width: 220px;"
clearable
@
change=
"searchChange()"
>
</el-input>
<el-button
size=
"default"
type=
"primary"
@
click=
"searchChange()"
>
查询
</el-button>
<el-button
size=
"default"
@
click=
"reset()"
>
重置
</el-button>
-->
</div>
</div>
<div
class=
"page-main"
v-loading=
"state.tableData.loading"
ref=
"pageMain"
>
<el-card
shadow=
"hover"
style=
"height:100%;"
>
<el-button
size=
"default"
type=
"danger"
@
click=
"multipleExports"
style=
"margin-bottom: 10px;"
>
导出
</el-button>
<el-table
:scrollbar-always-on=
"true"
:row-key=
"(row) => row.id"
:data=
"state.tableData.data"
style=
"width: 100%"
:height=
"state.tableHeight"
@
selection-change=
"tableSelection"
ref=
"multipleTableRef"
>
<el-table-column
type=
"selection"
width=
"55"
:reserve-selection=
"true"
/>
<el-table-column
label=
"序号"
type=
"index"
width=
"100"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"taskPackageInfo.name"
width=
"200"
label=
"任务名称"
show-overflow-tooltip
align=
"center"
>
<template
#default
="
scope
"
>
<el-tag
type=
'danger'
effect=
"plain"
>
{{
scope
.
row
.
taskPackageInfo
.
name
}}
</el-tag>
</
template
>
</el-table-column>
<el-table-column
prop=
"taskPackageInfo.unit"
width=
"200"
label=
"单位名称"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"name"
label=
"子任务名称"
width=
"200"
show-overflow-tooltip
align=
"center"
>
<
template
#default=
"scope"
>
<span
@
click=
"details(scope.row.id)"
>
{{
scope
.
row
.
name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"level"
label=
"难度等级"
width=
"100"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"refer"
label=
"参考信源"
width=
"200"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"price"
label=
"单价"
width=
"100"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"sort"
label=
"优先级"
width=
"100"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"created_at"
width=
"180"
label=
"发布时间"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"receivedQuantity"
width=
"200"
label=
"领取进度"
show-overflow-tooltip
align=
"center"
>
<
template
#default=
"scope"
>
<span
style=
"color:#409EFF"
v-if=
"scope.row.type==1"
>
--
</span>
<span
style=
"color:#409EFF"
v-else
>
{{
scope
.
row
.
receivedQuantity
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"完成进度"
width=
"200"
show-overflow-tooltip
align=
"center"
>
<
template
#default=
"scope"
>
<span
style=
"color:#F56C6C"
v-if=
"scope.row.type==1"
>
--
</span>
<span
style=
"color:#F56C6C"
v-else
>
{{
scope
.
row
.
collectsQuantity
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"200"
fixed=
"right"
align=
"center"
>
<
template
#default=
"scope"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"details(scope.row.id)"
>
查看详情
</el-button>
<el-button
size=
"small"
type=
"warning"
@
click=
"exportFile(scope.row.id)"
>
导出数据
</el-button>
</
template
>
</el-table-column>
</el-table>
<div
class=
"pagination-box"
>
<el-pagination
@
size-change=
"onHandleSizeChange"
@
current-change=
"onHandleCurrentChange"
class=
"mt15"
:pager-count=
"5"
:page-sizes=
"[10, 20, 30]"
v-model:current-page=
"state.apiData.page"
background
v-model:page-size=
"state.apiData.limit"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"state.tableData.total"
>
</el-pagination>
</div>
<DetailDialog
ref=
"DetailDialogRef"
@
refresh=
"getList()"
/>
<AddDialog
ref=
"AddDialogRef"
@
refresh=
"getList()"
/>
<EditDialog
ref=
"EditDialogRef"
@
refresh=
"getList()"
/>
<ImporDialog
ref=
"ImporDialogRef"
@
refresh=
"getList()"
/>
</el-card>
</div>
</div>
</template>
<
script
setup
name=
"taskPackage-list"
>
import
{
getCurrentInstance
}
from
'
vue
'
;
import
{
normApi
}
from
'
/@/api/norm/index
'
;
import
{
taskPackageApi
}
from
'
/@/api/taskPackage/index
'
;
import
{
excelFileApi
}
from
'
/@/api/excelFile/index
'
;
import
{
ElMessageBox
,
ElMessage
}
from
'
element-plus
'
;
// 引入组件
const
Breadcrumb
=
defineAsyncComponent
(()
=>
import
(
'
/@/layout/navBars/breadcrumb/breadcrumb.vue
'
));
const
AddDialog
=
defineAsyncComponent
(()
=>
import
(
'
/@/views/norm/list/dialog.vue
'
));
const
DetailDialog
=
defineAsyncComponent
(()
=>
import
(
'
/@/views/norm/list/details.vue
'
));
const
EditDialog
=
defineAsyncComponent
(()
=>
import
(
'
/@/views/norm/list/edit.vue
'
));
const
ImporDialog
=
defineAsyncComponent
(()
=>
import
(
'
/@/views/norm/list/impor.vue
'
));
const
router
=
useRouter
();
// 定义变量内容
const
AddDialogRef
=
ref
()
const
DetailDialogRef
=
ref
()
const
EditDialogRef
=
ref
()
const
ImporDialogRef
=
ref
()
const
multipleTableRef
=
ref
()
const
state
=
reactive
({
apiData
:
{
page
:
1
,
limit
:
10
,
name
:
''
,
task_id
:
''
,
search_task_id
:
''
,
},
tableData
:
{
data
:
[],
loading
:
false
,
total
:
0
},
tableHeight
:
'
30vh
'
,
isHide
:
false
,
taskList
:[],
Ids
:[],
});
// 获取任务列表
const
getTaskList
=
()
=>
{
taskPackageApi
().
taskPackageList
({
page
:
-
1
,
limit
:
-
1
}).
then
(
res
=>
{
state
.
taskList
=
res
.
data
})
}
// 页面加载时
onMounted
(()
=>
{
// getDepatment()
if
(
router
.
currentRoute
.
value
.
query
.
task_id
){
state
.
apiData
.
task_id
=
router
.
currentRoute
.
value
.
query
.
task_id
state
.
isHide
=
true
// 如果有任务ID才允许发布
}
getList
()
getTaskList
()
state
.
tableHeight
=
getCurrentInstance
().
refs
.
pageMain
.
offsetHeight
-
120
-
32
+
"
px
"
;
});
const
searchChange
=
()
=>
{
state
.
apiData
.
page
=
1
getList
()
}
// 分页改变
const
onHandleSizeChange
=
(
val
)
=>
{
state
.
apiData
.
limit
=
val
;
getList
();
};
const
onHandleCurrentChange
=
(
val
)
=>
{
state
.
apiData
.
page
=
val
;
getList
();
};
/**
* 重置按钮
*/
const
reset
=
()
=>
{
state
.
apiData
.
page
=
1
state
.
apiData
.
name
=
''
;
state
.
apiData
.
search_task_id
=
''
;
getList
()
}
// 获取列表
const
getList
=
()
=>
{
state
.
tableData
.
loading
=
true
normApi
().
normList
(
state
.
apiData
).
then
(
res
=>
{
state
.
tableData
.
loading
=
false
state
.
tableData
.
data
=
res
.
data
.
data
state
.
tableData
.
total
=
res
.
data
.
total
}).
catch
(()
=>
{
state
.
tableData
.
loading
=
false
})
}
const
tableSelection
=
(
val
)
=>
{
if
(
val
){
state
.
Ids
=
[];
val
.
forEach
(
item
=>
{
state
.
Ids
.
push
(
item
.
id
);
});
}
console
.
log
(
state
.
Ids
)
}
/**
* 返回上一级页面
*/
const
backToPreviousPage
=
()
=>
{
// this.$router.push('/target')
router
.
go
(
-
1
);
}
// 发布指标弹窗
const
release
=
()
=>
{
AddDialogRef
.
value
.
openDialog
();
}
// 详情弹窗
const
details
=
(
norm_id
)
=>
{
DetailDialogRef
.
value
.
openDialog
(
norm_id
);
}
// 编辑弹窗
const
edit
=
(
norm_id
)
=>
{
EditDialogRef
.
value
.
openDialog
(
norm_id
);
}
// 导入数据窗口
const
importFile
=
()
=>
{
ImporDialogRef
.
value
.
openDialog
(
state
.
apiData
.
task_id
);
}
// 导出文件
const
exportFile
=
(
id
)
=>
{
let
query
=
{
id
:
id
}
excelFileApi
().
normExportFile
(
query
).
then
(
res
=>
{
if
(
res
.
data
){
let
url
=
res
.
data
;
const
iframe
=
document
.
createElement
(
'
iframe
'
);
// 创建一个HTML 元素
iframe
.
style
.
display
=
'
none
'
;
// 隐藏iframe 防止影响页面
iframe
.
style
.
height
=
0
;
// 高度设置0 防止影响页面
iframe
.
src
=
url
;
// 下载链接
document
.
body
.
appendChild
(
iframe
);
// 这一行必须,iframe挂在到dom树上才会发请求 // 5分钟之后删除
setTimeout
(()
=>
{
iframe
.
remove
();
},
5
*
60
*
1000
);
ElMessage
.
success
(
'
导出成功,请点击下载列表查看!
'
);
}
else
{
ElMessage
.
error
(
'
导出失败!
'
);
}
}).
catch
(()
=>
{
})
}
// 多选导出
const
multipleExports
=
()
=>
{
excelFileApi
().
multipleExportFile
({
ids
:
state
.
Ids
}).
then
(
res
=>
{
excelFileApi
().
multipleExportFile
({
ids
:
state
.
Ids
}).
then
(
res
=>
{
if
(
res
.
data
){
let
url
=
res
.
data
;
const
iframe
=
document
.
createElement
(
'
iframe
'
);
// 创建一个HTML 元素
iframe
.
style
.
display
=
'
none
'
;
// 隐藏iframe 防止影响页面
iframe
.
style
.
height
=
0
;
// 高度设置0 防止影响页面
iframe
.
src
=
url
;
// 下载链接
document
.
body
.
appendChild
(
iframe
);
// 这一行必须,iframe挂在到dom树上才会发请求 // 5分钟之后删除
setTimeout
(()
=>
{
iframe
.
remove
();
},
5
*
60
*
1000
);
ElMessage
.
success
(
'
导出成功,请点击下载列表查看!
'
);
}
else
{
ElMessage
.
error
(
'
导出失败!
'
);
}
multipleTableRef
.
value
.
clearSelection
();
getList
();
}).
catch
(()
=>
{
getList
();
})
}).
catch
(()
=>
{
getList
();
})
}
</
script
>
<
style
lang=
"scss"
scoped
>
.page-main
{
height
:
calc
(
100vh
-
90px
-
75px
);
}
</
style
>
src/views/norm/list/details.vue
View file @
d203b03e
...
...
@@ -24,7 +24,7 @@
<el-input
type=
"textarea"
v-model=
"state.formItem.addItem.refer"
placeholder=
"请输入参考信源"
clearable
:disabled=
"true"
></el-input>
</el-form-item>
<el-form-item
label=
"price"
prop=
"price"
>
<el-input
v-model=
"state.formItem.addItem.price"
placeholder=
"请输入单价"
clearable
:disabled=
"true"
></el-input
>
<el-input
-number
v-model=
"state.formItem.addItem.price"
:precision=
"2"
:step=
"0.1"
:max=
"10"
placeholder=
"请输入单价"
:disabled=
"true"
></el-input-number
>
</el-form-item>
<el-form-item
label=
"参考指南"
prop=
"guide"
>
<el-input
type=
"textarea"
v-model=
"state.formItem.addItem.guide"
placeholder=
"请输入参考指南"
clearable
:disabled=
"true"
></el-input>
...
...
src/views/norm/list/impor.vue
View file @
d203b03e
This diff is collapsed.
Click to expand it.
src/views/norm/list/index.vue
View file @
d203b03e
...
...
@@ -18,15 +18,17 @@
</div>
<div>
<el-button
size=
"default"
type=
"primary"
@
click=
"release()"
v-if=
"state.isHide"
>
发布子任务
</el-button>
<el-button
size=
"default"
type=
"danger"
@
click=
"importFile()"
v-if=
"state.isHide"
>
导入数据
</el-button>
<el-button
@
click=
"backToPreviousPage"
>
返回页面
</el-button>
</div>
</div>
<div
class=
"page-main"
v-loading=
"state.tableData.loading"
ref=
"pageMain"
>
<el-card
shadow=
"hover"
style=
"height:100%;"
>
<el-table
:data=
"state.tableData.data"
style=
"width: 100%"
:height=
"state.tableHeight"
<el-button
size=
"default"
type=
"danger"
@
click=
"multipleExports"
style=
"margin-bottom: 10px;"
>
导出文件
</el-button>
<el-table
:
scrollbar-always-on=
"true"
@
selection-change=
"tableSelection"
:row-key=
"(row) => row.id"
:
data=
"state.tableData.data"
style=
"width: 100%"
:height=
"state.tableHeight"
ref=
"multipleTableRef"
>
<el-table-column
type=
"selection"
width=
"55"
:reserve-selection=
"true"
/>
<el-table-column
label=
"序号"
type=
"index"
width=
"100"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"taskPackageInfo.name"
label=
"任务名称"
show-overflow-tooltip
align=
"center"
>
<template
#default
="
scope
"
>
...
...
@@ -46,19 +48,20 @@
<el-table-column
prop=
"created_at"
width=
"180"
label=
"发布时间"
show-overflow-tooltip
align=
"center"
></el-table-column>
<el-table-column
prop=
"receivedQuantity"
label=
"领取进度"
show-overflow-tooltip
align=
"center"
>
<
template
#default=
"scope"
>
<span
style=
"color:#409EFF"
>
{{
scope
.
row
.
receivedQuantity
}}
</span>
<span
style=
"color:#409EFF"
v-if=
"scope.row.type==1"
>
--
</span>
<span
style=
"color:#409EFF"
v-else
>
{{
scope
.
row
.
receivedQuantity
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"完成进度"
show-overflow-tooltip
align=
"center"
>
<
template
#default=
"scope"
>
<span
style=
"color:#F56C6C"
>
{{
scope
.
row
.
collectsQuantity
}}
</span>
<span
style=
"color:#F56C6C"
v-if=
"scope.row.type==1"
>
--
</span>
<span
style=
"color:#F56C6C"
v-else
>
{{
scope
.
row
.
collectsQuantity
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"380"
fixed=
"right"
align=
"center"
>
<
template
#default=
"scope"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"details(scope.row.id)"
>
查看详情
</el-button>
<el-button
size=
"small"
@
click=
"edit(scope.row.id)"
>
修改子任务
</el-button>
<el-button
size=
"small"
type=
"danger"
@
click=
"importFile(scope.row.id)"
>
导入数据
</el-button>
<el-button
size=
"small"
type=
"warning"
@
click=
"exportFile(scope.row.id)"
>
导出数据
</el-button>
</
template
>
</el-table-column>
...
...
@@ -100,6 +103,7 @@ const AddDialogRef = ref()
const
DetailDialogRef
=
ref
()
const
EditDialogRef
=
ref
()
const
ImporDialogRef
=
ref
()
const
multipleTableRef
=
ref
()
const
state
=
reactive
({
apiData
:
{
...
...
@@ -117,6 +121,7 @@ const state = reactive({
tableHeight
:
'
30vh
'
,
isHide
:
false
,
taskList
:[],
Ids
:[],
});
// 获取任务列表
const
getTaskList
=
()
=>
{
...
...
@@ -175,6 +180,16 @@ const getList = () => {
}
const
tableSelection
=
(
val
)
=>
{
if
(
val
){
state
.
Ids
=
[];
val
.
forEach
(
item
=>
{
state
.
Ids
.
push
(
item
.
id
);
});
}
console
.
log
(
state
.
Ids
)
}
/**
* 返回上一级页面
*/
...
...
@@ -199,8 +214,8 @@ const edit= (norm_id) => {
}
// 导入数据窗口
const
importFile
=
(
norm_id
)
=>
{
ImporDialogRef
.
value
.
openDialog
(
norm
_id
);
const
importFile
=
()
=>
{
ImporDialogRef
.
value
.
openDialog
(
state
.
apiData
.
task
_id
);
}
// 导出文件
...
...
@@ -223,7 +238,27 @@ const exportFile= (id) => {
}).
catch
(()
=>
{
})
}
// 多选导出文件
const
multipleExports
=
()
=>
{
excelFileApi
().
multipleExportFile
({
ids
:
state
.
Ids
}).
then
(
res
=>
{
if
(
res
.
data
){
let
url
=
res
.
data
;
const
iframe
=
document
.
createElement
(
'
iframe
'
);
// 创建一个HTML 元素
iframe
.
style
.
display
=
'
none
'
;
// 隐藏iframe 防止影响页面
iframe
.
style
.
height
=
0
;
// 高度设置0 防止影响页面
iframe
.
src
=
url
;
// 下载链接
document
.
body
.
appendChild
(
iframe
);
// 这一行必须,iframe挂在到dom树上才会发请求 // 5分钟之后删除
setTimeout
(()
=>
{
iframe
.
remove
();
},
5
*
60
*
1000
);
ElMessage
.
success
(
'
导出成功,请点击下载列表查看!
'
);
}
else
{
ElMessage
.
error
(
'
导出失败!
'
);
}
multipleTableRef
.
value
.
clearSelection
();
getList
();
}).
catch
(()
=>
{
getList
();
})
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
vite.config.js
View file @
d203b03e
...
...
@@ -34,7 +34,7 @@ const viteConfig = defineConfig((mode) => {
host
:
'
0.0.0.0
'
,
port
:
env
.
VITE_PORT
,
open
:
env
.
VITE_OPEN
,
hmr
:
true
,
hmr
:
true
,
proxy
:
{
'
/dev
'
:
{
target
:
'
http://gcspider.raisound.com:81/data-collect-api-dev
'
,
...
...
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