Browse Source

v0.2 文章管理

master
DESKTOP-00SUCB6\Administrator 5 years ago
parent
commit
17f1943be3
  1. 13
      public/config.js
  2. 107
      src/api/company.js
  3. 71
      src/api/notice.js
  4. 5
      src/api/public.js
  5. 2
      src/main.ts
  6. 34
      src/utils/request.js
  7. 31
      src/views/layout/components/Sidebar/index.vue
  8. 16
      src/views/systemManage/company/company.vue
  9. 127
      src/views/systemManage/company/companyDetail.vue
  10. 98
      src/views/systemManage/notice/notice.vue
  11. 227
      src/views/systemManage/notice/noticeDetail.vue

13
public/config.js

@ -1,6 +1,13 @@
// config = {
// API_URL: 'http://www.fatoaniic.com/api',
// UPLOAD_URL: "http://www.fatoaniic.com/api/api-ftp/ftp/upload",
// DOWNLOAD_URL: "http://www.fatoaniic.com/api/api-ftp/ftp/download?filename=",
// SHOW_URL: "http://www.fatoaniic.com/ftpfile/",
// }
config = {
API_URL: 'http://www.fatoaniic.com/api',
UPLOAD_URL: "http://www.fatoaniic.com/api/api-ftp/ftp/upload",
DOWNLOAD_URL: "http://www.fatoaniic.com/api/api-ftp/ftp/download?filename=",
API_URL: 'http://172.119.51.18:8082',
UPLOAD_URL: "http://172.119.51.18:8082/attachment/uploadOne",
DOWNLOAD_URL: "http://172.119.51.18:8082/api-ftp/ftp/download?filename=",
SHOW_URL: "http://www.fatoaniic.com/ftpfile/",
}

107
src/api/company.js

@ -1,48 +1,74 @@
import request from '@/utils/request';
import requestLoading from '@/utils/requestLoading';
//获取企业列表
export function getEnterpriseList(params) {
return requestLoading({
url: '/api-enterprise/enterprise/enterprises',
method: 'get',
params
return request({
url: '/company/search',
method: 'post',
data:params
});
}
//删除企业
export function deleteEnterprise(params) {
return request({
url: '/company/delete',
method: 'post',
data:params
});
}
//获取企业详情
export function getEnterpriseDetails(params) {
return requestLoading({
url: '/api-enterprise/enterprise/selectById',
method: 'get',
params
return request({
url: '/company/get/'+params,
method: 'get'
});
}
//修改企业信息
export function editEnterprise(params) {
return request({
url: '/company/edit',
method: 'post',
data:params
});
}
//添加企业
export function addEnterprise(params) {
return requestLoading({
url: '/api-enterprise/enterprise/enterprises',
return request({
url: '/company/add',
method: 'post',
data:params
});
}
//删除企业
export function deleteEnterprise(params) {
return requestLoading({
url: '/api-enterprise/enterprise/enterprises',
method: 'delete',
params
//区域查询接口
export function getArea(params) {
return request({
url: '/common/getComboList_2/40010/'+params,
method: 'get'
});
}
//修改企业信息
export function editEnterprise(params) {
return requestLoading({
url: '/api-enterprise/enterprise/enterprises',
method: 'put',
data:params
//行业大类查询接口
export function getBigIndustryList() {
return request({
url: '/common/getComboList_1/40008',
method: 'get'
});
}
//行业小类查询接口
export function getSmallIndustryList(params) {
return request({
url: '/common/getComboList_2/40009/'+params,
method: 'get'
});
}
//启
export function enableEnterprise(params) {
return requestLoading({
return request({
url: '/api-enterprise/enterprise/enable',
method: 'put',
data:params
@ -50,40 +76,17 @@ export function enableEnterprise(params) {
}
//停
export function disableEnterprise(params) {
return requestLoading({
return request({
url: '/api-enterprise/enterprise/disable',
method: 'put',
data:params
});
}
//行业大类查询接口
export function getBigIndustryList(params) {
return requestLoading({
url: '/api-enterprise/industry/bigIndustry',
method: 'get',
params
});
}
//行业小类查询接口
export function getSmallIndustryList(params) {
return requestLoading({
url: '/api-enterprise/industry/smallIndustry',
method: 'get',
params
});
}
//区域查询接口
export function getArea(params) {
return requestLoading({
url: '/api-enterprise/area/getArea',
method: 'get',
params
});
}
//审核
export function approveEnterprise(params) {
return requestLoading({
return request({
url: '/api-enterprise/enApply/approve',
method: 'put',
data:params
@ -91,7 +94,7 @@ export function approveEnterprise(params) {
}
//企业审核列表
export function enApplyList(params) {
return requestLoading({
return request({
url: '/api-enterprise/enApply/page',
method: 'get',
params
@ -99,7 +102,7 @@ export function enApplyList(params) {
}
//公司审核页面的详情
export function enApplyDetail(params) {
return requestLoading({
return request({
url: '/api-enterprise/enApply/detail',
method: 'get',
params

71
src/api/notice.js

@ -1,53 +1,54 @@
import request from '@/utils/request';
import requestLoading from '@/utils/requestLoading';
//获取公告列表
export function getNoticeList(params) {
return requestLoading({
url: '/api-login/ann/announcements',
method: 'get',
params
});
}
//获取公告详情
export function getNoticeInfo(params) {
return requestLoading({
url: '/api-login/ann/announcement',
//获取文章类型下拉列表
export function getNoticeTypeList(params) {
return request({
url: '/common/getComboList_1/40005',
method: 'get',
params
});
}
//更新公告详情
export function editNoticeInfo(params) {
return requestLoading({
url: '/api-login/ann/announcement',
method: 'put',
//获取文章列表
export function getNoticeList(params) {
return request({
url: '/content/search',
method: 'post',
data:params
});
}
//添加公告
//添加文章
export function addNoticeInfo(params) {
return requestLoading({
url: '/api-login/ann/announcement',
return request({
url: '/content/add',
method: 'post',
data:params
});
}
//删除公告
export function deleteNoticeInfo(params) {
return requestLoading({
url: '/api-login/ann/announcement',
method: 'delete',
params
//获取文章详情
export function getNoticeInfo(params) {
return request({
url: '/content/get/'+params,
method: 'get'
});
}
//获取接收人列表
export function identitytypeList(params) {
return requestLoading({
url: '/api-login/ann/identitytype',
method: 'get',
params
//更新文章详情
export function editNoticeInfo(params) {
return request({
url: '/content/edit',
method: 'post',
data:params
});
}
//删除文章
export function deleteNoticeInfo(params) {
return request({
url: '/content/delete',
method: 'post',
data:params
});
}

5
src/api/public.js

@ -0,0 +1,5 @@
import request from '@/utils/request';

2
src/main.ts

@ -14,7 +14,7 @@ import '@/icons' // icon
import echarts from 'echarts' //echarts
import scroll from 'vue-seamless-scroll' //滚动插件
import md5 from 'js-md5'; //md5 加密
import '@/permission' // 权限控制
// import '@/permission' // 权限控制
//判断浏览器,如果是IE11以下则不加载‘vue-quill-editor 富文本编辑器’并提示浏览器版本过低
let userAgent = window.navigator.userAgent;

34
src/utils/request.js

@ -23,24 +23,24 @@ service.interceptors.request.use((config) => {
if (store.getters.token &&  !config.isLogin) {
config.headers['token'] = getToken()
}
config.headers['token'] = '800580795f01449f9100c4d2983d13c9'
if (config.method == 'post' || config.method == 'put') {
// 校验发送的请求是否包含敏感字符
//----------------start-----------------------------
let sData = ''
for (const i in config.data) {
if (config.data.hasOwnProperty(i)) {
const item = config.data[i];
sData += item + ","
}
}
store.getters.keys.forEach(item => {
if (sData.indexOf(item) != -1) {
isKey = true
}
});
// let sData = ''
// for (const i in config.data) {
// if (config.data.hasOwnProperty(i)) {
// const item = config.data[i];
// sData += item + ","
// }
// }
// store.getters.keys.forEach(item => {
// if (sData.indexOf(item) != -1) {
// isKey = true
// }
// });
//----------------End---------------------------------
config.data = qs.stringify(config.data)
// config.data = qs.stringify(config.data)
// qs.stringify(config.params, { indices: false })
} else if (config.method == 'get') {
config.paramsSerializer = params => {
@ -73,10 +73,10 @@ service.interceptors.response.use(
*/
const res = response.data
// const res = JSON.parse(response.data)
if (res.code !== 200) {
if (res.status !== 200) {
// 511:失效的token;弹出弹框,返回登录页
if (res.code === 511) {
if (res.status === 511) {
if (isToken) {
isToken = false //防止下个一个token失效的请求在弹出第二个框
MessageBox.alert('你已被登出,请重新登录', '确定登出', {
@ -94,7 +94,7 @@ service.interceptors.response.use(
} else {
//接口失败统一报错
Message({
message: res.msg,
message: res.message,
type: 'error',
duration: 5 * 1000
})

31
src/views/layout/components/Sidebar/index.vue

@ -40,26 +40,31 @@
data(){
return {
routes:[
// {
// path: 'menu',
// name: 'menuManage',
// meta: {title: '', icon: 'table', noCache: true},
// },
{
path: 'menu',
name: 'menuManage',
meta: {title: '菜单管理', icon: 'table', noCache: true},
path: 'company',
name: 'companyManage',
meta: {title: '公司管理', icon: 'dashboard', noCache: true},
},
{
path: 'user',
name: 'userManage',
meta: {title: '用户管理', icon: 'dashboard', noCache: true},
},
{
path: 'role',
name: 'roleManage',
meta: {title: '角色管理', icon: 'eye', noCache: true},
},
{
path: 'permission',
name: 'permissionManage',
meta: {title: '权限管理', icon: 'form', noCache: true},
},
// {
// path: 'role',
// name: 'roleManage',
// meta: {title: '', icon: 'eye', noCache: true},
// },
// {
// path: 'permission',
// name: 'permissionManage',
// meta: {title: '', icon: 'form', noCache: true},
// },
{
path: 'notice',
name: 'noticeManage',

16
src/views/systemManage/company/company.vue

@ -10,6 +10,7 @@
</el-form-item>
<el-form-item class="float-right">
<el-button type="danger" size="mini" icon="el-icon-refresh" @click="search">刷新</el-button>
<el-button type="danger" size="mini" icon="el-icon-circle-plus-outline" @click="addComany">新增</el-button>
</el-form-item>
</el-form>
</div>
@ -128,12 +129,6 @@ export default {
},
mounted() {
this.initData()
//
/*if (this.identityId == '1' || this.identityId == '4') {
this.initData()
} else {
this.$router.push({name: "companyDetail"})
}*/
},
methods: {
//
@ -144,9 +139,12 @@ export default {
//
initData() {
const params = {
page: this.currentPage,
size: this.pageSize,
name: this.formSearch.name.trim(),
pageNum: this.currentPage,
pageSize: this.pageSize,
search:{
name: this.formSearch.name.trim()
},
sort:''
}
getEnterpriseList(params).then(res => {
if (res.data) {

127
src/views/systemManage/company/companyDetail.vue

@ -29,13 +29,12 @@
<el-option label="护照" :value="6"></el-option>
</el-select>
</el-form-item>
<el-form-item label="法人证件号码:" :label-width="formLabelWidth" prop="enCeNumber">
<el-input v-model="formData.enCeNumber" autocomplete="off"></el-input>
</el-form-item>
</el-col>
<el-col :span="2" style="height:1px;"></el-col>
<el-col :span="11" style="padding-right:30px;">
<el-form-item label="二级前缀:" :label-width="formLabelWidth" prop="enTwoPrefix">
<!-- <el-input v-model="formData.enTwoPrefix" autocomplete="off" :disabled="!isApply"></el-input> -->
<span>{{ formData.enTwoPrefix }}</span>
</el-form-item>
<el-form-item label="所属行业:" :label-width="formLabelWidth" prop="inBigId">
<!-- 行业大类的下拉菜单 -->
<el-select
@ -48,7 +47,7 @@
v-for="(item,index) in bigIndustryType"
:key="index"
:label="item.name"
:value="item.id"
:value="item.value"
></el-option>
</el-select>
<!-- 行业小类的下拉菜单 -->
@ -61,15 +60,37 @@
v-for="(item,index) in smallIndustryType"
:key="index"
:label="item.name"
:value="item.id"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="法人姓名:" :label-width="formLabelWidth" prop="enLegalName">
<el-input v-model="formData.enLegalName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="法人证件号码:" :label-width="formLabelWidth" prop="enCeNumber">
<el-input v-model="formData.enCeNumber" autocomplete="off"></el-input>
<el-form-item label="法人证件:" :label-width="formLabelWidth" prop="enCeAddressZ">
<div class="flex-box">
<el-upload
class="avatar-uploader flex-1"
:action="upload_file"
:show-file-list="false"
:on-success="handlePhotoSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="photoUrl" :src="photoUrl" class="avatar"/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<el-upload
class="avatar-uploader flex-1"
:action="upload_file"
:show-file-list="false"
:on-success="handleReverseSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="reversePhotoUrl" :src="reversePhotoUrl" class="avatar"/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
<el-form-item label-width="150px" prop="enCeAddressF"></el-form-item>
</el-form-item>
</el-col>
</el-row>
@ -95,7 +116,7 @@
v-for="(item,index) in provinces"
:key="index"
:label="item.name"
:value="item.id"
:value="item.value"
></el-option>
</el-select>
<el-select
@ -108,7 +129,7 @@
v-for="(item,index) in citys"
:key="index"
:label="item.name"
:value="item.id"
:value="item.value"
></el-option>
</el-select>
<el-select v-model="formData.areaId" placeholder="区" style="width:calc(33.3% - 7px);">
@ -116,42 +137,21 @@
v-for="(item,index) in areas"
:key="index"
:label="item.name"
:value="item.id"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="官方网址:" :label-width="formLabelWidth" prop="enOffWeb">
<el-input v-model="formData.enOffWeb" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="法人证件:" :label-width="formLabelWidth" prop="enCeAddressZ">
<div class="flex-box">
<el-upload
class="avatar-uploader flex-1"
:action="upload_file"
:show-file-list="false"
:on-success="handlePhotoSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="photoUrl" :src="photoUrl" class="avatar"/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<el-upload
class="avatar-uploader flex-1"
:action="upload_file"
:show-file-list="false"
:on-success="handleReverseSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="reversePhotoUrl" :src="reversePhotoUrl" class="avatar"/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
<el-form-item label-width="150px" prop="enCeAddressF"></el-form-item>
</el-form-item>
<el-form-item label="联系人姓名:" :label-width="formLabelWidth" prop="conName">
<el-input v-model="formData.conName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="联系人电话:" :label-width="formLabelWidth" prop="telPhone">
<el-input v-model="formData.telPhone" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="联系人邮箱:" :label-width="formLabelWidth" prop="email">
<el-input v-model="formData.email" autocomplete="off"></el-input>
</el-form-item>
@ -175,12 +175,6 @@
</el-upload>
</div>
</el-form-item>
<el-form-item label="联系人电话:" :label-width="formLabelWidth" prop="telPhone">
<el-input v-model="formData.telPhone" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="企业前缀:" :label-width="formLabelWidth" prop="enOnePrefix">
<el-input v-model="formData.enOnePrefix" autocomplete="off" :disabled="!isApply"></el-input>
</el-form-item>
</el-col>
</el-row>
<div class="form-footer">
@ -189,7 +183,6 @@
type="info"
size="mini"
@click="resetForm('companyForm')"
v-if="identityId != '3'"
>返回
</el-button>
</div>
@ -259,15 +252,6 @@ export default {
};
//
const checkURL = (rule, value, callback) => {
// if (!value) {
// return callback(new Error(""));
// } else {
// if (!validateURL(value)) {
// return callback(new Error(""));
// } else {
// callback();
// }
// }
if (value && !validateURL(value)) {
return callback(new Error("请输入正确格式的网址"));
} else {
@ -300,9 +284,7 @@ export default {
};
return {
upload_file: config.UPLOAD_URL, //
identityId: this.$store.getters.identity || "", //
param: this.$route.query.name ? this.$route.query : "", //
isApply: this.$route.query.apply || false, //
formLabelWidth: "180px", //formlable
photoUrl: "", //
reversePhotoUrl: "", //
@ -317,8 +299,6 @@ export default {
//form
code: "", //
name: "", //
enOnePrefix: "", //()
enTwoPrefix: "86.121", //
typeId: "", //id
inBigId: "", //id
inSmallId: "", //id
@ -393,26 +373,11 @@ export default {
smallIndustryType: [] //
};
},
created() {
//
if (this.isApply) {
this.rules.enOnePrefix = [
{required: true, message: "请输入一级(公司)前缀", trigger: "blur"}
];
// this.rules.enTwoPrefix = [
// { required: true, message: "", trigger: "blur" }
// ];
}
},
mounted() {
//
if (this.identityId == "3") {
if (this.isEdit) {
this.getEnterpriseInfo();
}
//
if (this.param.name) {
this.formateData(this.param);
}
this.initData();
},
methods: {
@ -426,7 +391,7 @@ export default {
},
//
changeArea(pid, type, clean) {
getArea({pid: pid}).then(res => {
getArea(pid).then(res => {
if (type == 0) {
this.provinces = res.data;
} else if (type == 1) {
@ -468,7 +433,7 @@ export default {
if (clean) {
this.formData.inSmallId = "";
}
getSmallIndustryList({pid: this.formData.inBigId}).then(res => {
getSmallIndustryList(this.formData.inBigId).then(res => {
this.smallIndustryType = res.data;
});
},
@ -517,23 +482,11 @@ export default {
this.$router.go(-1);
});
},
//
applyPrefixInfo() {
applyPrefix(this.formData).then(res => {
this.$message({
message: res.msg,
type: res.code == 200 ? "success" : "error"
});
this.$router.go(-1);
});
},
//form
submitForm(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
if (this.isApply) { //
this.applyPrefixInfo();
} else if (!this.isEdit) { //
if (!this.isEdit) { //
this.addEnterpriseInfo();
} else { //
this.editEnterpriseInfo();

98
src/views/systemManage/notice/notice.vue

@ -1,28 +1,39 @@
<template>
<div class="app-container">
<div class="filter-container">
<div>
<el-form :inline="true" :model="formSearch" ref="ruleForm" class="demo-form-inline">
<el-form-item label="标题:">
<el-input v-model="formSearch.title" size="mini" placeholder="请输入标题" clearable maxlength="50"></el-input>
</el-form-item>
<el-form-item label="文章类型:">
<el-select v-model="formSearch.type" size="mini" placeholder="请选择文章类型">
<el-option
v-for="item in sortType"
:key="item.value"
:label="item.name"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="danger" size="mini" icon="el-icon-search" @click="search">查询</el-button>
</el-form-item>
<el-form-item class="float-right">
<el-button type="danger" size="mini" icon="el-icon-circle-plus-outline" @click="addNotice">新增</el-button>
<!-- <el-button type="info" size="mini" icon="el-icon-delete">删除</el-button> -->
</el-form-item>
</el-form>
</div>
<el-table :data="tableData" style="width: 100%" header-row-class-name="">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="title" label="标题"></el-table-column>
<el-table-column prop="sender" label="作者"></el-table-column>
<el-table-column prop="sort" label="公告类型">
<el-table-column prop="author" label="作者"></el-table-column>
<el-table-column prop="type" label="文章类型">
<template slot-scope="scope">
{{ sortType[scope.row.sort] }}
</template>
</el-table-column>
<el-table-column prop="level" label="公告级别">
<template slot-scope="scope">
{{ levelType[scope.row.level] }}
</template>
</el-table-column>
<el-table-column prop="createTime" label="发布时间">
<template slot-scope="scope">
{{ scope.row.createTime }}
{{ scope.row.type | filterAdd1(that) }}
</template>
</el-table-column>
<el-table-column prop="issueStartTime" label="发布开始时间"></el-table-column>
<el-table-column prop="issueEndTime" label="发布结束时间"></el-table-column>
<el-table-column label="操作" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="editNotice(scope.row.id)"><i class="el-icon-edit"></i>修改</el-button>
@ -43,7 +54,7 @@
</div>
</template>
<script>
import {getNoticeList, deleteNoticeInfo} from "@/api/notice"
import {getNoticeList, deleteNoticeInfo,getNoticeTypeList} from "@/api/notice"
export default {
name: "noticeManage",
@ -53,28 +64,44 @@ export default {
pageSize: 10, //
total: 0, //
tableData: [], //
sortType: { //
'0': '新闻',
'1': '公告'
sortType: {}, //
formSearch: { //
title: '',
type:''
},
levelType: { //
'0': '紧急',
'1': '高',
'2': '中',
'3': '低'
}
that:this
};
},
filters:{
filterAdd1(value,that) {
let name = ''
that.sortType.filter(item =>{
if(item.value == value)
name = item.name
})
return name
}
},
mounted() {
this.getNoticeType()
this.initData()
},
methods: {
//
search() {
this.currentPage = 1
this.initData()
},
//
initData() {
const params = {
page: this.currentPage,
size: this.pageSize
pageNum: this.currentPage,
pageSize: this.pageSize,
search:{
title:this.formSearch.title,
type:this.formSearch.type
},
sort:''
}
getNoticeList(params).then(res => {
if (res.data) {
@ -83,14 +110,19 @@ export default {
}
})
},
//ID
getNoticeType(){
getNoticeTypeList().then(res => {
this.sortType = res.data
})
},
//ID
deleteNotice(id) {
this.$confirm('此操作将删除该公告, 是否继续?', '提示', {
this.$confirm('此操作将删除该文章, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteNoticeInfo({'id': id}).then(res => {
deleteNoticeInfo([id]).then(res => {
this.$message({
message: '删除成功!',
type: 'success'
@ -104,11 +136,11 @@ export default {
});
});
},
//
//
addNotice() {
this.$router.push({name: 'noticeDetail'})
},
//
//
editNotice(id) {
this.$router.push({name: 'noticeDetail', query: {id: id}})
},

227
src/views/systemManage/notice/noticeDetail.vue

@ -3,33 +3,45 @@
<el-form :model="form" :rules="rules" ref="ruleForm">
<el-row>
<el-col :span="11" style="padding-right:30px;">
<el-form-item label="标题:" :label-width="formLabelWidth" prop="username">
<el-form-item label="标题:" :label-width="formLabelWidth" prop="title">
<el-input v-model="form.title" autocomplete="off" placeholder="请输入标题"></el-input>
</el-form-item>
<el-form-item label="公告类别:" :label-width="formLabelWidth" prop="sort">
<el-select v-model="form.sort" placeholder="请选择公告类别">
<el-option label="新闻" :value="0"></el-option>
<el-option label="通告" :value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item label="公告级别:" :label-width="formLabelWidth" prop="level">
<el-select v-model="form.level" placeholder="请选择公告级别">
<el-option label="紧急" :value="0"></el-option>
<el-option label="高" :value="1"></el-option>
<el-option label="中" :value="2"></el-option>
<el-option label="低" :value="3"></el-option>
</el-select>
<el-form-item label="标题图片:" :label-width="formLabelWidth" prop="imgUrl">
<el-upload
class="avatar-uploader"
:action="upload_action"
:headers="upload_headers"
:data="upload_data"
:show-file-list="false"
:on-success="handleTitleSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="titleUrl" :src="titleUrl" class="avatar"/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="接收人:" :label-width="formLabelWidth" prop="identityType">
<el-select v-model="form.identityType" multiple placeholder="请选择接收人">
<el-form-item label="文章类别:" :label-width="formLabelWidth" prop="type">
<el-select v-model="form.type" placeholder="请选择文章类型">
<el-option
v-for="item in sendUser"
:key="item"
:label="userLevel.get(parseInt(item))"
:value="item">
v-for="item in sortType"
:key="item.value"
:label="item.name"
:value="parseInt(item.value)">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="优先级:" :label-width="formLabelWidth" prop="sort">
<el-input v-model.number="form.sort" autocomplete="off" placeholder="请输入优先级"></el-input>
</el-form-item>
<el-form-item label="是否发布:" :label-width="formLabelWidth" prop="isIssue">
<el-switch
v-model="form.isIssue"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value="1"
:inactive-value="0">
</el-switch>
</el-form-item>
<el-form-item label="生效时间:" :label-width="formLabelWidth" prop="time">
<el-date-picker
v-model="form.time"
@ -40,18 +52,20 @@
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="作者:" :label-width="formLabelWidth" prop="name">
<el-input v-model="form.sender" autocomplete="off" placeholder="请输入作者"></el-input>
<el-form-item label="作者:" :label-width="formLabelWidth" prop="author">
<el-input v-model="form.author" autocomplete="off" placeholder="请输入作者"></el-input>
</el-form-item>
<el-form-item label="文章摘要:" :label-width="formLabelWidth" prop="description">
<el-input type="textarea" v-model="form.description" autocomplete="off" placeholder="请输入文章摘要"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-form-item label="内容:" :label-width="formLabelWidth" prop="name">
<!-- <input type="file" id="quill-img" class="quill-img" @change="fileChange($event)"> -->
<el-form-item label="内容:" :label-width="formLabelWidth" prop="content">
<el-upload
id="quill-img"
class="avatar-uploader"
:action="upload_file"
:action="upload_action"
:show-file-list="false"
:on-success="fileChange"
style="display: none;width:0">
@ -63,7 +77,6 @@
:options="editorOption"
>
</quill-editor>
<!-- <vue-ueditor-wrap v-model="UEMsg" :config="UEConfig"></vue-ueditor-wrap> -->
</el-form-item>
</el-row>
<div class="form-footer">
@ -77,64 +90,66 @@
import {quillEditor} from 'vue-quill-editor';
import * as Quill from 'quill' //
// import {ImageExtend} from 'quill-image-extend-module'
// Quill.register('modules/ImageExtend', ImageExtend)
import {ImageDrop} from 'quill-image-drop-module'; //
import ImageResize from 'quill-image-resize-module'; //
Quill.register('modules/imageDrop', ImageDrop);
Quill.register('modules/imageResize', ImageResize);
// import VueUeditorWrap from 'vue-ueditor-wrap'
import {addNoticeInfo, getNoticeInfo, editNoticeInfo, identitytypeList} from "@/api/notice"
import {addNoticeInfo, getNoticeInfo, editNoticeInfo,getNoticeTypeList} from "@/api/notice"
import { getToken } from '@/utils/auth'
export default {
name: 'noticeDetail',
// components: {
// VueUeditorWrap
// },
data() {
return {
ID: this.$route.query.id || '', //id
isEdit: false, // or
upload_file: config.UPLOAD_URL, //
upload_action: config.UPLOAD_URL, //
upload_headers:{
token: '800580795f01449f9100c4d2983d13c9' || getToken()
},
upload_data:{
uploadType:'1',
suffixType:'8',
folder:'notice'
},
formLabelWidth: '180px', //formlable
userLevel: new Map([ //
[1, '系统用户'],
[2, '公众用户'],
[3, '企业用户'],
[4, '政府用户']
]),
sendUser: [], //
sortType:[],
form: { //form
title: '',
sort: '',
level: '',
identityType: '',
imgUrl:'',
type: '',
time: '',
sender: '',
content: ''
author: '',
description:'',
content: '',
isIssue:'1',
sort:''
},
rules: { //form
title: [
{required: true, message: '请输入标题', trigger: 'blur'}
],
sort: [
type: [
{required: true, message: '请选择公告类别', trigger: 'click'}
],
level: [
{required: true, message: '请选择公告级别', trigger: 'click'}
],
identityType: [
{required: true, message: '请选择接收人', trigger: 'click'}
isIssue: [
{required: true}
],
time: [
{required: true, message: '请选择生效日期', trigger: 'click'}
],
sort: [
{required: true, message: '请输入数字类型优先级', trigger: 'blur'}
],
sender: [
{required: true, message: '请输入作者'}
]
{message: '请输入作者', trigger: 'blur'}
],
description: [
{required: true, message: '请输入文章摘要', trigger: 'blur'}
],
content: [
{required: true, message: '请输入内容', trigger: 'blur'}
],
},
editorOption: { //quillEditor
modules: {
@ -175,21 +190,7 @@ export default {
theme: 'snow', // snow/bubble
syntax: true, //
},
// //Ueditor
// UEConfig: {
// //
// autoHeightEnabled: false,
// //
// initialFrameHeight: 240,
// //
// initialFrameWidth: '100%',
// // 便使
// // serverUrl: config.API_URL+config.UPLOAD_URL,
// // UEditor 使 vue-cli vue-ueditor-wrap 2
// UEDITOR_HOME_URL: '/UEditor/'
// },
// //Ueditor
// UEMsg:``
titleUrl:''
}
},
computed: {
@ -198,7 +199,7 @@ export default {
}
},
created() {
this.getIdentitytypeList()
this.getNoticeType()
},
mounted() {
//id
@ -208,35 +209,20 @@ export default {
}
},
methods: {
//
getNoticeType(){
getNoticeTypeList().then(res => {
this.sortType = res.data
})
},
//id
initData() {
getNoticeInfo({'id': this.ID}).then(res => {
getNoticeInfo(this.ID).then(res => {
if (res.data) {
this.form = res.data
this.form.identityType = this.form.identityType.split(',').map((item) => {
return +item
})
this.form.time = [this.form.sendtime, this.form.endTime]
if(this.form.imgUrl) this.titleUrl = this.form.imgUrl
this.form.time = [this.form.issueStartTime, this.form.issueEndTime]
}
// this.form = {
// title:res.data.title,
// sort:res.data.sort,
// level:res.data.level,
// identityType:res.data.identityType.split(',').map((item)=>{
// return +item
// }),
// time:[res.data.sendtime,res.data.endTime],
// sender:res.data.sender,
// content: res.data.content
// }
// this.UEMsg = res.data.content
})
},
//
getIdentitytypeList() {
identitytypeList().then(res => {
this.sendUser = res.data
})
},
//-
@ -257,23 +243,20 @@ export default {
vm.$Message.error('图片插入失败')
}
},
// onEditorReady(editor) { //
// },
// onEditorBlur(){}, //
// onEditorFocus(){}, //
// onEditorChange(){}, //
onEditorChange(){}, //
//
addNotice() {
const param = {
title: this.form.title,
sort: this.form.sort,
level: this.form.level,
identityType: this.form.identityType.join(','), // ,
sendtime: this.form.time[0],
endTime: this.form.time[1],
sender: this.form.sender,
content: this.form.content
type: this.form.type,
issueStartTime: this.form.time[0],
issueEndTime: this.form.time[1],
author: this.form.author,
imgUrl:this.form.imgUrl,
description: this.form.description,
content: this.form.content,
isIssue:this.form.isIssue,
sort:this.form.sort
}
addNoticeInfo(param).then(res => {
this.$message({
@ -285,12 +268,11 @@ export default {
},
//
editNotice() {
delete (this.form.createTime) //
delete (this.form.updateTime) //
this.form.identityType = this.form.identityType.join(',')
this.form.sendtime = this.form.time[0]
this.form.endTime = this.form.time[1]
editNoticeInfo(this.form).then(res => {
this.form.issueStartTime = this.form.time[0]
this.form.issueEndTime = this.form.time[1]
let params = JSON.parse(JSON.stringify(this.form))
delete(params.time)
editNoticeInfo(params).then(res => {
this.$message({
message: '修改成功!',
type: 'success'
@ -319,6 +301,19 @@ export default {
this.$refs[formName].resetFields();
this.$router.go(-1)
},
///
handleTitleSuccess(res, file) {
this.titleUrl = URL.createObjectURL(file.raw);
this.form.imgUrl = res.data;
},
//
beforeAvatarUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return isLt2M;
},
}
}
</script>

Loading…
Cancel
Save