Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
T
topsun-baoshen-excel
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
何远江
topsun-baoshen-excel
Commits
2de7a3b4
Commit
2de7a3b4
authored
Feb 27, 2024
by
何远江
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加脚本管理
parent
0b28e20a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
303 additions
and
0 deletions
+303
-0
scripts.ts
src/api/scripts.ts
+58
-0
index.ts
src/router/index.ts
+8
-0
index.vue
src/views/order/scripts/index.vue
+237
-0
No files found.
src/api/scripts.ts
0 → 100644
View file @
2de7a3b4
import
axios
from
'@/utils/http'
const
formHeader
=
{
'Content-Type'
:
'application/x-www-form-urlencoded;charset=UTF-8'
}
/**
* 脚本列表
* @param params
* @returns
*/
export
const
getExcelScripts
=
(
params
:
any
)
=>
{
return
axios
.
get
(
'/api/exlScript/page'
,
{
params
,
headers
:
formHeader
})
}
/**
* 新增脚本
* @param data
* @returns
*/
export
const
addExcelScripts
=
(
data
:
any
)
=>
{
return
axios
.
post
(
'/api/exlScript/add'
,
data
)
}
/**
* 修改脚本
* @param data
* @returns
*/
export
const
editExcelScripts
=
(
data
:
any
)
=>
{
return
axios
.
post
(
'/api/exlScript/edit'
,
data
)
}
/**
* 批量删除脚本
* @param ids
* @returns
*/
export
const
deleteExcelScripts
=
(
ids
:
any
)
=>
{
return
axios
.
get
(
'/api/exlScript/batchDeleteByIds'
,
{
params
:
{
ids
},
headers
:
formHeader
})
}
/**
* 测试脚本
* @param params
* @returns
*/
export
const
testExcelScripts
=
(
params
:
any
)
=>
{
return
axios
.
get
(
'/api/exlScript/testScript'
,
{
params
,
headers
:
formHeader
})
}
src/router/index.ts
View file @
2de7a3b4
...
@@ -35,6 +35,14 @@ export const routes = [
...
@@ -35,6 +35,14 @@ export const routes = [
title
:
'订单管理'
title
:
'订单管理'
},
},
children
:
[
children
:
[
{
path
:
'/order/scripts'
,
name
:
'OrderScripts'
,
component
:
()
=>
import
(
'@/views/order/scripts/index.vue'
),
meta
:
{
title
:
'脚本管理'
}
},
{
{
path
:
'/order/list'
,
path
:
'/order/list'
,
name
:
'OrderList'
,
name
:
'OrderList'
,
...
...
src/views/order/scripts/index.vue
0 → 100644
View file @
2de7a3b4
<
template
>
<div
class=
"w-full h-full bg-white p-4"
>
<p
class=
"font-bold text-lg leading-10 border-b-2"
>
脚本管理
</p>
<el-form
class=
"pt-4"
:inline=
"true"
:model=
"formState"
>
<el-form-item
label=
"脚本名称"
>
<el-input
v-model=
"formState.title"
placeholder=
""
/>
</el-form-item>
<el-form-item
label=
"脚本内容"
>
<el-input
v-model=
"formState.content"
placeholder=
""
/>
</el-form-item>
<el-form-item
label=
"脚本说明"
>
<el-input
v-model=
"formState.mark"
placeholder=
""
/>
</el-form-item>
<el-form-item>
<el-button
type=
"default"
@
click=
"onReset"
>
重置
</el-button>
<el-button
type=
"primary"
@
click=
"onQuery"
>
查询
</el-button>
</el-form-item>
</el-form>
<div
class=
""
>
<vxe-toolbar>
<template
#
buttons
>
<!--
<vxe-button
@
click=
"allAlign = 'left'"
>
居左
</vxe-button>
-->
<el-button
type=
"primary"
@
click=
"showEdit = true"
>
新增
</el-button>
<el-button
type=
"danger"
@
click=
"removeRows"
>
删除
</el-button>
</
template
>
</vxe-toolbar>
<vxe-table
ref=
"xTable"
size=
"small"
min-height=
"460"
border
:loading=
"loading"
:data=
"tableData"
>
<vxe-column
type=
"checkbox"
width=
"50"
></vxe-column>
<vxe-column
field=
"title"
title=
"脚本名称"
width=
"200px"
></vxe-column>
<vxe-column
field=
"content"
title=
"脚本内容"
max-width=
"400px"
></vxe-column>
<vxe-column
field=
"mark"
title=
"脚本说明"
></vxe-column>
<vxe-column
field=
"action"
title=
"操作"
width=
"80"
>
<
template
#
default=
"{ row }"
>
<el-link
type=
"primary"
@
click=
"editRow(row)"
>
修改
</el-link>
</
template
>
</vxe-column>
</vxe-table>
<vxe-pager
size=
"small"
background
v-model:current-page=
"formState.currentPage"
v-model:page-size=
"formState.pageSize"
:total=
"formState.total"
@
page-change=
"onQuery"
:layouts=
"['PrevPage', 'JumpNumber', 'NextPage', 'Sizes', 'FullJump', 'Total']"
>
</vxe-pager>
</div>
<vxe-modal
width=
"70%"
v-model=
"showEdit"
title=
"编辑&保存"
destroy-on-close
esc-closable
@
hide=
"onHide"
:top=
"50"
>
<
template
#
default
>
<el-form
ref=
"formRef"
label-width=
"90px"
:model=
"formEdit"
:rules=
"formRules"
>
<el-form-item
label=
"脚本名称"
prop=
"title"
>
<el-input
v-model=
"formEdit.title"
>
</el-input>
</el-form-item>
<el-form-item
label=
"脚本内容"
prop=
"content"
>
<el-input
type=
"textarea"
rows=
"13"
v-model=
"formEdit.content"
></el-input>
<el-button
v-if=
"!visibleTest"
class=
"mt-1"
type=
"primary"
size=
"small"
@
click=
"visibleTest = true"
>
测试
</el-button>
</el-form-item>
<el-form-item
label=
"测试内容"
v-if=
"visibleTest"
prop=
"cellValue"
>
<el-row
class=
"mt-1 w-full"
:gutter=
"12"
>
<el-col
:span=
"8"
>
<el-input
type=
"textarea"
rows=
"4"
v-model=
"formEdit.cellValue"
placeholder=
"请输入测试内容"
></el-input>
</el-col>
<el-col
:span=
"16"
v-if=
"!!testResult.title"
>
<el-alert
v-bind=
"testResult"
show-icon
:closable=
"false"
/>
</el-col>
</el-row>
<el-button
class=
"mt-1"
type=
"primary"
size=
"small"
@
click=
"sendTest"
>
执行
</el-button>
</el-form-item>
<el-form-item
label=
"脚本说明"
prop=
"mark"
>
<el-input
type=
"textarea"
rows=
"3"
v-model=
"formEdit.mark"
></el-input>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"onSubmit"
:loading=
"saveLoading"
>
提交
</el-button>
<el-button
@
click=
"showEdit = false"
>
取消
</el-button>
</el-form-item>
</el-form>
</
template
>
</vxe-modal>
</div>
</template>
<
script
lang=
"ts"
setup
>
import
{
onMounted
,
reactive
,
ref
}
from
'vue'
import
{
getExcelScripts
,
addExcelScripts
,
editExcelScripts
,
deleteExcelScripts
,
testExcelScripts
}
from
'@/api/scripts'
import
{
ElMessage
,
type
FormInstance
}
from
'element-plus'
import
type
{
VxeTableInstance
}
from
'vxe-table'
const
visibleTest
=
ref
(
false
)
const
loading
=
ref
(
false
)
const
saveLoading
=
ref
(
false
)
const
showEdit
=
ref
(
false
)
const
formState
=
reactive
({
title
:
''
,
content
:
''
,
mark
:
''
,
currentPage
:
1
,
pageSize
:
10
,
total
:
0
})
const
formRef
=
ref
<
FormInstance
>
()
const
xTable
=
ref
<
VxeTableInstance
>
()
const
formRules
=
reactive
({
cellValue
:
[{
required
:
true
,
message
:
'请输入值'
,
trigger
:
'change'
}],
title
:
[{
required
:
true
,
message
:
'请输入脚本名称'
,
trigger
:
'change'
}],
content
:
[{
required
:
true
,
message
:
'请输入脚本内容'
,
trigger
:
'change'
}]
})
const
formEdit
=
reactive
<
Record
<
string
,
any
>>
({
title
:
''
,
content
:
''
,
cellValue
:
''
,
mark
:
''
})
const
tableData
=
ref
([])
const
onHide
=
()
=>
{
// 重置表单
Object
.
assign
(
formEdit
,
{
title
:
''
,
content
:
''
,
cellValue
:
''
,
mark
:
''
})
// 重置测试结果
visibleTest
.
value
=
false
Object
.
assign
(
testResult
,
{
title
:
''
,
description
:
''
})
}
const
onReset
=
()
=>
{
Object
.
assign
(
formState
,
{
title
:
''
,
content
:
''
,
mark
:
''
})
}
const
editRow
=
(
row
)
=>
{
Object
.
assign
(
formEdit
,
row
)
showEdit
.
value
=
true
}
const
testResult
=
reactive
<
any
>
({
type
:
'success'
,
title
:
''
,
description
:
''
})
const
sendTest
=
async
()
=>
{
try
{
await
formRef
.
value
?.
validateField
([
'content'
,
'cellValue'
])
const
res
=
await
testExcelScripts
(
formEdit
)
if
(
res
.
data
?.
success
)
{
// 创建一个测试成功的消息
Object
.
assign
(
testResult
,
{
type
:
'success'
,
title
:
'执行结果:'
,
description
:
res
.
data
.
message
})
}
else
{
// 创建一个测试失败的消息
Object
.
assign
(
testResult
,
{
type
:
'error'
,
title
:
'错误信息:'
,
description
:
res
.
data
.
message
})
}
}
catch
{}
}
const
removeRows
=
async
()
=>
{
const
list
=
xTable
.
value
?.
getCheckboxRecords
()
if
(
list
?.
length
)
{
const
ids
=
list
.
map
((
item
)
=>
item
.
scriptId
).
join
(
','
)
await
deleteExcelScripts
(
ids
)
ElMessage
.
success
(
'删除成功!'
)
onQuery
()
}
}
// 表单提交
const
onSubmit
=
async
()
=>
{
await
formRef
.
value
?.
validateField
([
'content'
,
'title'
])
saveLoading
.
value
=
true
try
{
formEdit
?.
scriptId
?
await
editExcelScripts
(
formEdit
)
:
await
addExcelScripts
(
formEdit
)
ElMessage
.
success
(
'操作成功!'
)
showEdit
.
value
=
false
onQuery
()
}
catch
{}
saveLoading
.
value
=
false
}
const
onQuery
=
async
()
=>
{
loading
.
value
=
true
try
{
const
{
data
}
=
await
getExcelScripts
(
formState
)
tableData
.
value
=
data
.
result
.
records
formState
.
total
=
+
data
.
result
.
total
}
catch
{}
loading
.
value
=
false
}
onMounted
(()
=>
{
onQuery
()
})
</
script
>
<
style
lang=
"scss"
scoped
></
style
>
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