Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
H
huaxin-rq
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
耿迪迪
huaxin-rq
Commits
236a20c0
Commit
236a20c0
authored
Mar 28, 2026
by
耿迪迪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
安全管理功能
parent
26ebbfa6
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
543 additions
and
200 deletions
+543
-200
TSafeInspectLedger.java
...ain/java/com/zehong/system/domain/TSafeInspectLedger.java
+4
-4
TSafeMeetingLedger.java
...ain/java/com/zehong/system/domain/TSafeMeetingLedger.java
+4
-4
TSafeTrainLedger.java
.../main/java/com/zehong/system/domain/TSafeTrainLedger.java
+5
-5
TSafeInspectLedgerServiceImpl.java
...ng/system/service/impl/TSafeInspectLedgerServiceImpl.java
+9
-5
TSafeMeetingLedgerServiceImpl.java
...ng/system/service/impl/TSafeMeetingLedgerServiceImpl.java
+9
-5
TSafeTrainLedgerServiceImpl.java
...hong/system/service/impl/TSafeTrainLedgerServiceImpl.java
+9
-5
TSafeInspectLedgerMapper.xml
...main/resources/mapper/system/TSafeInspectLedgerMapper.xml
+1
-1
TSafeMeetingLedgerMapper.xml
...main/resources/mapper/system/TSafeMeetingLedgerMapper.xml
+1
-1
TSafeTrainLedgerMapper.xml
...c/main/resources/mapper/system/TSafeTrainLedgerMapper.xml
+1
-1
index.vue
huaxin-web/src/components/MultipleFileUpload/index.vue
+172
-0
index.vue
huaxin-web/src/components/MultipleImageUpload/index.vue
+1
-1
index.vue
huaxin-web/src/views/safe/inspect/index.vue
+107
-54
index.vue
huaxin-web/src/views/safe/meeting/index.vue
+109
-56
index.vue
huaxin-web/src/views/safe/train/index.vue
+111
-58
No files found.
huaxin-system/src/main/java/com/zehong/system/domain/TSafeInspectLedger.java
View file @
236a20c0
...
@@ -27,8 +27,8 @@ public class TSafeInspectLedger extends BaseEntity
...
@@ -27,8 +27,8 @@ public class TSafeInspectLedger extends BaseEntity
private
String
content
;
private
String
content
;
/** 设备状态 */
/** 设备状态 */
@Excel
(
name
=
"
设备状态
"
)
@Excel
(
name
=
"
地点
"
)
private
Integer
address
;
private
String
address
;
/** 照片 */
/** 照片 */
@Excel
(
name
=
"照片"
)
@Excel
(
name
=
"照片"
)
...
@@ -73,12 +73,12 @@ public class TSafeInspectLedger extends BaseEntity
...
@@ -73,12 +73,12 @@ public class TSafeInspectLedger extends BaseEntity
{
{
return
content
;
return
content
;
}
}
public
void
setAddress
(
Integer
address
)
public
void
setAddress
(
String
address
)
{
{
this
.
address
=
address
;
this
.
address
=
address
;
}
}
public
Integer
getAddress
()
public
String
getAddress
()
{
{
return
address
;
return
address
;
}
}
...
...
huaxin-system/src/main/java/com/zehong/system/domain/TSafeMeetingLedger.java
View file @
236a20c0
...
@@ -27,8 +27,8 @@ public class TSafeMeetingLedger extends BaseEntity
...
@@ -27,8 +27,8 @@ public class TSafeMeetingLedger extends BaseEntity
private
String
content
;
private
String
content
;
/** 设备状态 */
/** 设备状态 */
@Excel
(
name
=
"
设备状态
"
)
@Excel
(
name
=
"
地点
"
)
private
Integer
address
;
private
String
address
;
/** 照片 */
/** 照片 */
@Excel
(
name
=
"照片"
)
@Excel
(
name
=
"照片"
)
...
@@ -73,12 +73,12 @@ public class TSafeMeetingLedger extends BaseEntity
...
@@ -73,12 +73,12 @@ public class TSafeMeetingLedger extends BaseEntity
{
{
return
content
;
return
content
;
}
}
public
void
setAddress
(
Integer
address
)
public
void
setAddress
(
String
address
)
{
{
this
.
address
=
address
;
this
.
address
=
address
;
}
}
public
Integer
getAddress
()
public
String
getAddress
()
{
{
return
address
;
return
address
;
}
}
...
...
huaxin-system/src/main/java/com/zehong/system/domain/TSafeTrainLedger.java
View file @
236a20c0
...
@@ -19,7 +19,7 @@ public class TSafeTrainLedger extends BaseEntity
...
@@ -19,7 +19,7 @@ public class TSafeTrainLedger extends BaseEntity
private
Long
trainId
;
private
Long
trainId
;
/** 检查标题 */
/** 检查标题 */
@Excel
(
name
=
"
检查
标题"
)
@Excel
(
name
=
"
培训
标题"
)
private
String
title
;
private
String
title
;
/** 内容 */
/** 内容 */
...
@@ -27,8 +27,8 @@ public class TSafeTrainLedger extends BaseEntity
...
@@ -27,8 +27,8 @@ public class TSafeTrainLedger extends BaseEntity
private
String
content
;
private
String
content
;
/** 设备状态 */
/** 设备状态 */
@Excel
(
name
=
"
设备状态
"
)
@Excel
(
name
=
"
地点
"
)
private
Integer
address
;
private
String
address
;
/** 照片 */
/** 照片 */
@Excel
(
name
=
"照片"
)
@Excel
(
name
=
"照片"
)
...
@@ -73,12 +73,12 @@ public class TSafeTrainLedger extends BaseEntity
...
@@ -73,12 +73,12 @@ public class TSafeTrainLedger extends BaseEntity
{
{
return
content
;
return
content
;
}
}
public
void
setAddress
(
Integer
address
)
public
void
setAddress
(
String
address
)
{
{
this
.
address
=
address
;
this
.
address
=
address
;
}
}
public
Integer
getAddress
()
public
String
getAddress
()
{
{
return
address
;
return
address
;
}
}
...
...
huaxin-system/src/main/java/com/zehong/system/service/impl/TSafeInspectLedgerServiceImpl.java
View file @
236a20c0
package
com
.
zehong
.
system
.
service
.
impl
;
package
com
.
zehong
.
system
.
service
.
impl
;
import
java.util.List
;
import
com.zehong.common.utils.DateUtils
;
import
com.zehong.common.utils.DateUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
com.zehong.common.utils.SecurityUtils
;
import
org.springframework.stereotype.Service
;
import
com.zehong.system.mapper.TSafeInspectLedgerMapper
;
import
com.zehong.system.domain.TSafeInspectLedger
;
import
com.zehong.system.domain.TSafeInspectLedger
;
import
com.zehong.system.mapper.TSafeInspectLedgerMapper
;
import
com.zehong.system.service.ITSafeInspectLedgerService
;
import
com.zehong.system.service.ITSafeInspectLedgerService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
/**
* 安全检查台账Service业务层处理
* 安全检查台账Service业务层处理
...
@@ -17,7 +19,7 @@ import com.zehong.system.service.ITSafeInspectLedgerService;
...
@@ -17,7 +19,7 @@ import com.zehong.system.service.ITSafeInspectLedgerService;
@Service
@Service
public
class
TSafeInspectLedgerServiceImpl
implements
ITSafeInspectLedgerService
public
class
TSafeInspectLedgerServiceImpl
implements
ITSafeInspectLedgerService
{
{
@
Autowired
@
Resource
private
TSafeInspectLedgerMapper
tSafeInspectLedgerMapper
;
private
TSafeInspectLedgerMapper
tSafeInspectLedgerMapper
;
/**
/**
...
@@ -54,6 +56,7 @@ public class TSafeInspectLedgerServiceImpl implements ITSafeInspectLedgerService
...
@@ -54,6 +56,7 @@ public class TSafeInspectLedgerServiceImpl implements ITSafeInspectLedgerService
public
int
insertTSafeInspectLedger
(
TSafeInspectLedger
tSafeInspectLedger
)
public
int
insertTSafeInspectLedger
(
TSafeInspectLedger
tSafeInspectLedger
)
{
{
tSafeInspectLedger
.
setCreateTime
(
DateUtils
.
getNowDate
());
tSafeInspectLedger
.
setCreateTime
(
DateUtils
.
getNowDate
());
tSafeInspectLedger
.
setCreateBy
(
SecurityUtils
.
getLoginUser
().
getUser
().
getNickName
());
return
tSafeInspectLedgerMapper
.
insertTSafeInspectLedger
(
tSafeInspectLedger
);
return
tSafeInspectLedgerMapper
.
insertTSafeInspectLedger
(
tSafeInspectLedger
);
}
}
...
@@ -67,6 +70,7 @@ public class TSafeInspectLedgerServiceImpl implements ITSafeInspectLedgerService
...
@@ -67,6 +70,7 @@ public class TSafeInspectLedgerServiceImpl implements ITSafeInspectLedgerService
public
int
updateTSafeInspectLedger
(
TSafeInspectLedger
tSafeInspectLedger
)
public
int
updateTSafeInspectLedger
(
TSafeInspectLedger
tSafeInspectLedger
)
{
{
tSafeInspectLedger
.
setUpdateTime
(
DateUtils
.
getNowDate
());
tSafeInspectLedger
.
setUpdateTime
(
DateUtils
.
getNowDate
());
tSafeInspectLedger
.
setUpdateBy
(
SecurityUtils
.
getLoginUser
().
getUser
().
getNickName
());
return
tSafeInspectLedgerMapper
.
updateTSafeInspectLedger
(
tSafeInspectLedger
);
return
tSafeInspectLedgerMapper
.
updateTSafeInspectLedger
(
tSafeInspectLedger
);
}
}
...
...
huaxin-system/src/main/java/com/zehong/system/service/impl/TSafeMeetingLedgerServiceImpl.java
View file @
236a20c0
package
com
.
zehong
.
system
.
service
.
impl
;
package
com
.
zehong
.
system
.
service
.
impl
;
import
java.util.List
;
import
com.zehong.common.utils.DateUtils
;
import
com.zehong.common.utils.DateUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
com.zehong.common.utils.SecurityUtils
;
import
org.springframework.stereotype.Service
;
import
com.zehong.system.mapper.TSafeMeetingLedgerMapper
;
import
com.zehong.system.domain.TSafeMeetingLedger
;
import
com.zehong.system.domain.TSafeMeetingLedger
;
import
com.zehong.system.mapper.TSafeMeetingLedgerMapper
;
import
com.zehong.system.service.ITSafeMeetingLedgerService
;
import
com.zehong.system.service.ITSafeMeetingLedgerService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
/**
* 安全例会台账Service业务层处理
* 安全例会台账Service业务层处理
...
@@ -17,7 +19,7 @@ import com.zehong.system.service.ITSafeMeetingLedgerService;
...
@@ -17,7 +19,7 @@ import com.zehong.system.service.ITSafeMeetingLedgerService;
@Service
@Service
public
class
TSafeMeetingLedgerServiceImpl
implements
ITSafeMeetingLedgerService
public
class
TSafeMeetingLedgerServiceImpl
implements
ITSafeMeetingLedgerService
{
{
@
Autowired
@
Resource
private
TSafeMeetingLedgerMapper
tSafeMeetingLedgerMapper
;
private
TSafeMeetingLedgerMapper
tSafeMeetingLedgerMapper
;
/**
/**
...
@@ -54,6 +56,7 @@ public class TSafeMeetingLedgerServiceImpl implements ITSafeMeetingLedgerService
...
@@ -54,6 +56,7 @@ public class TSafeMeetingLedgerServiceImpl implements ITSafeMeetingLedgerService
public
int
insertTSafeMeetingLedger
(
TSafeMeetingLedger
tSafeMeetingLedger
)
public
int
insertTSafeMeetingLedger
(
TSafeMeetingLedger
tSafeMeetingLedger
)
{
{
tSafeMeetingLedger
.
setCreateTime
(
DateUtils
.
getNowDate
());
tSafeMeetingLedger
.
setCreateTime
(
DateUtils
.
getNowDate
());
tSafeMeetingLedger
.
setCreateBy
(
SecurityUtils
.
getLoginUser
().
getUser
().
getNickName
());
return
tSafeMeetingLedgerMapper
.
insertTSafeMeetingLedger
(
tSafeMeetingLedger
);
return
tSafeMeetingLedgerMapper
.
insertTSafeMeetingLedger
(
tSafeMeetingLedger
);
}
}
...
@@ -67,6 +70,7 @@ public class TSafeMeetingLedgerServiceImpl implements ITSafeMeetingLedgerService
...
@@ -67,6 +70,7 @@ public class TSafeMeetingLedgerServiceImpl implements ITSafeMeetingLedgerService
public
int
updateTSafeMeetingLedger
(
TSafeMeetingLedger
tSafeMeetingLedger
)
public
int
updateTSafeMeetingLedger
(
TSafeMeetingLedger
tSafeMeetingLedger
)
{
{
tSafeMeetingLedger
.
setUpdateTime
(
DateUtils
.
getNowDate
());
tSafeMeetingLedger
.
setUpdateTime
(
DateUtils
.
getNowDate
());
tSafeMeetingLedger
.
setUpdateBy
(
SecurityUtils
.
getLoginUser
().
getUser
().
getNickName
());
return
tSafeMeetingLedgerMapper
.
updateTSafeMeetingLedger
(
tSafeMeetingLedger
);
return
tSafeMeetingLedgerMapper
.
updateTSafeMeetingLedger
(
tSafeMeetingLedger
);
}
}
...
...
huaxin-system/src/main/java/com/zehong/system/service/impl/TSafeTrainLedgerServiceImpl.java
View file @
236a20c0
package
com
.
zehong
.
system
.
service
.
impl
;
package
com
.
zehong
.
system
.
service
.
impl
;
import
java.util.List
;
import
com.zehong.common.utils.DateUtils
;
import
com.zehong.common.utils.DateUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
com.zehong.common.utils.SecurityUtils
;
import
org.springframework.stereotype.Service
;
import
com.zehong.system.mapper.TSafeTrainLedgerMapper
;
import
com.zehong.system.domain.TSafeTrainLedger
;
import
com.zehong.system.domain.TSafeTrainLedger
;
import
com.zehong.system.mapper.TSafeTrainLedgerMapper
;
import
com.zehong.system.service.ITSafeTrainLedgerService
;
import
com.zehong.system.service.ITSafeTrainLedgerService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
/**
* 安全培训台账Service业务层处理
* 安全培训台账Service业务层处理
...
@@ -17,7 +19,7 @@ import com.zehong.system.service.ITSafeTrainLedgerService;
...
@@ -17,7 +19,7 @@ import com.zehong.system.service.ITSafeTrainLedgerService;
@Service
@Service
public
class
TSafeTrainLedgerServiceImpl
implements
ITSafeTrainLedgerService
public
class
TSafeTrainLedgerServiceImpl
implements
ITSafeTrainLedgerService
{
{
@
Autowired
@
Resource
private
TSafeTrainLedgerMapper
tSafeTrainLedgerMapper
;
private
TSafeTrainLedgerMapper
tSafeTrainLedgerMapper
;
/**
/**
...
@@ -54,6 +56,7 @@ public class TSafeTrainLedgerServiceImpl implements ITSafeTrainLedgerService
...
@@ -54,6 +56,7 @@ public class TSafeTrainLedgerServiceImpl implements ITSafeTrainLedgerService
public
int
insertTSafeTrainLedger
(
TSafeTrainLedger
tSafeTrainLedger
)
public
int
insertTSafeTrainLedger
(
TSafeTrainLedger
tSafeTrainLedger
)
{
{
tSafeTrainLedger
.
setCreateTime
(
DateUtils
.
getNowDate
());
tSafeTrainLedger
.
setCreateTime
(
DateUtils
.
getNowDate
());
tSafeTrainLedger
.
setCreateBy
(
SecurityUtils
.
getLoginUser
().
getUser
().
getNickName
());
return
tSafeTrainLedgerMapper
.
insertTSafeTrainLedger
(
tSafeTrainLedger
);
return
tSafeTrainLedgerMapper
.
insertTSafeTrainLedger
(
tSafeTrainLedger
);
}
}
...
@@ -67,6 +70,7 @@ public class TSafeTrainLedgerServiceImpl implements ITSafeTrainLedgerService
...
@@ -67,6 +70,7 @@ public class TSafeTrainLedgerServiceImpl implements ITSafeTrainLedgerService
public
int
updateTSafeTrainLedger
(
TSafeTrainLedger
tSafeTrainLedger
)
public
int
updateTSafeTrainLedger
(
TSafeTrainLedger
tSafeTrainLedger
)
{
{
tSafeTrainLedger
.
setUpdateTime
(
DateUtils
.
getNowDate
());
tSafeTrainLedger
.
setUpdateTime
(
DateUtils
.
getNowDate
());
tSafeTrainLedger
.
setUpdateBy
(
SecurityUtils
.
getLoginUser
().
getUser
().
getNickName
());
return
tSafeTrainLedgerMapper
.
updateTSafeTrainLedger
(
tSafeTrainLedger
);
return
tSafeTrainLedgerMapper
.
updateTSafeTrainLedger
(
tSafeTrainLedger
);
}
}
...
...
huaxin-system/src/main/resources/mapper/system/TSafeInspectLedgerMapper.xml
View file @
236a20c0
...
@@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select
id=
"selectTSafeInspectLedgerList"
parameterType=
"TSafeInspectLedger"
resultMap=
"TSafeInspectLedgerResult"
>
<select
id=
"selectTSafeInspectLedgerList"
parameterType=
"TSafeInspectLedger"
resultMap=
"TSafeInspectLedgerResult"
>
<include
refid=
"selectTSafeInspectLedgerVo"
/>
<include
refid=
"selectTSafeInspectLedgerVo"
/>
<where>
<where>
<if
test=
"title != null and title != ''"
>
and title
= #{title}
</if>
<if
test=
"title != null and title != ''"
>
and title
like concat('%', #{title}, '%')
</if>
<if
test=
"content != null and content != ''"
>
and content = #{content}
</if>
<if
test=
"content != null and content != ''"
>
and content = #{content}
</if>
<if
test=
"address != null "
>
and address = #{address}
</if>
<if
test=
"address != null "
>
and address = #{address}
</if>
<if
test=
"photo != null and photo != ''"
>
and photo = #{photo}
</if>
<if
test=
"photo != null and photo != ''"
>
and photo = #{photo}
</if>
...
...
huaxin-system/src/main/resources/mapper/system/TSafeMeetingLedgerMapper.xml
View file @
236a20c0
...
@@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select
id=
"selectTSafeMeetingLedgerList"
parameterType=
"TSafeMeetingLedger"
resultMap=
"TSafeMeetingLedgerResult"
>
<select
id=
"selectTSafeMeetingLedgerList"
parameterType=
"TSafeMeetingLedger"
resultMap=
"TSafeMeetingLedgerResult"
>
<include
refid=
"selectTSafeMeetingLedgerVo"
/>
<include
refid=
"selectTSafeMeetingLedgerVo"
/>
<where>
<where>
<if
test=
"title != null and title != ''"
>
and title
= #{title}
</if>
<if
test=
"title != null and title != ''"
>
and title
like concat('%', #{title}, '%')
</if>
<if
test=
"content != null and content != ''"
>
and content = #{content}
</if>
<if
test=
"content != null and content != ''"
>
and content = #{content}
</if>
<if
test=
"address != null "
>
and address = #{address}
</if>
<if
test=
"address != null "
>
and address = #{address}
</if>
<if
test=
"photo != null and photo != ''"
>
and photo = #{photo}
</if>
<if
test=
"photo != null and photo != ''"
>
and photo = #{photo}
</if>
...
...
huaxin-system/src/main/resources/mapper/system/TSafeTrainLedgerMapper.xml
View file @
236a20c0
...
@@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select
id=
"selectTSafeTrainLedgerList"
parameterType=
"TSafeTrainLedger"
resultMap=
"TSafeTrainLedgerResult"
>
<select
id=
"selectTSafeTrainLedgerList"
parameterType=
"TSafeTrainLedger"
resultMap=
"TSafeTrainLedgerResult"
>
<include
refid=
"selectTSafeTrainLedgerVo"
/>
<include
refid=
"selectTSafeTrainLedgerVo"
/>
<where>
<where>
<if
test=
"title != null and title != ''"
>
and title
= #{title}
</if>
<if
test=
"title != null and title != ''"
>
and title
like concat('%', #{title}, '%')
</if>
<if
test=
"content != null and content != ''"
>
and content = #{content}
</if>
<if
test=
"content != null and content != ''"
>
and content = #{content}
</if>
<if
test=
"address != null "
>
and address = #{address}
</if>
<if
test=
"address != null "
>
and address = #{address}
</if>
<if
test=
"photo != null and photo != ''"
>
and photo = #{photo}
</if>
<if
test=
"photo != null and photo != ''"
>
and photo = #{photo}
</if>
...
...
huaxin-web/src/components/MultipleFileUpload/index.vue
0 → 100644
View file @
236a20c0
<
template
>
<div
class=
"upload-file"
>
<el-upload
:action=
"uploadImgUrl"
:headers=
"headers"
multiple
list-type=
"text"
:fileType=
"fileType"
:file-list=
"fileList"
:limit=
"limit"
:before-upload=
"handleBeforeUpload"
:on-exceed=
"handleExceed"
:on-success=
"handleUploadSuccess"
:on-error=
"handleUploadError"
:on-preview=
"handlePictureCardPreview"
:on-remove=
"handleRemove"
:class=
"
{hide: isHide}"
>
<!-- 上传按钮 -->
<el-button
size=
"mini"
type=
"primary"
>
选取文件
</el-button>
</el-upload>
<!-- 上传提示 -->
<div
class=
"el-upload__tip"
slot=
"tip"
v-if=
"showTip"
>
请上传
<template
v-if=
"fileSize"
>
大小不超过
<b
style=
"color: #f56c6c"
>
{{
fileSize
}}
MB
</b>
</
template
>
<
template
v-if=
"fileType"
>
格式为
<b
style=
"color: #f56c6c"
>
{{
fileType
.
join
(
"/"
)
}}
</b>
</
template
>
的文件,且不超过{{limit}}个
</div>
</div>
</template>
<
script
>
import
{
getToken
}
from
"@/utils/auth"
;
export
default
{
name
:
"multiple-image-upload"
,
props
:
{
// 值
value
:
[
String
,
Object
,
Array
],
// 大小限制(MB)
fileSize
:
{
type
:
Number
,
default
:
5
,
},
//回显数组
/*fileList: {
type: Array,
default: () => [],
},*/
// 文件类型, 例如['png', 'jpg', 'jpeg']
fileType
:
{
type
:
Array
,
default
:
()
=>
[
"doc"
,
"xls"
,
"ppt"
,
"txt"
,
"pdf"
],
},
limit
:
{
type
:
Number
,
default
:
5
},
// 是否显示提示
isShowTip
:
{
type
:
Boolean
,
default
:
true
,
},
},
data
(){
return
{
uploadImgUrl
:
process
.
env
.
VUE_APP_BASE_API
+
"/common/upload"
,
// 上传的图片服务器地址
headers
:
{
Authorization
:
"Bearer "
+
getToken
(),
},
previewImg
:
null
,
dialogImageUrl
:
null
,
fileList
:
[],
isHide
:
false
}
},
computed
:
{
// 是否显示提示
showTip
()
{
return
this
.
isShowTip
&&
(
this
.
fileType
||
this
.
fileSize
);
},
},
methods
:
{
// 上传前校检格式和大小
handleBeforeUpload
(
file
)
{
// 校检文件类型
if
(
this
.
fileType
)
{
let
fileExtension
=
""
;
if
(
file
.
name
.
lastIndexOf
(
"."
)
>
-
1
)
{
fileExtension
=
file
.
name
.
slice
(
file
.
name
.
lastIndexOf
(
"."
)
+
1
);
}
const
isTypeOk
=
this
.
fileType
.
some
((
type
)
=>
{
if
(
file
.
type
.
indexOf
(
type
)
>
-
1
)
return
true
;
if
(
fileExtension
&&
fileExtension
.
indexOf
(
type
)
>
-
1
)
return
true
;
return
false
;
});
if
(
!
isTypeOk
)
{
this
.
$message
.
error
(
`文件格式不正确, 请上传
${
this
.
fileType
.
join
(
"/"
)}
格式文件!`
);
return
false
;
}
}
// 校检文件大小
if
(
this
.
fileSize
)
{
const
isLt
=
file
.
size
/
1024
/
1024
<
this
.
fileSize
;
if
(
!
isLt
)
{
this
.
$message
.
error
(
`上传文件大小不能超过
${
this
.
fileSize
}
MB!`
);
return
false
;
}
}
return
true
;
},
// 文件个数超出
handleExceed
()
{
this
.
$message
.
error
(
`只允许上传单`
+
this
.
limit
+
`文件`
);
},
handleUploadSuccess
(
res
,
file
,
fileList
)
{
if
(
res
.
code
==
200
)
{
let
files
=
this
.
getFile
(
fileList
);
this
.
$message
.
success
(
"上传成功"
);
this
.
$emit
(
"input"
,
JSON
.
stringify
(
files
));
this
.
hideUpload
(
fileList
);
}
},
handleUploadError
()
{
this
.
$message
.
error
(
"上传失败, 请重试"
);
},
handlePictureCardPreview
(
file
)
{
this
.
dialogImageUrl
=
file
.
url
;
this
.
$refs
.
previewImg
.
showViewer
=
true
;
},
handleRemove
(
file
,
fileList
)
{
let
files
=
this
.
getFile
(
fileList
);
this
.
$emit
(
"input"
,
JSON
.
stringify
(
files
));
this
.
hideUpload
(
fileList
);
},
getFile
(
fileList
){
if
(
fileList
.
every
(
item
=>
item
.
status
==
"success"
))
{
//由于fileList是所有的文件包含之前已上传过的,这里需要做区分(带response的即为新上传的)
return
fileList
.
map
(
item
=>
{
const
files
=
{
name
:
item
.
name
};
if
(
item
.
response
){
files
.
url
=
item
.
response
.
url
;
}
else
{
files
.
url
=
item
.
url
;
}
return
files
;
})
}
else
{
return
[];
}
},
hideUpload
(
fileList
){
if
(
fileList
.
length
>
4
){
this
.
isHide
=
true
;
}
else
{
this
.
isHide
=
false
;
}
}
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
.
hide
:
:
v-deep
.
el-upload--picture-card
{
display
:
none
;
}
</
style
>
huaxin-web/src/components/MultipleImageUpload/index.vue
View file @
236a20c0
...
@@ -163,7 +163,7 @@
...
@@ -163,7 +163,7 @@
}
}
},
},
hideUpload
(
fileList
){
hideUpload
(
fileList
){
if
(
fileList
.
length
>
4
){
if
(
fileList
.
length
>
this
.
limit
){
this
.
isHide
=
true
;
this
.
isHide
=
true
;
}
else
{
}
else
{
this
.
isHide
=
false
;
this
.
isHide
=
false
;
...
...
huaxin-web/src/views/safe/inspect/index.vue
View file @
236a20c0
...
@@ -10,33 +10,6 @@
...
@@ -10,33 +10,6 @@
@
keyup
.
enter
.
native=
"handleQuery"
@
keyup
.
enter
.
native=
"handleQuery"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"设备状态"
prop=
"address"
>
<el-input
v-model=
"queryParams.address"
placeholder=
"请输入设备状态"
clearable
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"是否删除(0正常,1删除)"
prop=
"isDel"
>
<el-input
v-model=
"queryParams.isDel"
placeholder=
"请输入是否删除(0正常,1删除)"
clearable
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remarks"
>
<el-input
v-model=
"queryParams.remarks"
placeholder=
"请输入备注"
clearable
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
...
@@ -51,7 +24,7 @@
...
@@ -51,7 +24,7 @@
icon=
"el-icon-plus"
icon=
"el-icon-plus"
size=
"mini"
size=
"mini"
@
click=
"handleAdd"
@
click=
"handleAdd"
v-hasPermi=
"['s
ystem:ledger
:add']"
v-hasPermi=
"['s
afe:inspect
:add']"
>
新增
</el-button>
>
新增
</el-button>
</el-col>
</el-col>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
...
@@ -62,7 +35,7 @@
...
@@ -62,7 +35,7 @@
size=
"mini"
size=
"mini"
:disabled=
"single"
:disabled=
"single"
@
click=
"handleUpdate"
@
click=
"handleUpdate"
v-hasPermi=
"['s
ystem:ledger
:edit']"
v-hasPermi=
"['s
afe:inspect
:edit']"
>
修改
</el-button>
>
修改
</el-button>
</el-col>
</el-col>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
...
@@ -73,7 +46,7 @@
...
@@ -73,7 +46,7 @@
size=
"mini"
size=
"mini"
:disabled=
"multiple"
:disabled=
"multiple"
@
click=
"handleDelete"
@
click=
"handleDelete"
v-hasPermi=
"['s
ystem:ledger
:remove']"
v-hasPermi=
"['s
afe:inspect
:remove']"
>
删除
</el-button>
>
删除
</el-button>
</el-col>
</el-col>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
...
@@ -84,7 +57,7 @@
...
@@ -84,7 +57,7 @@
size=
"mini"
size=
"mini"
:loading=
"exportLoading"
:loading=
"exportLoading"
@
click=
"handleExport"
@
click=
"handleExport"
v-hasPermi=
"['s
ystem:ledger
:export']"
v-hasPermi=
"['s
afe:inspect
:export']"
>
导出
</el-button>
>
导出
</el-button>
</el-col>
</el-col>
<right-toolbar
:showSearch
.
sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
<right-toolbar
:showSearch
.
sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
...
@@ -92,13 +65,42 @@
...
@@ -92,13 +65,42 @@
<el-table
v-loading=
"loading"
:data=
"ledgerList"
@
selection-change=
"handleSelectionChange"
>
<el-table
v-loading=
"loading"
:data=
"ledgerList"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"备注"
align=
"center"
prop=
"inspectId"
/>
<el-table-column
label=
"检查标题"
align=
"center"
prop=
"title"
/>
<el-table-column
label=
"检查标题"
align=
"center"
prop=
"title"
/>
<el-table-column
label=
"内容"
align=
"center"
prop=
"content"
/>
<el-table-column
label=
"内容"
align=
"center"
prop=
"content"
/>
<el-table-column
label=
"设备状态"
align=
"center"
prop=
"address"
/>
<el-table-column
label=
"地点"
align=
"center"
prop=
"address"
/>
<el-table-column
label=
"照片"
align=
"center"
prop=
"photo"
/>
<el-table-column
label=
"照片"
align=
"center"
prop=
"photo"
>
<el-table-column
label=
"附件"
align=
"center"
prop=
"attachment"
/>
<template
slot-scope=
"scope"
>
<el-table-column
label=
"是否删除(0正常,1删除)"
align=
"center"
prop=
"isDel"
/>
<el-image
v-if=
"scope.row.photo"
:src=
"scope.row.photo.split(',')[0]"
:preview-src-list=
"scope.row.photo.split(',')"
:z-index=
"9999"
style=
"width: 30px;height: 30px;"
></el-image>
<span
v-else
>
-
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"附件"
align=
"center"
prop=
"attachment"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.attachment"
>
<el-dropdown
trigger=
"click"
placement=
"bottom"
>
<span
style=
"color: #1c84c6; cursor: pointer;text-align: center"
>
查看附件 (
{{
JSON
.
parse
(
scope
.
row
.
attachment
).
length
}}
)
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
v-for=
"(file, index) in JSON.parse(scope.row.attachment)"
:key=
"index"
>
<a
@
click=
"downloadFile(file)"
style=
"color: #1c84c6; text-decoration: none; display: block;"
>
<i
class=
"el-icon-document"
></i>
{{
file
.
name
||
`附件${index + 1
}
`
}}
<
/a
>
<
/el-dropdown-item
>
<
/el-dropdown-menu
>
<
/el-dropdown
>
<
/div
>
<
span
v
-
else
>-<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"创建人"
align
=
"center"
prop
=
"createBy"
/>
<
el
-
table
-
column
label
=
"创建时间"
align
=
"center"
prop
=
"createTime"
/>
<
el
-
table
-
column
label
=
"备注"
align
=
"center"
prop
=
"remarks"
/>
<
el
-
table
-
column
label
=
"备注"
align
=
"center"
prop
=
"remarks"
/>
<
el
-
table
-
column
label
=
"操作"
align
=
"center"
class
-
name
=
"small-padding fixed-width"
>
<
el
-
table
-
column
label
=
"操作"
align
=
"center"
class
-
name
=
"small-padding fixed-width"
>
<
template
slot
-
scope
=
"scope"
>
<
template
slot
-
scope
=
"scope"
>
...
@@ -107,14 +109,14 @@
...
@@ -107,14 +109,14 @@
type
=
"text"
type
=
"text"
icon
=
"el-icon-edit"
icon
=
"el-icon-edit"
@
click
=
"handleUpdate(scope.row)"
@
click
=
"handleUpdate(scope.row)"
v-hasPermi=
"['s
ystem:ledger
:edit']"
v
-
hasPermi
=
"['s
afe:inspect
:edit']"
>
修改
<
/el-button
>
>
修改
<
/el-button
>
<
el
-
button
<
el
-
button
size
=
"mini"
size
=
"mini"
type
=
"text"
type
=
"text"
icon
=
"el-icon-delete"
icon
=
"el-icon-delete"
@
click
=
"handleDelete(scope.row)"
@
click
=
"handleDelete(scope.row)"
v-hasPermi=
"['s
ystem:ledger
:remove']"
v
-
hasPermi
=
"['s
afe:inspect
:remove']"
>
删除
<
/el-button
>
>
删除
<
/el-button
>
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
...
@@ -129,25 +131,28 @@
...
@@ -129,25 +131,28 @@
/>
/>
<!--
添加或修改安全检查台账对话框
-->
<!--
添加或修改安全检查台账对话框
-->
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
width=
"
500px"
append-to-body
>
<
el
-
dialog
:
title
=
"title"
:
visible
.
sync
=
"open"
width
=
"
900px"
append
-
to
-
body
destroy
-
on
-
close
:
close
-
on
-
click
-
modal
=
"false"
>
<
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=
"检查标题"
prop=
"title"
>
<
el
-
row
>
<el-input
v-model=
"form.title"
placeholder=
"请输入检查标题"
/>
<
el
-
col
:
span
=
"12"
>
</el-form-item>
<
el
-
form
-
item
label
=
"检查标题"
prop
=
"title"
>
<el-form-item
label=
"内容"
>
<
el
-
input
v
-
model
=
"form.title"
placeholder
=
"请输入检查标题"
/>
<editor
v-model=
"form.content"
:min-height=
"192"
/>
<
/el-form-item
>
<
/el-col
>
<
/el-row
>
<
el
-
form
-
item
label
=
"内容"
prop
=
"content"
>
<
el
-
input
type
=
"textarea"
:
autosize
=
"{ minRows: 4
}
"
v
-
model
=
"form.content"
placeholder
=
"请输入内容"
/>
<
/el-form-item
>
<
/el-form-item
>
<el-form-item
label=
"
设备状态
"
prop=
"address"
>
<
el
-
form
-
item
label
=
"
地点
"
prop
=
"address"
>
<el-input
v-model=
"form.address"
placeholder=
"请输入
设备状态
"
/>
<
el
-
input
v
-
model
=
"form.address"
placeholder
=
"请输入
地点
"
/>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"照片"
prop
=
"photo"
>
<
el
-
form
-
item
label
=
"照片"
prop
=
"photo"
>
<el-input
v-model=
"form.photo"
type=
"textarea"
placeholder=
"请输入内容"
/>
<!--
<
imageUpload
v
-
model
=
"form.photo"
/>-->
<
MultipleImageUpload
v
-
model
=
"form.photo"
ref
=
"photo"
/>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"附件"
prop
=
"attachment"
>
<
el
-
form
-
item
label
=
"附件"
prop
=
"attachment"
>
<el-input
v-model=
"form.attachment"
type=
"textarea"
placeholder=
"请输入内容"
/>
<!--
<
fileUpload
v
-
model
=
"form.attachment"
/>-->
</el-form-item>
<
MultipleFileUpload
v
-
model
=
"form.attachment"
ref
=
"attachment"
/>
<el-form-item
label=
"是否删除(0正常,1删除)"
prop=
"isDel"
>
<el-input
v-model=
"form.isDel"
placeholder=
"请输入是否删除(0正常,1删除)"
/>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"备注"
prop
=
"remarks"
>
<
el
-
form
-
item
label
=
"备注"
prop
=
"remarks"
>
<
el
-
input
v
-
model
=
"form.remarks"
placeholder
=
"请输入备注"
/>
<
el
-
input
v
-
model
=
"form.remarks"
placeholder
=
"请输入备注"
/>
...
@@ -164,11 +169,14 @@
...
@@ -164,11 +169,14 @@
<
script
>
<
script
>
import
{
listLedger
,
getLedger
,
delLedger
,
addLedger
,
updateLedger
,
exportLedger
}
from
"@/api/safe/inspect"
;
import
{
listLedger
,
getLedger
,
delLedger
,
addLedger
,
updateLedger
,
exportLedger
}
from
"@/api/safe/inspect"
;
import
Editor
from
'@/components/Editor'
;
import
Editor
from
'@/components/Editor'
;
import
MultipleImageUpload
from
'@/components/MultipleImageUpload'
;
import
MultipleFileUpload
from
'@/components/MultipleFileUpload'
;
export
default
{
export
default
{
name
:
"Ledger"
,
name
:
"Ledger"
,
components
:
{
components
:
{
Editor
,
Editor
,
MultipleImageUpload
,
MultipleFileUpload
}
,
}
,
data
()
{
data
()
{
return
{
return
{
...
@@ -208,6 +216,15 @@ export default {
...
@@ -208,6 +216,15 @@ export default {
form
:
{
}
,
form
:
{
}
,
// 表单校验
// 表单校验
rules
:
{
rules
:
{
title
:
[
{
required
:
true
,
message
:
"检查标题不能为空"
,
trigger
:
"blur"
}
],
content
:
[
{
required
:
true
,
message
:
"内容不能为空"
,
trigger
:
"blur"
}
],
address
:
[
{
required
:
true
,
message
:
"地点不能为空"
,
trigger
:
"blur"
}
],
}
}
}
;
}
;
}
,
}
,
...
@@ -259,7 +276,8 @@ export default {
...
@@ -259,7 +276,8 @@ export default {
}
,
}
,
// 多选框选中数据
// 多选框选中数据
handleSelectionChange
(
selection
)
{
handleSelectionChange
(
selection
)
{
this
.
ids
=
selection
.
map
(
item
=>
item
.
inspectId
)
this
.
ids
=
selection
.
map
(
item
=>
item
.
inspectId
);
this
.
titles
=
selection
.
map
(
item
=>
item
.
title
);
this
.
single
=
selection
.
length
!==
1
this
.
single
=
selection
.
length
!==
1
this
.
multiple
=
!
selection
.
length
this
.
multiple
=
!
selection
.
length
}
,
}
,
...
@@ -275,6 +293,14 @@ export default {
...
@@ -275,6 +293,14 @@ export default {
const
inspectId
=
row
.
inspectId
||
this
.
ids
const
inspectId
=
row
.
inspectId
||
this
.
ids
getLedger
(
inspectId
).
then
(
response
=>
{
getLedger
(
inspectId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
form
=
response
.
data
;
this
.
$nextTick
(()
=>
{
if
(
this
.
form
.
photo
){
this
.
$refs
.
photo
.
fileList
=
this
.
form
.
photo
.
split
(
","
).
map
(
item
=>
{
return
{
url
:
item
}}
);
}
if
(
this
.
form
.
attachment
){
this
.
$refs
.
attachment
.
fileList
=
JSON
.
parse
(
this
.
form
.
attachment
)
}
}
)
this
.
open
=
true
;
this
.
open
=
true
;
this
.
title
=
"修改安全检查台账"
;
this
.
title
=
"修改安全检查台账"
;
}
);
}
);
...
@@ -302,7 +328,8 @@ export default {
...
@@ -302,7 +328,8 @@ export default {
/** 删除按钮操作 */
/** 删除按钮操作 */
handleDelete
(
row
)
{
handleDelete
(
row
)
{
const
inspectIds
=
row
.
inspectId
||
this
.
ids
;
const
inspectIds
=
row
.
inspectId
||
this
.
ids
;
this
.
$confirm
(
'是否确认删除安全检查台账编号为"'
+
inspectIds
+
'"的数据项?'
,
"警告"
,
{
const
titles
=
row
.
title
||
this
.
titles
;
this
.
$confirm
(
'是否确认删除安全检查台账标题为"'
+
titles
+
'"的数据项?'
,
"警告"
,
{
confirmButtonText
:
"确定"
,
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
type
:
"warning"
...
@@ -327,6 +354,32 @@ export default {
...
@@ -327,6 +354,32 @@ export default {
this
.
download
(
response
.
msg
);
this
.
download
(
response
.
msg
);
this
.
exportLoading
=
false
;
this
.
exportLoading
=
false
;
}
).
catch
(()
=>
{
}
);
}
).
catch
(()
=>
{
}
);
}
,
async
downloadFile
(
file
)
{
try
{
const
response
=
await
fetch
(
file
.
url
)
const
blob
=
await
response
.
blob
()
// 创建下载链接
const
url
=
window
.
URL
.
createObjectURL
(
blob
)
const
link
=
document
.
createElement
(
'a'
)
link
.
href
=
url
link
.
download
=
file
.
name
// 这里可以自定义文件名
document
.
body
.
appendChild
(
link
)
link
.
click
()
// 清理
document
.
body
.
removeChild
(
link
)
window
.
URL
.
revokeObjectURL
(
url
)
this
.
$message
.
success
(
'开始下载'
)
}
catch
(
error
)
{
console
.
error
(
'下载失败:'
,
error
)
this
.
$message
.
error
(
'下载失败,请重试'
)
// 降级方案:直接打开新窗口
window
.
open
(
file
.
url
,
'_blank'
)
}
}
}
}
}
}
;
}
;
...
...
huaxin-web/src/views/safe/meeting/index.vue
View file @
236a20c0
...
@@ -10,33 +10,6 @@
...
@@ -10,33 +10,6 @@
@
keyup
.
enter
.
native=
"handleQuery"
@
keyup
.
enter
.
native=
"handleQuery"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"设备状态"
prop=
"address"
>
<el-input
v-model=
"queryParams.address"
placeholder=
"请输入设备状态"
clearable
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"是否删除(0正常,1删除)"
prop=
"isDel"
>
<el-input
v-model=
"queryParams.isDel"
placeholder=
"请输入是否删除(0正常,1删除)"
clearable
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remarks"
>
<el-input
v-model=
"queryParams.remarks"
placeholder=
"请输入备注"
clearable
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
...
@@ -51,7 +24,7 @@
...
@@ -51,7 +24,7 @@
icon=
"el-icon-plus"
icon=
"el-icon-plus"
size=
"mini"
size=
"mini"
@
click=
"handleAdd"
@
click=
"handleAdd"
v-hasPermi=
"['s
ystem:ledger
:add']"
v-hasPermi=
"['s
afe:meeting
:add']"
>
新增
</el-button>
>
新增
</el-button>
</el-col>
</el-col>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
...
@@ -62,7 +35,7 @@
...
@@ -62,7 +35,7 @@
size=
"mini"
size=
"mini"
:disabled=
"single"
:disabled=
"single"
@
click=
"handleUpdate"
@
click=
"handleUpdate"
v-hasPermi=
"['s
ystem:ledger
:edit']"
v-hasPermi=
"['s
afe:meeting
:edit']"
>
修改
</el-button>
>
修改
</el-button>
</el-col>
</el-col>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
...
@@ -73,7 +46,7 @@
...
@@ -73,7 +46,7 @@
size=
"mini"
size=
"mini"
:disabled=
"multiple"
:disabled=
"multiple"
@
click=
"handleDelete"
@
click=
"handleDelete"
v-hasPermi=
"['s
ystem:ledger
:remove']"
v-hasPermi=
"['s
afe:meeting
:remove']"
>
删除
</el-button>
>
删除
</el-button>
</el-col>
</el-col>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
...
@@ -84,7 +57,7 @@
...
@@ -84,7 +57,7 @@
size=
"mini"
size=
"mini"
:loading=
"exportLoading"
:loading=
"exportLoading"
@
click=
"handleExport"
@
click=
"handleExport"
v-hasPermi=
"['s
ystem:ledger
:export']"
v-hasPermi=
"['s
afe:meeting
:export']"
>
导出
</el-button>
>
导出
</el-button>
</el-col>
</el-col>
<right-toolbar
:showSearch
.
sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
<right-toolbar
:showSearch
.
sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
...
@@ -92,13 +65,42 @@
...
@@ -92,13 +65,42 @@
<el-table
v-loading=
"loading"
:data=
"ledgerList"
@
selection-change=
"handleSelectionChange"
>
<el-table
v-loading=
"loading"
:data=
"ledgerList"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"备注"
align=
"center"
prop=
"meetingId"
/>
<el-table-column
label=
"例会标题"
align=
"center"
prop=
"title"
/>
<el-table-column
label=
"例会标题"
align=
"center"
prop=
"title"
/>
<el-table-column
label=
"内容"
align=
"center"
prop=
"content"
/>
<el-table-column
label=
"内容"
align=
"center"
prop=
"content"
/>
<el-table-column
label=
"设备状态"
align=
"center"
prop=
"address"
/>
<el-table-column
label=
"地点"
align=
"center"
prop=
"address"
/>
<el-table-column
label=
"照片"
align=
"center"
prop=
"photo"
/>
<el-table-column
label=
"照片"
align=
"center"
prop=
"photo"
>
<el-table-column
label=
"附件"
align=
"center"
prop=
"attachment"
/>
<template
slot-scope=
"scope"
>
<el-table-column
label=
"是否删除(0正常,1删除)"
align=
"center"
prop=
"isDel"
/>
<el-image
v-if=
"scope.row.photo"
:src=
"scope.row.photo.split(',')[0]"
:preview-src-list=
"scope.row.photo.split(',')"
:z-index=
"9999"
style=
"width: 30px;height: 30px;"
></el-image>
<span
v-else
>
-
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"附件"
align=
"center"
prop=
"attachment"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.attachment"
>
<el-dropdown
trigger=
"click"
placement=
"bottom"
>
<span
style=
"color: #1c84c6; cursor: pointer;text-align: center"
>
查看附件 (
{{
JSON
.
parse
(
scope
.
row
.
attachment
).
length
}}
)
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
v-for=
"(file, index) in JSON.parse(scope.row.attachment)"
:key=
"index"
>
<a
@
click=
"downloadFile(file)"
style=
"color: #1c84c6; text-decoration: none; display: block;"
>
<i
class=
"el-icon-document"
></i>
{{
file
.
name
||
`附件${index + 1
}
`
}}
<
/a
>
<
/el-dropdown-item
>
<
/el-dropdown-menu
>
<
/el-dropdown
>
<
/div
>
<
span
v
-
else
>-<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"创建人"
align
=
"center"
prop
=
"createBy"
/>
<
el
-
table
-
column
label
=
"创建时间"
align
=
"center"
prop
=
"createTime"
/>
<
el
-
table
-
column
label
=
"备注"
align
=
"center"
prop
=
"remarks"
/>
<
el
-
table
-
column
label
=
"备注"
align
=
"center"
prop
=
"remarks"
/>
<
el
-
table
-
column
label
=
"操作"
align
=
"center"
class
-
name
=
"small-padding fixed-width"
>
<
el
-
table
-
column
label
=
"操作"
align
=
"center"
class
-
name
=
"small-padding fixed-width"
>
<
template
slot
-
scope
=
"scope"
>
<
template
slot
-
scope
=
"scope"
>
...
@@ -107,14 +109,14 @@
...
@@ -107,14 +109,14 @@
type
=
"text"
type
=
"text"
icon
=
"el-icon-edit"
icon
=
"el-icon-edit"
@
click
=
"handleUpdate(scope.row)"
@
click
=
"handleUpdate(scope.row)"
v-hasPermi=
"['s
ystem:ledger
:edit']"
v
-
hasPermi
=
"['s
afe:meeting
:edit']"
>
修改
<
/el-button
>
>
修改
<
/el-button
>
<
el
-
button
<
el
-
button
size
=
"mini"
size
=
"mini"
type
=
"text"
type
=
"text"
icon
=
"el-icon-delete"
icon
=
"el-icon-delete"
@
click
=
"handleDelete(scope.row)"
@
click
=
"handleDelete(scope.row)"
v-hasPermi=
"['s
ystem:ledger
:remove']"
v
-
hasPermi
=
"['s
afe:meeting
:remove']"
>
删除
<
/el-button
>
>
删除
<
/el-button
>
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
...
@@ -129,28 +131,31 @@
...
@@ -129,28 +131,31 @@
/>
/>
<!--
添加或修改安全例会台账对话框
-->
<!--
添加或修改安全例会台账对话框
-->
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
width=
"
500px"
append-to-body
>
<
el
-
dialog
:
title
=
"title"
:
visible
.
sync
=
"open"
width
=
"
900px"
append
-
to
-
body
destroy
-
on
-
close
:
close
-
on
-
click
-
modal
=
"false"
>
<
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=
"例会标题"
prop=
"title"
>
<
el
-
row
>
<el-input
v-model=
"form.title"
placeholder=
"请输入例会标题"
/>
<
el
-
col
:
span
=
"12"
>
<
el
-
form
-
item
label
=
"例会标题"
prop
=
"title"
>
<
el
-
input
v
-
model
=
"form.title"
placeholder
=
"请输入例会标题"
/>
<
/el-form-item
>
<
/el-col
>
<
/el-row
>
<
el
-
form
-
item
label
=
"内容"
prop
=
"content"
>
<
el
-
input
type
=
"textarea"
:
autosize
=
"{ minRows: 4
}
"
v
-
model
=
"form.content"
placeholder
=
"请输入内容"
/>
<
/el-form-item
>
<
/el-form-item
>
<el-form-item
label=
"内容"
>
<
el
-
form
-
item
label
=
"地点"
prop
=
"address"
>
<editor
v-model=
"form.content"
:min-height=
"192"
/>
<
el
-
input
v
-
model
=
"form.address"
placeholder
=
"请输入地点"
/>
</el-form-item>
<el-form-item
label=
"设备状态"
prop=
"address"
>
<el-input
v-model=
"form.address"
placeholder=
"请输入设备状态"
/>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"照片"
prop
=
"photo"
>
<
el
-
form
-
item
label
=
"照片"
prop
=
"photo"
>
<el-input
v-model=
"form.photo"
type=
"textarea"
placeholder=
"请输入内容"
/>
<!--
<
imageUpload
v
-
model
=
"form.photo"
/>-->
<
MultipleImageUpload
v
-
model
=
"form.photo"
ref
=
"photo"
/>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"附件"
prop
=
"attachment"
>
<
el
-
form
-
item
label
=
"附件"
prop
=
"attachment"
>
<el-input
v-model=
"form.attachment"
type=
"textarea"
placeholder=
"请输入内容"
/>
<!--
<
fileUpload
v
-
model
=
"form.attachment"
/>-->
</el-form-item>
<
MultipleFileUpload
v
-
model
=
"form.attachment"
ref
=
"attachment"
/>
<el-form-item
label=
"是否删除(0正常,1删除)"
prop=
"isDel"
>
<el-input
v-model=
"form.isDel"
placeholder=
"请输入是否删除(0正常,1删除)"
/>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"备注"
prop
=
"remarks"
>
<
el
-
form
-
item
label
=
"备注"
prop
=
"remarks"
>
<el-input
v-model=
"form.remarks"
placeholder=
"请输入备注"
/>
<
el
-
input
type
=
"textarea"
v
-
model
=
"form.remarks"
placeholder
=
"请输入备注"
/>
<
/el-form-item
>
<
/el-form-item
>
<
/el-form
>
<
/el-form
>
<
div
slot
=
"footer"
class
=
"dialog-footer"
>
<
div
slot
=
"footer"
class
=
"dialog-footer"
>
...
@@ -164,11 +169,14 @@
...
@@ -164,11 +169,14 @@
<
script
>
<
script
>
import
{
listLedger
,
getLedger
,
delLedger
,
addLedger
,
updateLedger
,
exportLedger
}
from
"@/api/safe/meeting"
;
import
{
listLedger
,
getLedger
,
delLedger
,
addLedger
,
updateLedger
,
exportLedger
}
from
"@/api/safe/meeting"
;
import
Editor
from
'@/components/Editor'
;
import
Editor
from
'@/components/Editor'
;
import
MultipleImageUpload
from
'@/components/MultipleImageUpload'
;
import
MultipleFileUpload
from
'@/components/MultipleFileUpload'
;
export
default
{
export
default
{
name
:
"Ledger"
,
name
:
"Ledger"
,
components
:
{
components
:
{
Editor
,
Editor
,
MultipleImageUpload
,
MultipleFileUpload
,
}
,
}
,
data
()
{
data
()
{
return
{
return
{
...
@@ -208,7 +216,16 @@ export default {
...
@@ -208,7 +216,16 @@ export default {
form
:
{
}
,
form
:
{
}
,
// 表单校验
// 表单校验
rules
:
{
rules
:
{
}
title
:
[
{
required
:
true
,
message
:
"例会标题不能为空"
,
trigger
:
"blur"
}
],
content
:
[
{
required
:
true
,
message
:
"内容不能为空"
,
trigger
:
"blur"
}
],
address
:
[
{
required
:
true
,
message
:
"地点不能为空"
,
trigger
:
"blur"
}
],
}
,
}
;
}
;
}
,
}
,
created
()
{
created
()
{
...
@@ -259,7 +276,8 @@ export default {
...
@@ -259,7 +276,8 @@ export default {
}
,
}
,
// 多选框选中数据
// 多选框选中数据
handleSelectionChange
(
selection
)
{
handleSelectionChange
(
selection
)
{
this
.
ids
=
selection
.
map
(
item
=>
item
.
meetingId
)
this
.
ids
=
selection
.
map
(
item
=>
item
.
meetingId
);
this
.
titles
=
selection
.
map
(
item
=>
item
.
title
);
this
.
single
=
selection
.
length
!==
1
this
.
single
=
selection
.
length
!==
1
this
.
multiple
=
!
selection
.
length
this
.
multiple
=
!
selection
.
length
}
,
}
,
...
@@ -275,6 +293,14 @@ export default {
...
@@ -275,6 +293,14 @@ export default {
const
meetingId
=
row
.
meetingId
||
this
.
ids
const
meetingId
=
row
.
meetingId
||
this
.
ids
getLedger
(
meetingId
).
then
(
response
=>
{
getLedger
(
meetingId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
form
=
response
.
data
;
this
.
$nextTick
(()
=>
{
if
(
this
.
form
.
photo
){
this
.
$refs
.
photo
.
fileList
=
this
.
form
.
photo
.
split
(
","
).
map
(
item
=>
{
return
{
url
:
item
}}
);
}
if
(
this
.
form
.
attachment
){
this
.
$refs
.
attachment
.
fileList
=
JSON
.
parse
(
this
.
form
.
attachment
)
}
}
)
this
.
open
=
true
;
this
.
open
=
true
;
this
.
title
=
"修改安全例会台账"
;
this
.
title
=
"修改安全例会台账"
;
}
);
}
);
...
@@ -302,7 +328,8 @@ export default {
...
@@ -302,7 +328,8 @@ export default {
/** 删除按钮操作 */
/** 删除按钮操作 */
handleDelete
(
row
)
{
handleDelete
(
row
)
{
const
meetingIds
=
row
.
meetingId
||
this
.
ids
;
const
meetingIds
=
row
.
meetingId
||
this
.
ids
;
this
.
$confirm
(
'是否确认删除安全例会台账编号为"'
+
meetingIds
+
'"的数据项?'
,
"警告"
,
{
const
titles
=
row
.
title
||
this
.
titles
;
this
.
$confirm
(
'是否确认删除安全例会台账标题为"'
+
titles
+
'"的数据项?'
,
"警告"
,
{
confirmButtonText
:
"确定"
,
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
type
:
"warning"
...
@@ -327,6 +354,32 @@ export default {
...
@@ -327,6 +354,32 @@ export default {
this
.
download
(
response
.
msg
);
this
.
download
(
response
.
msg
);
this
.
exportLoading
=
false
;
this
.
exportLoading
=
false
;
}
).
catch
(()
=>
{
}
);
}
).
catch
(()
=>
{
}
);
}
,
async
downloadFile
(
file
)
{
try
{
const
response
=
await
fetch
(
file
.
url
)
const
blob
=
await
response
.
blob
()
// 创建下载链接
const
url
=
window
.
URL
.
createObjectURL
(
blob
)
const
link
=
document
.
createElement
(
'a'
)
link
.
href
=
url
link
.
download
=
file
.
name
// 这里可以自定义文件名
document
.
body
.
appendChild
(
link
)
link
.
click
()
// 清理
document
.
body
.
removeChild
(
link
)
window
.
URL
.
revokeObjectURL
(
url
)
this
.
$message
.
success
(
'开始下载'
)
}
catch
(
error
)
{
console
.
error
(
'下载失败:'
,
error
)
this
.
$message
.
error
(
'下载失败,请重试'
)
// 降级方案:直接打开新窗口
window
.
open
(
file
.
url
,
'_blank'
)
}
}
}
}
}
}
;
}
;
...
...
huaxin-web/src/views/safe/train/index.vue
View file @
236a20c0
<
template
>
<
template
>
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
label=
"
检查
标题"
prop=
"title"
>
<el-form-item
label=
"
培训
标题"
prop=
"title"
>
<el-input
<el-input
v-model=
"queryParams.title"
v-model=
"queryParams.title"
placeholder=
"请输入检查标题"
placeholder=
"请输入培训标题"
clearable
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"设备状态"
prop=
"address"
>
<el-input
v-model=
"queryParams.address"
placeholder=
"请输入设备状态"
clearable
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"是否删除(0正常,1删除)"
prop=
"isDel"
>
<el-input
v-model=
"queryParams.isDel"
placeholder=
"请输入是否删除(0正常,1删除)"
clearable
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remarks"
>
<el-input
v-model=
"queryParams.remarks"
placeholder=
"请输入备注"
clearable
clearable
size=
"small"
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
@
keyup
.
enter
.
native=
"handleQuery"
...
@@ -51,7 +24,7 @@
...
@@ -51,7 +24,7 @@
icon=
"el-icon-plus"
icon=
"el-icon-plus"
size=
"mini"
size=
"mini"
@
click=
"handleAdd"
@
click=
"handleAdd"
v-hasPermi=
"['s
ystem:ledger
:add']"
v-hasPermi=
"['s
afe:trian
:add']"
>
新增
</el-button>
>
新增
</el-button>
</el-col>
</el-col>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
...
@@ -62,7 +35,7 @@
...
@@ -62,7 +35,7 @@
size=
"mini"
size=
"mini"
:disabled=
"single"
:disabled=
"single"
@
click=
"handleUpdate"
@
click=
"handleUpdate"
v-hasPermi=
"['s
ystem:ledger
:edit']"
v-hasPermi=
"['s
afe:trian
:edit']"
>
修改
</el-button>
>
修改
</el-button>
</el-col>
</el-col>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
...
@@ -73,7 +46,7 @@
...
@@ -73,7 +46,7 @@
size=
"mini"
size=
"mini"
:disabled=
"multiple"
:disabled=
"multiple"
@
click=
"handleDelete"
@
click=
"handleDelete"
v-hasPermi=
"['s
ystem:ledger
:remove']"
v-hasPermi=
"['s
afe:trian
:remove']"
>
删除
</el-button>
>
删除
</el-button>
</el-col>
</el-col>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
...
@@ -84,7 +57,7 @@
...
@@ -84,7 +57,7 @@
size=
"mini"
size=
"mini"
:loading=
"exportLoading"
:loading=
"exportLoading"
@
click=
"handleExport"
@
click=
"handleExport"
v-hasPermi=
"['s
ystem:ledger
:export']"
v-hasPermi=
"['s
afe:trian
:export']"
>
导出
</el-button>
>
导出
</el-button>
</el-col>
</el-col>
<right-toolbar
:showSearch
.
sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
<right-toolbar
:showSearch
.
sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
...
@@ -92,13 +65,42 @@
...
@@ -92,13 +65,42 @@
<el-table
v-loading=
"loading"
:data=
"ledgerList"
@
selection-change=
"handleSelectionChange"
>
<el-table
v-loading=
"loading"
:data=
"ledgerList"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"备注"
align=
"center"
prop=
"trainId"
/>
<el-table-column
label=
"培训标题"
align=
"center"
prop=
"title"
/>
<el-table-column
label=
"检查标题"
align=
"center"
prop=
"title"
/>
<el-table-column
label=
"内容"
align=
"center"
prop=
"content"
/>
<el-table-column
label=
"内容"
align=
"center"
prop=
"content"
/>
<el-table-column
label=
"设备状态"
align=
"center"
prop=
"address"
/>
<el-table-column
label=
"地点"
align=
"center"
prop=
"address"
/>
<el-table-column
label=
"照片"
align=
"center"
prop=
"photo"
/>
<el-table-column
label=
"照片"
align=
"center"
prop=
"photo"
>
<el-table-column
label=
"附件"
align=
"center"
prop=
"attachment"
/>
<template
slot-scope=
"scope"
>
<el-table-column
label=
"是否删除(0正常,1删除)"
align=
"center"
prop=
"isDel"
/>
<el-image
v-if=
"scope.row.photo"
:src=
"scope.row.photo.split(',')[0]"
:preview-src-list=
"scope.row.photo.split(',')"
:z-index=
"9999"
style=
"width: 30px;height: 30px;"
></el-image>
<span
v-else
>
-
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"附件"
align=
"center"
prop=
"attachment"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.attachment"
>
<el-dropdown
trigger=
"click"
placement=
"bottom"
>
<span
style=
"color: #1c84c6; cursor: pointer;text-align: center"
>
查看附件 (
{{
JSON
.
parse
(
scope
.
row
.
attachment
).
length
}}
)
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
v-for=
"(file, index) in JSON.parse(scope.row.attachment)"
:key=
"index"
>
<a
@
click=
"downloadFile(file)"
style=
"color: #1c84c6; text-decoration: none; display: block;"
>
<i
class=
"el-icon-document"
></i>
{{
file
.
name
||
`附件${index + 1
}
`
}}
<
/a
>
<
/el-dropdown-item
>
<
/el-dropdown-menu
>
<
/el-dropdown
>
<
/div
>
<
span
v
-
else
>-<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"创建人"
align
=
"center"
prop
=
"createBy"
/>
<
el
-
table
-
column
label
=
"创建时间"
align
=
"center"
prop
=
"createTime"
/>
<
el
-
table
-
column
label
=
"备注"
align
=
"center"
prop
=
"remarks"
/>
<
el
-
table
-
column
label
=
"备注"
align
=
"center"
prop
=
"remarks"
/>
<
el
-
table
-
column
label
=
"操作"
align
=
"center"
class
-
name
=
"small-padding fixed-width"
>
<
el
-
table
-
column
label
=
"操作"
align
=
"center"
class
-
name
=
"small-padding fixed-width"
>
<
template
slot
-
scope
=
"scope"
>
<
template
slot
-
scope
=
"scope"
>
...
@@ -107,14 +109,14 @@
...
@@ -107,14 +109,14 @@
type
=
"text"
type
=
"text"
icon
=
"el-icon-edit"
icon
=
"el-icon-edit"
@
click
=
"handleUpdate(scope.row)"
@
click
=
"handleUpdate(scope.row)"
v-hasPermi=
"['s
ystem:ledger
:edit']"
v
-
hasPermi
=
"['s
afe:trian
:edit']"
>
修改
<
/el-button
>
>
修改
<
/el-button
>
<
el
-
button
<
el
-
button
size
=
"mini"
size
=
"mini"
type
=
"text"
type
=
"text"
icon
=
"el-icon-delete"
icon
=
"el-icon-delete"
@
click
=
"handleDelete(scope.row)"
@
click
=
"handleDelete(scope.row)"
v-hasPermi=
"['s
ystem:ledger
:remove']"
v
-
hasPermi
=
"['s
afe:trian
:remove']"
>
删除
<
/el-button
>
>
删除
<
/el-button
>
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
...
@@ -129,25 +131,28 @@
...
@@ -129,25 +131,28 @@
/>
/>
<!--
添加或修改安全培训台账对话框
-->
<!--
添加或修改安全培训台账对话框
-->
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
width=
"
500px"
append-to-body
>
<
el
-
dialog
:
title
=
"title"
:
visible
.
sync
=
"open"
width
=
"
900px"
append
-
to
-
body
destroy
-
on
-
close
:
close
-
on
-
click
-
modal
=
"false"
>
<
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=
"检查标题"
prop=
"title"
>
<
el
-
row
>
<el-input
v-model=
"form.title"
placeholder=
"请输入检查标题"
/>
<
el
-
col
:
span
=
"12"
>
</el-form-item>
<
el
-
form
-
item
label
=
"培训标题"
prop
=
"title"
>
<el-form-item
label=
"内容"
>
<
el
-
input
v
-
model
=
"form.title"
placeholder
=
"请输入培训标题"
/>
<editor
v-model=
"form.content"
:min-height=
"192"
/>
<
/el-form-item
>
<
/el-col
>
<
/el-row
>
<
el
-
form
-
item
label
=
"内容"
prop
=
"content"
>
<
el
-
input
type
=
"textarea"
:
autosize
=
"{ minRows: 4
}
"
v
-
model
=
"form.content"
placeholder
=
"请输入内容"
/>
<
/el-form-item
>
<
/el-form-item
>
<el-form-item
label=
"
设备状态
"
prop=
"address"
>
<
el
-
form
-
item
label
=
"
地点
"
prop
=
"address"
>
<el-input
v-model=
"form.address"
placeholder=
"请输入
设备状态
"
/>
<
el
-
input
v
-
model
=
"form.address"
placeholder
=
"请输入
地点
"
/>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"照片"
prop
=
"photo"
>
<
el
-
form
-
item
label
=
"照片"
prop
=
"photo"
>
<el-input
v-model=
"form.photo"
type=
"textarea"
placeholder=
"请输入内容"
/>
<!--
<
imageUpload
v
-
model
=
"form.photo"
/>-->
<
MultipleImageUpload
v
-
model
=
"form.photo"
ref
=
"photo"
/>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"附件"
prop
=
"attachment"
>
<
el
-
form
-
item
label
=
"附件"
prop
=
"attachment"
>
<el-input
v-model=
"form.attachment"
type=
"textarea"
placeholder=
"请输入内容"
/>
<!--
<
fileUpload
v
-
model
=
"form.attachment"
/>-->
</el-form-item>
<
MultipleFileUpload
v
-
model
=
"form.attachment"
ref
=
"attachment"
/>
<el-form-item
label=
"是否删除(0正常,1删除)"
prop=
"isDel"
>
<el-input
v-model=
"form.isDel"
placeholder=
"请输入是否删除(0正常,1删除)"
/>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"备注"
prop
=
"remarks"
>
<
el
-
form
-
item
label
=
"备注"
prop
=
"remarks"
>
<
el
-
input
v
-
model
=
"form.remarks"
placeholder
=
"请输入备注"
/>
<
el
-
input
v
-
model
=
"form.remarks"
placeholder
=
"请输入备注"
/>
...
@@ -164,11 +169,14 @@
...
@@ -164,11 +169,14 @@
<
script
>
<
script
>
import
{
listLedger
,
getLedger
,
delLedger
,
addLedger
,
updateLedger
,
exportLedger
}
from
"@/api/safe/train"
;
import
{
listLedger
,
getLedger
,
delLedger
,
addLedger
,
updateLedger
,
exportLedger
}
from
"@/api/safe/train"
;
import
Editor
from
'@/components/Editor'
;
import
Editor
from
'@/components/Editor'
;
import
MultipleImageUpload
from
'@/components/MultipleImageUpload'
;
import
MultipleFileUpload
from
'@/components/MultipleFileUpload'
;
export
default
{
export
default
{
name
:
"Ledger"
,
name
:
"Ledger"
,
components
:
{
components
:
{
Editor
,
Editor
,
MultipleImageUpload
,
MultipleFileUpload
}
,
}
,
data
()
{
data
()
{
return
{
return
{
...
@@ -208,6 +216,15 @@ export default {
...
@@ -208,6 +216,15 @@ export default {
form
:
{
}
,
form
:
{
}
,
// 表单校验
// 表单校验
rules
:
{
rules
:
{
title
:
[
{
required
:
true
,
message
:
"培训标题不能为空"
,
trigger
:
"blur"
}
],
content
:
[
{
required
:
true
,
message
:
"内容不能为空"
,
trigger
:
"blur"
}
],
address
:
[
{
required
:
true
,
message
:
"地点不能为空"
,
trigger
:
"blur"
}
],
}
}
}
;
}
;
}
,
}
,
...
@@ -259,7 +276,8 @@ export default {
...
@@ -259,7 +276,8 @@ export default {
}
,
}
,
// 多选框选中数据
// 多选框选中数据
handleSelectionChange
(
selection
)
{
handleSelectionChange
(
selection
)
{
this
.
ids
=
selection
.
map
(
item
=>
item
.
trainId
)
this
.
ids
=
selection
.
map
(
item
=>
item
.
trainId
);
this
.
titles
=
selection
.
map
(
item
=>
item
.
title
);
this
.
single
=
selection
.
length
!==
1
this
.
single
=
selection
.
length
!==
1
this
.
multiple
=
!
selection
.
length
this
.
multiple
=
!
selection
.
length
}
,
}
,
...
@@ -272,9 +290,17 @@ export default {
...
@@ -272,9 +290,17 @@ export default {
/** 修改按钮操作 */
/** 修改按钮操作 */
handleUpdate
(
row
)
{
handleUpdate
(
row
)
{
this
.
reset
();
this
.
reset
();
const
trainId
=
row
.
trainId
||
this
.
ids
const
trainId
=
row
.
trainId
||
this
.
ids
;
getLedger
(
trainId
).
then
(
response
=>
{
getLedger
(
trainId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
form
=
response
.
data
;
this
.
$nextTick
(()
=>
{
if
(
this
.
form
.
photo
){
this
.
$refs
.
photo
.
fileList
=
this
.
form
.
photo
.
split
(
","
).
map
(
item
=>
{
return
{
url
:
item
}}
);
}
if
(
this
.
form
.
attachment
){
this
.
$refs
.
attachment
.
fileList
=
JSON
.
parse
(
this
.
form
.
attachment
)
}
}
)
this
.
open
=
true
;
this
.
open
=
true
;
this
.
title
=
"修改安全培训台账"
;
this
.
title
=
"修改安全培训台账"
;
}
);
}
);
...
@@ -302,7 +328,8 @@ export default {
...
@@ -302,7 +328,8 @@ export default {
/** 删除按钮操作 */
/** 删除按钮操作 */
handleDelete
(
row
)
{
handleDelete
(
row
)
{
const
trainIds
=
row
.
trainId
||
this
.
ids
;
const
trainIds
=
row
.
trainId
||
this
.
ids
;
this
.
$confirm
(
'是否确认删除安全培训台账编号为"'
+
trainIds
+
'"的数据项?'
,
"警告"
,
{
const
titles
=
row
.
title
||
this
.
titles
;
this
.
$confirm
(
'是否确认删除安全培训台账标题为"'
+
titles
+
'"的数据项?'
,
"警告"
,
{
confirmButtonText
:
"确定"
,
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
type
:
"warning"
...
@@ -327,6 +354,32 @@ export default {
...
@@ -327,6 +354,32 @@ export default {
this
.
download
(
response
.
msg
);
this
.
download
(
response
.
msg
);
this
.
exportLoading
=
false
;
this
.
exportLoading
=
false
;
}
).
catch
(()
=>
{
}
);
}
).
catch
(()
=>
{
}
);
}
,
async
downloadFile
(
file
)
{
try
{
const
response
=
await
fetch
(
file
.
url
)
const
blob
=
await
response
.
blob
()
// 创建下载链接
const
url
=
window
.
URL
.
createObjectURL
(
blob
)
const
link
=
document
.
createElement
(
'a'
)
link
.
href
=
url
link
.
download
=
file
.
name
// 这里可以自定义文件名
document
.
body
.
appendChild
(
link
)
link
.
click
()
// 清理
document
.
body
.
removeChild
(
link
)
window
.
URL
.
revokeObjectURL
(
url
)
this
.
$message
.
success
(
'开始下载'
)
}
catch
(
error
)
{
console
.
error
(
'下载失败:'
,
error
)
this
.
$message
.
error
(
'下载失败,请重试'
)
// 降级方案:直接打开新窗口
window
.
open
(
file
.
url
,
'_blank'
)
}
}
}
}
}
}
;
}
;
...
...
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