Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
K
klck
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
位宇华
klck
Commits
dce0b449
Commit
dce0b449
authored
Jul 17, 2023
by
lvzhuangzhuang
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
08b0c295
3dd5a5b3
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
84 additions
and
170 deletions
+84
-170
ruoyi-ui/package.json
ruoyi-ui/package.json
+4
-4
ruoyi-ui/src/views/system/supplies/index.vue
ruoyi-ui/src/views/system/supplies/index.vue
+76
-165
ruoyi-ui/src/views/system/supplies/index_template.vue
ruoyi-ui/src/views/system/supplies/index_template.vue
+4
-1
No files found.
ruoyi-ui/package.json
View file @
dce0b449
...
@@ -5,9 +5,9 @@
...
@@ -5,9 +5,9 @@
"author"
:
"若依"
,
"author"
:
"若依"
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"scripts"
:
{
"scripts"
:
{
"dev"
:
"vue-cli-service serve"
,
"dev"
:
"
set NODE_OPTIONS=--openssl-legacy-provider &
vue-cli-service serve"
,
"build:prod"
:
"vue-cli-service build"
,
"build:prod"
:
"
set NODE_OPTIONS=--openssl-legacy-provider &
vue-cli-service build"
,
"build:stage"
:
"vue-cli-service build --mode staging"
,
"build:stage"
:
"
set NODE_OPTIONS=--openssl-legacy-provider &
vue-cli-service build --mode staging"
,
"preview"
:
"node build/index.js --preview"
,
"preview"
:
"node build/index.js --preview"
,
"lint"
:
"eslint --ext .js,.vue src"
"lint"
:
"eslint --ext .js,.vue src"
},
},
...
@@ -65,7 +65,7 @@
...
@@ -65,7 +65,7 @@
"vue-router"
:
"3.4.9"
,
"vue-router"
:
"3.4.9"
,
"vuedraggable"
:
"2.24.3"
,
"vuedraggable"
:
"2.24.3"
,
"vuex"
:
"3.6.0"
,
"vuex"
:
"3.6.0"
,
"xlsx"
:
"^0.17.
2
"
"xlsx"
:
"^0.17.
5
"
},
},
"devDependencies"
:
{
"devDependencies"
:
{
"@vue/cli-plugin-babel"
:
"4.4.6"
,
"@vue/cli-plugin-babel"
:
"4.4.6"
,
...
...
ruoyi-ui/src/views/system/supplies/index.vue
View file @
dce0b449
...
@@ -5,14 +5,14 @@
...
@@ -5,14 +5,14 @@
<el-select
v-model=
"selectedOption"
ref=
"mySelect"
size=
"mini"
@
change=
"handleOptionChange"
placeholder=
"请选择您要查看的模板"
>
<el-select
v-model=
"selectedOption"
ref=
"mySelect"
size=
"mini"
@
change=
"handleOptionChange"
placeholder=
"请选择您要查看的模板"
>
<!--
<el-option
label=
"自设的模板名"
value=
"使用空白模板"
></el-option>
-->
<!--
<el-option
label=
"自设的模板名"
value=
"使用空白模板"
></el-option>
-->
<el-option
<el-option
v-for=
"item in depss"
:key=
"item.id"
:label=
"item.
n
ame"
:value=
"item.id"
>
v-for=
"item in depss"
:key=
"item.id"
:label=
"item.
templateN
ame"
:value=
"item.id"
>
</el-option>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"规则"
prop=
"rule"
>
<el-form-item
label=
"规则"
prop=
"rule"
>
<el-select
v-model=
"selectedRule"
ref=
"mySelect"
size=
"mini"
@
change=
"handleRuleChange"
placeholder=
"请选择您要查看的规则"
>
<el-select
v-model=
"selectedRule"
ref=
"mySelect"
size=
"mini"
@
change=
"handleRuleChange"
placeholder=
"请选择您要查看的规则"
>
<el-option
<el-option
v-for=
"iem in luckyrule"
:key=
"iem.id"
:label=
"iem.
n
ame"
:value=
"iem.id"
>
v-for=
"iem in luckyrule"
:key=
"iem.id"
:label=
"iem.
roleN
ame"
:value=
"iem.id"
>
</el-option>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
...
@@ -22,20 +22,11 @@
...
@@ -22,20 +22,11 @@
</el-form>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-row
:gutter=
"10"
class=
"mb8"
>
<!--
<el-col
:span=
"1.5"
>
<el-button
type=
"success"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"dialogVisible = true"
>
保存
</el-button>
</el-col>
-->
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
<el-button
<el-button
type=
"warning"
type=
"warning"
plain
plain
icon=
"el-icon-
s-promotion
"
icon=
"el-icon-
download2
"
size=
"mini"
size=
"mini"
@
click=
"handleExport"
@
click=
"handleExport"
v-hasPermi=
"['ruoyi-myexcel:myexcel:export']"
v-hasPermi=
"['ruoyi-myexcel:myexcel:export']"
...
@@ -52,36 +43,17 @@
...
@@ -52,36 +43,17 @@
:file-list=
"fileList"
:file-list=
"fileList"
:disabled=
"disableNextButton"
:disabled=
"disableNextButton"
>
>
<el-button
plain
size=
"mini"
icon=
"el-icon-upload
2"
type=
"primary"
:disabled=
"disableNextButton"
>
导入
</el-button>
<el-button
plain
size=
"mini"
icon=
"el-icon-upload
"
type=
"primary"
:disabled=
"disableNextButton"
>
导入
</el-button>
</el-upload>
</el-upload>
</el-col>
</el-col>
</el-row>
</el-row>
<!-- luckysheet容器 -->
<!-- luckysheet容器 -->
<div
<div
id=
"luckysheet"
id=
"luckysheet"
style=
"margin: 0px; padding: 0px; position: absolute; width: 100%;
height: 1000px; left: 0px; top: 110px; bottom:
0px; z-index: 0"
style=
"margin: 0px; padding: 0px; position: absolute; width: 100%;
left: 0px; top: 110px; height: 100
0px; z-index: 0"
>
>
</div>
</div>
<!-- 用户添加或修改我的Excel表格的弹框 -->
<el-dialog
title=
"是否确认保存?"
:visible.sync=
"dialogVisible"
width=
"30%"
style=
"z-index: 1; "
>
<el-form
label-width=
"80px"
@
submit
.
native
.
prevent
>
<el-form-item
label=
"名称"
>
<!-- onkeypress="if (event.keyCode == 13) return false" //关闭enter的触发事件 -->
<el-input
v-model=
"from_name"
@
keyup.enter.native=
"handleEnter"
placeholder=
"请输入名称"
/>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"submit_from"
>
确 定
</el-button>
</span>
</el-dialog>
</div>
</div>
</
template
>
</
template
>
...
@@ -90,16 +62,12 @@
...
@@ -90,16 +62,12 @@
import
$
from
'
jquery
'
import
$
from
'
jquery
'
/*安装插件 npm install xlsx,安装完成后引入 import XLSX from ‘xlsx’*/
/*安装插件 npm install xlsx,安装完成后引入 import XLSX from ‘xlsx’*/
import
XLSX
from
'
xlsx
'
import
XLSX
from
'
xlsx
'
import
{
addMyluckyexcel
,
getMyluckyexcel
,
listMyluckyexcel
,
listRule
,
getRule
,
templateList
,
templateListid
,
roleListid
,
roleList
}
from
"
@/api/ruoyi-myLuckyexcel/myluckyexcel
"
;
import
{
getSuppliesTemplate
,
listSuppliesTemplate
,
roleList
,
roleListid
}
from
"
@/api/ruoyi-myLuckyexcel/myluckyexcel
"
;
import
luckysheet
from
'
luckysheet
'
import
luckysheet
from
'
luckysheet
'
import
LuckyExcel
from
'
luckyexcel
'
import
LuckyExcel
from
'
luckyexcel
'
//导入库export.js 这个文件是es6的,不能在普通的HTML文件直接引入js文件(虽然都是js文件,但是有区别,具体请百度es6与es5)!需要把es6转es5才可以直接引入使用!
//导入库export.js 这个文件是es6的,不能在普通的HTML文件直接引入js文件(虽然都是js文件,但是有区别,具体请百度es6与es5)!需要把es6转es5才可以直接引入使用!
import
{
exportExcel
}
from
'
../../../../public/luckysheet/exportExcel
'
import
{
exportExcel
}
from
'
../../../../public/luckysheet/exportExcel
'
var
excelTemp
;
//模板json
var
excelTempName
;
//模板name
var
excelRule
;
//规则json
var
fileName
=
"
新建XLSX工作表
"
;
//定义表名
var
fileName
=
"
新建XLSX工作表
"
;
//定义表名
export
default
{
export
default
{
name
:
"
Mymodule
"
,
name
:
"
Mymodule
"
,
...
@@ -119,17 +87,12 @@ export default {
...
@@ -119,17 +87,12 @@ export default {
// 表单参数
// 表单参数
form
:
{},
form
:
{},
// 查询参数
// 查询参数
queryParams
:
{
queryParams
:
{},
/*pageNum: 1,
dialogRef
:
'
dialogImportRef
'
,
pageSize: 10,
name: null,
content: null*/
},
};
};
},
},
created
()
{
created
()
{
//刷新页面时进行的操作
//刷新页面时进行的操作
this
.
getList
();
this
.
getList
();
},
},
...
@@ -140,26 +103,25 @@ export default {
...
@@ -140,26 +103,25 @@ export default {
methods
:{
methods
:{
/** 页面刷新时展示的数据*/
/** 页面刷新时展示的数据*/
getList
()
{
getList
()
{
list
Myluckyexcel
(
this
.
queryParams
).
then
(
response
=>
{
list
SuppliesTemplate
(
this
.
queryParams
).
then
(
response
=>
{
this
.
depss
=
response
.
rows
;
this
.
depss
=
response
.
rows
;
});
});
listRule
(
this
.
queryParams
).
then
(
response
=>
{
this
.
luckyrule
=
response
.
rows
;
});
},
},
/** 下拉选和页面luckysheet绑定 */
/** 下拉选和页面luckysheet绑定 */
handleOptionChange
()
{
handleOptionChange
()
{
//根据选中的下拉选项值获取相应的信息
//根据选中的下拉选项值获取相应的信息
getMyluckyexcel
(
this
.
selectedOption
).
then
(
response
=>
{
getSuppliesTemplate
(
this
.
selectedOption
).
then
(
response
=>
{
const
sysSupplies
=
response
.
rows
;
const
sysSupplies
=
response
.
data
;
this
.
luckysheetData
=
sysSupplies
[
0
].
templateContent
;
this
.
luckysheetData
=
sysSupplies
.
jsons
;
//将接收到的json存到json_data中
//将接收到的json存到json_data中
//const json_data = response.data;
//const json_data = response.data;
let
json_data
=
JSON
.
parse
(
sysSupplies
.
jsons
);
var
json_data
=
JSON
.
parse
(
sysSupplies
[
0
].
templateContent
);
fileName
=
sysSupplies
.
name
;
roleList
(
this
.
selectedOption
).
then
(
response
=>
{
excelTemp
=
json_data
;
//模板json
this
.
luckyrule
=
response
.
rows
;
excelTempName
=
fileName
;
//模板name
});
fileName
=
sysSupplies
.
name
;
//luckysheet.destroy()
luckysheet
.
create
({
luckysheet
.
create
({
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
title
:
fileName
,
// Excel 文件名
title
:
fileName
,
// Excel 文件名
...
@@ -172,49 +134,15 @@ export default {
...
@@ -172,49 +134,15 @@ export default {
this
.
$message
.
error
(
'
查询失败,发生未知错误!
'
);
this
.
$message
.
error
(
'
查询失败,发生未知错误!
'
);
});
});
},
},
/** 查询excel表中的坐标对应的数*/
ceshi
(){
// 假设要获取第一个 sheet 中第2行、第3列(B3)单元格的坐标和数据
const
sheetIndex
=
0
;
// 第一个 sheet 的索引为0
const
rowIndex
=
4
;
// 由于索引从0开始,所以第2行的索引为1
const
colIndex
=
2
;
// 由于索引从0开始,所以第3列的索引为2
// 获取指定 sheet 的指定单元格的数据
debugger
const
cellData
=
luckysheet
.
getCellValue
(
sheetIndex
,
colIndex
,
rowIndex
);
console
.
log
(
"
单元格数据:
"
,
cellData
);
// 获取指定 sheet 的指定单元格的坐标
const
cellCoordinate
=
luckysheet
.
getExcelCell
(
sheetIndex
,
colIndex
,
rowIndex
);
console
.
log
(
"
单元格坐标:
"
,
cellCoordinate
);
},
//下拉选择规则
handleRuleChange
(){
handleRuleChange
(){
if
(
this
.
selectedOption
===
''
)
{
if
(
this
.
selectedOption
===
''
)
{
this
.
selectedRule
=
''
;
this
.
selectedRule
=
''
;
this
.
$message
.
warning
(
"
选择规则前请先选择模板!
"
);
this
.
$message
.
warning
(
"
选择规则前请先选择模板!
"
);
return
;
// 如果按钮被禁用,提前返回,避免执行下一步操作
return
;
// 如果按钮被禁用,提前返回,避免执行下一步操作
}
}
getRule
(
this
.
selectedRule
).
then
(
response
=>
{
this
.
disableNextButton
=
this
.
selectedRule
===
''
;
const
sysRules
=
response
.
data
;
this
.
disableNextButton
=
this
.
selectedOption
===
''
;
//将接收到的json存到json_data中
let
json_data
=
JSON
.
parse
(
sysRules
.
jsons
);
let
filename
=
sysRules
.
name
;
excelRule
=
json_data
;
}).
catch
(()
=>
{
// 处理错误逻辑,这里是一个空的错误处理函数
this
.
$message
.
error
(
'
查询失败,发生未知错误!
'
);
});
},
},
/** 弹出的确认框关闭 */
/*handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {});
},*/
/** 回车事件和保存提交绑定 */
/** 回车事件和保存提交绑定 */
handleEnter
(
event
)
{
handleEnter
(
event
)
{
if
(
event
.
keyCode
===
13
)
{
if
(
event
.
keyCode
===
13
)
{
...
@@ -223,32 +151,6 @@ export default {
...
@@ -223,32 +151,6 @@ export default {
this
.
submit_from
();
this
.
submit_from
();
}
}
},
},
/** 保存到数据库*/
submit_from
()
{
const
name
=
this
.
from_name
if
(
name
!=
""
){
let
objsheet
=
luckysheet
.
getAllSheets
()
// 得到表的数据
//LuckyExcel = objsheet // 将表的数据保存本地
let
strsheet
=
JSON
.
stringify
(
objsheet
)
// 对象转化为字符串
const
data
=
{
name
:
name
,
jsons
:
strsheet
};
addMyluckyexcel
(
data
).
then
(
response
=>
{
if
(
response
.
code
==
200
){
this
.
$message
({
message
:
'
保存成功
'
,
type
:
'
success
'
});
this
.
dialogVisible
=
false
;
//this.$router.replace({ path: '/' }); //刷新整个页面会出错
//window.location.reload();//也是全局刷新,不合适
this
.
$router
.
go
(
-
1
);
}
else
{
this
.
$message
.
error
(
'
保存失败
'
);
}
});
}
else
{
this
.
$message
.
error
(
'
请输入表格名称后再进行保存!
'
);
}
},
/** 重置按钮操作 */
/** 重置按钮操作 */
resetQuery
()
{
resetQuery
()
{
//刷新下拉选框内容
//刷新下拉选框内容
...
@@ -320,66 +222,74 @@ export default {
...
@@ -320,66 +222,74 @@ export default {
luckysheet
.
create
(
options
)
luckysheet
.
create
(
options
)
},
},
/** 导入事件*/
/** 导入事件*/
handleFileChange
(
evt
)
{
handleFileChange
(
evt
)
{
var
id
=
this
.
selectedRule
;
if
(
this
.
disableNextButton
)
{
if
(
this
.
disableNextButton
)
{
this
.
$message
.
warning
(
"
请先选择模板再进行导入!
"
);
this
.
$message
.
warning
(
"
请先选择模板再进行导入!
"
);
return
false
;
// 如果按钮被禁用,提前返回,避免执行下一步操作
return
false
;
// 如果按钮被禁用,提前返回,避免执行下一步操作
}
}
let
name
=
evt
.
name
let
name
=
evt
.
name
let
suffixArr
=
name
.
split
(
'
.
'
),
let
suffixArr
=
name
.
split
(
'
.
'
),
suffix
=
suffixArr
[
suffixArr
.
length
-
1
]
suffix
=
suffixArr
[
suffixArr
.
length
-
1
]
if
(
suffix
!=
'
xlsx
'
)
{
if
(
suffix
!=
'
xlsx
'
)
{
this
.
$message
({
this
.
$message
({
message
:
"
上传格式不正确,请上传xls或者xlsx格式
"
,
message
:
"
上传格式不正确,请上传xls或者xlsx格式
"
,
type
:
"
warning
"
type
:
"
warning
"
});
});
return
return
}
}
LuckyExcel
.
transformExcelToLucky
(
LuckyExcel
.
transformExcelToLucky
(
evt
,
evt
,
function
(
exportJson
,
luckysheetfile
)
{
function
(
exportJson
)
{
if
(
exportJson
.
sheets
==
null
||
exportJson
.
sheets
.
length
==
0
)
{
console
.
log
(
"
---------------------------------------
"
+
exportJson
);
this
.
$message
({
message
:
"
导入失败,请检查上传的文件是否正确
"
,
if
(
exportJson
.
sheets
==
null
||
exportJson
.
sheets
.
length
==
0
)
{
type
:
"
warning
"
this
.
$message
({
});
message
:
"
导入失败,请检查上传的文件是否正确
"
,
return
type
:
"
warning
"
}
});
//1、循环规则
return
for
(
var
i
=
0
;
i
<
excelRule
.
length
;
i
++
)
{
}
//2、取出导入的数据
roleListid
(
id
).
then
(
response
=>
{
for
(
var
j
=
0
;
j
<
exportJson
.
sheets
[
excelRule
[
i
].
se
].
celldata
.
length
;
j
++
)
{
var
sysRules
=
JSON
.
parse
(
response
.
rows
[
0
].
detailContent
);
var
c
=
exportJson
.
sheets
[
excelRule
[
i
].
se
].
celldata
[
j
].
c
;
var
r
=
exportJson
.
sheets
[
excelRule
[
i
].
se
].
celldata
[
j
].
r
;
for
(
var
i
=
0
;
i
<
sysRules
.
length
;
i
++
)
{
if
(
r
==
excelRule
[
i
].
re
&&
c
==
excelRule
[
i
].
ce
){
let
value
;
//3、对数据赋值
var
num
=
exportJson
.
sheets
[
sysRules
[
i
].
se
].
celldata
.
length
;
excelTemp
[
excelRule
[
i
].
st
].
data
[
excelRule
[
i
].
rt
][
excelRule
[
i
].
ct
].
v
=
exportJson
.
sheets
[
excelRule
[
i
].
se
].
celldata
[
j
].
v
.
v
for
(
var
j
=
0
;
j
<
num
;
j
++
){
var
c
=
exportJson
.
sheets
[
sysRules
[
i
].
se
].
celldata
[
j
].
c
;
var
r
=
exportJson
.
sheets
[
sysRules
[
i
].
se
].
celldata
[
j
].
r
;
if
(
r
==
sysRules
[
i
].
re
&&
c
==
sysRules
[
i
].
ce
){
value
=
exportJson
.
sheets
[
sysRules
[
i
].
se
].
celldata
[
j
].
v
.
v
;
console
.
log
(
"
value是
"
+
value
);
//切换到想要的sheet
luckysheet
.
setSheetActive
(
sysRules
[
i
].
st
);
//将值放到指定位置
luckysheet
.
setCellValue
(
sysRules
[
i
].
rt
,
sysRules
[
i
].
ct
,
value
);
}
}
}
}
}
}
//4、保存
// 切换到原页面
exportJson
.
sheets
=
excelTemp
;
luckysheet
.
setSheetActive
(
0
);
luckysheet
.
destroy
()
})
luckysheet
.
create
({
})
container
:
'
luckysheet
'
,
//luckysheet is the container id
title
:
excelTempName
,
lang
:
'
zh
'
,
// 设定表格语言
showinfobar
:
false
,
data
:
exportJson
.
sheets
,
userInfo
:
exportJson
.
info
.
name
.
creator
})
}
)
},
},
/** 导出设置 */
/** 导出设置 */
handleExport
(){
handleExport
:
debounce
(
function
()
{
exportExcel
(
luckysheet
.
getAllSheets
(),
excelTempName
)
// 处理点击事件
},
exportExcel
(
luckysheet
.
getAllSheets
(),
fileName
)
},
500
),
// 设置延迟时间,单位为毫秒
}
}
// 配置项
// 配置项
111
};
};
// debounce函数定义
// debounce函数定义
function
debounce
(
func
,
delay
)
{
function
debounce
(
func
,
delay
)
{
...
@@ -394,3 +304,4 @@ function debounce(func, delay) {
...
@@ -394,3 +304,4 @@ function debounce(func, delay) {
};
};
}
}
</
script
>
</
script
>
ruoyi-ui/src/views/system/supplies/index_template.vue
View file @
dce0b449
...
@@ -115,7 +115,7 @@
...
@@ -115,7 +115,7 @@
<!-- 添加或修改Excel模板对话框 -->
<!-- 添加或修改Excel模板对话框 -->
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"500px"
append-to-body
>
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"500px"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"关联ID"
prop=
"
si
d"
>
<el-form-item
label=
"关联ID"
prop=
"
detI
d"
>
<el-select
v-model=
"form.detId"
filterable
placeholder=
"请选择关联项"
>
<el-select
v-model=
"form.detId"
filterable
placeholder=
"请选择关联项"
>
<el-option
<el-option
v-for=
"option in options3"
v-for=
"option in options3"
...
@@ -201,6 +201,9 @@ export default {
...
@@ -201,6 +201,9 @@ export default {
form
:
{
form
:
{
},
},
rules
:
{
rules
:
{
detId
:
[
{
required
:
true
,
message
:
"
关联id不能为空
"
,
trigger
:
"
change
"
}
]
},
},
date
:[],
date
:[],
filename
:
""
filename
:
""
...
...
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