d7630003 by jiaozeping@pashanhoo.com
2 parents 318c545b 8f912d0f
......@@ -78,4 +78,4 @@
"type": "git",
"url": "git+https://github.com/PanJiaChen/vue-element-admin.git"
}
}
\ No newline at end of file
}
......
......@@ -53,17 +53,6 @@ const defaultCallback = action => {
callback(action);
}
}
if (currentMsg.resolve) {
if (action === 'confirm') {
if (instance.showInput) {
currentMsg.resolve({ value: instance.inputValue, action });
} else {
currentMsg.resolve(action);
}
} else if (currentMsg.reject && (action === 'cancel' || action === 'close')) {
currentMsg.reject(action);
}
}
}
};
......@@ -120,7 +109,7 @@ const showNextMsg = () => {
}
};
const MessageBox = function(options, callback) {
const MessageBox = function (options, callback) {
if (Vue.prototype.$isServer) return;
if (typeof options === 'string' || isVNode(options)) {
options = {
......@@ -158,7 +147,7 @@ MessageBox.setDefaults = defaults => {
MessageBox.defaults = defaults;
};
MessageBox.alert = (message, title, options) => {
MessageBox.alert = (title, message, options) => {
if (typeof title === 'object') {
options = title;
title = '';
......
<template>
<transition name="msgbox-fade">
<div class="el-message-box__wrapper" tabindex="-1"
v-show="visible" @click.self="handleWrapperClick" role="dialog"
<div class="el-message-box__wrapper" tabindex="-1" v-show="visible" @click.self="handleWrapperClick" role="dialog"
aria-modal="true" :aria-label="title || 'dialog'">
<div class="el-message-box" :class="[customClass, center && 'el-message-box--center']">
<div class="el-message-box" :class="[customClass, center && 'el-message-box--center']">
<div class="el-message-box__content">
<slot>
<p>{{ message }}</p>
</slot>
<div class="el-message-box__container">
<div v-if="title !== ''" class="message-title">标题:{{ title }}</div>
<div v-if="message !== ''" class="richText" v-html="message"></div>
</div>
</div>
<div class="el-message-box__btns">
<el-button :loading="cancelButtonLoading" :class="[cancelButtonClasses]" :round="roundButton" size="small"
......@@ -23,6 +23,8 @@
<script type="text/babel">
import Popup from 'element-ui/src/utils/popup';
import Locale from 'element-ui/src/mixins/locale';
import ElInput from 'element-ui/packages/input';
import ElButton from 'element-ui/packages/button';
import { addClass, removeClass } from 'element-ui/src/utils/dom';
import { t } from 'element-ui/src/locale';
import Dialog from 'element-ui/src/utils/aria-dialog';
......@@ -37,6 +39,7 @@ let typeMap = {
export default {
mixins: [Popup, Locale],
props: {
modal: {
default: true
......@@ -66,6 +69,12 @@ export default {
type: Boolean
}
},
components: {
ElInput,
ElButton
},
computed: {
icon () {
const { type, iconClass } = this;
......@@ -187,11 +196,6 @@ export default {
visible (val) {
if (val) {
this.uid++;
if (this.$type === 'alert' || this.$type === 'confirm') {
this.$nextTick(() => {
this.$refs.confirm.$el.focus();
});
}
this.focusAfterClosed = document.activeElement;
messageBox = new Dialog(this.$el, this.focusAfterClosed, this.getFirstFocus());
}
......@@ -263,15 +267,15 @@ export default {
}
};
</script>
<style scoped lang="scss">
.el-message-box__wrapper {
background: none;
}
.el-message-box {
border: none;
<style scoped>
/deep/.message-title {
font-size: 18px;
font-weight: 700;
margin-bottom: 5px;
}
.el-message-box__content {
min-height: 150px;
padding-top: 30px;
/deep/.el-message-box__content img {
width: 100%;
height: 100%;
}
</style>
</style>
\ No newline at end of file
......
......@@ -9,12 +9,10 @@
</div>
<div class="right-menu">
<svg-icon class="function" icon-class='function' />
<el-dropdown class="avatar-container right-menu-item hover-effect" @command="handleCommand">
<div class="avatar-wrapper">
<img :src="avatar + '?imageView2/1/w/80/h/80'" class="user-avatar" />
<span style="margin-left: 10px;">{{ name }}</span>
</div>
</el-dropdown>
<div class="avatar-wrapper right-menu-item hover-effect">
<img :src="avatar + '?imageView2/1/w/80/h/80'" class="user-avatar" />
<span style="margin-left: 10px;">{{ name }}</span>
</div>
<svg-icon class="shutdown" icon-class='shutdown' />
</div>
......@@ -220,27 +218,25 @@ export default {
}
}
.avatar-container {
.avatar-wrapper {
position: relative;
display: flex;
height: 40px;
align-items: center;
.avatar-wrapper {
position: relative;
display: flex;
height: 40px;
align-items: center;
.user-avatar {
cursor: pointer;
width: 35px;
height: 35px;
border-radius: 50%;
}
.user-avatar {
cursor: pointer;
width: 35px;
height: 35px;
border-radius: 50%;
}
.el-icon-caret-bottom {
cursor: pointer;
position: absolute;
right: -15px;
top: 17px;
font-size: 12px;
}
.el-icon-caret-bottom {
cursor: pointer;
position: absolute;
right: -15px;
top: 17px;
font-size: 12px;
}
}
}
......
......@@ -27,7 +27,7 @@ import store from './store'
import router from './router'
import _ from 'lodash'
import VueQuillEditor from 'vue-quill-editor'//调用编辑器
import VueQuillEditor from 'vue-quill-editor'//调用编辑器
// 样式
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
......
......@@ -325,8 +325,7 @@ aside {
}
.allow,
.prohibit
.suspend {
.prohibit .suspend {
position: relative;
margin: 0 auto;
text-align: left;
......@@ -380,6 +379,7 @@ aside {
height: 5px;
border-radius: 50%;
}
//错误日志样式 后期超优化
.item-cwnr {
white-space: pre-wrap;
......@@ -389,4 +389,8 @@ aside {
overflow-wrap: break-word;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
.item-cwnr img {
height: 30px;
}
\ No newline at end of file
......
......@@ -14,7 +14,7 @@
top: $headerHeight;
bottom: 0;
left: 0;
z-index: 1001;
z-index: 80;
background-color: $subMenuBg;
// overflow: hidden;
......
......@@ -19,16 +19,14 @@
<h5 class="title">系统通知</h5>
<i class="el-icon-s-unfold pointer"></i>
</div>
<vue-seamless-scroll :data="noticeList" :class-option="classOption">
<ul>
<li v-for="(item, index) in noticeList" :key="index" @click="handleNotice" class="flexst pointer">
<p class="list-title">{{ item.noticeTitle }}</p>
<p class="marginZL15">{{ item.createtime.substring(0, 10) }}</p>
<p v-if="item.userBrowse == '1'" style="color:red">未读</p>
<p v-else>已读</p>
</li>
</ul>
</vue-seamless-scroll>
<ul>
<li v-for="(item, index) in noticeList" :key="index" @click="handleNotice(item)" class="flexst pointer">
<p class="list-title">{{ item.noticeTitle }}</p>
<p class="marginZL15">{{ item.createtime.substring(0, 10) }}</p>
<p v-if="item.userBrowse == '1'" style="color:red">未读</p>
<p v-else>已读</p>
</li>
</ul>
</el-card>
</el-col>
</el-row>
......@@ -150,25 +148,17 @@ export default {
year: '1996',
value: 31056
}],
// 系统通知
noticeData: {
},
noticeList: [],
todoList: [],
doneList: [],
policyList: []
policyList: [],
}
},
// 计算属性 类似于data概念
computed: {
classOption () {
return {
step: 0.5, // 数值越大速度滚动越快
limitMoveNum: 2, // 开始无缝滚动的数据量 this.dataList.length
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
};
},
},
mounted () {
this.buildChart();
this.queryTodoList();
......@@ -184,7 +174,7 @@ export default {
queryTodoList () {
getHomeTodoList().then(res => {
if (res.result) {
this.todoList = res.result.slice(0, 5)
this.todoList = res.result
}
})
},
......@@ -204,7 +194,7 @@ export default {
this.noticeList.forEach(item => {
item.createtime = this._timedate(item.createtime)
})
this.policyList = res.result.policyList.slice(0, 5)
this.policyList = res.result.policyList
}
})
},
......@@ -252,9 +242,8 @@ export default {
chart.line().position('year*value').size(2).shape('smooth');
chart.render();
},
handleNotice () {
this.$alertMes('9999999999')
//setReadStatus({'bsmNotice':bsmNotice})
handleNotice (item) {
this.$alertMes(item.noticeTitle, item.noticeContent)
}
}
}
......
......@@ -81,6 +81,12 @@ export default {
};
},
created () {
var qllx = this.$route.query.sqywbm.substr(0,3)
if(qllx == 'A09'){
this.title = '土地经营权登记信息'
}else{
this.title = '农用地使用权登记信息'
}
this.loadData();
},
methods: {
......
......@@ -25,7 +25,6 @@
</template>
<script>
import '@/styles/package/theme/index.scss'
import { addSysNotice } from "@/api/notice.js"
import { upload } from "@/api/system.js"
export default {
......
<template>
<dialogBox title="新增系统通知" @submitForm="submitForm" saveButton="保存" :isFullscreen="false" width="60%"
<dialogBox title="新增系统通知" @submitForm="submitForm" saveButton="保存" :isFullscreen="false" width="50%"
@closeDialog="closeDialog" v-model="value">
<el-form ref="ruleForm" :model="ruleForm" label-width="100px" :rules="rules">
<el-row>
<el-col :span="12">
<el-col :span="24">
<el-form-item label="通知标题:" prop="noticeTitle">
<el-input v-model="ruleForm.noticeTitle"></el-input>
<el-input v-model="ruleForm.noticeTitle" class="width100"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-col :span="24">
<el-form-item label="通知来源:" prop="noticeSource">
<el-input v-model="ruleForm.noticeSource"></el-input>
<el-input v-model="ruleForm.noticeSource" class="width100"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="通知内容:" prop="noticeContent">
<quill-editor
v-model="ruleForm.noticeContent"
ref="myQuillEditor"
:options="editorOption"
@blur="onEditorBlur($event)"
@focus="onEditorFocus($event)"
@change="onEditorChange($event)"
@ready="onEditorReady($event)"
>
</quill-editor>
<!-- <el-input v-model="ruleForm.noticeContent" type="textarea" :rows="16"></el-input> -->
</el-form-item>
</el-col>
<el-form-item label="通知内容:" prop="noticeContent">
<quill-editor v-model="ruleForm.noticeContent" class="editor ql-editor" ref="myQuillEditor"
:options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"
@change="onEditorChange($event)" @ready="onEditorReady($event)"></quill-editor>
</el-form-item>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="附件:" prop="noticeFileUrl">
<el-upload action="" multiple :auto-upload="false" :limit="1"
:on-change="handleChange" :before-upload="beforeUpload">
<el-upload action multiple :auto-upload="false" :limit="1" :on-change="handleChange"
:before-upload="beforeUpload">
<el-button icon="el-icon-upload" type="primary">上传</el-button>
<div slot="tip" class="el-upload__tip">文件大小不超过20MB</div>
</el-upload>
......@@ -45,10 +35,10 @@
</el-col>
</el-row>
<div v-show="false">
<el-upload action="" multiple :auto-upload="false"
:on-change="RichTexthandleChange" :before-upload="beforeUpload" class="richUpload">
<el-button icon="el-icon-upload" type="primary">上传</el-button>
<div slot="tip" class="el-upload__tip">文件大小不超过20MB</div>
<el-upload action multiple :auto-upload="false" :on-change="RichTexthandleChange" :before-upload="beforeUpload"
class="richUpload">
<el-button icon="el-icon-upload" type="primary">上传</el-button>
<div slot="tip" class="el-upload__tip">文件大小不超过20MB</div>
</el-upload>
</div>
</el-form>
......@@ -56,35 +46,35 @@
</template>
<script>
import { addSysNotice } from "@/api/notice.js"
import { upload } from "@/api/system.js"
import { addSysNotice } from "@/api/notice.js";
import { upload } from "@/api/system.js";
import { quillEditor } from "vue-quill-editor";
export default {
props: {
value: { type: Boolean, default: false },
value: { type: Boolean, default: false }
},
components: { quillEditor },
data () {
return {
ruleForm: {
noticeTitle: '',
noticeContent: '',
noticeFileUrl: '',
noticeSource: '',
noticeType: '1'
noticeTitle: "",
noticeContent: "",
noticeFileUrl: "",
noticeSource: "",
noticeType: "1"
},
rules: {
noticeTitle: [
{ required: true, message: '请输入通知标题', trigger: 'blur' }
{ required: true, message: "请输入通知标题", trigger: "blur" }
],
noticeContent: [
{ required: true, message: '请输入通知内容', trigger: 'blur' }
{ required: true, message: "请输入通知内容", trigger: "blur" }
],
noticeSource: [
{ required: true, message: '请输入通知来源', trigger: 'blur' }
{ required: true, message: "请输入通知来源", trigger: "blur" }
]
},
// 富文本编辑器配置
// 富文本编辑器配置
editorOption: {
theme: "snow", // or 'bubble'
modules: {
......@@ -97,51 +87,62 @@ export default {
[{ script: "sub" }, { script: "super" }], // 上标/下标
[{ indent: "-1" }, { indent: "+1" }], // 缩进
[{ direction: "rtl" }], // 文本方向
[{ size: ['small', false, 'large', 'huge'] }], // 字体大小
[{ size: ["small", false, "large", "huge"] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6] }], // 标题
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
// [{ font: ['songti'] }], // 字体种类
[{ align: [] }], // 对齐方式
["clean"], // 清除文本格式
["image", "video"], // 链接、图片、视频
["image", "video"] // 链接、图片、视频
],
handlers: {
image: function(value) {
if (value) {
// 用upload的点击事件代替文本编辑器的图片上传事件
document.querySelector('.richUpload input').click();
} else {
this.quill.format('image', false);
}
handlers: {
image: function (value) {
if (value) {
// 用upload的点击事件代替文本编辑器的图片上传事件
document.querySelector(".richUpload input").click();
} else {
this.quill.format("image", false);
}
}
}
}
},
placeholder: "请输入正文",
},
}
placeholder: "请输入正文"
}
};
},
mounted() {
// 自定义粘贴图片功能
let quill = this.$refs.myQuillEditor.quill;
quill.root.addEventListener("paste",evt => {
console.log(1111);
if (evt.clipboardData && evt.clipboardData.files &&evt.clipboardData.files.length) {
console.log(2222);
evt.preventDefault();
[].forEach.call(evt.clipboardData.files, file => {
console.log(33333);
if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) {
return;
}
console.log(4444);
this.RichTexthandleChange(File);
});
}
},
false
);
watch: {
value (val) {
if (val) {
let that = this
this.$nextTick(() => {
//创建富文本粘贴事件监听
let quill = this.$refs.myQuillEditor.quill;
this.$forceUpdate();
quill.root.addEventListener(
"paste",
evt => {
if (
evt.clipboardData &&
evt.clipboardData.files &&
evt.clipboardData.files.length
) {
evt.preventDefault();
[].forEach.call(evt.clipboardData.files, file => {
if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) {
return;
}
that.clipboardPictureChange(file);
});
}
},
false
);
});
}
}
},
mounted () { },
methods: {
submitForm () {
let that = this;
......@@ -149,14 +150,14 @@ export default {
if (valid) {
addSysNotice(this.ruleForm).then(res => {
if (res.code == 200) {
this.$message.success('保存成功')
this.$message.success("保存成功");
this.$emit("input", false);
this.resetRuleForm();
this.$parent.queryClick();
} else {
this.$message.error(res.message)
this.$message.error(res.message);
}
})
});
} else {
// console.log('error submit!!');
return false;
......@@ -170,25 +171,32 @@ export default {
},
//
resetRuleForm () {
this.$refs['ruleForm'].resetFields();
this.ruleForm.noticeType = '1'
this.$refs["ruleForm"].resetFields();
this.ruleForm.noticeType = "1";
},
beforeUpload (file) {
return true
return true;
},
//附件上传事件
async handleChange (file) {
var formdata = new FormData();
formdata.append("file", file.raw);
upload(formdata).then(res => {
this.ruleForm.noticeFileUrl = res.message
})
this.ruleForm.noticeFileUrl = res.message;
});
},
//富文本图片上传事件
async RichTexthandleChange (file) {
RichTexthandleChange (file) {
this.uploadPicture(file.raw)
},
//图片粘贴事件
clipboardPictureChange (file) {
this.uploadPicture(file)
},
uploadPicture (file) {
let that = this;
var formdata = new FormData();
formdata.append("file", file.raw);
formdata.append("file", file);
upload(formdata).then(res => {
//editor对象
const quill = that.$refs.myQuillEditor.quill;
......@@ -196,41 +204,48 @@ export default {
// 获取光标所在位置
const length = quill.selection.savedRange.index;
// 插入图片
quill.insertEmbed(length, 'image', res.message);
quill.insertEmbed(length, "image", res.message);
// 调整光标到最后
quill.setSelection(length + 1);
//that.quillUpdateImg = false;
})
});
},
onSubmit() {
onSubmit () {
//console.log("submit!");
},
// 失去焦点事件
onEditorBlur(quill) {
onEditorBlur (quill) {
//console.log("editor blur!", quill);
},
// 获得焦点事件
onEditorFocus(quill) {
onEditorFocus (quill) {
//console.log("editor focus!", quill);
},
// 准备富文本编辑器
onEditorReady(quill) {
onEditorReady (quill) {
//console.log("editor ready!", quill);
},
// 内容改变事件
onEditorChange({ quill, html, text }) {
onEditorChange ({ quill, html, text }) {
//console.log("editor change!", quill, html, text);
//this.content = html;
},
}
}
}
};
</script>
<style scoped lang="scss">
// .ql-editor{
// height:500px;
// }
/deep/.ql-editor {
padding: 0px;
height: 500px;
}
.quill-editor {
padding: 0;
}
.ql-editor {
height: auto !important;
}
/deep/.ql-container {
padding: 0;
max-height: 400px;
min-height: 160px;
overflow-y: scroll;
}
</style>
\ No newline at end of file
......
......@@ -9,14 +9,9 @@
<el-row :gutter="8">
<el-col :span="24" class="margin-top-middle">
通知内容:
<!-- <span v-html="formData.item.noticeContent"></span> -->
<quill-editor class="ql-editor"
v-model="formData.item.noticeContent"
ref="myQuillEditor"
:options="editorOption"
>
</quill-editor>
<!-- <el-input type="textarea" :rows="20" v-model="formData.item.noticeContent"></el-input> -->
<quill-editor class="ql-editor" v-model="formData.item.noticeContent" ref="myQuillEditor"
:options="editorOption">
</quill-editor>
</el-col>
</el-row>
<el-row :gutter="8">
......@@ -30,10 +25,10 @@
<script>
import { quillEditor } from "vue-quill-editor";
export default {
components: { quillEditor },
components: { quillEditor },
data () {
return {
// 富文本编辑器配置
// 富文本编辑器配置
editorOption: {
theme: "snow", // or 'bubble'
placeholder: "请输入正文",
......@@ -63,7 +58,8 @@ export default {
.margin-top-middle {
margin-top: 10px
}
/deep/.ql-editor {
padding: 0px;
}
}
</style>
\ No newline at end of file
......
......@@ -53,6 +53,7 @@ export default {
return {
isDialog: false,
viewDialog: false,
ruleForm: {
noticeTitle: '',
noticeStatus: ''
......
......@@ -28,27 +28,27 @@ class data extends filter {
{
label: "通知内容",
render: (h, scope) => {
return <div class="item-cwnr">{scope.row.noticeContent}</div>
return <div class="item-cwnr" domPropsInnerHTML={scope.row.noticeContent}></div>
}
},
{
prop: "noticeFileName",
label: "通知附件",
render: (h, scope) => {
return <div class="pointer" onClick={() => { vm.downloadFile(scope.row) }}>{scope.row.noticeFileName}</div>
return <div class="pointer" onClick={() => { vm.downloadFile(scope.row) }}>{scope.row.noticeFileName}</div>
}
},
{
label: "发布状态",
width: '80',
render: (h, scope) => {
switch (scope.row.noticeStatus) {
case '1':
return <div class='prohibit'>未发布</div>
case '2':
return <div class='allow'>已发布</div>
}
switch (scope.row.noticeStatus) {
case '1':
return <div class='prohibit'>未发布</div>
case '2':
return <div class='allow'>已发布</div>
}
}
},
{
prop: "creater",
......@@ -72,9 +72,9 @@ class data extends filter {
<el-button type="text" icon="el-icon-delete" onClick={() => { vm.delNotice(scope.row) }}>删除</el-button>
</div>
case '2':
return <div>
<el-button type="text" onClick={() => { vm.viewDetail(scope.row) }}>查看</el-button>
<el-button type="text" icon="el-icon-edit-outline" onClick={() => { vm.toUnPublish(scope.row) }}>撤销通知</el-button>
return <div>
<el-button type="text" onClick={() => { vm.viewDetail(scope.row) }}>查看</el-button>
<el-button type="text" icon="el-icon-edit-outline" onClick={() => { vm.toUnPublish(scope.row) }}>撤销通知</el-button>
</div>
}
}
......
......@@ -65,7 +65,7 @@ class data extends filter {
},
{
prop: "mj",
label: "农用地面积(㎡)",
label: "面积(㎡)",
},
{
prop: "qlsdfsmc",
......
......@@ -15,11 +15,15 @@ export function queueDjywmc (djywbm) {
vm = "fwsyq";
break;
case "A23100"://农用地使用权(首次登记)
case "A09100"://土地经营权(首次登记)
vm = "nydsyq100";
break;
case "A23200":
case "A23300":
case "A23400":
case "A09200":
case "A09300":
case "A09400":
vm = "nydsyq200";
break;
case "A05200":
......