36c5868e by 夏齐

Merge remote-tracking branch 'origin/master'

2 parents 486e911e c13c0a62
......@@ -78,4 +78,4 @@
"type": "git",
"url": "git+https://github.com/PanJiaChen/vue-element-admin.git"
}
}
\ No newline at end of file
}
......
......@@ -10,6 +10,15 @@ export function addSysNotice (data) {
})
}
//编辑系统通知
export function updateSysNotice (data) {
return request({
url: SERVER.SERVERAPI + '/rest/system/sysNotice/updateSysNotice',
method: 'post',
data
})
}
// 获取通知列表
export function getSysNoticeList (data) {
return request({
......
......@@ -90,6 +90,14 @@ export default {
padding: 3px !important;
}
/deep/.el-calendar-table td.is-today {
font-weight: 700;
}
/deep/.el-calendar-table td.is-selected {
background-color: rgb(179, 216, 255);
}
/deep/.el-calendar__header {
padding: 8px 15px;
}
......@@ -141,9 +149,9 @@ export default {
}
/**本月周末设置为红色*/
.el-calendar-table .current:nth-last-child(-n+2) .solar {
/* .el-calendar-table .current:nth-last-child(-n+2) .solar {
color: red;
}
} */
/**本月农历设置为灰色*/
.el-calendar-table .current .lunar {
......
......@@ -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,20 @@ export default {
}
};
</script>
<style scoped lang="scss">
.el-message-box__wrapper {
background: none;
<style scoped>
/deep/.el-message-box {
width: 500px;
max-height: 95%;
}
.el-message-box {
border: none;
/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
......
......@@ -8,7 +8,9 @@
<div ref="back" class="back">
<div ref="text" class="text" @mouseover="mouseOver" @mouseleave="mouseLeave">
<p v-for="(item, index) in noticeList" :key="index">
{{ item.title }}
<span> {{ item.noticeTitle }}</span>
<span class="noticePublishTime">{{ item.noticePublishTime }}</span>
<el-button type="text" @click="handleNotice(item)" style="color:#F56C6C;font-size: 14px;">[点击查看]</el-button>
</p>
</div>
</div>
......@@ -34,7 +36,22 @@ export default {
secondAnimationTime: '', // 状态二动画效果
};
},
watch: {
noticeList: {
handler (newName, oldName) {
let that = this
this.Listener();
setTimeout(res => {
that.getData();
}, 100);
},
deep: true
}
},
methods: {
handleNotice (item) {
this.$alertMes(item.noticeTitle, item.noticeContent)
},
// 获取数据
getData () {
let style = document.styleSheets[0];
......@@ -53,7 +70,7 @@ export default {
);
setTimeout(res => {
this.changeState();
}, 1000);
}, 300);
},
// 用速度计算时间(想要保持速度一样,2种状态时间不同需算出)
ComputationTime () {
......@@ -89,12 +106,6 @@ export default {
let text = this.$refs.text;
text.style.animationPlayState = ''
}
},
mounted () {
this.Listener();
setTimeout(res => {
this.getData();
}, 100);
}
};
</script>
......@@ -104,7 +115,6 @@ export default {
align-items: center;
width: 100%;
height: 28px;
line-height: 28px;
background: rgba(0, 0, 0, 0.1);
.icon {
......@@ -132,7 +142,11 @@ export default {
display: flex;
p {
margin-right: 10px;
margin-right: 80px;
display: flex;
align-items: center;
height: 28px;
line-height: 28px;
}
}
}
......
......@@ -90,6 +90,14 @@ export default {
padding: 3px !important;
}
/deep/.el-calendar-table td.is-today {
font-weight: 700;
}
/deep/.el-calendar-table td.is-selected {
background-color: rgb(179, 216, 255);
}
/deep/.el-calendar__header {
padding: 8px 15px;
}
......@@ -141,9 +149,9 @@ export default {
}
/**本月周末设置为红色*/
.el-calendar-table .current:nth-last-child(-n+2) .solar {
/* .el-calendar-table .current:nth-last-child(-n+2) .solar {
color: red;
}
} */
/**本月农历设置为灰色*/
.el-calendar-table .current .lunar {
......
......@@ -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>
......@@ -23,8 +21,11 @@
</div>
</template>
<script>
import NoticeBar from '@/components/NoticeBar/index'
import { mapGetters } from 'vuex'
import NoticeBar from '@/components/NoticeBar/index'
import {
getHomeNoticeList
} from "@/api/home.js"
export default {
components: {
NoticeBar
......@@ -35,20 +36,20 @@ export default {
data () {
return {
logo: require('../../image/logo.png'),
noticeList: [
{
title: '6666666666666666666'
},
{
title: '3333333333333333333'
},
{
title: '6666666666666666666'
}
]
noticeList: []
}
},
created () {
this.queryNoticeList()
},
methods: {
queryNoticeList () {
getHomeNoticeList().then(res => {
if (res.result) {
this.noticeList = res.result.noticeList
}
})
},
themeChange (val) {
this.$store.dispatch('app/updateTheme', val)
},
......@@ -220,27 +221,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.noticePublishTime.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
}
})
},
......@@ -202,9 +192,9 @@ export default {
if (res.result) {
this.noticeList = res.result.noticeList
this.noticeList.forEach(item => {
item.createtime = this._timedate(item.createtime)
item.noticePublishTime = this._timedate(item.noticePublishTime)
})
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%"
@closeDialog="closeDialog" v-model="value">
<dialogBox :title="title" @submitForm="submitForm" saveButton="保存" :isFullscreen="false" width="50%"
@closeDialog="closeDialog" v-model="value" :isButton="isButtonFlag">
<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-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>
</el-form-item>
</el-col>
</el-row>
</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 +47,37 @@
</template>
<script>
import { addSysNotice } from "@/api/notice.js"
import { upload } from "@/api/system.js"
import { addSysNotice,updateSysNotice } from "@/api/notice.js";
import { upload } from "@/api/system.js";
import { quillEditor } from "vue-quill-editor";
export default {
props: {
value: { type: Boolean, default: false },
isButtonFlag: { type: Boolean, default: true },
title: {type:String, default: '新增系统通知'}
},
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,66 +90,72 @@ 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;
that.$refs.ruleForm.validate(valid => {
if (valid) {
addSysNotice(this.ruleForm).then(res => {
if (res.code == 200) {
this.$message.success('保存成功')
this.$emit("input", false);
this.resetRuleForm();
this.$parent.queryClick();
} else {
this.$message.error(res.message)
}
})
if(that.ruleForm.bsmNotice){
that.editNotice();
}else{
that.addNotice();
}
} else {
// console.log('error submit!!');
return false;
......@@ -168,27 +167,69 @@ export default {
this.$emit("input", false);
this.resetRuleForm();
},
//
//新增通知
addNotice(){
addSysNotice(this.ruleForm).then(res => {
if (res.code == 200) {
this.$message.success("保存成功");
this.$emit("input", false);
this.resetRuleForm();
this.$parent.queryClick();
} else {
this.$message.error(res.message);
}
});
},
//编辑通知
editNotice(){
updateSysNotice(this.ruleForm).then(res => {
if (res.code == 200) {
this.$message.success("编辑成功");
this.$emit("input", false);
this.resetRuleForm();
this.$parent.queryClick();
} else {
this.$message.error(res.message);
}
});
},
//重置表单
resetRuleForm () {
this.$refs['ruleForm'].resetFields();
this.ruleForm.noticeType = '1'
this.ruleForm = {
noticeTitle: "",
noticeContent: "",
noticeFileUrl: "",
noticeSource: "",
noticeType: "1"
}
this.isButtonFlag = true;
},
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)
},
getDetailInfo(item){
this.ruleForm = item
},
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 +237,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
......
<template>
<div>
<el-row :gutter="8">
<el-col :span="16">
通知标题:
<el-input v-model="formData.item.noticeTitle"></el-input>
</el-col>
</el-row>
<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> -->
</el-col>
</el-row>
<el-row :gutter="8">
<el-col :span="24" class="margin-top-middle">
附件:
<div @click="handleView(formData.item.noticeFileUrl)" class="pointer">{{ formData.item.noticeFileName }}</div>
</el-col>
</el-row>
</div>
</template>
<script>
import { quillEditor } from "vue-quill-editor";
export default {
components: { quillEditor },
data () {
return {
// 富文本编辑器配置
editorOption: {
theme: "snow", // or 'bubble'
placeholder: "请输入正文",
},
};
},
components: {},
props: {
formData: {
type: Object,
default: () => { }
},
},
created () {
console.log(this.formData);
},
computed: {
},
methods: {
},
};
</script>
<style scoped lang='scss'>
.margin-top-middle {
margin-top: 10px
}
/deep/.ql-editor {
padding: 0px;
}
</style>
\ No newline at end of file
......@@ -33,7 +33,7 @@
:data="tableData.data">
</lb-table>
</div>
<addDialog ref="addDialog" v-model="isDialog" />
<addDialog ref="addDialog" v-model="isDialog" :isButtonFlag="isButtonFlag" :title="dialogTitle"/>
</div>
</template>
<script>
......@@ -52,7 +52,8 @@ export default {
data () {
return {
isDialog: false,
viewDialog: false,
isButtonFlag: true,
dialogTitle: '',
ruleForm: {
noticeTitle: '',
noticeStatus: ''
......@@ -83,7 +84,17 @@ export default {
})
},
//打开新增弹窗
openDialog () {
openDialog (item) {
if (item) {
this.$nextTick(() => {
this.isButtonFlag = false;
this.$refs.addDialog.getDetailInfo(item);
this.dialogTitle = '系统通知详情'
})
}else{
this.isButtonFlag = true;
this.dialogTitle = '新增系统通知'
}
this.isDialog = true;
},
//删除
......@@ -152,16 +163,18 @@ export default {
});
});
},
//编辑通知
editNotice(item) {
this.$nextTick(() => {
this.isButtonFlag = true;
this.$refs.addDialog.getDetailInfo(item);
this.dialogTitle = '编辑系统通知'
this.isDialog = true;
})
},
downloadFile (item) {
const href = item.noticeFileUrl
window.open(href, '_blank');
},
viewDetail (e) {
this.$popup("错误日志", "system/xttz/components/viewDialog", {
formData: {
item: e
}
})
}
},
};
......
......@@ -26,29 +26,37 @@ class data extends filter {
label: "通知标题",
},
{
prop: "noticeSource",
label: "通知来源",
},
{
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: "noticePublishTime",
label: "发布时间",
},
{
prop: "creater",
......@@ -67,14 +75,15 @@ class data extends filter {
switch (scope.row.noticeStatus) {
case '1':
return <div>
<el-button type="text" icon="el-icon-view" onClick={() => { vm.openDialog(scope.row) }}>查看</el-button>
<el-button type="text" icon="el-icon-edit" onClick={() => { vm.editNotice(scope.row) }}>编辑</el-button>
<el-button type="text" icon="el-icon-edit-outline" onClick={() => { vm.toPublish(scope.row) }}>发布</el-button>
<el-button type="text" onClick={() => { vm.viewDetail(scope.row) }}>查看</el-button>
<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" icon="el-icon-view" onClick={() => { vm.openDialog(scope.row) }}>查看</el-button>
<el-button type="text" icon="el-icon-edit-outline" onClick={() => { vm.toUnPublish(scope.row) }}>撤销通知</el-button>
</div>
}
}
......
<template>
<dialogBox title="申请人信息" width="60%" isMain v-model="myValue" :isFullscreen="false" @submitForm="submitForm"
@closeDialog="closeDialog">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px">
<dialogBox
title="申请人信息"
width="60%"
isMain
v-model="myValue"
:isFullscreen="false"
@submitForm="submitForm"
@closeDialog="closeDialog"
>
<el-form
:model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="120px"
>
<el-row>
<el-col :span="8">
<el-form-item label="权利人类型" prop="sqrlx">
<el-select clearable v-model="ruleForm.sqrlx" class="width100" placeholder="请选择">
<el-option v-for="item in dictData['A36']" :key="item.dcode" :label="item.dname" :value="item.dcode">
<el-select
clearable
v-model="ruleForm.sqrlx"
class="width100"
placeholder="请选择"
>
<el-option
v-for="item in dictData['A36']"
:key="item.dcode"
:label="item.dname"
:value="item.dcode"
>
</el-option>
</el-select>
</el-form-item>
......@@ -18,8 +40,18 @@
</el-col>
<el-col :span="8">
<el-form-item label="证件种类" prop="zjzl">
<el-select clearable v-model="ruleForm.zjzl" class="width100" placeholder="请选择">
<el-option v-for="item in dictData['A30']" :key="item.dcode" :label="item.dname" :value="item.dcode">
<el-select
clearable
v-model="ruleForm.zjzl"
class="width100"
placeholder="请选择"
>
<el-option
v-for="item in dictData['A30']"
:key="item.dcode"
:label="item.dname"
:value="item.dcode"
>
</el-option>
</el-select>
</el-form-item>
......@@ -38,8 +70,18 @@
</el-col>
<el-col :span="8">
<el-form-item label="性别">
<el-select clearable v-model="ruleForm.xb" class="width100" placeholder="请选择">
<el-option v-for="item in dictData['A43']" :key="item.dcode" :label="item.dname" :value="item.dcode">
<el-select
clearable
v-model="ruleForm.xb"
class="width100"
placeholder="请选择"
>
<el-option
v-for="item in dictData['A43']"
:key="item.dcode"
:label="item.dname"
:value="item.dcode"
>
</el-option>
</el-select>
</el-form-item>
......@@ -120,8 +162,18 @@
</el-col>
<el-col :span="8">
<el-form-item label="代理人证件类型">
<el-select clearable v-model="ruleForm.dlrzjlx" class="width100" placeholder="请选择">
<el-option v-for="item in dictData['A30']" :key="item.dcode" :label="item.dname" :value="item.dcode">
<el-select
clearable
v-model="ruleForm.dlrzjlx"
class="width100"
placeholder="请选择"
>
<el-option
v-for="item in dictData['A30']"
:key="item.dcode"
:label="item.dname"
:value="item.dcode"
>
</el-option>
</el-select>
</el-form-item>
......@@ -138,74 +190,64 @@
</dialogBox>
</template>
<script>
import { mapGetters } from 'vuex'
import { mapGetters } from "vuex";
export default {
props: {
value: { type: Boolean, default: false },
details: { type: Object, default: {} }
details: { type: Object, default: {} },
},
computed: {
...mapGetters(["dictData"]),
},
data () {
data() {
return {
myValue: this.value,
ruleForm: {
sqrlx: '',
sqrmc: '',
zjzl: '',
zjh: '',
dh: '',
xb: '',
frmc: '',
gjdq: '',
szss: '',
dz: '',
yb: '',
fzjg: '',
dzyj: '',
qlbl: '',
gzdw: '',
dljg: '',
dlrxm: '',
dlrzjlx: '',
dlrzjh: ''
sqrlx: "",
sqrmc: "",
zjzl: "",
zjh: "",
dh: "",
xb: "",
frmc: "",
gjdq: "",
szss: "",
dz: "",
yb: "",
fzjg: "",
dzyj: "",
qlbl: "",
gzdw: "",
dljg: "",
dlrxm: "",
dlrzjlx: "",
dlrzjh: "",
},
rules: {
sqrlx: [
{ required: true, message: '权利人类型', trigger: 'change' }
],
sqrmc: [
{ required: true, message: '姓名/名称', trigger: 'blur' }
],
zjzl: [
{ required: true, message: '证件种类', trigger: 'change' }
],
zjh: [
{ required: true, message: '证件号', trigger: 'blur' }
]
}
}
sqrlx: [{ required: true, message: "权利人类型", trigger: "change" }],
sqrmc: [{ required: true, message: "姓名/名称", trigger: "blur" }],
zjzl: [{ required: true, message: "证件种类", trigger: "change" }],
zjh: [{ required: true, message: "证件号", trigger: "blur" }],
},
};
},
watch: {
value (val) {
this.myValue = _.cloneDeep(val)
value(val) {
this.myValue = _.cloneDeep(val);
},
details: {
handler: function (val, oldVal) {
this.ruleForm = val
this.ruleForm = val;
},
deep: true
}
deep: true,
},
},
methods: {
closeDialog () {
closeDialog() {
this.$emit("input", false);
this.$refs['ruleForm'].resetFields();
this.$refs["ruleForm"].resetFields();
},
submitForm () {
this.$emit("input", false);
this.$emit("updateDetail", _.cloneDeep(this.ruleForm));
submitForm() {
// this.$refs['ruleForm'].validate((valid) => {
// if (valid) {
// this.$message({
......@@ -217,9 +259,18 @@ export default {
// this.$message.error('请完善必填项');
// }
// })
}
}
}
this.$refs.ruleForm.validate((valid) => {
if (valid) {
this.$emit("input", false);
this.$emit("updateDetail", _.cloneDeep(this.ruleForm));
} else {
return false;
}
});
},
},
};
</script>
<style scoped lang="scss">
.submit-button {
......
......@@ -39,6 +39,9 @@ export function getForm(tabName, djywbm) {
case "diyaqSlxx":
form = require("@/views/ywbl/diyaq/slxx.vue");
break;
case "diyaqSlxx200":
form = require("@/views/ywbl/diyaq/slxx200.vue");
break;
case "clxx":
form = require("@/views/workflow/components/clxx.vue");
break;
......
......@@ -304,6 +304,7 @@ export default {
Init(formdata).then((res) => {
if (res.code === 200 && res.result) {
this.ruleForm = res.result;
this.ruleForm.diyaq.sfczjzhxz="0";
}
});
},
......
<template>
<!-- 受理信息 -->
<div class="slxx">
<el-form
:model="ruleForm"
:rules="rules"
ref="ruleForm"
:label-position="flag ? 'top' : ''"
:inline="flag"
label-width="140px"
>
<div class="slxx_con">
<div class="slxx_title title-block">
受理信息200
<div class="triangle"></div>
</div>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item :class="flag ? 'marginBot0' : ''" label="业务号:">
<el-input disabled v-model="ruleForm.slywxx.ywh"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :class="flag ? 'marginBot0' : ''" label="受理人员:">
<el-input disabled v-model="ruleForm.slywxx.slry"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :class="flag ? 'marginBot0' : ''" label="受理时间:">
<el-input disabled v-model="ruleForm.slywxx.slsj"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item
:class="flag ? 'marginBot0' : ''"
label="权利类型:"
prop="qllx"
>
<el-input disabled v-model="ruleForm.slywxx.qllxmc"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
:class="flag ? 'marginBot0' : ''"
label="登记类型:"
prop="djlx"
>
<el-input disabled v-model="ruleForm.slywxx.djlxmc"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
:class="flag ? 'marginBot0' : ''"
label="登记情形:"
prop="djqx"
>
<el-input disabled v-model="ruleForm.slywxx.djqxmc"></el-input>
</el-form-item>
</el-col>
</el-row>
<div class="slxx_title title-block">
抵押不动产情况
<div class="triangle"></div>
</div>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item :class="flag ? 'marginBot0' : ''" label="权利人:">
<el-input disabled v-model="ruleForm.qlxxold.qlrmc"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :class="flag ? 'marginBot0' : ''" label="证件号:">
<el-input disabled v-model="ruleForm.qlxxold.qlrzjhm"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :class="flag ? 'marginBot0' : ''" label="证件种类:">
<el-input disabled v-model="ruleForm.qlxxold.qlrzjzl"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item
:class="flag ? 'marginBot0' : ''"
label="不动产权证号:"
>
<el-input disabled v-model="ruleForm.slywxx.ybdcqzsh"></el-input>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item :class="flag ? 'marginBot0' : ''" label="坐落:">
<el-input disabled v-model="ruleForm.qlxxold.zl"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item :class="flag ? 'marginBot0' : ''" label="用途:">
<el-input disabled v-model="ruleForm.qlxxold.ytmc"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
:class="flag ? 'marginBot0' : ''"
label="不动产单元号:"
>
<el-input disabled v-model="ruleForm.qlxxold.bdcdyh"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :class="flag ? 'marginBot0' : ''" label="面积:">
<el-input disabled v-model="ruleForm.qlxxold.mj"></el-input>
</el-form-item>
</el-col>
</el-row>
<div class="slxx_title title-block">
抵押信息
<div class="triangle"></div>
</div>
<el-row :gutter="10">
<el-col :span="8">
<el-form-item :class="flag ? 'marginBot0' : ''" label="抵押方式:">
<!-- <el-input disabled v-model="ruleForm.slywxx.djqxmc"></el-input> -->
<el-radio-group disabled v-model="ruleForm.diyaq.dyfs">
<el-radio label="1">一般抵押</el-radio>
<el-radio label="2">最高额抵押</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item
:class="flag ? 'marginBot0' : ''"
label="是否存在禁止或者限制转让抵押不动产的约定:"
label-width="350px"
>
<el-radio-group v-model="ruleForm.diyaq.sfczjzhxz">
<el-radio label="1">启用</el-radio>
<el-radio label="0">禁用</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="8" v-show="ruleForm.diyaq.dyfs==1">
<el-form-item
:class="flag ? 'marginBot0' : ''"
label="被担保主债权数额:"
>
<el-input v-model="ruleForm.diyaq.bdbzzqse"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" v-show="ruleForm.diyaq.dyfs==2">
<el-form-item
:class="flag ? 'marginBot0' : ''"
label="最高债权额:"
>
<el-input v-model="ruleForm.diyaq.zgzqse"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
:class="flag ? 'marginBot0' : ''"
label="债务履行起始时间:"
>
<el-date-picker v-model="ruleForm.diyaq.zwlxqssj" type="date">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
:class="flag ? 'marginBot0' : ''"
label="债务履行结束时间:"
>
<el-date-picker v-model="ruleForm.diyaq.zwlxjssj" type="date">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :class="flag ? 'marginBot0' : ''" label="担保范围:">
<el-input v-model="ruleForm.diyaq.dbfw"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :class="flag ? 'marginBot0' : ''" label="最高债权确定事实和数额:" label-width="200px">
<el-input v-model="ruleForm.diyaq.zgzqqdss"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row >
<el-col>
<el-form-item :class="flag ? 'marginBot0' : ''" label="附记:" prop="fj">
<el-input type="textarea" v-model="ruleForm.diyaq.fj" :disabled="$route.query.viewtype==1"></el-input>
</el-form-item>
</el-col>
</el-row>
<div class="slxx_title title-block">
抵押权人信息
<div class="triangle"></div>
</div>
<el-row :gutter="10">
<el-col :span="14">
<el-form-item :class="flag ? 'marginBot0' : ''" label="共有方式:">
<el-radio-group
:disabled="$route.query.viewtype == 1"
v-model="ruleForm.slywxx.gyfs"
>
<el-radio label="0">单独所有</el-radio>
<el-radio label="1">共同共有</el-radio>
<el-radio label="2">按份所有</el-radio>
<el-radio label="3">其它共有</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="5" v-show="ruleForm.gyfs == '2'">
<el-form-item
:class="flag ? 'marginBot0' : ''"
label="是否分别持证:"
>
<el-radio-group v-model="ruleForm.slywxx.sffbcz">
<el-radio label="1"></el-radio>
<el-radio label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="5" v-show="ruleForm.gyfs == '2'">
<el-form-item :class="flag ? 'marginBot0' : ''" label="持证人:">
<el-select v-model="ruleForm.czr" placeholder="持证人">
<el-option
v-for="item in czrOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<InformationTable
:tableData="ruleForm.qlrList"
@upDateQlrxxList="upDateQlrxxList"
:viewtype="$route.query.viewtype"
:gyfs="ruleForm.slywxx.gyfs"
/>
<div class="slxx_title title-block">
抵押人信息
<div class="triangle"></div>
</div>
<InformationTable
:tableData="ruleForm.ywrList"
@upDateQlrxxList="upDateYwrxxList"
:viewtype="$route.query.viewtype"
/>
<div class="slxx_title title-block">
登记原因
<div class="triangle"></div>
</div>
<el-row :gutter="10">
<el-col>
<el-form-item :class="flag ? 'marginBot0' : ''" label="登记原因:" prop="djyy">
<el-input class="textArea" type="textarea" :disabled="$route.query.viewtype==1" v-model="ruleForm.diyaq.djyy">
</el-input>
</el-form-item>
</el-col>
</el-row>
</div>
<el-row class="btn" v-if="!$route.query.viewtype">
<el-form-item :class="flag ? 'marginBot0' : ''">
<el-button type="primary" @click="onSubmitClick()">保存</el-button>
</el-form-item>
</el-row>
</el-form>
</div>
</template>
<script>
import InformationTable from "@/views/workflow/components/InformationTable";
import { Init, saveData } from "@/api/diyaqFlow.js";
import { mapGetters } from "vuex";
export default {
async created() {
this.propsParam = this.$attrs;
var formdata = new FormData();
formdata.append("bsmSldy", this.propsParam.bsmSldy);
formdata.append("bsmSlsq", this.$route.query.bsmSlsq);
formdata.append("djlx", this.propsParam.djlx);
Init(formdata).then((res) => {
if (res.code === 200 && res.result) {
this.ruleForm = res.result;
this.ruleForm.diyaq.sfczjzhxz="0";
}
});
},
components: { InformationTable },
computed: {
...mapGetters(["dictData", "flag"]),
},
data() {
return {
disabled: true,
czrOptions: [],
ruleForm: {
slywxx: {},
qlxxold: {},
diyaq: {},
gyfs: "",
},
//传递参数
propsParam: {},
rules: {},
};
},
methods: {
// list(bsmSldy) {
// Init({
// bsmSldy: bsmSldy.split(","),
// }).then((res) => {
// if (res.code === 200 && res.result) {
// this.ruleForm = {
// ...res.result,
// ...res.result.zdjbxxdatas,
// ...res.result.qlxxdatas,
// ...res.result.jsydsyqdatas,
// };
// }
// });
// },
onSubmitClick() {
saveData(this.ruleForm).then((res) => {
if (res.code === 200) {
this.$message({
showClose: true,
message: "保存成功!",
type: "success",
});
} else {
this.$message({
showClose: true,
message: res.message,
type: "error",
});
}
});
},
// 更新权利人信息
upDateQlrxxList(val) {
this.ruleForm.qlrList = _.cloneDeep(val);
},
// 更新义务人信息
upDateYwrxxList(val) {
this.ruleForm.ywrList = _.cloneDeep(val);
},
},
};
</script>
<style scoped lang='scss'>
@import "~@/styles/public.scss";
@import "~@/styles/slxx/slxx.scss";
</style>
......@@ -166,6 +166,7 @@ export default {
});
},
handleSelectionChange(val) {
debugger;
val.forEach((item, index) => {
item.bsmSsql = item.bsmQlxx;
item.ybdcqzsh = item.bdcqzh;
......
......@@ -157,6 +157,7 @@ export default {
message: "发起申请成功",
type: "success",
});
debugger;
if (!this.isJump) {
this.jump(res.result, this.djywbm);
} else {
......@@ -168,6 +169,7 @@ export default {
});
},
handleSelectionChange(val) {
debugger;
val.forEach((item, index) => {
item.bsmSsql = item.bsmQlxx;
item.ybdcqzsh = item.bdcqzh;
......
......@@ -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":
......