@@ -13,8 +13,8 @@ module.exports = { | |||
"/api": { | |||
// 请求的目标主机 | |||
//target: 'http://116.255.223.226:8081/nsgk_test/', | |||
//target: 'http://localhost:8080/', | |||
target: 'http://192.168.0.107:8080/', | |||
target: 'http://localhost:8080/', | |||
//target: 'http://192.168.0.107:8080/', | |||
changeOrigin: true, | |||
pathRewrite: { | |||
'^/api': '' | |||
@@ -1660,7 +1660,6 @@ | |||
"version": "1.0.2", | |||
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", | |||
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", | |||
"dev": true, | |||
"requires": { | |||
"function-bind": "^1.1.1", | |||
"get-intrinsic": "^1.0.2" | |||
@@ -3315,7 +3314,6 @@ | |||
"version": "1.1.1", | |||
"resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz?cache=0&sync_timestamp=1606860101281&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.1.1.tgz", | |||
"integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=", | |||
"dev": true, | |||
"requires": { | |||
"is-arguments": "^1.0.4", | |||
"is-date-object": "^1.0.1", | |||
@@ -3334,7 +3332,6 @@ | |||
"version": "1.1.3", | |||
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", | |||
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", | |||
"dev": true, | |||
"requires": { | |||
"object-keys": "^1.0.12" | |||
} | |||
@@ -4271,6 +4268,11 @@ | |||
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", | |||
"dev": true | |||
}, | |||
"fast-diff": { | |||
"version": "1.1.2", | |||
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", | |||
"integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" | |||
}, | |||
"fast-json-stable-stringify": { | |||
"version": "2.1.0", | |||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", | |||
@@ -4647,7 +4649,6 @@ | |||
"version": "1.1.1", | |||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", | |||
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", | |||
"dev": true, | |||
"requires": { | |||
"function-bind": "^1.1.1", | |||
"has": "^1.0.3", | |||
@@ -4870,8 +4871,7 @@ | |||
"has-symbols": { | |||
"version": "1.0.2", | |||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", | |||
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", | |||
"dev": true | |||
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" | |||
}, | |||
"has-unicode": { | |||
"version": "2.0.1", | |||
@@ -5485,7 +5485,6 @@ | |||
"version": "1.1.0", | |||
"resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.1.0.tgz?cache=0&sync_timestamp=1607117404740&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-arguments%2Fdownload%2Fis-arguments-1.1.0.tgz", | |||
"integrity": "sha1-YjUwMd++4HzrNGVqa95Z7+yujdk=", | |||
"dev": true, | |||
"requires": { | |||
"call-bind": "^1.0.0" | |||
} | |||
@@ -5563,8 +5562,7 @@ | |||
"is-date-object": { | |||
"version": "1.0.2", | |||
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", | |||
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", | |||
"dev": true | |||
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" | |||
}, | |||
"is-descriptor": { | |||
"version": "0.1.6", | |||
@@ -5711,7 +5709,6 @@ | |||
"version": "1.1.2", | |||
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", | |||
"integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", | |||
"dev": true, | |||
"requires": { | |||
"call-bind": "^1.0.2", | |||
"has-symbols": "^1.0.1" | |||
@@ -7044,7 +7041,6 @@ | |||
"version": "1.1.5", | |||
"resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.5.tgz?cache=0&sync_timestamp=1613857744782&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-is%2Fdownload%2Fobject-is-1.1.5.tgz", | |||
"integrity": "sha1-ud7qpfx/GEag+uzc7sE45XePU6w=", | |||
"dev": true, | |||
"requires": { | |||
"call-bind": "^1.0.2", | |||
"define-properties": "^1.1.3" | |||
@@ -7053,8 +7049,7 @@ | |||
"object-keys": { | |||
"version": "1.1.1", | |||
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", | |||
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", | |||
"dev": true | |||
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" | |||
}, | |||
"object-visit": { | |||
"version": "1.0.1", | |||
@@ -7339,6 +7334,11 @@ | |||
"no-case": "^2.2.0" | |||
} | |||
}, | |||
"parchment": { | |||
"version": "1.1.4", | |||
"resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", | |||
"integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" | |||
}, | |||
"parse-asn1": { | |||
"version": "5.1.6", | |||
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", | |||
@@ -10137,6 +10137,41 @@ | |||
"integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=", | |||
"dev": true | |||
}, | |||
"quill": { | |||
"version": "1.3.7", | |||
"resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", | |||
"integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", | |||
"requires": { | |||
"clone": "^2.1.1", | |||
"deep-equal": "^1.0.1", | |||
"eventemitter3": "^2.0.3", | |||
"extend": "^3.0.2", | |||
"parchment": "^1.1.4", | |||
"quill-delta": "^3.6.2" | |||
}, | |||
"dependencies": { | |||
"clone": { | |||
"version": "2.1.2", | |||
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", | |||
"integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" | |||
}, | |||
"eventemitter3": { | |||
"version": "2.0.3", | |||
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", | |||
"integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==" | |||
} | |||
} | |||
}, | |||
"quill-delta": { | |||
"version": "3.6.3", | |||
"resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", | |||
"integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", | |||
"requires": { | |||
"deep-equal": "^1.0.1", | |||
"extend": "^3.0.2", | |||
"fast-diff": "1.1.2" | |||
} | |||
}, | |||
"randomatic": { | |||
"version": "3.1.1", | |||
"resolved": "https://registry.npm.taobao.org/randomatic/download/randomatic-3.1.1.tgz", | |||
@@ -10424,7 +10459,6 @@ | |||
"version": "1.3.1", | |||
"resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.1.tgz?cache=0&sync_timestamp=1610725679574&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp.prototype.flags%2Fdownload%2Fregexp.prototype.flags-1.3.1.tgz", | |||
"integrity": "sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY=", | |||
"dev": true, | |||
"requires": { | |||
"call-bind": "^1.0.2", | |||
"define-properties": "^1.1.3" | |||
@@ -12410,6 +12444,15 @@ | |||
} | |||
} | |||
}, | |||
"vue-quill-editor": { | |||
"version": "3.0.6", | |||
"resolved": "https://registry.npmjs.org/vue-quill-editor/-/vue-quill-editor-3.0.6.tgz", | |||
"integrity": "sha512-g20oSZNWg8Hbu41Kinjd55e235qVWPLfg4NvsLW6d+DhgBTFbEuMpcWlUdrD6qT3+Noim6DRu18VLM9lVShXOQ==", | |||
"requires": { | |||
"object-assign": "^4.1.1", | |||
"quill": "^1.3.4" | |||
} | |||
}, | |||
"vue-resize-sensor": { | |||
"version": "2.0.0", | |||
"resolved": "https://registry.npmjs.org/vue-resize-sensor/-/vue-resize-sensor-2.0.0.tgz", | |||
@@ -24,6 +24,7 @@ | |||
"node-sass": "^5.0.0", | |||
"nprogress": "^0.2.0", | |||
"postcss-px2rem-exclude": "0.0.6", | |||
"quill": "^1.3.7", | |||
"sass": "^1.32.8", | |||
"sass-loader": "^6.0.6", | |||
"vant": "^2.12.8", | |||
@@ -33,6 +34,7 @@ | |||
"vue-esign": "^1.0.5", | |||
"vue-pdf": "^4.3.0", | |||
"vue-qrcode-reader": "^3.1.0", | |||
"vue-quill-editor": "^3.0.6", | |||
"vue-router": "^3.0.1", | |||
"vue-search-tree": "^1.9.9", | |||
"vuex": "^3.6.2", | |||
@@ -354,3 +354,54 @@ export function updateTYinnongTransferFoStatus(data) { | |||
data: data | |||
}) | |||
} | |||
// 查询重大事项申请列表 | |||
export function listMajorevent(query) { | |||
return request({ | |||
url: '/yinnong/majorevent/list', | |||
method: 'get', | |||
params: query | |||
}) | |||
} | |||
// 新增重大事项申请 | |||
export function addMajorevent(data) { | |||
return request({ | |||
url: '/yinnong/majorevent/add', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 提交审批 | |||
export function customSubmitMajorevent(id) { | |||
return request({ | |||
url: '/yinnong/majorevent/customSubmit/' + id, | |||
method: 'post' | |||
}) | |||
} | |||
// 查询重大事项申请详细 | |||
export function getMajorevent(id) { | |||
return request({ | |||
url: '/yinnong/majorevent/get/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 修改重大事项申请 | |||
export function updateMajorevent(data) { | |||
return request({ | |||
url: '/yinnong/majorevent/edit', | |||
method: 'post', | |||
data: data | |||
}) | |||
} | |||
// 删除重大事项申请 | |||
export function delMajorevent(id) { | |||
return request({ | |||
url: '/yinnong/majorevent/remove/' + id, | |||
method: 'get' | |||
}) | |||
} | |||
@@ -0,0 +1,292 @@ | |||
<template> | |||
<div> | |||
<div class="editor" ref="editor" :style="styles"> | |||
</div> | |||
<!-- 图片上传组件辅助--> | |||
<vant-upload | |||
class="avatar-uploader" | |||
:action="serverUrl" | |||
:headers="header" | |||
name="file" | |||
:show-file-list="false" | |||
:on-success="uploadSuccess" | |||
:on-error="uploadError" | |||
:before-upload="beforeUpload"> | |||
</vant-upload> | |||
</div> | |||
</template> | |||
<script> | |||
import Quill from "quill"; | |||
import "quill/dist/quill.core.css"; | |||
import "quill/dist/quill.snow.css"; | |||
import "quill/dist/quill.bubble.css"; | |||
import { addQuillTitle } from './quill-title.js'; | |||
import { getToken } from '@/utils/auth'; | |||
const toolbarOptions =[ | |||
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线 | |||
["blockquote", "code-block"], // 引用 代码块 | |||
[{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表 | |||
[{ indent: "-1" }, { indent: "+1" }], // 缩进 | |||
[{ size: ["small", false, "large", "huge"] }], // 字体大小 | |||
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题 | |||
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色 | |||
[{ align: [] }], // 对齐方式 | |||
["clean"], // 清除文本格式 | |||
["link", "image", "video"] // 链接、图片、视频 | |||
] | |||
export default { | |||
name: "Editor", | |||
props: { | |||
/* 编辑器的内容 */ | |||
value: { | |||
type: String, | |||
default: "", | |||
}, | |||
/* 高度 */ | |||
height: { | |||
type: Number, | |||
default: null, | |||
}, | |||
// 上传文件大小限制(MB) | |||
fileSize: { | |||
type: Number, | |||
default: 5, | |||
}, | |||
/* 类型(base64格式、url格式) */ | |||
type: { | |||
type: String, | |||
default: "url", | |||
}, | |||
/* 只读 */ | |||
readOnly: { | |||
type: Boolean, | |||
default: false, | |||
}, | |||
/* 最小高度 */ | |||
minHeight: { | |||
type: Number, | |||
default: null, | |||
}, | |||
}, | |||
data() { | |||
return { | |||
serverUrl: process.env.VUE_APP_BASE_API + "/common/upload", | |||
header: {Authorization: "Bearer " + getToken()}, | |||
Quill: null, | |||
quillUpdateImg: false, | |||
currentValue: "", | |||
options: { | |||
theme: "snow", | |||
bounds: document.body, | |||
debug: "warn", | |||
modules: { | |||
toolbar: { | |||
// 工具栏配置 | |||
container: toolbarOptions, | |||
handlers: { | |||
'image': function (value) { | |||
if (value) { | |||
document.querySelector('.avatar-uploader input').click() | |||
} else { | |||
this.quill.format('image', false); | |||
} | |||
}, | |||
// 'video': function (value) { | |||
// if (value) { | |||
// document.querySelector('.avatar-uploader input').click() | |||
// } else { | |||
// this.quill.format('video', false); | |||
// } | |||
// }, | |||
} | |||
} | |||
}, | |||
placeholder: "请输入内容", | |||
readOnly: this.readOnly, | |||
}, | |||
}; | |||
}, | |||
computed: { | |||
styles() { | |||
let style = {}; | |||
if (this.minHeight) { | |||
style.minHeight = `${this.minHeight}px`; | |||
} | |||
if (this.height) { | |||
style.height = `${this.height}px`; | |||
} | |||
return style; | |||
}, | |||
}, | |||
watch: { | |||
value: { | |||
handler(val) { | |||
if (val !== this.currentValue) { | |||
this.currentValue = val === null ? "" : val; | |||
if (this.Quill) { | |||
this.Quill.pasteHTML(this.currentValue); | |||
} | |||
} | |||
}, | |||
immediate: true, | |||
}, | |||
}, | |||
mounted() { | |||
this.init(); | |||
}, | |||
beforeDestroy() { | |||
this.Quill = null; | |||
}, | |||
methods: { | |||
init() { | |||
const editor = this.$refs.editor; | |||
this.Quill = new Quill(editor, this.options); | |||
this.Quill.pasteHTML(this.currentValue); | |||
this.Quill.on("text-change", (delta, oldDelta, source) => { | |||
const html = this.$refs.editor.children[0].innerHTML; | |||
const text = this.Quill.getText(); | |||
const quill = this.Quill; | |||
this.currentValue = html; | |||
this.$emit("input", html); | |||
this.$emit("on-change", { html, text, quill }); | |||
}); | |||
this.Quill.on("text-change", (delta, oldDelta, source) => { | |||
this.$emit("on-text-change", delta, oldDelta, source); | |||
}); | |||
this.Quill.on("selection-change", (range, oldRange, source) => { | |||
this.$emit("on-selection-change", range, oldRange, source); | |||
}); | |||
this.Quill.on("editor-change", (eventName, ...args) => { | |||
this.$emit("on-editor-change", eventName, ...args); | |||
}); | |||
// 增加编辑器按钮title提示 | |||
addQuillTitle(); | |||
}, | |||
// 上传图片前 | |||
beforeUpload(file) { | |||
this.quillUpdateImg = true; | |||
// 校检文件大小 | |||
if (this.fileSize) { | |||
const isLt = file.size / 1024 / 1024 < this.fileSize; | |||
if (!isLt) { | |||
this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`); | |||
return false; | |||
} | |||
} | |||
return true; | |||
}, | |||
// 上传图片成功 | |||
uploadSuccess(res, file) { | |||
// res为图片服务器返回的数据 | |||
// 获取富文本组件实例 | |||
let quill = this.Quill | |||
// 如果上传成功 | |||
if (res.code == 200 && res.url !== null) { | |||
// 获取光标所在位置 | |||
let length = quill.getSelection().index; | |||
// 插入图片 res.info为服务器返回的图片地址 | |||
quill.insertEmbed(length, 'image', this.$store.getters.baseRoutingUrl + res.fileName) | |||
// 调整光标到最后 | |||
quill.setSelection(length + 1) | |||
} else { | |||
this.$message.error(res.msg) | |||
} | |||
// loading动画消失 | |||
this.quillUpdateImg = false | |||
}, | |||
// 上传图片失败 | |||
uploadError(res, file) { | |||
// loading动画消失 | |||
this.quillUpdateImg = false | |||
this.$message.error('图片插入失败') | |||
} | |||
}, | |||
}; | |||
</script> | |||
<style> | |||
.editor, .ql-toolbar { | |||
white-space: pre-wrap!important; | |||
line-height: normal !important; | |||
} | |||
.quill-img { | |||
display: none; | |||
} | |||
.ql-snow .ql-tooltip[data-mode="link"]::before { | |||
content: "请输入链接地址:"; | |||
} | |||
.ql-snow .ql-tooltip.ql-editing a.ql-action::after { | |||
border-right: 0px; | |||
content: "保存"; | |||
padding-right: 0px; | |||
} | |||
.ql-snow .ql-tooltip[data-mode="video"]::before { | |||
content: "请输入视频地址:"; | |||
} | |||
.ql-snow .ql-picker.ql-size .ql-picker-label::before, | |||
.ql-snow .ql-picker.ql-size .ql-picker-item::before { | |||
content: "14px"; | |||
} | |||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before, | |||
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before { | |||
content: "10px"; | |||
} | |||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before, | |||
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before { | |||
content: "18px"; | |||
} | |||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before, | |||
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before { | |||
content: "32px"; | |||
} | |||
.ql-snow .ql-picker.ql-header .ql-picker-label::before, | |||
.ql-snow .ql-picker.ql-header .ql-picker-item::before { | |||
content: "文本"; | |||
} | |||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, | |||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { | |||
content: "标题1"; | |||
} | |||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, | |||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { | |||
content: "标题2"; | |||
} | |||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, | |||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { | |||
content: "标题3"; | |||
} | |||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, | |||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { | |||
content: "标题4"; | |||
} | |||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, | |||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { | |||
content: "标题5"; | |||
} | |||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, | |||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { | |||
content: "标题6"; | |||
} | |||
.ql-snow .ql-picker.ql-font .ql-picker-label::before, | |||
.ql-snow .ql-picker.ql-font .ql-picker-item::before { | |||
content: "标准字体"; | |||
} | |||
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before, | |||
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before { | |||
content: "衬线字体"; | |||
} | |||
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before, | |||
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before { | |||
content: "等宽字体"; | |||
} | |||
</style> |
@@ -0,0 +1,57 @@ | |||
const titleConfig = { | |||
'ql-bold':'加粗', | |||
'ql-color':'字体颜色', | |||
'ql-font':'字体', | |||
'ql-code':'插入代码', | |||
'ql-italic':'斜体', | |||
'ql-link':'添加链接', | |||
'ql-background':'背景颜色', | |||
'ql-size':'字体大小', | |||
'ql-strike':'删除线', | |||
'ql-script':'上标/下标', | |||
'ql-underline':'下划线', | |||
'ql-blockquote':'引用', | |||
'ql-header':'标题', | |||
'ql-indent':'缩进', | |||
'ql-list':'列表', | |||
'ql-align':'文本对齐', | |||
'ql-direction':'文本方向', | |||
'ql-code-block':'代码块', | |||
'ql-formula':'公式', | |||
'ql-image':'图片', | |||
'ql-video':'视频', | |||
'ql-clean':'清除字体样式' | |||
}; | |||
// 增加编辑器按钮title提示 | |||
export function addQuillTitle(){ | |||
const oToolBar = document.querySelector('.ql-toolbar'), | |||
aButton = oToolBar.querySelectorAll('button'), | |||
aSelect = oToolBar.querySelectorAll('select'), | |||
aSpan= oToolBar.querySelectorAll('span'); | |||
aButton.forEach((item)=>{ | |||
if(item.className === 'ql-script'){ | |||
item.value === 'sub' ? item.title = '下标': item.title = '上标'; | |||
}else if(item.className === 'ql-indent'){ | |||
item.value === '+1' ? item.title ='向右缩进': item.title ='向左缩进'; | |||
}else if(item.className === 'ql-list'){ | |||
item.value==='ordered' ? item.title='有序列表' : item.title='无序列表' | |||
}else if(item.className === 'ql-header'){ | |||
item.value === '1' ? item.title = '标题H1': item.title = '标题H2'; | |||
}else{ | |||
item.title = titleConfig[item.classList[0]]; | |||
} | |||
}); | |||
aSelect.forEach((item)=>{ | |||
if(item.className!='ql-color'&&item.className!='ql-background'){ | |||
item.parentNode.title = titleConfig[item.classList[0]]; | |||
} | |||
}); | |||
aSpan.forEach((item)=>{ | |||
if(item.classList[0]==='ql-color'){ | |||
item.title = titleConfig[item.classList[0]]; | |||
}else if(item.classList[0]==='ql-background'){ | |||
item.title = titleConfig[item.classList[0]]; | |||
} | |||
}); | |||
} |
@@ -1906,6 +1906,15 @@ export const constantRoutes = [ | |||
}, | |||
component: (resolve) => require(['@/views/yinnong/bankAgriculture/paymentApproval/approvalList3'], resolve) | |||
}, | |||
{ | |||
path: '/yinnong/approvalList13', | |||
name: 'approvalList13', | |||
meta: { | |||
title: '重大事项', | |||
hidden: true, | |||
}, | |||
component: (resolve) => require(['@/views/yinnong/bankAgriculture/paymentApproval/approvalList13'], resolve) | |||
}, | |||
{ | |||
path: '/yinnong/approvalList4', | |||
name: 'approvalList4', | |||
@@ -1978,6 +1987,15 @@ export const constantRoutes = [ | |||
}, | |||
component: (resolve) => require(['@/views/yinnong/bankAgriculture/paymentApproval/approvalDetail3'], resolve) | |||
}, | |||
{ | |||
path: '/yinnong/approvalDetail13', | |||
name: 'approvalDetail13', | |||
meta: { | |||
title: '重大事项', | |||
hidden: true, | |||
}, | |||
component: (resolve) => require(['@/views/yinnong/bankAgriculture/paymentApproval/approvalDetail13'], resolve) | |||
}, | |||
{ | |||
path: '/yinnong/approvalDetail4', | |||
name: 'approvalDetail4', | |||
@@ -2097,6 +2115,15 @@ export const constantRoutes = [ | |||
}, | |||
component: (resolve) => require(['@/views/yinnong/bankAgriculture/paymentApproval/approvalAdd12'], resolve) | |||
}, | |||
{ | |||
path: '/yinnong/approvalAdd13', | |||
name: 'approvalAdd13', | |||
meta: { | |||
title: '添加重大事项', | |||
hidden: true, | |||
}, | |||
component: (resolve) => require(['@/views/yinnong/bankAgriculture/paymentApproval/approvalAdd13'], resolve) | |||
}, | |||
{ | |||
path: '/yinnong/approval/collectionAdd', | |||
name: 'approvalCollectionAdd', | |||
@@ -2188,6 +2215,15 @@ export const constantRoutes = [ | |||
}, | |||
component: (resolve) => require(['@/views/yinnong/bankAgriculture/paymentApproval/approvalModify3'], resolve) | |||
}, | |||
{ | |||
path: '/yinnong/approvalModify13', | |||
name: 'approvalModify13', | |||
meta: { | |||
title: '修改重大事项', | |||
hidden: true, | |||
}, | |||
component: (resolve) => require(['@/views/yinnong/bankAgriculture/paymentApproval/approvalModify13'], resolve) | |||
}, | |||
{ | |||
path: '/yinnong/approvalModify4', | |||
name: 'approvalModify4', | |||
@@ -2260,6 +2296,15 @@ export const constantRoutes = [ | |||
}, | |||
component: (resolve) => require(['@/views/yinnong/bankAgriculture/paymentApproval/approvalProcess3'], resolve) | |||
}, | |||
{ | |||
path: '/yinnong/approvalProcess13', | |||
name: 'approvalProcess13', | |||
meta: { | |||
title: '审批流程', | |||
hidden: true, | |||
}, | |||
component: (resolve) => require(['@/views/yinnong/bankAgriculture/paymentApproval/approvalProcess13'], resolve) | |||
}, | |||
{ | |||
path: '/yinnong/collectionList', | |||
name: 'collectionList', | |||
@@ -0,0 +1,311 @@ | |||
<template> | |||
<div class="app-container"> | |||
<van-nav-bar | |||
left-arrow | |||
fixed | |||
placeholder | |||
@click-left="$router.back(-1)" | |||
> | |||
<template #title> | |||
<p style="font-weight: bold;">添加重大事项</p> | |||
</template> | |||
<!-- <template #right>--> | |||
<!-- <van-icon name="../../../static/images/icon/icon_flow.png" size="20" @click="goFlow"/>--> | |||
<!-- </template>--> | |||
</van-nav-bar> | |||
<van-form @submit="getChange" @failed="getError" :show-error-message="false" scroll-to-error validate-first> | |||
<p class="main_title">基础信息</p> | |||
<div class="main_box"> | |||
<van-field | |||
label="事项名称" | |||
v-model="form.eventName" | |||
placeholder="请输入事项名称" | |||
input-align="right" | |||
label-width="auto" | |||
required | |||
:rules="[{ required: true , message:'请输入事项名称' }]" | |||
/> | |||
<van-field | |||
readonly | |||
clickable | |||
required | |||
:rules="[{ required: true , message:'请选择发生日期' }]" | |||
v-model="form.eventTime" | |||
label="发生日期" | |||
placeholder="请选择发生日期" | |||
@click="showlasj = true" | |||
input-align="right" | |||
right-icon="arrow-down" | |||
/> | |||
<van-popup v-model="showlasj" position="bottom"> | |||
<van-datetime-picker | |||
v-model="currentDate" | |||
type="date" | |||
title="选择年月日" | |||
:min-date="minDate" | |||
:max-date="maxDate" | |||
@confirm="onConfirmLasj" | |||
@cancel="showlasj = false" | |||
/> | |||
</van-popup> | |||
</div> | |||
<div class="main_box" style="margin-top: 10px;"> | |||
<van-field | |||
label="事项内容" | |||
input-align="right" | |||
label-width="auto" | |||
readonly | |||
/> | |||
<van-field | |||
v-model="form.eventContent" | |||
type="textarea" | |||
placeholder="请输入事项内容" | |||
rows="8" | |||
required | |||
:rules="[{ required: true , message:'请输入事项内容' }]" | |||
/> | |||
<!-- <editor v-model="form.eventContent" :min-height="192"/>--> | |||
<!-- <quill-editors @ChangeText="(text)=>{form.eventContent=text}" :title="title" />--> | |||
</div> | |||
<div class="main_box" style="margin-top: 10px;"> | |||
<van-field | |||
label="备注" | |||
v-model="form.remark" | |||
type="textarea" | |||
placeholder="请输入备注" | |||
input-align="right" | |||
rows="3" | |||
label-width="auto" | |||
/> | |||
</div> | |||
<!-- <p class="main_title">上传附件</p>--> | |||
<!-- <div class="main_box" style="padding: 5px 0 0 8px;">--> | |||
<!-- <van-uploader v-model="fileList" :after-read="beforeRead" @delete="deleteFile"></van-uploader>--> | |||
<!-- </div>--> | |||
<div style="padding: 16px 0;"> | |||
<van-row> | |||
<van-col span="6"></van-col> | |||
<van-col span="12" align="center"> | |||
<!-- @click="goUpdate"--> | |||
<van-button type="info" native-type="submit" @click="buttonType='update'" class="submitButton">保<i style="margin-right: 1em;"></i>存</van-button> | |||
</van-col> | |||
<!-- <van-col span="12" align="center">--> | |||
<!-- <!– @click="goAdd"–>--> | |||
<!-- <van-button type="info" native-type="submit" @click="buttonType='add'" class="submitButton">保存并提交</van-button>--> | |||
<!-- </van-col>--> | |||
</van-row> | |||
<div class="clear"></div> | |||
</div> | |||
</van-form> | |||
</div> | |||
</template> | |||
<script> | |||
import {addMajorevent , customSubmitMajorevent , attachmentList } from "@/api/onlineHome/bankAgriculture/paymentApproval"; | |||
import request from '@/utils/request'; | |||
import Dialog from "vant/lib/dialog"; | |||
import Editor from '@/components/Editor'; | |||
export default { | |||
name: "approvalAdd3", | |||
components: { | |||
Editor, | |||
}, | |||
data() { | |||
return { | |||
title:false, | |||
showcapital:false, | |||
showpayee:false, | |||
showlasj:false, | |||
showbankType:false, | |||
showproject:false, | |||
showFundType:false, | |||
showpayer:false, | |||
buttonType:'a', | |||
minDate: new Date(2000, 1, 1), | |||
maxDate: new Date(2050, 12, 31), | |||
currentDate: new Date(), | |||
form:{}, | |||
fileList:[], | |||
capitalExpenditureType:'', | |||
payee:'', | |||
bankType:'', | |||
wfydlxDictionaries:[], | |||
jglxDictionaries:[], | |||
sysDictionaries:[], | |||
capitalExpenditureTypeOptions:[], | |||
bankTypeDictionaries:[], | |||
projectList:[], | |||
projectFundTypeOptions:[], | |||
projectFundTypeDictionaries:[], | |||
projectListShow:[], | |||
payerOptions:[], | |||
chargeItme:[], | |||
chargeItmeShow:[], | |||
payeeList:[], | |||
// 查询参数 | |||
queryParams: { | |||
transferType:"", | |||
orderByColumn: "id", | |||
isAsc: "desc", | |||
}, | |||
capitalExpenditureOpen:false, | |||
projectForm:{ | |||
projectId:null, | |||
projectName:null, | |||
projectContractor:null, | |||
projectAmount:null, | |||
projectBillNum:null, | |||
projectFundType:'1', | |||
outId:null, | |||
ynType:'2' | |||
}, | |||
projectFundType:'', | |||
uploadFiles:[], | |||
}; | |||
}, | |||
created() { | |||
this.reset(); | |||
}, | |||
methods: { | |||
// 表单重置 | |||
reset() { | |||
this.form = { | |||
id: null, | |||
upId: null, | |||
downId: null, | |||
orderId: null, | |||
cashierId: null, | |||
transferType: '3', | |||
accountType: '2', | |||
explainSituation: null, | |||
succeedAmount: null, | |||
payer: null, | |||
payerAccount: null, | |||
operatorCode: null, | |||
enterpriseCode: null, | |||
expenditureAmount: null, | |||
capitalExpenditureType: '1', | |||
remark: null, | |||
transferStatus: "0", | |||
auditStatus: "0", | |||
paymentState: "1", | |||
bankPriority: "0", | |||
clientPriority: "0" | |||
}; | |||
this.processList = {} | |||
this.projectForm={ | |||
projectId:null, | |||
projectName:null, | |||
projectContractor:null, | |||
projectAmount:null, | |||
projectBillNum:null, | |||
projectFundType:'1', | |||
outId:null, | |||
ynType:'1' | |||
} | |||
}, | |||
goFlow(){ | |||
if(this.form.approvalMode == '1' && this.form.approvalTemplateId != undefined && this.form.approvalTemplateId != "undefined"){ | |||
window.location='approvalProcess3?approvalTemplateId='+this.form.approvalTemplateId+'&approvalMode='+this.form.approvalMode; | |||
}else{ | |||
this.$notify({ type: 'danger', message: '无审批流程!' }); | |||
} | |||
}, | |||
getChange(){ | |||
addMajorevent(this.form).then(response => { | |||
this.$toast.success('保存成功'); | |||
setTimeout(function(){ | |||
history.go(-1) | |||
},2000) | |||
}); | |||
}, | |||
getError(e){ | |||
console.log(e) | |||
this.$notify({ type: 'danger', message: e.errors[0].message }); | |||
}, | |||
onConfirmLasj(data){ | |||
this.form.eventTime = this.getNowFormatDate(data).substr(0,10); | |||
this.showlasj = false; | |||
}, | |||
beforeRead(file) { | |||
this.uploadFiles.push(file.file); | |||
}, | |||
deleteFile(file){ | |||
this.uploadFiles.map((response,index) => { | |||
if(file.file == response){ | |||
this.uploadFiles.splice(index,1) | |||
} | |||
}) | |||
}, | |||
getFileList(){ | |||
let oData= { | |||
tableId: this.$route.query.id, | |||
tableName: "t_yinnong_transfer", | |||
bizPath: "upload", | |||
fileType: "0", | |||
} | |||
attachmentList(oData).then(res => { | |||
console.log(res) | |||
console.log(location.protocol+"//"+location.host+request.defaults.baseURL) | |||
res.rows.map(r => { | |||
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL | |||
this.fileList.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{})}) | |||
console.log(r) | |||
}) | |||
}) | |||
}, | |||
goBack(){ | |||
window.history.go(-1) | |||
}, | |||
//删除家庭成员 | |||
deleteChargeItme(index){ | |||
this.chargeItme.splice(index,1) | |||
}, | |||
}, | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.app-container { | |||
padding: 2% 0; | |||
} | |||
.main_title{ | |||
font-size: 0.4rem; | |||
color: #1D6FE9; | |||
margin: 0.2rem 6%; | |||
position: relative; | |||
} | |||
.main_box{ | |||
width: 96%; | |||
margin: 0 auto; | |||
border-radius: 6px; | |||
box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16); | |||
overflow: hidden; | |||
background-color: #FFF; | |||
} | |||
.submitButton{ | |||
width: 80%; | |||
margin: 0 auto; | |||
background-color: #1D6FE9; | |||
} | |||
.addFamily{ | |||
position: absolute; | |||
top: -2px; | |||
right: 0; | |||
border-radius: 50%; | |||
} | |||
.deleteFamily{ | |||
position: absolute; | |||
top: 0rem; | |||
right: 6%; | |||
z-index: 9; | |||
border-radius: 50%; | |||
} | |||
</style> |
@@ -0,0 +1,298 @@ | |||
<template> | |||
<div class="app-container"> | |||
<van-nav-bar | |||
left-arrow | |||
fixed | |||
placeholder | |||
@click-left="$router.back(-1)" | |||
> | |||
<template #title> | |||
<p style="font-weight: bold;">重大事项</p> | |||
</template> | |||
<template #right> | |||
<van-icon name="../../../static/images/icon/icon_flow.png" size="20" @click="goFlow"/> | |||
</template> | |||
</van-nav-bar> | |||
<van-form @submit="getChange" @failed="getError" :show-error-message="false" scroll-to-error validate-first readonly> | |||
<p class="main_title">基础信息</p> | |||
<div class="main_box"> | |||
<van-field | |||
label="事项名称" | |||
v-model="form.eventName" | |||
placeholder="事项名称" | |||
input-align="right" | |||
label-width="auto" | |||
required | |||
:rules="[{ required: true , message:'事项名称' }]" | |||
/> | |||
<van-field | |||
readonly | |||
clickable | |||
required | |||
:rules="[{ required: true , message:'发生日期' }]" | |||
v-model="form.eventTime" | |||
label="发生日期" | |||
placeholder="发生日期" | |||
input-align="right" | |||
right-icon="arrow-down" | |||
/> | |||
<van-popup v-model="showlasj" position="bottom"> | |||
<van-datetime-picker | |||
v-model="currentDate" | |||
type="date" | |||
title="选择年月日" | |||
:min-date="minDate" | |||
:max-date="maxDate" | |||
@confirm="onConfirmLasj" | |||
@cancel="showlasj = false" | |||
/> | |||
</van-popup> | |||
</div> | |||
<div class="main_box" style="margin-top: 10px;"> | |||
<van-field | |||
label="事项内容" | |||
input-align="right" | |||
label-width="auto" | |||
readonly | |||
/> | |||
<van-field | |||
v-model="form.eventContent" | |||
type="textarea" | |||
placeholder="事项内容" | |||
rows="8" | |||
required | |||
:rules="[{ required: true , message:'事项内容' }]" | |||
/> | |||
<!-- <editor v-model="form.eventContent" :min-height="192"/>--> | |||
<!-- <quill-editors @ChangeText="(text)=>{form.eventContent=text}" :title="title" />--> | |||
</div> | |||
<div class="main_box" style="margin-top: 10px;"> | |||
<van-field | |||
label="备注" | |||
v-model="form.remark" | |||
type="textarea" | |||
placeholder="备注" | |||
input-align="right" | |||
rows="3" | |||
label-width="auto" | |||
/> | |||
</div> | |||
<!-- <p class="main_title">上传附件</p>--> | |||
<!-- <div class="main_box" style="padding: 5px 0 0 8px;">--> | |||
<!-- <van-uploader v-model="fileList" :after-read="beforeRead" @delete="deleteFile"></van-uploader>--> | |||
<!-- </div>--> | |||
</van-form> | |||
</div> | |||
</template> | |||
<script> | |||
import { addMajorevent , getMajorevent , attachmentList , updateMajorevent } from "@/api/onlineHome/bankAgriculture/paymentApproval"; | |||
import request from '@/utils/request'; | |||
import Dialog from "vant/lib/dialog"; | |||
import Editor from '@/components/Editor'; | |||
export default { | |||
name: "approvalAdd3", | |||
components: { | |||
Editor, | |||
}, | |||
data() { | |||
return { | |||
title:false, | |||
showcapital:false, | |||
showpayee:false, | |||
showlasj:false, | |||
showbankType:false, | |||
showproject:false, | |||
showFundType:false, | |||
showpayer:false, | |||
buttonType:'a', | |||
minDate: new Date(2000, 1, 1), | |||
maxDate: new Date(2050, 12, 31), | |||
currentDate: new Date(), | |||
form:{}, | |||
fileList:[], | |||
capitalExpenditureType:'', | |||
payee:'', | |||
bankType:'', | |||
wfydlxDictionaries:[], | |||
jglxDictionaries:[], | |||
sysDictionaries:[], | |||
capitalExpenditureTypeOptions:[], | |||
bankTypeDictionaries:[], | |||
projectList:[], | |||
projectFundTypeOptions:[], | |||
projectFundTypeDictionaries:[], | |||
projectListShow:[], | |||
payerOptions:[], | |||
chargeItme:[], | |||
chargeItmeShow:[], | |||
payeeList:[], | |||
// 查询参数 | |||
queryParams: { | |||
transferType:"", | |||
orderByColumn: "id", | |||
isAsc: "desc", | |||
}, | |||
capitalExpenditureOpen:false, | |||
projectForm:{ | |||
projectId:null, | |||
projectName:null, | |||
projectContractor:null, | |||
projectAmount:null, | |||
projectBillNum:null, | |||
projectFundType:'1', | |||
outId:null, | |||
ynType:'2' | |||
}, | |||
projectFundType:'', | |||
uploadFiles:[], | |||
}; | |||
}, | |||
created() { | |||
this.reset(); | |||
this.getForm(); | |||
}, | |||
methods: { | |||
// 表单重置 | |||
reset() { | |||
this.form = { | |||
id: null, | |||
upId: null, | |||
downId: null, | |||
orderId: null, | |||
cashierId: null, | |||
transferType: '3', | |||
accountType: '2', | |||
explainSituation: null, | |||
succeedAmount: null, | |||
payer: null, | |||
payerAccount: null, | |||
operatorCode: null, | |||
enterpriseCode: null, | |||
expenditureAmount: null, | |||
capitalExpenditureType: '1', | |||
remark: null, | |||
transferStatus: "0", | |||
auditStatus: "0", | |||
paymentState: "1", | |||
bankPriority: "0", | |||
clientPriority: "0" | |||
}; | |||
this.processList = {} | |||
this.projectForm={ | |||
projectId:null, | |||
projectName:null, | |||
projectContractor:null, | |||
projectAmount:null, | |||
projectBillNum:null, | |||
projectFundType:'1', | |||
outId:null, | |||
ynType:'1' | |||
} | |||
}, | |||
getForm(){ | |||
getMajorevent(this.$route.query.id).then(response => { | |||
this.form = response.data; | |||
}); | |||
}, | |||
goFlow(){ | |||
window.location='approvalProcess13?id='+this.form.instanceId; | |||
}, | |||
getChange(){ | |||
updateMajorevent(this.form).then(response => { | |||
this.$toast.success('修改成功'); | |||
setTimeout(function(){ | |||
history.go(-1) | |||
},2000) | |||
}); | |||
}, | |||
getError(e){ | |||
console.log(e) | |||
this.$notify({ type: 'danger', message: e.errors[0].message }); | |||
}, | |||
onConfirmLasj(data){ | |||
this.form.eventTime = this.getNowFormatDate(data).substr(0,10); | |||
this.showlasj = false; | |||
}, | |||
beforeRead(file) { | |||
this.uploadFiles.push(file.file); | |||
}, | |||
deleteFile(file){ | |||
this.uploadFiles.map((response,index) => { | |||
if(file.file == response){ | |||
this.uploadFiles.splice(index,1) | |||
} | |||
}) | |||
}, | |||
getFileList(){ | |||
let oData= { | |||
tableId: this.$route.query.id, | |||
tableName: "t_yinnong_transfer", | |||
bizPath: "upload", | |||
fileType: "0", | |||
} | |||
attachmentList(oData).then(res => { | |||
console.log(res) | |||
console.log(location.protocol+"//"+location.host+request.defaults.baseURL) | |||
res.rows.map(r => { | |||
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL | |||
this.fileList.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{})}) | |||
console.log(r) | |||
}) | |||
}) | |||
}, | |||
goBack(){ | |||
window.history.go(-1) | |||
}, | |||
//删除家庭成员 | |||
deleteChargeItme(index){ | |||
this.chargeItme.splice(index,1) | |||
}, | |||
}, | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.app-container { | |||
padding: 2% 0; | |||
} | |||
.main_title{ | |||
font-size: 0.4rem; | |||
color: #1D6FE9; | |||
margin: 0.2rem 6%; | |||
position: relative; | |||
} | |||
.main_box{ | |||
width: 96%; | |||
margin: 0 auto; | |||
border-radius: 6px; | |||
box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16); | |||
overflow: hidden; | |||
background-color: #FFF; | |||
} | |||
.submitButton{ | |||
width: 80%; | |||
margin: 0 auto; | |||
background-color: #1D6FE9; | |||
} | |||
.addFamily{ | |||
position: absolute; | |||
top: -2px; | |||
right: 0; | |||
border-radius: 50%; | |||
} | |||
.deleteFamily{ | |||
position: absolute; | |||
top: 0rem; | |||
right: 6%; | |||
z-index: 9; | |||
border-radius: 50%; | |||
} | |||
</style> |
@@ -0,0 +1,228 @@ | |||
<template> | |||
<div class="app-container"> | |||
<van-nav-bar | |||
left-arrow | |||
fixed | |||
placeholder | |||
@click-left="$router.back(-1)" | |||
@click-right="goAdd()" | |||
> | |||
<template #title> | |||
<p style="font-weight: bold;">重大事项</p> | |||
</template> | |||
<template #right> | |||
<van-icon name="add" size="18"/> | |||
</template> | |||
</van-nav-bar> | |||
<van-list | |||
v-model="loading" | |||
:finished="finished" | |||
finished-text="没有更多了" | |||
@load="getList" | |||
> | |||
<van-swipe-cell v-for="(item,index) in applicationList" :key="index"> | |||
<van-cell :title="item.eventName" :value="item.auditStatus" center :to="{name:'approvalDetail13', query: {id:item.id}}"> | |||
<template #icon> | |||
<van-icon name="../../../../../static/images/onlineHome/icon_yn3.png" size="30" color="#539FFD" style="margin-right: 10px;" /> | |||
</template> | |||
<template #label> | |||
<p>{{item.eventTime}}</p> | |||
</template> | |||
</van-cell> | |||
<template #right> | |||
<van-row> | |||
<van-col> | |||
<van-button v-if="item.auditStatus=='草稿'||item.auditStatus=='驳回'" square text="修改" type="info" :to="{name:'approvalModify13', query: {id:item.id}}" class="delete-button" /> | |||
</van-col> | |||
<van-col> | |||
<van-button v-if="item.auditStatus=='草稿'||item.auditStatus=='驳回'" color="#FFA63E" square text="提交" type="info" @click="onSubmit(item.id)" class="delete-button" /> | |||
</van-col> | |||
<van-col> | |||
<van-button v-if="item.auditStatus=='草稿'||item.auditStatus=='驳回'" square text="删除" type="danger" @click="deleteList(item.id,index)" class="delete-button" /> | |||
</van-col> | |||
<van-col> | |||
<van-button v-if="item.auditStatus=='草稿'||item.auditStatus=='驳回'" square text="附件" style="background-color: rgb(98,173,102,0.2);color: #62AD66;" @click="openLoader(item.id,index)" class="delete-button" /> | |||
</van-col> | |||
</van-row> | |||
</template> | |||
</van-swipe-cell> | |||
</van-list> | |||
<van-popup v-model="show" lock-scroll closeable position="top" :style="{ height: '30%' }" > | |||
<div style="padding: 0 13% 0 5%;"> | |||
<van-divider>附件</van-divider> | |||
<van-uploader v-model="fileList" :after-read="afterRead" @delete="deleteFile1" multiple /> | |||
</div> | |||
</van-popup> | |||
</div> | |||
</template> | |||
<script> | |||
import { delMajorevent , customSubmitMajorevent , delTransfer , listMajorevent } from "@/api/onlineHome/bankAgriculture/paymentApproval"; | |||
import {attachmentList, commonAttach, systemAttachment} from "@/api/sunVillage_info/fixedAssets"; | |||
import request from "@/utils/request"; | |||
export default { | |||
name: "approvalList3", | |||
data() { | |||
return { | |||
applicationList:[], | |||
auditStatusOptions:[], | |||
loading: false, | |||
finished: false, | |||
queryParams:{ | |||
pageNum:1, | |||
pageSize:10, | |||
transferType:"3", | |||
}, | |||
show: false, | |||
fileList:[], | |||
uploadFiles1:[], | |||
projectId:'', | |||
projectIndex:'' | |||
}; | |||
}, | |||
created() { | |||
this.getDicts("audit_status").then((response) => { | |||
this.auditStatusOptions = response.data; | |||
}); | |||
}, | |||
methods: { | |||
goAdd(){ | |||
window.location = 'approvalAdd13'; | |||
}, | |||
getList(){ | |||
setTimeout(() => { | |||
listMajorevent(this.queryParams).then(response => { | |||
console.log(response) | |||
for (var i = 0; i < response.rows.length; i++) { | |||
response.rows[i].auditStatus = this.selectDictLabel(this.auditStatusOptions, response.rows[i].auditStatus); | |||
this.applicationList.push(response.rows[i]); | |||
} | |||
if(this.applicationList.length >= response.total){ | |||
this.finished = true; | |||
return; | |||
}else{ | |||
this.loading = false; | |||
this.queryParams.pageNum += 1 ; | |||
} | |||
}); | |||
}, 1000); | |||
}, | |||
openLoader(id,index){ | |||
this.show = true; | |||
this.projectId = id; | |||
this.projectIndex = index; | |||
this.fileList = []; | |||
let oData1= { | |||
tableId: id, | |||
tableName: "t_yinnong_transfer", | |||
bizPath: "transfer", | |||
fileType: '', | |||
} | |||
attachmentList(oData1).then(res => { | |||
res.rows.map(r => { | |||
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL | |||
this.fileList.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{}),"id":r.id}) | |||
}) | |||
}) | |||
}, | |||
deleteList(id,index){ | |||
this.$dialog.confirm({ | |||
message: '您确认删除草稿?', | |||
}) | |||
.then(() => { | |||
// on confirm | |||
this.applicationList.splice(index,1) | |||
delMajorevent(id).then(res => { | |||
if(res.code = 200){ | |||
this.$toast.success('删除成功'); | |||
} | |||
}); | |||
}) | |||
.catch(() => { | |||
// on cancel | |||
}); | |||
}, | |||
onSubmit(id){ | |||
this.$dialog.confirm({ | |||
message: '您确认提交草稿?', | |||
}) | |||
.then(() => { | |||
customSubmitMajorevent(id).then(res => { | |||
this.$toast.success('提交成功'); | |||
setTimeout(function(){ | |||
history.go(0) | |||
},2000) | |||
}) | |||
}) | |||
.catch(() => { | |||
// on cancel | |||
}); | |||
}, | |||
afterRead(file) { | |||
// 此时可以自行将文件上传至服务器 | |||
this.uploadFiles1.push(file.file); | |||
let params1 = new FormData(); | |||
params1.append("tableId", this.projectId); | |||
params1.append("tableName", "t_yinnong_transfer"); | |||
params1.append("bizPath", "transfer"); | |||
params1.append("fileType", 'bookkeeping_type'); | |||
params1.append("file", file.file); | |||
commonAttach(params1).then((r1) => { | |||
this.$notify({ type: 'success', message: '上传成功' }); | |||
}) | |||
}, | |||
deleteFile1(file){ | |||
console.log(file) | |||
systemAttachment(file.id).then(res => { | |||
this.$notify({ type: 'success', message: '删除成功' }); | |||
}) | |||
}, | |||
}, | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.app-container { | |||
padding: 0.2rem 3%; | |||
} | |||
/deep/.van-cell__title{ | |||
flex: 0.7; | |||
} | |||
/deep/.van-cell__title span{ | |||
font-family: Arial; | |||
font-size: 0.4rem; | |||
font-weight: normal; | |||
} | |||
/deep/.van-cell__label span{ | |||
color: #1D6FE9; | |||
font-weight: bold; | |||
i{ | |||
font-size: 0.2rem; | |||
} | |||
} | |||
/deep/.van-cell__value{ | |||
flex: 0.3; | |||
color: #1D6FE9; | |||
font-weight: bold; | |||
} | |||
/deep/.van-swipe-cell{ | |||
margin-bottom: 0.2rem; | |||
border-radius: 0.2rem; | |||
overflow: hidden; | |||
box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16); | |||
} | |||
/deep/van-ellipsis{ | |||
font-weight: bold; | |||
} | |||
.van-row{ | |||
height: 100%; | |||
} | |||
.van-col{ | |||
height: 100%; | |||
} | |||
.delete-button { | |||
height: 100%; | |||
} | |||
</style> |
@@ -0,0 +1,314 @@ | |||
<template> | |||
<div class="app-container"> | |||
<van-nav-bar | |||
left-arrow | |||
fixed | |||
placeholder | |||
@click-left="$router.back(-1)" | |||
> | |||
<template #title> | |||
<p style="font-weight: bold;">修改重大事项</p> | |||
</template> | |||
</van-nav-bar> | |||
<van-form @submit="getChange" @failed="getError" :show-error-message="false" scroll-to-error validate-first> | |||
<p class="main_title">基础信息</p> | |||
<div class="main_box"> | |||
<van-field | |||
label="事项名称" | |||
v-model="form.eventName" | |||
placeholder="请输入事项名称" | |||
input-align="right" | |||
label-width="auto" | |||
required | |||
:rules="[{ required: true , message:'请输入事项名称' }]" | |||
/> | |||
<van-field | |||
readonly | |||
clickable | |||
required | |||
:rules="[{ required: true , message:'请选择发生日期' }]" | |||
v-model="form.eventTime" | |||
label="发生日期" | |||
placeholder="请选择发生日期" | |||
@click="showlasj = true" | |||
input-align="right" | |||
right-icon="arrow-down" | |||
/> | |||
<van-popup v-model="showlasj" position="bottom"> | |||
<van-datetime-picker | |||
v-model="currentDate" | |||
type="date" | |||
title="选择年月日" | |||
:min-date="minDate" | |||
:max-date="maxDate" | |||
@confirm="onConfirmLasj" | |||
@cancel="showlasj = false" | |||
/> | |||
</van-popup> | |||
</div> | |||
<div class="main_box" style="margin-top: 10px;"> | |||
<van-field | |||
label="事项内容" | |||
input-align="right" | |||
label-width="auto" | |||
readonly | |||
/> | |||
<van-field | |||
v-model="form.eventContent" | |||
type="textarea" | |||
placeholder="请输入事项内容" | |||
rows="8" | |||
required | |||
:rules="[{ required: true , message:'请输入事项内容' }]" | |||
/> | |||
<!-- <editor v-model="form.eventContent" :min-height="192"/>--> | |||
<!-- <quill-editors @ChangeText="(text)=>{form.eventContent=text}" :title="title" />--> | |||
</div> | |||
<div class="main_box" style="margin-top: 10px;"> | |||
<van-field | |||
label="备注" | |||
v-model="form.remark" | |||
type="textarea" | |||
placeholder="请输入备注" | |||
input-align="right" | |||
rows="3" | |||
label-width="auto" | |||
/> | |||
</div> | |||
<!-- <p class="main_title">上传附件</p>--> | |||
<!-- <div class="main_box" style="padding: 5px 0 0 8px;">--> | |||
<!-- <van-uploader v-model="fileList" :after-read="beforeRead" @delete="deleteFile"></van-uploader>--> | |||
<!-- </div>--> | |||
<div style="padding: 16px 0;"> | |||
<van-row> | |||
<van-col span="6"></van-col> | |||
<van-col span="12" align="center"> | |||
<!-- @click="goUpdate"--> | |||
<van-button type="info" native-type="submit" @click="buttonType='update'" class="submitButton">保<i style="margin-right: 1em;"></i>存</van-button> | |||
</van-col> | |||
<!-- <van-col span="12" align="center">--> | |||
<!-- <!– @click="goAdd"–>--> | |||
<!-- <van-button type="info" native-type="submit" @click="buttonType='add'" class="submitButton">保存并提交</van-button>--> | |||
<!-- </van-col>--> | |||
</van-row> | |||
<div class="clear"></div> | |||
</div> | |||
</van-form> | |||
</div> | |||
</template> | |||
<script> | |||
import { addMajorevent , getMajorevent , attachmentList , updateMajorevent } from "@/api/onlineHome/bankAgriculture/paymentApproval"; | |||
import request from '@/utils/request'; | |||
import Dialog from "vant/lib/dialog"; | |||
import Editor from '@/components/Editor'; | |||
export default { | |||
name: "approvalAdd3", | |||
components: { | |||
Editor, | |||
}, | |||
data() { | |||
return { | |||
title:false, | |||
showcapital:false, | |||
showpayee:false, | |||
showlasj:false, | |||
showbankType:false, | |||
showproject:false, | |||
showFundType:false, | |||
showpayer:false, | |||
buttonType:'a', | |||
minDate: new Date(2000, 1, 1), | |||
maxDate: new Date(2050, 12, 31), | |||
currentDate: new Date(), | |||
form:{}, | |||
fileList:[], | |||
capitalExpenditureType:'', | |||
payee:'', | |||
bankType:'', | |||
wfydlxDictionaries:[], | |||
jglxDictionaries:[], | |||
sysDictionaries:[], | |||
capitalExpenditureTypeOptions:[], | |||
bankTypeDictionaries:[], | |||
projectList:[], | |||
projectFundTypeOptions:[], | |||
projectFundTypeDictionaries:[], | |||
projectListShow:[], | |||
payerOptions:[], | |||
chargeItme:[], | |||
chargeItmeShow:[], | |||
payeeList:[], | |||
// 查询参数 | |||
queryParams: { | |||
transferType:"", | |||
orderByColumn: "id", | |||
isAsc: "desc", | |||
}, | |||
capitalExpenditureOpen:false, | |||
projectForm:{ | |||
projectId:null, | |||
projectName:null, | |||
projectContractor:null, | |||
projectAmount:null, | |||
projectBillNum:null, | |||
projectFundType:'1', | |||
outId:null, | |||
ynType:'2' | |||
}, | |||
projectFundType:'', | |||
uploadFiles:[], | |||
}; | |||
}, | |||
created() { | |||
this.reset(); | |||
this.getForm(); | |||
}, | |||
methods: { | |||
// 表单重置 | |||
reset() { | |||
this.form = { | |||
id: null, | |||
upId: null, | |||
downId: null, | |||
orderId: null, | |||
cashierId: null, | |||
transferType: '3', | |||
accountType: '2', | |||
explainSituation: null, | |||
succeedAmount: null, | |||
payer: null, | |||
payerAccount: null, | |||
operatorCode: null, | |||
enterpriseCode: null, | |||
expenditureAmount: null, | |||
capitalExpenditureType: '1', | |||
remark: null, | |||
transferStatus: "0", | |||
auditStatus: "0", | |||
paymentState: "1", | |||
bankPriority: "0", | |||
clientPriority: "0" | |||
}; | |||
this.processList = {} | |||
this.projectForm={ | |||
projectId:null, | |||
projectName:null, | |||
projectContractor:null, | |||
projectAmount:null, | |||
projectBillNum:null, | |||
projectFundType:'1', | |||
outId:null, | |||
ynType:'1' | |||
} | |||
}, | |||
getForm(){ | |||
getMajorevent(this.$route.query.id).then(response => { | |||
this.form = response.data; | |||
}); | |||
}, | |||
goFlow(){ | |||
if(this.form.approvalMode == '1' && this.form.approvalTemplateId != undefined && this.form.approvalTemplateId != "undefined"){ | |||
window.location='approvalProcess3?approvalTemplateId='+this.form.approvalTemplateId+'&approvalMode='+this.form.approvalMode; | |||
}else{ | |||
this.$notify({ type: 'danger', message: '无审批流程!' }); | |||
} | |||
}, | |||
getChange(){ | |||
updateMajorevent(this.form).then(response => { | |||
this.$toast.success('修改成功'); | |||
setTimeout(function(){ | |||
history.go(-1) | |||
},2000) | |||
}); | |||
}, | |||
getError(e){ | |||
console.log(e) | |||
this.$notify({ type: 'danger', message: e.errors[0].message }); | |||
}, | |||
onConfirmLasj(data){ | |||
this.form.eventTime = this.getNowFormatDate(data).substr(0,10); | |||
this.showlasj = false; | |||
}, | |||
beforeRead(file) { | |||
this.uploadFiles.push(file.file); | |||
}, | |||
deleteFile(file){ | |||
this.uploadFiles.map((response,index) => { | |||
if(file.file == response){ | |||
this.uploadFiles.splice(index,1) | |||
} | |||
}) | |||
}, | |||
getFileList(){ | |||
let oData= { | |||
tableId: this.$route.query.id, | |||
tableName: "t_yinnong_transfer", | |||
bizPath: "upload", | |||
fileType: "0", | |||
} | |||
attachmentList(oData).then(res => { | |||
console.log(res) | |||
console.log(location.protocol+"//"+location.host+request.defaults.baseURL) | |||
res.rows.map(r => { | |||
let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL | |||
this.fileList.push({"url":baseUrl + r.fileUrl,"file":new File([],r.fileName,{})}) | |||
console.log(r) | |||
}) | |||
}) | |||
}, | |||
goBack(){ | |||
window.history.go(-1) | |||
}, | |||
//删除家庭成员 | |||
deleteChargeItme(index){ | |||
this.chargeItme.splice(index,1) | |||
}, | |||
}, | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.app-container { | |||
padding: 2% 0; | |||
} | |||
.main_title{ | |||
font-size: 0.4rem; | |||
color: #1D6FE9; | |||
margin: 0.2rem 6%; | |||
position: relative; | |||
} | |||
.main_box{ | |||
width: 96%; | |||
margin: 0 auto; | |||
border-radius: 6px; | |||
box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16); | |||
overflow: hidden; | |||
background-color: #FFF; | |||
} | |||
.submitButton{ | |||
width: 80%; | |||
margin: 0 auto; | |||
background-color: #1D6FE9; | |||
} | |||
.addFamily{ | |||
position: absolute; | |||
top: -2px; | |||
right: 0; | |||
border-radius: 50%; | |||
} | |||
.deleteFamily{ | |||
position: absolute; | |||
top: 0rem; | |||
right: 6%; | |||
z-index: 9; | |||
border-radius: 50%; | |||
} | |||
</style> |
@@ -0,0 +1,169 @@ | |||
<template> | |||
<div class="app-container"> | |||
<van-nav-bar | |||
left-arrow | |||
fixed | |||
placeholder | |||
@click-left="$router.back(-1)" | |||
> | |||
<template #title> | |||
<p style="font-weight: bold;">审批历史</p> | |||
</template> | |||
</van-nav-bar> | |||
<div class="main_box"> | |||
<van-row v-if="approvalTemplateDetailList.length>0" v-for="(item1,index,i) in approvalTemplateDetailList" :key="i"> | |||
<van-col span="4" align="right"> | |||
<p class="icon_jian blue" ><van-icon name="minus" size="14" /></p> | |||
</van-col> | |||
<van-col span="20"> | |||
<van-row> | |||
<van-col span="9" style="padding: 0;"> | |||
<p>{{item1.activityName}}</p> | |||
</van-col> | |||
<van-col span="15" style="padding: 0;"> | |||
<p style="text-align: right;">{{item1.startTime}}</p> | |||
</van-col> | |||
</van-row> | |||
<van-row> | |||
<van-col span="9" style="padding: 0;"> | |||
<p>{{item1.assigneeName}}</p> | |||
</van-col> | |||
<van-col span="15" style="padding: 0;"> | |||
<p style="text-align: right;">{{item1.comment}}</p> | |||
</van-col> | |||
</van-row> | |||
</van-col> | |||
</van-row> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import request from "@/utils/request"; | |||
export default { | |||
name: "approvalProcess", | |||
data() { | |||
return { | |||
processList:{}, | |||
form:{}, | |||
approvalTemplateDeptList:[], | |||
approvalTemplateDetailList:[] | |||
}; | |||
}, | |||
created() { | |||
this.getHistoryList(this.$route.query.id); | |||
}, | |||
methods: { | |||
getHistoryList(instanceId) { | |||
this.loading = true; | |||
return request({ | |||
url: "/activiti/process/listHistory", | |||
method: "post", | |||
data: { processInstanceId: instanceId }, | |||
}) | |||
.then((response) => { | |||
this.approvalTemplateDetailList = response.rows; | |||
this.approvalTemplateDetailList.forEach((row) => { | |||
row.startTime = this.format(row.startTime, "yyyy-MM-dd HH:mm:ss"); | |||
row.endTime = this.format(row.endTime, "yyyy-MM-dd HH:mm:ss"); | |||
row.durationInMillis = this.formatTotalDateSub( | |||
row.durationInMillis / 1000 | |||
); | |||
}); | |||
this.total = response.total; | |||
this.loading = false; | |||
}) | |||
.then(() => {}); | |||
}, | |||
formatTotalDateSub (secondSub) { | |||
var days = Math.floor(secondSub / (24 * 3600)); // 计算出小时数 | |||
var leave1 = secondSub % (24*3600) ; // 计算天数后剩余的毫秒数 | |||
var hours = Math.floor(leave1 / 3600); // 计算相差分钟数 | |||
var leave2 = leave1 % (3600); // 计算小时数后剩余的毫秒数 | |||
var minutes = Math.floor(leave2 / 60); // 计算相差秒数 | |||
var leave3 = leave2 % 60; // 计算分钟数后剩余的毫秒数 | |||
var seconds = Math.round(leave3); | |||
return days + "天" + hours + "时" + minutes + "分" + seconds + '秒'; | |||
}, | |||
format(time, format) { | |||
var t = new Date(time); | |||
var tf = function (i) { return (i < 10 ? '0' : '') + i }; | |||
return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function (a) { | |||
switch (a) { | |||
case 'yyyy': | |||
return tf(t.getFullYear()); | |||
break; | |||
case 'MM': | |||
return tf(t.getMonth() + 1); | |||
break; | |||
case 'mm': | |||
return tf(t.getMinutes()); | |||
break; | |||
case 'dd': | |||
return tf(t.getDate()); | |||
break; | |||
case 'HH': | |||
return tf(t.getHours()); | |||
break; | |||
case 'ss': | |||
return tf(t.getSeconds()); | |||
break; | |||
} | |||
}) | |||
} | |||
}, | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.app-container { | |||
padding: 0.2rem 0; | |||
} | |||
.main_box{ | |||
width: 96%; | |||
margin: 0 auto; | |||
border-radius: 6px; | |||
box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16); | |||
overflow: hidden; | |||
background-color: #FFF; | |||
padding: 20Px 0; | |||
} | |||
.icon_jian{ | |||
background-color: #C9C9C9; | |||
display: inline-block; | |||
width: 20Px; | |||
height: 20Px; | |||
line-height: 24Px; | |||
text-align: center; | |||
border-radius: 50%; | |||
color: #FFF; | |||
} | |||
.blue{ | |||
background-color: #1D6FE9; | |||
} | |||
.red{ | |||
background-color: rgb(245, 108, 108); | |||
} | |||
.textBlue{ | |||
color: #1D6FE9!important; | |||
} | |||
.textRed{ | |||
color: rgb(245, 108, 108)!important; | |||
} | |||
.van-col{ | |||
padding: 10Px 10Px; | |||
} | |||
.van-col:nth-child(2){ | |||
font-size: 16Px; | |||
color: #878787; | |||
line-height: 22Px; | |||
} | |||
.van-row{ | |||
.van-row{ | |||
.van-col{ | |||
padding: 0 0 5Px 0!important; | |||
color: #878787; | |||
} | |||
} | |||
} | |||
</style> |
@@ -114,6 +114,12 @@ | |||
</div> | |||
<p style="margin-top: 5px;color: #666666;">开户行</p> | |||
</van-grid-item> | |||
<van-grid-item text="重大事项" :to="{name:'approvalList13'}" > | |||
<div class="icon" slot="default" style="background:#c568f5;" > | |||
<img src="../../../static/images/onlineHome/icon_Y3.png" alt /> | |||
</div> | |||
<p style="margin-top: 5px;color: #666666;">重大事项</p> | |||
</van-grid-item> | |||
</van-grid> | |||
</van-row> | |||
<yinnongIndex></yinnongIndex> | |||