package.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/styles/global.css | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/WangEditor/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/knowledge/education/compilequer/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/patient/propaganda/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
package.json
@@ -41,6 +41,8 @@ "@riophae/vue-treeselect": "0.4.0", "@vue/babel-plugin-jsx": "^1.1.5", "@vue/composition-api": "^1.0.0-rc.6", "@wangeditor/editor": "^5.1.23", "@wangeditor/editor-for-vue": "^1.0.2", "axios": "0.24.0", "clipboard": "2.0.8", "codemirror": "^5.65.13", src/assets/styles/global.css
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,64 @@ /* å®ä¹æ·¡èè²ä¸»è²è° */ :root { --editor-primary-color: #007bff; /* 主è²è° */ --editor-background-color: #f8f9fa; /* èæ¯é¢è² */ --editor-border-color: #dee2e6; /* è¾¹æ¡é¢è² */ --editor-text-color: #343a40; /* æåé¢è² */ } /* è¦çç¼è¾å¨çé»è®¤æ ·å¼ */ .w-e-toolbar { background-color: var(--editor-background-color); border-bottom: 1px solid var(--editor-border-color); color: var(--editor-text-color); } .w-e-toolbar .w-e-menu { background-color: transparent; color: var(--editor-text-color); } .w-e-toolbar .w-e-menu:hover { background-color: var(--editor-primary-color); color: white; } .w-e-toolbar .w-e-menu.w-e-active { background-color: var(--editor-primary-color); color: white; } .w-e-toolbar .w-e-menu .w-e-icon { fill: var(--editor-text-color); } .w-e-toolbar .w-e-menu:hover .w-e-icon { fill: white; } .w-e-toolbar .w-e-menu.w-e-active .w-e-icon { fill: white; } .w-e-text-container { background-color: white; border: 1px solid var(--editor-border-color); color: var(--editor-text-color); } .w-e-text-container .w-e-text { color: var(--editor-text-color); } .w-e-text-container .w-e-text img { border: 1px solid var(--editor-border-color); } .w-e-text-container .w-e-text a { color: var(--editor-primary-color); text-decoration: underline; } .w-e-text-container .w-e-text a:hover { color: #0056b3; } src/components/WangEditor/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,57 @@ <template> <div> <div ref="editor" style="text-align: left;"></div> </div> </template> <script> import E from 'wangeditor'; export default { name: 'WangEditor', data() { return { editor: null, // WangEditor å®ä¾ }; }, props: { content: { type: String, default: '' } }, watch: { // å½ç¶ç»ä»¶ä¼ å ¥ç content ååæ¶ï¼æ´æ°ç¼è¾å¨å 容 content(newContent) { if (this.editor && newContent !== this.editor.txt.html()) { this.editor.txt.html(newContent); } } }, mounted() { // åå§å WangEditor this.editor = new E(this.$refs.editor); this.editor.config.onchange = () => { // ç¼è¾å¨å 容ååæ¶ï¼è§¦å input äºä»¶ä¼ éç»ç¶ç»ä»¶ this.$emit('input', this.editor.txt.html()); }; // é ç½®èååå ¶ä»è®¾ç½® this.editor.config.menus = [ 'head', 'bold', 'italic', 'underline', 'image', 'link', 'list', 'undo', 'redo' ]; this.editor.config.zIndex = 1000; // å建ç¼è¾å¨ this.editor.create(); // 设置åå§å 容 if (this.content) { this.editor.txt.html(this.content); } }, beforeDestroy() { // 鿝ç¼è¾å¨å®ä¾ï¼éæ¾èµæº if (this.editor) { this.editor.destroy(); } } }; </script> src/views/knowledge/education/compilequer/index.vue
@@ -24,6 +24,7 @@ <!-- åºæ¬ä¿¡æ¯ --> <div v-if="Editprogress == 1"> <div class="leftvlue-jbxx">åºæ¬ä¿¡æ¯</div> <el-divider></el-divider> <el-form :model="ruleForm" :rules="rules" @@ -258,6 +259,18 @@ <el-col :span="4"> <div class="leftvlue-jbxx">宣æå 容</div> </el-col> <el-col :offset="16" :span="4"> <el-upload class="upload-demo" :action="uploadImgUrlword" :on-success="uploadEditorSuccessword" :on-error="uploadEditorErrorword" :before-upload="beforeEditorUploadword" :headers="headers" > <el-button size="small" type="primary">wordæä»¶ä¸ä¼ </el-button> </el-upload> </el-col> </el-row> <div> @@ -268,7 +281,7 @@ label-width="100px" class="demo-ruleForm" > <el-row :gutter="20"> <!-- <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="èµæå½¢å¼" prop="region"> <el-select @@ -285,40 +298,14 @@ </el-select> </el-form-item> </el-col> <el-col :span="12"> <div> <el-button @click="laststep('ruleForm')">ä¸ä¸æ¥</el-button> <el-button type="success" @click="Departmenttreatment('ruleForm')" >ä¿å</el-button > <el-button type="warning" @click="Departmenttreatment('ruleForm')" >å¦åæ°çæ¬</el-button > <el-button type="info" @click="closeFm('ruleForm')" >å ³é</el-button > </div> </el-col> </el-row> <el-col :span="12"> --> <!-- </el-col> </el-row> --> </el-form> </div> <div> <el-upload class="upload-demo" :action="uploadImgUrlword" :on-success="uploadEditorSuccessword" :on-error="uploadEditorErrorword" :before-upload="beforeEditorUploadword" :headers="headers" > <el-button size="small" type="primary">wordæä»¶ä¸ä¼ </el-button> </el-upload> <!-- <div> <div id="quillEditorQiniu"> <!-- åºäºelementUiçä¸ä¼ ç»ä»¶ el-upload begin--> <el-upload class="avatar-uploader" :action="uploadImgUrl" @@ -330,7 +317,6 @@ :headers="headers" > </el-upload> <!-- åºäºelementUiçä¸ä¼ ç»ä»¶ el-upload end--> <quill-editor class="editor" v-model="content" @@ -342,6 +328,32 @@ > </quill-editor> </div> </div> --> <!-- æ°ç»ä»¶ --> <div style="border: 1px solid #ccc; margin: 10px"> <Toolbar style="border-bottom: 1px solid #ccc" :editor="editor" :defaultConfig="toolbarConfig" :mode="modes" /> <Editor style="height: 500px; overflow-y: hidden" v-model="content" :defaultConfig="editorConfig" :mode="modes" @onCreated="onCreated" /> </div> <div> <el-button @click="laststep('ruleForm')">ä¸ä¸æ¥</el-button> <el-button type="success" @click="Departmenttreatment('ruleForm')" >ä¿å</el-button > <el-button type="warning" @click="Departmenttreatment('ruleForm')" >å¦åæ°çæ¬</el-button > <el-button type="info" @click="closeFm('ruleForm')">å ³é</el-button> </div> </div> </div> @@ -358,6 +370,7 @@ <script> import { quillEditor } from "vue-quill-editor"; import { Editor, Toolbar } from "@wangeditor/editor-for-vue"; import axios from "axios"; import { @@ -411,9 +424,80 @@ export default { name: "aEducationinfo", components: { OptionalForm }, components: { OptionalForm, Editor, Toolbar }, data() { return { editor: null, content: "<p>hello</p>", toolbarConfig: {}, editorConfig: { placeholder: "请è¾å ¥å 容...", menus: [ "head", "bold", "italic", "underline", "image", "link", "list", "undo", "redo", "file", // æ·»å èªå®ä¹æä»¶ä¸ä¼ èå ], uploadImgServer: process.env.VUE_APP_BASE_API + "/common/uploadSort", // å¾çä¸ä¼ æ¥å£ uploadImgHeaders: { Authorization: "Bearer " + getToken(), }, // èªå®ä¹ä¸ä¼ ç headers uploadImgParams: { key: "value" }, // èªå®ä¹ä¸ä¼ çåæ° uploadImgMaxSize: 2 * 1024 * 1024, // å¾çæå¤§å¤§å°ï¼åä½ Byte uploadImgMaxLength: 1, // 䏿¬¡æå¤ä¸ä¼ å¾çæ°é uploadImgTimeout: 3 * 60 * 1000, // è¶ æ¶æ¶é´ï¼åä½ ms uploadImgHooks: { customInsert: (insertImgFn, result) => { const url = result.url; // è·åå¾çå°å insertImgFn(url); // æå ¥å¾ç }, }, customMenus: { file: { tip: "ä¸ä¼ æä»¶", click: (editor) => { const input = document.createElement("input"); input.type = "file"; input.accept = "application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document"; // æ¯æçæä»¶ç±»å input.onchange = (e) => { const file = e.target.files[0]; if (!file) return; const formData = new FormData(); formData.append("file", file); // ç¡®ä¿ process.env.VUE_APP_BASE_API æ¯æ£ç¡®ç const uploadUrl = process.env.VUE_APP_BASE_API + "/common/uploadSort"; axios .post(uploadUrl, formData, { headers: { Authorization: "Bearer " + getToken(), }, }) .then((res) => { const url = res.data.url; // è·åæä»¶å°å // æå ¥æä»¶é¾æ¥ä½ä¸ºæ®éææ¬ editor.txt.append(url + " "); // æè æå ¥æä»¶é¾æ¥ä½ä¸ºè¶ 龿¥ // editor.cmd.do('insertLink', { name: 'æä»¶é¾æ¥', url: url }); }) .catch((err) => { console.error("æä»¶ä¸ä¼ 失败", err); }); }; input.click(); }, }, }, }, modes: "default", // or 'simple' headers: { Authorization: "Bearer " + getToken(), }, @@ -577,8 +661,17 @@ console.log(oldVal, "B"); }, }, beforeDestroy() { const editor = this.editor; if (editor == null) return; editor.destroy(); // ç»ä»¶éæ¯æ¶ï¼åæ¶éæ¯ç¼è¾å¨ }, methods: { onCreated(editor) { this.editor = Object.seal(editor); // ä¸å®è¦ç¨ Object.seal()ï¼å¦å伿¥é }, // --------------------------------- processElement(element) { return { ...element, isoperation: null }; }, @@ -943,7 +1036,7 @@ // è·åå æ æå¨ä½ç½® let length = quill.getSelection().index; // æå ¥å¾ç||è§é¢ res.info为æå¡å¨è¿åçå¾çå°å if (type == "mp4" || type == "MP4"|| type == "avi"|| type == "AVI") { if (type == "mp4" || type == "MP4" || type == "avi" || type == "AVI") { window.jsValue = imgUrl; quill.insertEmbed(length, "video", imgUrl); } else { @@ -1034,12 +1127,9 @@ }, }; </script> <style src="@wangeditor/editor/dist/css/style.css"></style> <style src="@/assets/styles/global.css"></style> <style lang="scss" scoped> .Questionnairemanagement { // display: flex; } .sidecolumn { // width: 300px; // min-height: 100vh; @@ -1070,8 +1160,10 @@ } .leftvlue-jbxx { margin-bottom: 50px; font-size: 20px; font-size: 24px; height: 30px; border-left: 3px solid #41a1be; padding-left: 3px; span { position: absolute; @@ -1225,95 +1317,5 @@ span { font-size: 24px; } } .editor { line-height: normal !important; height: 600px; margin-bottom: 80px; } .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> src/views/patient/propaganda/index.vue
@@ -51,6 +51,15 @@ </el-option> </el-select> </el-form-item> <el-form-item label="æ£è èå´" prop="status"> <el-cascader v-model="topqueryParams.scopetype" placeholder="é»è®¤å ¨é¨" :options="sourcetype" :props="{ expandTrigger: 'hover' }" @change="handleChange" ></el-cascader> </el-form-item> <el-form-item label="宣æç¶æ" prop="status"> <el-select v-model="topqueryParams.sendstate" placeholder="è¯·éæ©"> @@ -266,9 +275,7 @@ prop="endDay" > <template slot-scope="scope"> <span>{{ scope.row.endDay ? scope.row.endDay + "天" : "" }}</span> <span>{{ scope.row.endDay ? scope.row.endDay + "天" : "" }}</span> </template> </el-table-column> <el-table-column @@ -292,7 +299,6 @@ key="drname" prop="drname" /> <!-- <el-table-column label="ç åå·" @@ -366,20 +372,28 @@ </template> </el-table-column> --> <el-table-column fixed="right" fixed="right" label="ä»»å¡ç»æè®°å½" width="120" align="center" key="remark" prop="remark" > <template slot-scope="scope" v-if="scope.row.remark"> <el-tag type="success" v-if="scope.row.sendstate!=5&&scope.row.sendstate!=4&&scope.row.remark">{{ scope.row.remark }}</el-tag> <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag> </template> </el-table-column> <template slot-scope="scope" v-if="scope.row.remark"> <el-tag type="success" v-if=" scope.row.sendstate != 5 && scope.row.sendstate != 4 && scope.row.remark " >{{ scope.row.remark }}</el-tag > <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag> </template> </el-table-column> <el-table-column fixed="right" fixed="right" label="å®£ææ¶é´" sortable align="center" @@ -597,6 +611,22 @@ ruleForm: { type: [], }, sourcetype: [ { value: 1, label: "ç§å®¤", children: [], }, { value: 2, label: "ç åº", children: [], }, { value: 3, label: "å ¨é¨", }, ], dynamicTags: ["é项ä¸", "é项äº", "é项ä¸"], //é项 inputVisible: false, inputValue: "", @@ -723,7 +753,7 @@ pageSize: 10, serviceType: 4, searchscope: 2, sendstate:2, sendstate: 2, }, propss: { multiple: true }, options: [], @@ -772,7 +802,18 @@ watch: {}, created() { this.serviceState = store.getters.serviceState; console.log(this.serviceState,'this.serviceState'); this.sourcetype[0].children = store.getters.belongDepts.map((dept) => { return { label: dept.deptName, value: dept.deptCode, }; }); this.sourcetype[1].children = store.getters.belongWards.map((dept) => { return { label: dept.districtName, value: dept.districtCode, }; }); this.getList(); this.getConfigKey("sys.user.initPassword").then((response) => { @@ -791,16 +832,7 @@ methods: { /** æ¥è¯¢é¨è¯å®£ææå¡å表 */ getList() { if (this.topqueryParams.searchscope == 1) { this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( (obj) => obj.deptCode ); this.topqueryParams.leavehospitaldistrictcodes = []; } else if (this.topqueryParams.searchscope == 2) { this.topqueryParams.leavehospitaldistrictcodes = store.getters.belongWards.map((obj) => obj.districtCode); this.topqueryParams.leaveldeptcodes = []; } else { if (this.topqueryParams.searchscope == 3) { this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( (obj) => obj.deptCode ); @@ -809,10 +841,13 @@ } this.loading = true; if (this.topqueryParams.leavehospitaldistrictcodes[0]&&this.topqueryParams.leaveldeptcodes[0]) { this.topqueryParams.deptOrDistrict=2; }else{ this.topqueryParams.deptOrDistrict=1; if ( this.topqueryParams.leavehospitaldistrictcodes[0] && this.topqueryParams.leaveldeptcodes[0] ) { this.topqueryParams.deptOrDistrict = 2; } else { this.topqueryParams.deptOrDistrict = 1; } getTaskservelist(this.topqueryParams).then((response) => { this.userList = response.rows[0].serviceSubtaskList; @@ -841,6 +876,24 @@ }, 200); } else { this.options = []; } }, // æ£è èå´å¤ç handleChange(value) { let type = value[0]; let code = value.slice(-1)[0]; this.topqueryParams.leavehospitaldistrictcodes = []; this.topqueryParams.leaveldeptcodes = []; if (type == 1) { this.topqueryParams.leaveldeptcodes.push(code); this.topqueryParams.leavehospitaldistrictcodes = []; this.topqueryParams.searchscope = 1; } else if (type == 2) { this.topqueryParams.leavehospitaldistrictcodes.push(code); this.topqueryParams.leaveldeptcodes = []; this.topqueryParams.searchscope = 2; } else { this.topqueryParams.searchscope = 3; } }, // é¨è¯å®£æç¶æä¿®æ¹ @@ -912,7 +965,7 @@ pageNum: 1, pageSize: 10, serviceType: 4, sendstate:2, sendstate: 2, }; this.handleQuery(); },