Commit 3bf889bc authored by 赵啸非's avatar 赵啸非

修改人员学习

parent a42bcdbf
......@@ -10,5 +10,5 @@ VUE_APP_WEBSOCKET_API =127.0.0.1:18222/m
# 门户登录地址
VUE_APP_PORTAL_URL = /portal_home
VUE_APP_PORTAL_PORT = 11089
VUE_APP_PORTAL_PORT = 17300
......@@ -5,4 +5,4 @@ VUE_APP_API_BASE_URL=/basics_api
#图片地址拼接
VUE_APP_PORTAL_URL = /portal_home
VUE_APP_PORTAL_PORT = 11089
VUE_APP_PORTAL_PORT = 17300
......@@ -47,6 +47,8 @@ export default {
this.form = Object.assign({}, this.form, res.entity);
this.dict = Object.assign({}, this.dict, res.dict);
console.log(this.form)
this.afterRender(res);
})
.catch(error => {
......
......@@ -264,7 +264,7 @@ export default {
// 自定义索引号
handleIndexMethod(index) {
//prePageResult 每页条数
console.log("index:"+index)
// console.log("index:"+index)
let size = this.tableData.pageInfo.prePageResult;
let page = this.tableData.pageInfo.currPage;
let count = parseInt(size) * (parseInt(page) - 1)
......
......@@ -50,7 +50,7 @@
<el-link
:underline="false"
style="font-size: 12px"
@click="handleDelete(index)"
@click="handleDelete(file.url,index)"
type="danger"
>删除</el-link
>
......@@ -99,11 +99,35 @@ export default {
},
data() {
return {
number: 0,
uploadFileUrl: "/study/file/commonupload", // 上传的地址
uploadList: [],
headers:{},
fileList: [],
};
},
/* watch: {
value: {
handler(val) {
console.log("value",this.value);
if (val) {
let temp = 1;
// 首先将值转为数组
const list = Array.isArray(val) ? val : this.value.split(',');
// 然后将数组转为对象数组
this.fileList = list.map(item => {
item = { name: item.name, url: item.url};
item.uid = item.uid || new Date().getTime() + temp++;
return item;
});
} else {
this.fileList = [];
return [];
}
},
}
},*/
computed: {
// 是否显示提示
showTip() {
......@@ -113,20 +137,17 @@ export default {
list() {
let temp = 1;
if (this.value) {
console.log("value",this.value)
// 首先将值转为数组
const list = Array.isArray(this.value) ? this.value : [this.value];
// 然后将数组转为对象数组
return list.map((item) => {
if (typeof item === "string") {
if(this.fileName!=''){
item = { name: this.fileName, url: item };
}else{
item = { name: item, url: item };
}
}
this.fileList = list.map(item => {
item = { name: item.name, url: item.url};
item.uid = item.uid || new Date().getTime() + temp++;
return item;
});
return this.fileList;
} else {
this.fileList = [];
return [];
......@@ -160,11 +181,12 @@ export default {
return false;
}
}
this.number++;
return true;
},
// 文件个数超出
handleExceed() {
this.$message.error(`只允许上传单个文件`);
this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`);
},
// 上传失败
handleUploadError(err) {
......@@ -172,19 +194,34 @@ export default {
},
// 上传成功回调
handleUploadSuccess(res, file) {
this.$message.success("上传成功");
this.$emit("input", res.url);
this.fileName=res.fileName
this.$emit("getFileName", res.fileName);
if (res.code === 1) {
this.uploadList.push({ name: res.fileName, url: res.url });
console.log("uploadList:",this.uploadList)
if (this.uploadList.length === this.number) {
this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
this.number = 0;
this.$emit("input", this.fileList);
}
} else {
this.$message.error(res.msg);
}
// this.$message.success("上传成功");
// this.$emit("input", res.url);
// this.fileName=res.fileName
// this.$emit("getFileName", res.fileName);
},
// 删除文件
handleDelete(index) {
this.fileList.splice(index, 1);
this.$emit("input", '');
handleDelete(url,index) {
//todo 接口请求删除
this.value=this.value.filter(item=>item.url!=url)
// this.fileList.splice(index, 1);
this.$emit("input", this.value);
},
// 获取文件名称
getFileName(name) {
if (name.lastIndexOf("/") > -1) {
//console.log("name",name)
if (name&&name.lastIndexOf("/") > -1) {
return name.slice(name.lastIndexOf("/") + 1).toLowerCase();
} else {
return name;
......@@ -192,7 +229,7 @@ export default {
}
},
created() {
this.fileList = this.list;
//this.fileList = this.list;
},
};
</script>
......
......@@ -3,7 +3,6 @@
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-dialog
width="30%"
title="选择部门"
......@@ -114,7 +113,6 @@
</el-dialog>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field :span="22" label="标题" prop="title" v-model="form.title" placeholder="请输入标题"/>
......@@ -132,8 +130,12 @@
<Field :span="22" label="是否置顶" prop="top" v-model="form.top" type="radio" :enumData="dict.top" placeholder="请选择是否置顶"/>
<Field :span="22" label="已读要求" prop="readRequest" v-model="form.readRequest" type="radio" :enumData="dict.readRequest" placeholder="请选择已读要求"/>
<Field :span="22" label="公告内容"><editor v-model="form.noticeContent" :min-height="512"/></Field>
<Field :span="22" label="公告文件路径"><fileUpload v-model="form.filePath" @getFileName="getNoticeFileName" prePath="/file/fileupload"/></Field>
<Field :span="22" label="公告内容">
<editor v-model="form.noticeContent" :min-height="512"/>
</Field>
<Field :span="22" label="公告文件路径">
<fileUpload v-model="form.filePath" fileNumber="5" prePath="/file/fileupload"/>
</Field>
</el-row>
......@@ -146,14 +148,15 @@
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
import FileUpload from '@/components/FileUpload';
import Editor from '@/components/Editor';
export default {
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
import FileUpload from '@/components/FileUpload';
import Editor from '@/components/Editor';
export default {
mixins: [form],
components: {
dialogShow ,
dialogShow,
FileUpload,
Editor,
},
......@@ -161,8 +164,8 @@
return {
node: {},
data: [],
deptIds:[],
personIds:[],
deptIds: [],
personIds: [],
personPageInfoData: [],
deptChecked: [],
tree: [],
......@@ -186,7 +189,7 @@
title: "学习公告",
// 是否显示弹出层
open: false,
toString:[
toString: [
"noticeType",
"pubDeptId",
"viewPersion",
......@@ -196,23 +199,20 @@
// 表单校验
rules: {
title: [
{required: true,message: "请输入标题", trigger: "blur" },
{max: 256,message: "最多只能录入256个字符",trigger: "blur",},
{required: true, message: "请输入标题", trigger: "blur"},
{max: 256, message: "最多只能录入256个字符", trigger: "blur",},
],
viewPersion: [
{required: true,message: "请输入查看人员", trigger: "blur" },
{required: true, message: "请输入查看人员", trigger: "blur"},
],
top: [
{required: true,message: "请输入是否置顶", trigger: "blur" },
{required: true, message: "请输入是否置顶", trigger: "blur"},
],
}
};
},
methods: {
getNoticeFileName(fileName) {
this.form.fileName = fileName;
},
searchConfirm() {
this.getPersonList({'userType': 2});
},
......@@ -220,8 +220,6 @@
personSearchClear() {
this.searchform = {'userType': 2};
},
handleSelectionChange(val) {
//判断是否选中
console.log("selected", val);
......@@ -327,10 +325,10 @@
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="notice/edit";
this.query = {id: row.id};
this.urls.currUrl = "notice/edit";
this.getData();
this.pageInfo.type="edit"
this.pageInfo.type = "edit"
this.title = "修改学习公告";
},
/** 新增 */
......@@ -338,27 +336,70 @@
this.reset()
this.urls.currUrl = "notice/add";
this.getData();
this.pageInfo.type="add"
this.pageInfo.type = "add"
this.title = "新增学习公告";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="notice/view";
this.query = {id: row.id};
this.urls.currUrl = "notice/view";
this.getData();
this.pageInfo.type="view"
this.pageInfo.type = "view"
this.title = "学习公告详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
beforeRender(data) {
//降filepath转换成数组
if(data.entity.fileName === null || data.entity.fileName === undefined || data.entity.fileName === ''){
data.entity.filePath = []
return data
}
const nameArrays = data.entity.fileName.split(';');
const pathArrays = data.entity.filePath.split(';');
let arrs = []
for (let i = 0; i < nameArrays.length; i++) {
let obj = {name: nameArrays[i], url: pathArrays[i]}
arrs.push(obj)
}
data.entity.filePath = arrs
return data;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
beforeSubmit(data) {
if (Array.isArray(data.filePath)) {
const fileNameArray = data.filePath.map((element, index) => {
if (index === data.filePath.length - 1) {
return element.name;
} else {
return element.name + ";";
}
});
const fileName = fileNameArray.join("")
const filePathArray = data.filePath.map((element, index) => {
if (index === data.filePath.length - 1) {
return element.url;
} else {
return element.url + ";";
}
});
const filePath = filePathArray.join("")
data.filePath = filePath;
data.fileName = fileName;
}
return data;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
......@@ -367,17 +408,17 @@
// 表单重置
reset() {
this.form = {
title : "",
noticeType : 0,
pubDeptId : null,
pubDeptName : "",
viewPersion : 0,
top : 0,
readRequest : 0,
noticeContent : "",
filePath : "",
fileName : "",
remark : "",
title: "",
noticeType: 0,
pubDeptId: null,
pubDeptName: "",
viewPersion: 0,
top: 0,
readRequest: 0,
noticeContent: "",
filePath: [],
fileName: "",
remark: "",
};
this.resetForm("form");
},
......@@ -387,5 +428,5 @@
}
},
},
};
};
</script>
......@@ -5,21 +5,21 @@
<el-col :span="24" style="display:flex;justify-content:center;">
<el-card class="box-card">
<el-row>
<span class="my-custom-text">{{form.title}}</span>
<span class="my-custom-text">{{ form.title }}</span>
<el-button type="primary" style="float: right" @click="$router.go(-1)" size="small">返回</el-button>
</el-row>
<!-- <el-button type="primary" @click="$router.go(-1)" size="small">返回</el-button>-->
<el-divider style="width: 100%"></el-divider>
<el-descriptions style="text-align: center;width:50%; margin: auto" :column="3" >
<el-descriptions-item label-width="0" label="公告类型" >
<el-descriptions style="text-align: center;width:50%; margin: auto" :column="3">
<el-descriptions-item label-width="0" label="公告类型">
{{ util_formatters("noticetType", form.noticetType) }}
</el-descriptions-item>
<el-descriptions-item label="发布时间" label-width="0" >
{{util_formatterDate(form.createTime)}}
<el-descriptions-item label="发布时间" label-width="0">
{{ util_formatterDate(form.createTime) }}
</el-descriptions-item>
<el-descriptions-item label-width="0" label="发布部门">
{{form.deptName}}
{{ form.deptName }}
</el-descriptions-item>
</el-descriptions>
<el-divider style="width: 100%"></el-divider>
......@@ -28,19 +28,29 @@
<el-divider style="width: 100%"></el-divider>
<div v-if="isImage">
<img :src="form.filePath" alt="图片描述">
</div>
<div v-else-if="isVideo">
<video id="myVideo" controls>
<source :src="form.filePath" type="video/mp4">
</video>
</div>
<ul class="attachment-list">
<li v-for="(file, index) in attachmentList" :key="index">
<div v-else>
<el-link type="primary" :href="form.filePath" >{{form.fileName}}</el-link>
<div class="file-preview">
<template v-if="checkImage(file)">
<img :src="file.url" alt=""/>
</template>
<template v-else-if="checkVideo(file)">
<video :src="file.url" controls preload="metadata" width="200"></video>
</template>
<template v-else>
<el-link type="primary" :href="file.url">{{ file.fileName }}</el-link>
</template>
</div>
<div class="file-info">
<span class="file-name">{{ file.fileName }}</span>
</div>
<el-divider style="width: 100%"></el-divider>
</li>
</ul>
</el-card>
</el-col>
</el-row>
......@@ -49,59 +59,69 @@
</template>
<script>
import view from "@/assets/mixins/view";
export default {
import view from "@/assets/mixins/view";
export default {
mixins: [view],
components: {
},
components: {},
methods: {
afterRender(data) {
this.checkFileType()
beforeRender(data) {
const nameArrays =data.entity.fileName.split(';');
const pathArrays =data.entity.filePath.split(';');
for (let i = 0; i < nameArrays.length; i++) {
let obj={fileName: nameArrays[i],url:pathArrays[i]}
this.attachmentList.push(obj)
}
return data
},
checkFileType() {
const extension = this.form.fileName.split('.').pop().toLowerCase();
checkImage(file) {
const extension = file.fileName.split('.').pop().toLowerCase();
if (['jpg', 'jpeg', 'png', 'gif'].indexOf(extension) !== -1) {
this.isImage = true;
}else if (['mp4'].indexOf(extension) !== -1) {
this.isVideo=true
return true;
} else {
return false;
}
else {
this.isImage = false;
},
checkVideo(file) {
const extension = file.fileName.split('.').pop().toLowerCase();
if (['mp4', 'MP4'].indexOf(extension) !== -1) {
return true
} else {
return false;
}
},
},
data() {
return {
attachmentList: [],
isImage: false,
isVideo: false,
size:"small",
column:2,
toString:[
size: "small",
column: 2,
toString: [
"noticetType",
"noticeStatus",
"top",
],
toArrays: [
],
toDate: [
]
}
toArrays: [],
toDate: []
}
}
}
</script>
<style lang="less">
.labelClass{
.labelClass {
width: 200px;
}
.el-descriptions__body{
.el-descriptions__body {
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
.contentClass {
}
......@@ -119,7 +139,7 @@
font-weight: bold;
}
.el-divider{
.el-divider {
margin: 18px 0;
background: 0 0;
border-top: 1px solid #E6EBF5;
......
......@@ -133,7 +133,7 @@
<editor v-model="form.studyContent" :min-height="256"/>
</Field>
<Field :span="22" label="项目附件">
<fileUpload v-model="form.filePath" @getFileName="getProjectFileName" prePath="/file/fileupload"/>
<fileUpload v-model="form.filePath" fileNumber="5" prePath="/file/fileupload"/>
</Field>
</el-row>
......@@ -361,10 +361,51 @@ export default {
this.open = false;
},
/**获取数据后弹框 */
beforeRender(data) {
//降filepath转换成数组
if(data.entity.fileName === null || data.entity.fileName === undefined || data.entity.fileName === ''){
data.entity.filePath = []
return data
}
const nameArrays = data.entity.fileName.split(';');
const pathArrays = data.entity.filePath.split(';');
let arrs = []
for (let i = 0; i < nameArrays.length; i++) {
let obj = {name: nameArrays[i], url: pathArrays[i]}
arrs.push(obj)
}
data.entity.filePath = arrs
return data;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
beforeSubmit(data) {
if (Array.isArray(data.filePath)) {
const fileNameArray = data.filePath.map((element, index) => {
if (index === data.filePath.length - 1) {
return element.name;
} else {
return element.name + ";";
}
});
const fileName = fileNameArray.join("")
const filePathArray = data.filePath.map((element, index) => {
if (index === data.filePath.length - 1) {
return element.url;
} else {
return element.url + ";";
}
});
const filePath = filePathArray.join("")
data.filePath = filePath;
data.fileName = fileName;
}
return data;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
......
......@@ -36,8 +36,26 @@
<div class="ql-editor" v-html="form.studyContent"></div>
<el-divider style="width: 100%"></el-divider>
<el-link type="primary" :href="form.filePath" >{{form.fileName}}</el-link>
<ul class="attachment-list">
<li v-for="(file, index) in attachmentList" :key="index">
<div class="file-preview">
<template v-if="checkImage(file)">
<img :src="file.url" alt=""/>
</template>
<template v-else-if="checkVideo(file)">
<video :src="file.url" controls preload="metadata" width="200"></video>
</template>
<template v-else>
<el-link type="primary" :href="file.url">{{ file.fileName }}</el-link>
</template>
</div>
<div class="file-info">
<span class="file-name">{{ file.fileName }}</span>
</div>
<el-divider style="width: 100%"></el-divider>
</li>
</ul>
</el-card>
</el-col>
</el-row>
......@@ -52,10 +70,38 @@
components: {
},
methods: {
beforeRender(data) {
const nameArrays =data.entity.fileName.split(';');
const pathArrays =data.entity.filePath.split(';');
for (let i = 0; i < nameArrays.length; i++) {
let obj={fileName: nameArrays[i],url:pathArrays[i]}
this.attachmentList.push(obj)
}
return data
},
checkImage(file) {
const extension = file.fileName.split('.').pop().toLowerCase();
if (['jpg', 'jpeg', 'png', 'gif'].indexOf(extension) !== -1) {
return true;
} else {
return false;
}
},
checkVideo(file) {
const extension = file.fileName.split('.').pop().toLowerCase();
if (['mp4', 'MP4'].indexOf(extension) !== -1) {
return true
} else {
return false;
}
},
},
data() {
return {
attachmentList: [],
isImage: false,
isVideo: false,
size:"small",
column:2,
toString:[
......
......@@ -25,7 +25,7 @@
<profiles.server.port>17300</profiles.server.port>
<profiles.server.gatewayport>11078</profiles.server.gatewayport>
<profiles.server.path>/study</profiles.server.path>
<profiles.nacos.server-addr>192.168.0.54:8848</profiles.nacos.server-addr>
<profiles.nacos.server-addr>192.168.1.104:8848</profiles.nacos.server-addr>
<profiles.nacos.group>DEFAULT_GROUP</profiles.nacos.group>
<profiles.nacos.namespace>smart-gov-cs</profiles.nacos.namespace>
<profiles.log.path>/mortals/app/logs</profiles.log.path>
......
......@@ -55,7 +55,7 @@ public class UploadServiceImpl implements UploadService {
log.error("文件上传大小超过限制,当前文件---" + tempFile.getSize() + ",允许大小----------" + type.getMaxSize());
throw new AppException("文件上传大小超过限制!");
}
if (null != fileName && fileName.length() > 50) {
if (null != fileName && fileName.length() > 255) {
throw new AppException("文件名称过长,无法上传!");
}
......
......@@ -122,5 +122,19 @@ public class UploadController extends BaseController {
}
}
/**
* 通用文件删除
*
* @param fileName 文件名称
*/
@GetMapping("fileupload/{fileName}")
public void fileDel(@PathVariable(value="fileName") String fileName, HttpServletResponse response) {
try {
//uploadService.uploadDownload(fileName, response);
} catch (Exception e) {
log.error("下载文件失败:", e);
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment