From 0f5e64c3d3cb194b6b853b80524a81392b5d04d1 Mon Sep 17 00:00:00 2001 From: yxh <172933527@qq.com> Date: 星期三, 21 六月 2023 09:58:42 +0800 Subject: [PATCH] Merge branch 'develop' of http://116.62.18.175:6699/r/~yxh/smartor-web into yxh01 --- src/views/repositoryai/verbaltrick/index.vue | 863 ++++++++++ vue.config.js | 4 src/views/knowledge/questionnaire/compilequer/index.vue | 74 src/views/patient/patient/index.vue | 574 ++--- src/views/knowledge/questionbank/index.vue | 773 +++----- src/views/knowledge/education/index.vue | 114 + src/api/patient/homepage.js | 8 src/api/system/label.js | 87 src/views/system/user/index.vue | 383 +++- src/views/knowledge/education/compilequer/video.js | 71 src/main.js | 28 src/views/system/label/index.vue | 473 +++-- package.json | 7 src/views/Intelligentcenter/centercontrol/index.vue | 236 ++ src/views/knowledge/questionnaire/index.vue | 104 + src/views/repositoryai/intention/index.vue | 863 ++++++++++ src/views/knowledge/education/compilequer/index.vue | 389 ++- src/views/repositoryai/templateku/index.vue | 17 18 files changed, 3,770 insertions(+), 1,298 deletions(-) diff --git a/package.json b/package.json index 70a1102..d78f317 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@riophae/vue-treeselect": "0.4.0", "axios": "0.24.0", "clipboard": "2.0.8", - "core-js": "3.25.3", + "core-js": "^3.25.3", "cos-js-sdk-v5": "^1.4.18", "dayjs": "^1.11.7", "echarts": "^5.4.2", @@ -47,11 +47,15 @@ "file-saver": "^2.0.5", "fuse.js": "6.4.3", "highlight.js": "9.18.5", + "jquery": "^3.7.0", "js-beautify": "1.13.0", "js-cookie": "3.0.1", "jsencrypt": "3.0.0-rc.1", "nprogress": "0.2.0", "quill": "1.3.7", + "quill-image-drop-module": "^1.0.3", + "quill-image-resize": "^3.0.9", + "quill-image-resize-module": "^3.0.0", "screenfull": "5.0.2", "sortablejs": "1.10.2", "vue": "2.6.12", @@ -59,6 +63,7 @@ "vue-count-to": "1.0.13", "vue-cropper": "0.5.5", "vue-meta": "2.4.0", + "vue-quill-editor": "^3.0.6", "vue-router": "3.4.9", "vuedraggable": "2.24.3", "vuex": "3.6.0", diff --git a/src/api/patient/homepage.js b/src/api/patient/homepage.js index 6f3bf90..8ede6e1 100644 --- a/src/api/patient/homepage.js +++ b/src/api/patient/homepage.js @@ -17,14 +17,6 @@ data: data }) }; -// 鏍囩鏌ヨ鎮h�呭垪琛� -export function taglistpatient(data) { - return request({ - url: '/smartor/patarchive/patTagByContion', - method: 'post', - data: data - }) -}; // 淇敼鎮h�呮。妗� export function alterpatient(data) { return request({ diff --git a/src/api/system/label.js b/src/api/system/label.js index 6e68fc6..2ec7c9e 100644 --- a/src/api/system/label.js +++ b/src/api/system/label.js @@ -2,9 +2,29 @@ import { parseStrEmpty } from "@/utils/ruoyi";//澶勭悊瀛楃涓�,und,null杞崲涓�''; // 淇敼鏍囩 -export function amendtag(data) { +export function toamendtag(data) { return request({ url: '/base/tag', + method: 'put', + data: data + }) +}; +// 鏍囩鐘舵�佷慨鏀� +export function changetagcategory(tagid, isupload) { + const data = { + tagid, + isupload + } + return request({ + url: '/base/tag', + method: 'put', + data: data + }) +} +// 淇敼鏍囩绫诲埆 +export function toamendtagcategory(data) { + return request({ + url: '/system/tagcategory', method: 'put', data: data }) @@ -17,16 +37,25 @@ data: data }) }; + // 鏂板鏍囩绫诲埆 +export function addtagcategory(data) { + return request({ + url: '/system/tagcategory', + method: 'post', + data: data + }) +}; + /** * - * @param {鏍囩id} userId + * @param {鏍囩id} tagid * 鑾峰彇鏍囩璇︽儏 * @returns */ -export function detailstag(userId) { +export function detailstag(tagid) { return request({ - url: '/base/tag/'+ userId, + url: '/base/tag/'+ tagid, method: 'get', }) }; @@ -34,17 +63,34 @@ /** * - * @param {鏍囩id} userId + * @param {鏍囩id} tagid * 鍒犻櫎鏍囩 * @returns */ -export function deletetag(userId) { +export function deletetag(tagids) { return request({ - url: '/base/tag/' + userId, + url: '/base/tag/' + tagids, method: 'delete', }) }; - // 瀵煎嚭鏍囩鍒楄〃 + /** + * + * @param {鏍囩id} tagid + * 鍒犻櫎鏍囩鍒嗙被 + * @returns + */ +export function deletetagcategory(tagid) { + return request({ + url: '/system/tagcategory/' + tagid, + method: 'delete', + }) +}; + /** + * + * @param {*} data + * 瀵煎嚭鏍囩鍒楄〃 + * @returns + */ export function exporttag(data) { return request({ url: '/base/tag/export', @@ -52,11 +98,28 @@ data: data }) }; - // 鏌ヨ鏍囩鍒楄〃 -export function listtag(query) { + /** + * + * @param {object} + * 鏌ヨ鏍囩鍒楄〃 + * @returns + */ +export function listtag(data) { return request({ url: '/base/tag/list', - method: 'get', - params: query + method: 'post', + data: data + }) + }; + /** + * @param {name} + * 鑾峰彇鏍囩鍒嗙被鍒楄〃 + * @returns + */ + export function tagclassifylist(params) { + return request({ + url: '/system/tagcategory/baseTagCategoryByName', + method: 'post', + params: params, }) }; \ No newline at end of file diff --git a/src/main.js b/src/main.js index c95a818..3bb7dce 100644 --- a/src/main.js +++ b/src/main.js @@ -14,6 +14,32 @@ import directive from './directive' // directive import plugins from './plugins' // plugins import { download } from '@/utils/request' + //寮曞叆quill-editor缂栬緫鍣� + import VueQuillEditor from 'vue-quill-editor' + // require styles 寮曞叆鏍峰紡 + import 'quill/dist/quill.core.css' + import 'quill/dist/quill.snow.css' + import 'quill/dist/quill.bubble.css' + Vue.use(VueQuillEditor) + + //瀹炵幇quill-editor缂栬緫鍣ㄦ嫋鎷戒笂浼犲浘鐗� +// import Quill from 'quill' +import {Quill} from 'vue-quill-editor' + window.Quill = Quill; + import imageResize from 'quill-image-resize' +// const scriptEl = document.createElement('script'); +// scriptEl.charset = 'utf-8' +// scriptEl.src = './image-resize.min.js' +// const head = document.head || document.getElementsByTagName('head')[0]; +// head.appendChild(scriptEl); + + import { ImageDrop } from 'quill-image-drop-module' +// import imageResize from 'quill-image-resize' + Quill.register('modules/imageDrop', ImageDrop) +// import imageResize from 'quill-image-resize-module' + Quill.register('modules/imageResize', imageResize) + //瀹炵幇quill-editor缂栬緫鍣ㄨ皟鏁村浘鐗囧昂瀵� +// Quill.register('modules/imageResize', ImageResize) import './assets/icons' // icon import './permission' // permission control @@ -77,6 +103,8 @@ Vue.use(VueMeta) DictData.install() Vue.use(components) +// Vue.use(VueQuillEditor) + /** * If you don't want to use mock-server diff --git a/src/views/Intelligentcenter/centercontrol/index.vue b/src/views/Intelligentcenter/centercontrol/index.vue new file mode 100644 index 0000000..221339b --- /dev/null +++ b/src/views/Intelligentcenter/centercontrol/index.vue @@ -0,0 +1,236 @@ +<template> + <div class="educationmanagement"> + <!-- 宸︿晶鏍� --> + <div class="sidecolumn"> + <el-menu + default-active="2" + class="el-menu-vertical-demo" + @open="handleOpen" + @close="handleClose" + background-color="#545c64" + text-color="#fff" + active-text-color="#ffd04b" + > + <el-submenu index="1"> + <template slot="title"> + <i class="el-icon-location"></i> + <span>瀵艰埅涓�</span> + </template> + <el-menu-item-group> + <template slot="title">鍒嗙粍涓�</template> + <el-menu-item index="1-1">閫夐」1</el-menu-item> + <el-menu-item index="1-2">閫夐」2</el-menu-item> + </el-menu-item-group> + <el-menu-item-group title="鍒嗙粍2"> + <el-menu-item index="1-3">閫夐」3</el-menu-item> + </el-menu-item-group> + <el-submenu index="1-4"> + <template slot="title">閫夐」4</template> + <el-menu-item index="1-4-1">閫夐」1</el-menu-item> + </el-submenu> + </el-submenu> + <el-menu-item index="2"> + <i class="el-icon-menu"></i> + <span slot="title">瀵艰埅浜�</span> + </el-menu-item> + <el-menu-item index="3" disabled> + <i class="el-icon-document"></i> + <span slot="title">瀵艰埅涓�</span> + </el-menu-item> + <el-menu-item index="4"> + <i class="el-icon-setting"></i> + <span slot="title">瀵艰埅鍥�</span> + </el-menu-item> + </el-menu> + </div> + <!-- 鍙充晶鏁版嵁 --> + <div class="leftvlue"> + <div class="leftvalu-top"> + <el-tabs + v-model="editableTabsValue" + type="card" + editable + @edit="handleTabsEdit" + > + <el-tab-pane + :key="item.name" + v-for="(item, index) in editableTabs" + :label="item.title" + :name="item.name" + > + {{ item.content }} + </el-tab-pane> + </el-tabs> + </div> + </div> + </div> +</template> + +<script> +export default { + name: "education", + + data() { + return { + editableTabsValue: "2", + editableTabs: [ + { + title: "Tab 1", + name: "1", + content: "Tab 1 content", + }, + { + title: "Tab 2", + name: "2", + content: "Tab 2 content", + }, + ], + tabIndex: 2, + }; + }, + + methods: { + handleClose(key, keyPath) { + console.log(key, keyPath); + }, + handleOpen(key, keyPath) { + console.log(key, keyPath); + }, + handleTabsEdit(targetName, action) { + if (action === "add") { + let newTabName = ++this.tabIndex + ""; + this.editableTabs.push({ + title: "New Tab", + name: newTabName, + content: "New Tab content", + }); + this.editableTabsValue = newTabName; + } + if (action === "remove") { + let tabs = this.editableTabs; + let activeName = this.editableTabsValue; + if (activeName === targetName) { + tabs.forEach((tab, index) => { + if (tab.name === targetName) { + let nextTab = tabs[index + 1] || tabs[index - 1]; + if (nextTab) { + activeName = nextTab.name; + } + } + }); + } + + this.editableTabsValue = activeName; + this.editableTabs = tabs.filter((tab) => tab.name !== targetName); + } + }, + }, +}; +</script> + +<style lang="scss" scoped> +.educationmanagement { + display: flex; +} +.sidecolumn { + width: 300px; + min-height: 100vh; + text-align: center; + // display: flex; + margin-top: 20px; + margin: 20px; + padding: 10px; + background: #edf1f7; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); + .sidecolumn-top { + display: flex; + justify-content: space-between; + .top-wj { + font-size: 20px; + } + .top-tj { + font-size: 18px; + + color: rgb(0, 89, 255); + cursor: pointer; + } + } + .center-ss { + margin-top: 30px; + .input-with-select { + height: 40px !important; + } + } + .bottom-fl { + margin-top: 30px; + display: center !important; + } +} +.qrcode-dialo { + text-align: center; + // display: flex; + margin: 20px; + padding: 30px; + background: #edf1f7; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); + .qrcode-text { + font-size: 20px; + span { + margin-left: 20px; + } + } + .qrcode-img { + width: 300px; + height: 400px; + } +} +::v-deep.el-tabs--left, +.el-tabs--right { + overflow: hidden; + align-items: center; + display: flex; +} +::v-deep.el-input--medium .el-input__inner { + height: 40px !important; +} +::v-deep.el-tabs--right .el-tabs__active-bar.is-right { + height: 40px; + width: 5px; + left: 0; +} +::v-deep.el-tabs--right .el-tabs__item.is-right { + display: block; + font-size: 20px; +} +.leftvlue { + // display: flex; + // flex: 1; + width: 80%; + margin-top: 20px; + // margin: 20px; + padding: 30px; + background: #ffff; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); + .mulsz { + font-size: 20px; + } +} +.button-text { + color: rgb(70, 204, 238); +} +.button-textck { + color: rgb(39, 167, 67); +} +.button-textxg { + color: rgb(35, 81, 233); +} +.button-textsc { + color: rgb(235, 23, 23); +} +</style> diff --git a/src/views/knowledge/education/compilequer/index.vue b/src/views/knowledge/education/compilequer/index.vue index 81ced24..3df9ce1 100644 --- a/src/views/knowledge/education/compilequer/index.vue +++ b/src/views/knowledge/education/compilequer/index.vue @@ -44,7 +44,7 @@ multiple filterable placeholder="璇烽�夋嫨鍒嗙被" - > + > <el-option class="ruleFormaa" v-for="item in options" @@ -90,164 +90,116 @@ <!-- 瀹f暀鍐呭 --> <div v-if="Editprogress == 2"> <div class="leftvlue-jbxx">瀹f暀鍐呭</div> - <el-form - :model="ruleForm" - :rules="rules" - ref="ruleForm" - label-width="100px" - class="demo-ruleForm" - > - <el-form-item label="瀹f暀浠嬬粛" prop="desc"> - <el-cascader - class="demo-cascader" - v-model="ruleForm.templatevalue" - :options="asoptions" - :props="{ expandTrigger: 'hover' }" - ></el-cascader> - <el-select v-model="ruleForm.data2" placeholder="鎻愪氦鎻愮ず"> - <el-option - v-for="item in asoptions" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - <div style="display: flex; margin-top: 20px"> - <div class="PreviewTemplate" @click="PreviewTemplate()"> - 棰勮妯$増 - </div> - <el-button type="primary">纭寮曠敤</el-button> - </div> - </el-form-item> - <el-form-item label="娲诲姩褰㈠紡" prop="desc"> - <el-input type="textarea" v-model="ruleForm.desc"></el-input> - </el-form-item> - <el-form-item label="娲诲姩褰㈠紡" prop="desc"> - <el-input type="textarea" v-model="ruleForm.desc"></el-input> - <div class="addtopic"> - <el-select - v-model="addvalue" - @change="changeaddtopic" - class="addtopic-input" - > - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - </div> - - <div class="presentation"> - <div class="presentation-left"> - <el-table v-loading="loading" :data="userList"> - <el-table-column - label="搴忓彿" - align="center" - key="userid" - prop="userid" - /> - <el-table-column - label="棰樼洰" - align="center" - key="userName" - prop="userName" - :show-overflow-tooltip="true" - /> - - <el-table-column - label="鎿嶄綔" - align="center" - width="300" - class-name="small-padding fixed-width" - > - <template slot-scope="scope"> - <!-- <el-button - size="medium" - type="text" - @click="goQRCode(scope.row)" - v-hasPermi="['system:user:edit']" - > - <span class="button-text" - ><i class="el-icon-edit"></i>浜岀淮鐮�</span - ></el-button - > - <el-button - size="medium" - type="text" - @click="ViewQuestionnaire(scope.row)" - v-hasPermi="['system:user:edit']" - ><span class="button-textck" - ><i class="el-icon-edit"></i>鏌ョ湅</span - ></el-button - > --> - <el-button - size="medium" - type="text" - @click="handleUpdate(scope.row)" - v-hasPermi="['system:user:edit']" - ><span class="button-textxg" - ><i class="el-icon-scissors"></i>淇敼</span - ></el-button - > - <el-button - size="medium" - type="text" - @click="handleDelete(scope.row)" - v-hasPermi="['system:user:remove']" - ><span class="button-textsc" - ><i class="el-icon-delete"></i>鍒犻櫎</span - ></el-button - > - </template> - </el-table-column> - </el-table> - - <pagination - v-show="total > 0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> - </div> - <div class="presentation-right"> - <div class="headline">棰樼洰璁剧疆璇︽儏</div> - <div>棰樼洰鏍囬锛�<span>杩欏鏈烘瀯鎬庝箞鏍�</span></div> - <div>鏄惁蹇呯瓟锛�<span>鏄�</span> 鏄惁闅愯棌锛�<span>鍚�</span></div> - <div class="headline">閫夐」璁剧疆</div> - <div> - <p>閫夐」1:<span>鍖荤枟鏈烘瀯</span></p> - <p> - 濉啓鏄庣粏锛�<span>鏃�</span> 寮傚父閫夐」锛�<span>鏃�</span> - 鍒嗗�硷細<span>3</span> - </p> - <p>閫変腑鎻愮ず锛�<span>杩欎釜棰樻湁鐐归毦璇锋敞鎰�</span></p> - <p>閫変腑璺宠浆锛�<span>鏃�</span></p> - </div> - </div> - </div> - </el-form-item> - <el-form-item> - <el-button type="success" @click="submitForm('ruleForm')" - >绔嬪嵆鍒涘缓</el-button + <div> + <div> + <el-button @click="openContent" type="primary">鏌ョ湅鍏冪礌</el-button> + </div> + <div id="quillEditorQiniu"> + <!-- 鍩轰簬elementUi鐨勪笂浼犵粍浠� el-upload begin--> + <el-upload + class="avatar-uploader" + :action="uploadImgUrl" + :accept="'image/*,video/*'" + :show-file-list="false" + :on-success="uploadEditorSuccess" + :on-error="uploadEditorError" + :before-upload="beforeEditorUpload" + :headers="headers" > - <el-button type="primary" @click="laststep()">涓婁竴姝�</el-button> - <el-button @click="resetForm('ruleForm')">閲嶇疆</el-button> - </el-form-item> - </el-form> + </el-upload> + <!-- 鍩轰簬elementUi鐨勪笂浼犵粍浠� el-upload end--> + <quill-editor + class="editor" + v-model="content" + ref="customQuillEditor" + :options="editorOption" + > + </quill-editor> + </div> + </div> </div> </div> </div> </template> <script> +import { quillEditor } from "vue-quill-editor"; +// import * as Quill from "quill"; +import Quill from "quill"; + +// 杩欓噷寮曞叆淇敼杩囩殑video妯″潡骞舵敞鍐� +import Video from "./video"; +Quill.register(Video, true); +//鑾峰彇鐧诲綍token锛屽紩鍏ユ枃浠讹紝濡傛灉鍙槸绠�鍗曟祴璇曪紝娌℃湁涓婁紶鏂囦欢鏄惁鐧诲綍鐨勯檺鍒剁殑璇濓紝 +//杩欎釜token鍙互涓嶇敤鑾峰彇锛屾枃浠跺彲浠ヤ笉寮曞叆锛屾妸涓婇潰瀵瑰簲鐨勪笂浼犳枃浠舵惡甯﹁姹傚ご :headers="headers" 杩欎釜浠g爜鍒犳帀鍗冲彲 +import { getToken } from "@/utils/auth"; +const toolbarOptions = [ + ["bold", "italic", "underline", "strike"], // toggled buttons + ["blockquote", "code-block"], + + [{ header: 1 }, { header: 2 }], // custom button values + [{ list: "ordered" }, { list: "bullet" }], + [{ script: "sub" }, { script: "super" }], // superscript/subscript + [{ indent: "-1" }, { indent: "+1" }], // outdent/indent + [{ direction: "rtl" }], // text direction + + [{ size: ["small", false, "large", "huge"] }], // custom dropdown + [{ header: [1, 2, 3, 4, 5, 6, false] }], + + [{ color: [] }, { background: [] }], // dropdown with defaults from theme + [{ font: [] }], + [{ align: [] }], + ["link", "image", "video"], + ["clean"], // remove formatting button +]; + export default { data() { return { + headers: { + Authorization: "Bearer " + getToken(), + }, + uploadImgUrl: "/v1/admin/common/upload", + uploadUrlPath: "娌℃湁鏂囦欢涓婁紶", + quillUpdateImg: false, + content: "", //鏈�缁堜繚瀛樼殑鍐呭 + editorOption: { + placeholder: "浣犳兂璇翠粈涔堬紵", + modules: { + imageResize: { + displayStyles: { + backgroundColor: "black", + border: "none", + color: "white", + }, + modules: ["Resize", "DisplaySize", "Toolbar"], + }, + toolbar: { + container: toolbarOptions, // 宸ュ叿鏍� + handlers: { + image: function (value) { + if (value) { + document + .querySelector("#quillEditorQiniu .avatar-uploader input") + .click(); + } else { + this.quill.format("image", false); + } + }, + video: function (value) { + if (value) { + document + .querySelector("#quillEditorQiniu .avatar-uploader input") + .click(); + } else { + this.quill.format("video", false); + } + }, + }, + }, + }, + }, + sidecolumnrabs: "left", //鏂瑰悜 Editprogress: 1, //缂栬緫杩涘害 currentVersion: "1.2.3", //褰撳墠鐗堟湰 @@ -669,6 +621,13 @@ }, created() {}, + watch: { + content(newVal, oldVal) { + //this.$emit('input', newVal); + console.log(newVal); + console.log(oldVal); + }, + }, methods: { submitForm(formName) { @@ -714,6 +673,58 @@ }, resetForm(formName) { this.$refs[formName].resetFields(); + }, + + //涓婁紶鍥剧墖涔嬪墠async + beforeEditorUpload(res, file) { + //鏄剧ず涓婁紶鍔ㄧ敾 + this.quillUpdateImg = true; + // const res1 = await uploadImage() + // console.log(res1,'====='); + // this.$emit('before',res, file) + console.log(res); + console.log(file); + }, + // 涓婁紶鍥剧墖鎴愬姛 + uploadEditorSuccess(res, file) { + console.log("涓婁紶鎴愬姛"); + // this.$emit('upload',res, file) + console.log(res, file); + //鎷兼帴鍑轰笂浼犵殑鍥剧墖鍦ㄦ湇鍔″櫒鐨勫畬鏁村湴鍧� + let imgUrl = res.data.url; + let type = imgUrl.substring(imgUrl.lastIndexOf(".") + 1); + console.log(type); + // 鑾峰彇瀵屾枃鏈粍浠跺疄渚� + let quill = this.$refs.customQuillEditor.quill; + // 鑾峰彇鍏夋爣鎵�鍦ㄤ綅缃� + let length = quill.getSelection().index; + // 鎻掑叆鍥剧墖||瑙嗛 res.info涓烘湇鍔″櫒杩斿洖鐨勫浘鐗囧湴鍧� + if (type == "mp4" || type == "MP4") { + window.jsValue = imgUrl; + quill.insertEmbed(length, "video", imgUrl); + } else { + quill.insertEmbed(length, "image", imgUrl); + } + // 璋冩暣鍏夋爣鍒版渶鍚� + quill.setSelection(length + 1); + //鍙栨秷涓婁紶鍔ㄧ敾 + this.quillUpdateImg = false; + }, + // 涓婁紶(鏂囦欢)鍥剧墖澶辫触 + uploadEditorError(res, file) { + console.log(res); + console.log(file); + //椤甸潰鎻愮ず + this.$message.error("涓婁紶鍥剧墖澶辫触"); + //鍙栨秷涓婁紶鍔ㄧ敾 + this.quillUpdateImg = false; + }, + //涓婁紶缁勪欢杩斿洖鐨勭粨鏋� + uploadResult: function (res) { + this.uploadUrlPath = res; + }, + openContent: function () { + console.log(this.content); }, }, }; @@ -859,8 +870,80 @@ font-size: 24px; } } -// ::v-deep.el-form-item--medium .el-form-item__content { -// line-height: 36px; -// display: flex; -// } +.editor { + line-height: normal !important; + height: 400px; + margin-bottom: 50px; +} +.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> diff --git a/src/views/knowledge/education/compilequer/video.js b/src/views/knowledge/education/compilequer/video.js new file mode 100644 index 0000000..16f4978 --- /dev/null +++ b/src/views/knowledge/education/compilequer/video.js @@ -0,0 +1,71 @@ +import { Quill } from 'vue-quill-editor' + +// 婧愮爜涓槸import鐩存帴鍊掑叆锛岃繖閲岃鐢≦uill.import寮曞叆 +const BlockEmbed = Quill.import('blots/block/embed') +// const Link = Quill.import('formats/link') + +const ATTRIBUTES = ['height', 'width'] + +class Video extends BlockEmbed { + static create (value) { + const node = super.create(value) + // console.log("js鏂囦欢"+ window.jsValue) + // 娣诲姞video鏍囩鎵�闇�鐨勫睘鎬� + node.setAttribute('controls', 'controls') // 鎺у埗鎾斁鍣� + //鍒犻櫎鍘熺敓video鐨勬帶鍒舵潯鐨勪笅杞芥垨鑰呭叏灞忔寜閽殑鏂规硶 + //<video controls controlsList='nofullscreen nodownload noremote footbar' ></video> + //涓嶇敤鍝釜鍦ㄤ笅闈㈠姞涓婂摢涓� + node.setAttribute('controlsList', 'nofullscreen') // 鎺у埗鍒犻櫎 + node.setAttribute('type', 'video/mp4') + node.setAttribute('style', 'object-fit:fill;width: 100%;') + node.setAttribute('preload', 'auto') // auto - 褰撻〉闈㈠姞杞藉悗杞藉叆鏁翠釜瑙嗛 meta - 褰撻〉闈㈠姞杞藉悗鍙浇鍏ュ厓鏁版嵁 none - 褰撻〉闈㈠姞杞藉悗涓嶈浇鍏ヨ棰� + node.setAttribute('playsinline', 'true') + node.setAttribute('x-webkit-airplay', 'allow') + // node.setAttribute('x5-video-player-type', 'h5') // 鍚敤H5鎾斁鍣�,鏄痺echat瀹夊崜鐗堢壒鎬� + node.setAttribute('x5-video-orientation', 'portraint') // 绔栧睆鎾斁 澹版槑浜唄5鎵嶈兘浣跨敤 鎾斁鍣ㄦ敮浠樼殑鏂瑰悜锛宭andscape妯睆锛宲ortraint绔栧睆锛岄粯璁ゅ�间负绔栧睆 + node.setAttribute('x5-playsinline', 'true') // 鍏煎瀹夊崜 涓嶅叏灞忔挱鏀� + node.setAttribute('x5-video-player-fullscreen', 'true') // 鍏ㄥ睆璁剧疆锛岃缃负 true 鏄槻姝㈡í灞� + node.setAttribute('src', window.jsValue) + return node + } + + static formats (domNode) { + return ATTRIBUTES.reduce((formats, attribute) => { + if (domNode.hasAttribute(attribute)) { + formats[attribute] = domNode.getAttribute(attribute) + } + return formats + }, {}) + } + + // static sanitize (url) { + // + // // eslint-disable-line import/no-named-as-default-member + // } + + static value (domNode) { + return domNode.getAttribute('src') + } + + format (name, value) { + if (ATTRIBUTES.indexOf(name) > -1) { + if (value) { + this.domNode.setAttribute(name, value) + } else { + this.domNode.removeAttribute(name) + } + } else { + super.format(name, value) + } + } + + html () { + const { video } = this.value() + return `<a href="${video}">${video}</a>` + } +} +Video.blotName = 'video' // 杩欓噷涓嶇敤鏀癸紝妤间富涓嶇敤iframe锛岀洿鎺ユ浛鎹㈡帀鍘熸潵锛屽鏋滈渶瑕佷篃鍙互淇濈暀鍘熸潵鐨勶紝杩欓噷鐢ㄤ釜鏂扮殑blot +Video.className = 'ql-video' +Video.tagName = 'video' // 鐢╲ideo鏍囩鏇挎崲iframe + +export default Video diff --git a/src/views/knowledge/education/index.vue b/src/views/knowledge/education/index.vue index c837000..c29eb8a 100644 --- a/src/views/knowledge/education/index.vue +++ b/src/views/knowledge/education/index.vue @@ -25,12 +25,29 @@ <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane> <el-tab-pane class="tab-paness" - :key="item.name" + :key="item.title" v-for="(item, index) in editableTabs" - :label="item.title + ' (' + item.number + ')'" - ></el-tab-pane> - - <el-tab-pane :label="`鏈垎缁�(${numberlbs})`"></el-tab-pane> + > + <span slot="label"> + {{ + item.title + " (" + item.number + ")" + }}   <el-popover + placement="top-start" + width="100" + trigger="hover" + > + <div style="text-align: center"> + <el-button type="text" @click="popoveramend(item)" + >淇敼</el-button + ><el-button type="text" @click="deletefenlei(item)" + ><span style="color: rgb(173, 55, 55)" + >鍒犻櫎</span + ></el-button + > + </div> + <i slot="reference" class="el-icon-share"></i> </el-popover + ></span> + </el-tab-pane> </el-tabs> </div> </div> @@ -157,7 +174,7 @@ <el-table v-loading="loading" :data="userList" - border="true" + border @selection-change="handleSelectionChange" > <el-table-column type="selection" width="50" align="center" /> @@ -366,16 +383,39 @@ </div> </div> <!-- 娣诲姞绫诲埆寮规 --> - <el-dialog width="30%" :visible.sync="dialogFormVisible"> - <el-form :model="sidecolumnform"> - <el-form-item label="璇疯緭鍏ョ被鍒悕绉�"> - <el-input v-model="form.name" autocomplete="off"></el-input> + <el-dialog + :title="amendtag ? '淇敼绫诲埆' : '鏂板绫诲埆'" + width="30%" + :visible.sync="dialogFormVisible" + > + <el-form :model="classifyform"> + <el-form-item + :label="amendtag ? '璇疯緭鍏ユ柊鐨勭被鍒悕绉�' : '璇疯緭鍏ョ被鍒悕绉�'" + > + <el-input + v-model="classifyform.categoryname" + autocomplete="off" + ></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button> <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button> </div> + </el-dialog> + <!-- 鍒犻櫎绫诲埆纭妗� --> + <el-dialog title="璀﹀憡" :visible.sync="deleteVisible" width="40%"> + <div style="font-size: 20px; color: rgb(247, 76, 76)"> + 鏄惁纭鍒犻櫎鍒嗙被锛歔<span>{{ deletefenl }}</span + >]? + </div> + <div style="font-size: 20px"> + 姝ゆ搷浣滀細灏嗚绫诲埆涓嬫墍鏈夋ā鍧楄浆绉昏嚦[鏈垎绫籡锛屾槸鍚︾户缁垹闄ゆ鍒嗙被锛� + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="deleteVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="deletefenlei">纭� 瀹�</el-button> + </span> </el-dialog> <!-- 浜岀淮鐮佸睍绀哄脊妗� --> <el-dialog width="30%" :visible.sync="goQRCodeVisible"> @@ -448,10 +488,17 @@ numberlb: 22, numberlbs: 2, sidecolumnform: {}, //娣诲姞绫诲埆琛ㄥ崟 - dialogFormVisible: false, //娣诲姞绫诲埆寮规 goQRCodeVisible: false, //浜岀淮鐮佸脊妗� sidecolumnval: "", //绫诲埆鎼滅储 propss: { multiple: true }, + idds: "", + amendtag: false, //鏄惁淇敼绫诲埆 + dialogFormVisible: false, //淇敼娣诲姞绫诲埆寮规 + deleteVisible: false, //鍒嗙被鍒犻櫎寮规 + deletefenl: "楂樿鍘�", //鍒犻櫎椤� + classifyform: { + categoryname: "", + }, //绫诲埆琛ㄥ崟 optionss: [ { value: 1, @@ -598,6 +645,51 @@ submitsidecolumn() { this.dialogFormVisible = false; }, + // 淇敼鍒嗙被寮规 + popoveramend(tagcategoryid) { + this.idds = tagcategoryid; + this.amendtag = true; + this.dialogFormVisible = true; + }, + // 娣诲姞銆佷慨鏀圭被鍒� + submitsidecolumn() { + if (this.amendtag) { + this.classifyform.tagcategoryid = this.idds; + // toamendtagcategory(this.addDateRange(this.classifyform)).then( + // (response) => { + // console.log(response); + // this.gitclasify(); + // } + // ); + } else { + // addtagcategory(this.addDateRange(this.classifyform)).then( + // (response) => { + // console.log(response); + // this.gitclasify(); + // } + // ); + } + this.classifyform = { + categoryname: "", + }; + this.idds = ""; + this.dialogFormVisible = false; + }, + //鍒犻櫎鍒嗙被 + deletefenlei(row) { + if (this.deleteVisible) { + // deletetagcategory(this.idds).then((response) => { + // console.log(response); + // this.gitclasify(); + // }); + this.deleteVisible = false; + this.idds = ""; + } else { + this.deleteVisible = true; + this.idds = row.tagcategoryid; + this.deletefenl = row.title; + } + }, //鎼滅储绫诲埆 sidecolumnss() {}, // 鍒囨崲鍏变韩/鏈湴 diff --git a/src/views/knowledge/questionbank/index.vue b/src/views/knowledge/questionbank/index.vue index c16345f..51b92df 100644 --- a/src/views/knowledge/questionbank/index.vue +++ b/src/views/knowledge/questionbank/index.vue @@ -4,7 +4,7 @@ <!--鐢ㄦ埛鏁版嵁--> <el-col :span="24" :xs="24"> <el-form - :model="queryParams" + :model="topqueryParams" ref="queryForm" size="small" :inline="true" @@ -13,57 +13,45 @@ > <el-form-item label="棰樼洰鍚嶇О" prop="userName"> <el-input - v-model="queryParams.userName" + v-model="topqueryParams.userName" placeholder="璇疯緭鍏�" clearable style="width: 200px" @keyup.enter.native="handleQuery" /> </el-form-item> - <el-form-item label="韬唤璇佸彿鐮�" prop="IDnumber"> - <el-input - v-model="queryParams.IDnumber" - placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜" - clearable - style="width: 250px" - @keyup.enter.native="handleQuery" - /> - </el-form-item> - <el-form-item label="鑱旂郴鏂瑰紡" prop="phonenumber"> - <el-input - v-model="queryParams.phonenumber" - placeholder="璇疯緭鍏ヨ仈绯绘柟寮�" - clearable - style="width: 280px" - @keyup.enter.native="handleQuery" - /> - </el-form-item> - <el-row> - <el-form-item label="鎮h�呮爣绛�" prop="status"> - <el-cascader - v-model="queryParams.status" - :options="optionss" - :props="propss" - clearable - ></el-cascader> - </el-form-item> - </el-row> - <!-- <el-form-item label="鍒涘缓鏃堕棿"> - <el-date-picker - v-model="dateRange" - style="width: 240px" - value-format="yyyy-MM-dd" - type="daterange" - range-separator="-" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - ></el-date-picker> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">鎼滅储</el-button> - <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">閲嶇疆</el-button> - </el-form-item> --> + <el-form-item label="棰樼洰鏍囩" prop="status"> + <el-cascader + v-model="topqueryParams.tagid" + :options="optionss" + :props="propss" + clearable + ></el-cascader> + </el-form-item> + <el-form-item label="棰樼洰绫诲瀷" prop="status"> + <el-select v-model="topqueryParams.topic" placeholder="璇烽�夋嫨"> + <el-option + v-for="item in topicoptions" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button + type="primary" + icon="el-icon-search" + size="medium" + @click="handleQuery" + >鎼滅储</el-button + > + <el-button icon="el-icon-refresh" size="medium" @click="resetQuery" + >閲嶇疆</el-button + > + </el-form-item> </el-form> <el-row :gutter="10" class="mb8"> @@ -106,17 +94,6 @@ <div class="documentf"> <div class="document"> <el-button - type="info" - plain - icon="el-icon-upload2" - size="medium" - @click="handleImport" - v-hasPermi="['system:user:import']" - >瀵煎叆</el-button - > - </div> - <div class="document"> - <el-button type="warning" plain icon="el-icon-download" @@ -146,84 +123,57 @@ align="center" key="userId" prop="userId" - v-if="columns[0].visible" /> + <el-table-column - label="濮撳悕" + label="棰樼洰" align="center" key="userName" prop="userName" - v-if="columns[1].visible" :show-overflow-tooltip="true" /> <el-table-column - label="鎬у埆" + label="棰樼洰绫诲埆" + align="center" + key="types" + prop="types" + /> + <el-table-column + label="鍒涘缓浜�" align="center" key="nickName" prop="nickName" - v-if="columns[2].visible" - :show-overflow-tooltip="true" /> <el-table-column - label="鎮h�呮爣绛�" - align="center" - key="deptName" - prop="dept.deptName" - v-if="columns[3].visible" - :show-overflow-tooltip="true" - /> - <el-table-column - label="璇佷欢绫诲瀷" + label="鏄惁蹇呭~" align="center" key="phonenumber" prop="phonenumber" - v-if="columns[4].visible" - width="120" - /><el-table-column - label="璇佷欢鍙风爜" - align="center" - key="phonenumber" - prop="phonenumber" - v-if="columns[4].visible" width="120" /> - <el-table-column - label="骞撮緞" - align="center" - key="phonenumber" - prop="phonenumber" - v-if="columns[4].visible" - width="120" - /> - <!-- <el-table-column - label="鐘舵��" - align="center" - key="status" - v-if="columns[5].visible" - > - <template slot-scope="scope"> - <el-switch - v-model="scope.row.status" - active-value="0" - inactive-value="1" - @change="handleStatusChange(scope.row)" - ></el-switch> - </template> - </el-table-column> --> + <el-table-column label="鏄惁鍚敤" align="center" key="status"> + <template slot-scope="scope"> + <el-switch + v-model="scope.row.status" + active-value="0" + inactive-value="1" + @change="handleStatusChange(scope.row)" + ></el-switch> + </template> + </el-table-column> <el-table-column - label="鑱旂郴鏂瑰紡" + label="棰樼洰鏍囩" align="center" - key="phonenumber" - prop="phonenumber" - v-if="columns[4].visible" + key="topicnumber" + prop="topicnumber" width="120" + :show-overflow-tooltip="true" /> <el-table-column - label="寤烘。鏃ユ湡" + label="鍒涘缓鏃ユ湡" align="center" prop="createTime" - v-if="columns[6].visible" width="160" > <template slot-scope="scope"> @@ -231,10 +181,9 @@ </template> </el-table-column> <el-table-column - label="鏇存柊鏃ユ湡" + label="鏈�杩戞洿鏂版棩鏈�" align="center" prop="createTime" - v-if="columns[6].visible" width="160" > <template slot-scope="scope"> @@ -252,9 +201,17 @@ size="medium" type="text" icon="el-icon-edit" - @click="$router.push('/patient/patient/profile/')" + @click="Referencequestion(scope.row)" v-hasPermi="['system:user:edit']" - >鏌ョ湅</el-button + >棰勮</el-button + > + <el-button + size="medium" + type="text" + icon="el-icon-edit" + @click="handleUpdate(scope.row)" + v-hasPermi="['system:user:edit']" + >淇敼</el-button > </template> </el-table-column> @@ -263,142 +220,112 @@ <pagination v-show="total > 0" :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" + :page.sync="topqueryParams.pageNum" + :limit.sync="topqueryParams.pageSize" @pagination="getList" /> </el-col> </el-row> - <!-- 娣诲姞鎴栦慨鏀圭敤鎴烽厤缃璇濇 --> - <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body> + <!-- 娣诲姞鎴栦慨鏀归鐩厤缃璇濇 --> + <el-dialog + :title="title" + :visible.sync="addalteropen" + width="900px" + append-to-body + > <el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-row> <el-col :span="12"> - <el-form-item label="濮撳悕" prop="nickName"> + <el-form-item label="棰樼洰鍚嶇О" prop="nickName"> <el-input v-model="form.nickName" - placeholder="璇疯緭鍏ュ鍚�" + placeholder="璇疯緭鍏�" maxlength="30" /> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="鎬у埆" prop="deptId"> - <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆"> + <el-form-item label="棰樼洰绫诲瀷" prop="deptId"> + <el-select v-model="form.types" placeholder="璇烽�夋嫨"> <el-option - v-for="dict in dict.type.sys_user_sex" - :key="dict.value" - :label="dict.label" - :value="dict.value" + v-for="item in topicoptions" + :key="item.value" + :label="item.label" + :value="item.value" ></el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row> - <el-col :span="12"> - <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber"> - <el-input - v-model="form.phonenumber" - placeholder="璇烽�夋嫨璇佷欢绫诲瀷" - maxlength="11" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="璇佷欢鍙�" prop="email"> - <el-input - v-model="form.email" - placeholder="璇疯緭鍏ヨ瘉浠跺彿" - maxlength="50" - /> - </el-form-item> - </el-col> + <el-form-item label="绛旀閫夐」" prop="email"> + <el-tag + :key="tag" + v-for="tag in dynamicTags" + closable + :disable-transitions="false" + @close="handleClose(tag)" + > + {{ tag }} + </el-tag> + <el-input + class="input-new-tag" + v-if="inputVisible" + v-model="inputValue" + ref="saveTagInput" + size="small" + @keyup.enter.native="handleInputConfirm" + @blur="handleInputConfirm" + > + </el-input> + <el-button + v-else + class="button-new-tag" + size="small" + @click="showInput" + >+ 鏂板閫夐」</el-button + > + </el-form-item> </el-row> <el-row> <el-col :span="12"> - <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName"> - <el-input - v-model="form.userName" - placeholder="璇疯緭鍏ユ墜鏈哄彿" - maxlength="30" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="浜插睘鎵嬫満鍙�" prop="password"> - <el-input - v-model="form.password" - placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿" - type="password" - maxlength="20" - show-password - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="鎮h�呮爣绛�"> - <!-- <el-select v-model="form.sex" placeholder="璇烽�夋嫨"> --> + <el-form-item label="棰樼洰鏍囩" prop="email"> <el-cascader + v-model="form.totagid" :options="optionss" :props="propss" clearable ></el-cascader> - <!-- </el-select> --> </el-form-item> </el-col> - <!-- <el-col :span="12"> - <el-form-item label="鐘舵��"> - <el-radio-group v-model="form.status"> - <el-radio - v-for="dict in dict.type.sys_normal_disable" - :key="dict.value" - :label="dict.value" - >{{ dict.label }}</el-radio - > - </el-radio-group> - </el-form-item> - </el-col> --> </el-row> - <!-- <el-row> - <el-col :span="12"> - <el-form-item label="宀椾綅"> - <el-select - v-model="form.postIds" - multiple - placeholder="璇烽�夋嫨宀椾綅" + <el-row> + <el-col :span="12"> + <el-form-item label="鏄惁鍚敤"> + <el-radio-group v-model="form.qystatus"> + <el-radio + v-for="item in qyoptions" + :key="item.value" + :label="item.value" + >{{ item.label }}</el-radio > - <el-option - v-for="item in postOptions" - :key="item.postId" - :label="item.postName" - :value="item.postId" - :disabled="item.status == 1" - ></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="瑙掕壊"> - <el-select - v-model="form.roleIds" - multiple - placeholder="璇烽�夋嫨瑙掕壊" + </el-radio-group> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏄惁蹇呭~"> + <el-radio-group v-model="form.btstatus"> + <el-radio + v-for="item in btoptions" + :key="item.value" + :label="item.value" + >{{ item.label }}</el-radio > - <el-option - v-for="item in roleOptions" - :key="item.roleId" - :label="item.roleName" - :value="item.roleId" - :disabled="item.status == 1" - ></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> --> + </el-radio-group> + </el-form-item> + </el-col> + </el-row> <el-row> <el-col :span="24"> <el-form-item label="澶囨敞"> @@ -416,93 +343,52 @@ <el-button @click="cancel">鍙� 娑�</el-button> </div> </el-dialog> - - <!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� --> - <el-dialog - :title="upload.title" - :visible.sync="upload.open" - width="70%" - append-to-body - > - <el-steps :active="dractive" simple> - <el-step title="涓婁紶瀵煎叆鏂囦欢" icon="el-icon-upload"></el-step> - <el-step title="瀵煎叆妫�鏌�" icon="el-icon-picture"></el-step> - <el-step title="瀵煎叆缁撴灉" icon="el-icon-picture"></el-step> - </el-steps> - <!-- 涓婁紶瀵煎叆鏂囦欢 --> - <div class="download" v-if="dractive == 1"> - <el-upload - class="upload-demo" - ref="upload" - :limit="1" - accept=".xlsx, .xls" - :headers="upload.headers" - :action="upload.url + '?updateSupport=' + upload.updateSupport" - :disabled="upload.isUploading" - :on-progress="handleFileUploadProgress" - :on-success="handleFileSuccess" - :auto-upload="false" - drag - > - <i class="el-icon-upload"></i> - <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> - <div class="el-upload__tip text-center" slot="tip"> - <div class="el-upload__tip" slot="tip"> - <el-checkbox v-model="upload.updateSupport" /> - 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹� - </div> - <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span> - <el-link - type="primary" - :underline="false" - style="font-size: 24px; vertical-align: baseline" - @click="importTemplate" - >涓嬭浇妯℃澘</el-link - > + <!-- 棰樼洰棰勮寮规 --> + <el-dialog width="30%" title="棰樼洰棰勮" :visible.sync="previewVisible"> + <div class="qrcode-dialo"> + <!-- 鍗曢�� --> + <div class="topic-dev" v-if="previewtype == 1"> + <div class="dev-text"> + [鍗曢�塢  <span>{{ previewvalue.username }}</span> </div> - </el-upload> - </div> - <!-- 瀵煎叆妫�鏌� --> - <div class="uploading" v-else-if="dractive == 2"> - <el-table :data="uploadingData" style="width: 100%"> - <el-table-column prop="serial" label="搴忓彿"> </el-table-column> - <el-table-column prop="name" label="濮撳悕"> </el-table-column> - <el-table-column prop="sex" label="鎬у埆"> </el-table-column> - <el-table-column prop="certificate" label="璇佷欢绫诲瀷"> - </el-table-column> - <el-table-column prop="certificatenum" label="璇佷欢鍙风爜"> - </el-table-column> - <el-table-column prop="goday" label="鍑虹敓鏃ユ湡"> </el-table-column> - <el-table-column prop="menum" label="鏈汉鑱旂郴鏂瑰紡"> </el-table-column> - <el-table-column prop="younum" label="浜插睘鑱旂郴鏂瑰紡"> - </el-table-column> - <el-table-column prop="tag" label="鎮h�呮爣绛�"> </el-table-column> - <el-table-column prop="erry" label="閿欒鍘熷洜"> </el-table-column> - </el-table> - <pagination - v-show="total > 0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="geterryList" - /> - </div> - <!-- 瀹屾垚 --> - <div class="drexamine" v-else-if="dractive == 3"> - <img - src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg" - /> - <p>瀵煎叆鎮h�呮垚鍔燂紒</p> - <p>鏈鍏辫瀵煎叆{{ ImportQuantity }}浣嶆偅鑰�</p> - </div> - - <div slot="footer" class="dialog-footer" v-if="dractive == 3"> - <!-- <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button> --> - <el-button @click="submitclose">瀹屾垚</el-button> - </div> - <div slot="footer" v-else> - <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button> - <el-button @click="submitclose">鍙� 娑�</el-button> + <div class="dev-xx"> + <el-radio-group v-model="radio"> + <el-radio + v-for="(items, index) in dynamicTags" + :key="index" + :label="index" + >{{ items }}</el-radio + > + </el-radio-group> + </div> + </div> + <!-- 澶氶�� --> + <div class="topic-dev" v-else-if="previewtype == 2"> + <div class="dev-text"> + [澶氶�塢  <span>{{ previewvalue.username }}</span> + </div> + <div class="dev-xx"> + <el-checkbox-group v-model="radios"> + <el-checkbox + v-for="(items, index) in dynamicTags" + :key="index" + :label="index" + > + {{ items }} + </el-checkbox> + </el-checkbox-group> + </div> + </div> + <!-- 濉┖ --> + <div class="topic-dev" v-if="previewtype == 3"> + <div class="dev-text"> + [濉┖]  <span>{{ previewvalue.username }}</span> + </div> + <div class="dev-xx"> + <el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable> + </el-input> + </div> + </div> </div> </el-dialog> </div> @@ -517,9 +403,7 @@ updateUser, resetUserPwd, changeUserStatus, - deptTreeSelect, } from "@/api/system/user"; -import { getToken } from "@/utils/auth"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; @@ -545,10 +429,8 @@ userList: null, // 寮瑰嚭灞傛爣棰� title: "", - // 閮ㄩ棬鏍戦�夐」 - deptOptions: undefined, - // 鏄惁鏄剧ず寮瑰嚭灞� - open: false, + // 鏄惁鏄剧ず淇敼銆佹坊鍔犲脊鍑哄眰 + addalteropen: false, // 閮ㄩ棬鍚嶇О deptName: undefined, // 榛樿瀵嗙爜 @@ -559,21 +441,39 @@ postOptions: [], // 瑙掕壊閫夐」 roleOptions: [], + dynamicTags: ["閫夐」涓�", "閫夐」浜�", "閫夐」涓�"], //閫夐」 + inputVisible: false, + inputValue: "", + previewVisible: false, //棰樼洰棰勮寮规 + radio: "", + radios: [], + previewtype: 2, //棰勮棰樼洰绫诲瀷 + total: 0, // 鎬绘潯鏁� + ImportQuantity: 999, //瀵奸鐩暟閲� + //棰勮棰樼洰淇℃伅 + previewvalue: { + username: "杩欎釜鍖荤敓瀵逛綘鎬庝箞鏍�", + }, // 琛ㄥ崟鍙傛暟 - form: {}, + form: { + phonenumber: "", + totagid: "", + types: "", + nickName: "", + qystatus: "", + btstatus: "", + }, //瀵煎叆杩涘害 dractive: 1, // 瀵煎叆灞曠ず琛ㄥ崟 uploadingData: {}, - total: 0, // 鎬绘潯鏁� - ImportQuantity: 999, //瀵煎叆鎮h�呮暟閲� // 鏌ヨ鍙傛暟 - queryParams: { + topqueryParams: { pageNum: 1, pageSize: 10, - jobName: undefined, - jobGroup: undefined, - status: undefined, + userName: undefined, + tagid: undefined, + topic: undefined, }, propss: { multiple: true }, optionss: [ @@ -594,44 +494,39 @@ label: "鍏椋掗", }, ], - defaultProps: { - children: "children", - label: "label", - }, - // 鐢ㄦ埛瀵煎叆鍙傛暟 - upload: { - // 鏄惁鏄剧ず寮瑰嚭灞傦紙鐢ㄦ埛瀵煎叆锛� - open: false, - // 寮瑰嚭灞傛爣棰橈紙鐢ㄦ埛瀵煎叆锛� - title: "", - // 鏄惁绂佺敤涓婁紶 - isUploading: false, - // 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹� - updateSupport: 0, - // 璁剧疆涓婁紶鐨勮姹傚ご閮� - headers: { Authorization: "Bearer " + getToken() }, - // 涓婁紶鐨勫湴鍧� - url: process.env.VUE_APP_BASE_API + "/system/user/importData", - }, - // 鏌ヨ鍙傛暟 - queryParams: { - pageNum: 1, - pageSize: 10, - userName: undefined, - phonenumber: undefined, - status: undefined, - deptId: undefined, - IDnumber: undefined, - }, - // 鍒椾俊鎭� - columns: [ - { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true }, - { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true }, - { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true }, - { key: 3, label: `閮ㄩ棬`, visible: true }, - { key: 4, label: `鎵嬫満鍙风爜`, visible: true }, - { key: 5, label: `鐘舵�乣, visible: true }, - { key: 6, label: `鍒涘缓鏃堕棿`, visible: true }, + qyoptions: [ + { + value: 1, + label: "鍚敤", + }, + { + value: 2, + label: "鍏抽棴", + }, + ], + btoptions: [ + { + value: 1, + label: "蹇呭~", + }, + { + value: 2, + label: "闈炲繀濉�", + }, + ], + topicoptions: [ + { + value: 1, + label: "鍗曢��", + }, + { + value: 2, + label: "澶氶��", + }, + { + value: 3, + label: "濉┖", + }, ], // 琛ㄥ崟鏍¢獙 rules: { @@ -681,24 +576,18 @@ }, }; }, - watch: { - // 鏍规嵁鍚嶇О绛涢�夐儴闂ㄦ爲 - deptName(val) { - this.$refs.tree.filter(val); - }, - }, + watch: {}, created() { this.getList(); - this.getDeptTree(); this.getConfigKey("sys.user.initPassword").then((response) => { this.initPassword = response.msg; }); }, methods: { - /** 鏌ヨ鐢ㄦ埛鍒楄〃 */ + /** 鏌ヨ棰樼洰鍒楄〃 */ getList() { this.loading = true; - listUser(this.addDateRange(this.queryParams, this.dateRange)).then( + listUser(this.addDateRange(this.topqueryParams, this.dateRange)).then( (response) => { this.userList = response.rows; this.total = response.total; @@ -706,32 +595,12 @@ } ); }, - // 鏌ヨ瀵煎叆灞曠ず鍒楄〃 - geterryList() { - this.loading = true; - listJob(this.queryParams).then((response) => { - this.jobList = 1; - this.total = 1; - this.loading = false; - }); + // 鏌ョ湅棰樼洰璇︽儏 + Referencequestion(row) { + this.previewVisible = true; }, - /** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */ - getDeptTree() { - deptTreeSelect().then((response) => { - this.deptOptions = response.data; - }); - }, - // 绛涢�夎妭鐐� - filterNode(value, data) { - if (!value) return true; - return data.label.indexOf(value) !== -1; - }, - // 鑺傜偣鍗曞嚮浜嬩欢 - handleNodeClick(data) { - this.queryParams.deptId = data.id; - this.handleQuery(); - }, - // 鐢ㄦ埛鐘舵�佷慨鏀� + + // 棰樼洰鐘舵�佷慨鏀� handleStatusChange(row) { let text = row.status === "0" ? "鍚敤" : "鍋滅敤"; this.$modal @@ -748,7 +617,7 @@ }, // 鍙栨秷鎸夐挳 cancel() { - this.open = false; + this.addalteropen = false; this.reset(); }, // 琛ㄥ崟閲嶇疆 @@ -771,14 +640,14 @@ }, /** 鎼滅储鎸夐挳鎿嶄綔 */ handleQuery() { - this.queryParams.pageNum = 1; + this.topqueryParams.pageNum = 1; this.getList(); }, /** 閲嶇疆鎸夐挳鎿嶄綔 */ resetQuery() { this.dateRange = []; this.resetForm("queryForm"); - this.queryParams.deptId = undefined; + this.topqueryParams.deptId = undefined; this.$refs.tree.setCurrentKey(null); this.handleQuery(); }, @@ -788,18 +657,25 @@ this.single = selection.length != 1; this.multiple = !selection.length; }, - // 鏇村鎿嶄綔瑙﹀彂 - handleCommand(command, row) { - switch (command) { - case "handleResetPwd": - this.handleResetPwd(row); - break; - case "handleAuthRole": - this.handleAuthRole(row); - break; - default: - break; + //鍒犻櫎閫夐」 + handleClose(tag) { + this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1); + }, + //瑙﹀彂鏂板杈撳叆 + showInput() { + this.inputVisible = true; + this.$nextTick((_) => { + this.$refs.saveTagInput.$refs.input.focus(); + }); + }, + //鑾峰彇澶卞幓鐒︾偣瑙﹀彂 + handleInputConfirm() { + let inputValue = this.inputValue; + if (inputValue) { + this.dynamicTags.push(inputValue); } + this.inputVisible = false; + this.inputValue = ""; }, /** 鏂板鎸夐挳鎿嶄綔 */ handleAdd() { @@ -807,8 +683,8 @@ getUser().then((response) => { this.postOptions = response.posts; this.roleOptions = response.roles; - this.open = true; - this.title = "鏂板鎮h��"; + this.addalteropen = true; + this.title = "鏂板棰樼洰"; this.form.password = this.initPassword; }); }, @@ -822,7 +698,7 @@ this.roleOptions = response.roles; this.$set(this.form, "postIds", response.postIds); this.$set(this.form, "roleIds", response.roleIds); - this.open = true; + this.addalteropen = true; this.title = "淇敼鐢ㄦ埛"; this.form.password = ""; }); @@ -843,11 +719,7 @@ }) .catch(() => {}); }, - /** 鍒嗛厤瑙掕壊鎿嶄綔 */ - handleAuthRole: function (row) { - const userId = row.userId; - this.$router.push("/system/user-auth/role/" + userId); - }, + /** 鎻愪氦鎸夐挳 */ submitForm: function () { this.$refs["form"].validate((valid) => { @@ -887,55 +759,10 @@ this.download( "system/user/export", { - ...this.queryParams, + ...this.topqueryParams, }, `user_${new Date().getTime()}.xlsx` ); - }, - /** 瀵煎叆鎸夐挳鎿嶄綔 */ - handleImport() { - this.upload.title = "鐢ㄦ埛瀵煎叆"; - this.upload.open = true; - }, - /** 涓嬭浇妯℃澘鎿嶄綔 */ - importTemplate() { - this.download( - "system/user/importTemplate", - {}, - `user_template_${new Date().getTime()}.xlsx` - ); - }, - // 鏂囦欢涓婁紶涓鐞� - handleFileUploadProgress(event, file, fileList) { - this.upload.isUploading = true; - }, - // 鏂囦欢涓婁紶鎴愬姛澶勭悊 - handleFileSuccess(response, file, fileList) { - this.upload.open = false; - this.upload.isUploading = false; - this.$refs.upload.clearFiles(); - this.$alert( - "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + - response.msg + - "</div>", - "瀵煎叆缁撴灉", - { dangerouslyUseHTMLString: true } - ); - this.getList(); - }, - // 鎻愪氦涓婁紶鏂囦欢 - submitFileForm() { - // 涓婁紶 - if (this.dractive == 1) { - this.$refs.upload.submit(); - this.dractive++; - } else { - this.dractive++; - } - }, - submitclose() { - this.upload.open = false; - this.dractive = 1; }, }, }; @@ -973,6 +800,21 @@ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04); } +.el-tag + .el-tag { + margin-left: 10px; +} +.button-new-tag { + margin-left: 10px; + height: 32px; + line-height: 30px; + padding-top: 0; + padding-bottom: 0; +} +.input-new-tag { + width: 90px; + margin-left: 10px; + vertical-align: bottom; +} .drexamine { display: flex; align-items: center; @@ -984,4 +826,31 @@ height: 100px; } } +.qrcode-dialo { + // text-align: center; + // display: flex; + margin: 20px; + padding: 30px; + background: #edf1f7; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); + .topic-dev { + margin-bottom: 25px; + font-size: 20px !important; + .dev-text { + margin-bottom: 10px; + } + } +} +::v-deep.el-radio-group { + span { + font-size: 24px; + } +} +::v-deep.el-checkbox-group { + span { + font-size: 24px; + } +} </style> diff --git a/src/views/knowledge/questionnaire/compilequer/index.vue b/src/views/knowledge/questionnaire/compilequer/index.vue index d5bc5ff..03e8202 100644 --- a/src/views/knowledge/questionnaire/compilequer/index.vue +++ b/src/views/knowledge/questionnaire/compilequer/index.vue @@ -463,28 +463,28 @@ ], desc: [{ required: true, message: "璇峰~鍐欐椿鍔ㄥ舰寮�", trigger: "blur" }], }, - options: [ - { - value: "閫夐」1", - label: "榛勯噾绯�", - }, - { - value: "閫夐」2", - label: "鍙岀毊濂�", - }, - { - value: "閫夐」3", - label: "铓典粩鐓�", - }, - { - value: "閫夐」4", - label: "榫欓』闈�", - }, - { - value: "閫夐」5", - label: "鍖椾含鐑ら腑", - }, - ], + // options: [ + // { + // value: "閫夐」1", + // label: "榛勯噾绯�", + // }, + // { + // value: "閫夐」2", + // label: "鍙岀毊濂�", + // }, + // { + // value: "閫夐」3", + // label: "铓典粩鐓�", + // }, + // { + // value: "閫夐」4", + // label: "榫欓』闈�", + // }, + // { + // value: "閫夐」5", + // label: "鍖椾含鐑ら腑", + // }, + // ], options: [ { value: "zhinan", @@ -760,21 +760,21 @@ sdadd: ["sss", "ssccss", "ssaas", "ss"], }, ], - options: [ - { - value: "閫夐」1", - label: "鍗曢��", - }, - { - value: "閫夐」2", - label: "澶氶��", - disabled: true, - }, - { - value: "閫夐」3", - label: "濉┖", - }, - ], + // options: [ + // { + // value: "閫夐」1", + // label: "鍗曢��", + // }, + // { + // value: "閫夐」2", + // label: "澶氶��", + // disabled: true, + // }, + // { + // value: "閫夐」3", + // label: "濉┖", + // }, + // ], addvalue: "娣诲姞棰樼洰", // 棰樼洰琛ㄦ牸鏁版嵁 userList: [ diff --git a/src/views/knowledge/questionnaire/index.vue b/src/views/knowledge/questionnaire/index.vue index 824de78..9290e98 100644 --- a/src/views/knowledge/questionnaire/index.vue +++ b/src/views/knowledge/questionnaire/index.vue @@ -25,12 +25,29 @@ <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane> <el-tab-pane class="tab-paness" - :key="item.name" + :key="item.title" v-for="(item, index) in editableTabs" - :label="item.title + ' (' + item.number + ')'" - ></el-tab-pane> - - <el-tab-pane :label="`鏈垎缁�(${numberlbs})`"></el-tab-pane> + > + <span slot="label"> + {{ + item.title + " (" + item.number + ")" + }}   <el-popover + placement="top-start" + width="100" + trigger="hover" + > + <div style="text-align: center"> + <el-button type="text" @click="popoveramend(item)" + >淇敼</el-button + ><el-button type="text" @click="deletefenlei(item)" + ><span style="color: rgb(173, 55, 55)" + >鍒犻櫎</span + ></el-button + > + </div> + <i slot="reference" class="el-icon-share"></i> </el-popover + ></span> + </el-tab-pane> </el-tabs> </div> </div> @@ -344,16 +361,39 @@ </div> </div> <!-- 娣诲姞绫诲埆寮规 --> - <el-dialog width="30%" :visible.sync="dialogFormVisible"> - <el-form :model="sidecolumnform"> - <el-form-item label="璇疯緭鍏ョ被鍒悕绉�"> - <el-input v-model="form.name" autocomplete="off"></el-input> + <el-dialog + :title="amendtag ? '淇敼绫诲埆' : '鏂板绫诲埆'" + width="30%" + :visible.sync="dialogFormVisible" + > + <el-form :model="classifyform"> + <el-form-item + :label="amendtag ? '璇疯緭鍏ユ柊鐨勭被鍒悕绉�' : '璇疯緭鍏ョ被鍒悕绉�'" + > + <el-input + v-model="classifyform.categoryname" + autocomplete="off" + ></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button> <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button> </div> + </el-dialog> + <!-- 鍒犻櫎绫诲埆纭妗� --> + <el-dialog title="璀﹀憡" :visible.sync="deleteVisible" width="40%"> + <div style="font-size: 20px; color: rgb(247, 76, 76)"> + 鏄惁纭鍒犻櫎鍒嗙被锛歔<span>{{ deletefenl }}</span + >]? + </div> + <div style="font-size: 20px"> + 姝ゆ搷浣滀細灏嗚绫诲埆涓嬫墍鏈夋ā鍧楄浆绉昏嚦[鏈垎绫籡锛屾槸鍚︾户缁垹闄ゆ鍒嗙被锛� + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="deleteVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="deletefenlei">纭� 瀹�</el-button> + </span> </el-dialog> <!-- 浜岀淮鐮佸睍绀哄脊妗� --> <el-dialog width="30%" :visible.sync="goQRCodeVisible"> @@ -425,10 +465,17 @@ numberlb: 22, numberlbs: 2, sidecolumnform: {}, //娣诲姞绫诲埆琛ㄥ崟 - dialogFormVisible: false, //娣诲姞绫诲埆寮规 goQRCodeVisible: false, //浜岀淮鐮佸脊妗� sidecolumnval: "", //绫诲埆鎼滅储 propss: { multiple: true }, + idds: "", + amendtag: false, //鏄惁淇敼绫诲埆 + dialogFormVisible: false, //淇敼娣诲姞绫诲埆寮规 + deleteVisible: false, //鍒嗙被鍒犻櫎寮规 + deletefenl: "楂樿鍘�", //鍒犻櫎椤� + classifyform: { + categoryname: "", + }, //绫诲埆琛ㄥ崟 optionss: [ { value: 1, @@ -558,10 +605,45 @@ // console.log(rows); // this.list = rows; }, - // 娣诲姞绫诲埆 + // 娣诲姞銆佷慨鏀圭被鍒� submitsidecolumn() { + if (this.amendtag) { + this.classifyform.tagcategoryid = this.idds; + // toamendtagcategory(this.addDateRange(this.classifyform)).then( + // (response) => { + // console.log(response); + // this.gitclasify(); + // } + // ); + } else { + // addtagcategory(this.addDateRange(this.classifyform)).then( + // (response) => { + // console.log(response); + // this.gitclasify(); + // } + // ); + } + this.classifyform = { + categoryname: "", + }; + this.idds = ""; this.dialogFormVisible = false; }, + //鍒犻櫎鍒嗙被 + deletefenlei(row) { + if (this.deleteVisible) { + // deletetagcategory(this.idds).then((response) => { + // console.log(response); + // this.gitclasify(); + // }); + this.deleteVisible = false; + this.idds = ""; + } else { + this.deleteVisible = true; + this.idds = row.tagcategoryid; + this.deletefenl = row.title; + } + }, //鎼滅储绫诲埆 sidecolumnss() {}, // 鍒囨崲鍏变韩/鏈湴 diff --git a/src/views/patient/patient/index.vue b/src/views/patient/patient/index.vue index 487ba90..34442e1 100644 --- a/src/views/patient/patient/index.vue +++ b/src/views/patient/patient/index.vue @@ -1,32 +1,6 @@ <template> <div class="app-container"> <el-row :gutter="20"> - <!--閮ㄩ棬鏁版嵁--> - <!-- <el-col :span="4" :xs="24"> - <div class="head-container"> - <el-input - v-model="deptName" - placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" - clearable - size="small" - prefix-icon="el-icon-search" - style="margin-bottom: 20px" - /> - </div> - <div class="head-container"> - <el-tree - :data="deptOptions" - :props="defaultProps" - :expand-on-click-node="false" - :filter-node-method="filterNode" - ref="tree" - node-key="id" - default-expand-all - highlight-current - @node-click="handleNodeClick" - /> - </div> - </el-col> --> <!--鐢ㄦ埛鏁版嵁--> <el-col :span="24" :xs="24"> <el-form @@ -37,27 +11,27 @@ v-show="showSearch" label-width="98px" > - <el-form-item label="濮撳悕" prop="userName"> + <el-form-item label="濮撳悕" prop="name"> <el-input - v-model="queryParams.userName" + v-model="queryParams.name" placeholder="璇疯緭鍏ュ鍚�" clearable style="width: 200px" @keyup.enter.native="handleQuery" /> </el-form-item> - <el-form-item label="韬唤璇佸彿鐮�" prop="IDnumber"> + <el-form-item label="韬唤璇佸彿鐮�" prop="iccardno"> <el-input - v-model="queryParams.IDnumber" + v-model="queryParams.iccardno" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜" clearable style="width: 250px" @keyup.enter.native="handleQuery" /> </el-form-item> - <el-form-item label="鑱旂郴鏂瑰紡" prop="phonenumber"> + <el-form-item label="鑱旂郴鏂瑰紡" prop="telcode"> <el-input - v-model="queryParams.phonenumber" + v-model="queryParams.telcode" placeholder="璇疯緭鍏ヨ仈绯绘柟寮�" clearable style="width: 280px" @@ -65,31 +39,37 @@ /> </el-form-item> <el-row> - <el-form-item label="鎮h�呮爣绛�" prop="status"> - <el-cascader - v-model="queryParams.status" - :options="optionss" - :props="propss" - clearable - ></el-cascader> + <el-form-item label="鎮h�呮爣绛�" prop="tagId"> + <el-select + v-model="queryParams.tagIds" + multiple + placeholder="璇烽�夋嫨" + > + <el-option + v-for="item in optionstag" + :key="item.tagid" + :label="item.tagname" + :value="item.tagid" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button + type="primary" + icon="el-icon-search" + size="medium" + @click="handleQuery" + >鎼滅储</el-button + > + <el-button + icon="el-icon-refresh" + size="medium" + @click="resetQuery" + >閲嶇疆</el-button + > </el-form-item> </el-row> - - <!-- <el-form-item label="鍒涘缓鏃堕棿"> - <el-date-picker - v-model="dateRange" - style="width: 240px" - value-format="yyyy-MM-dd" - type="daterange" - range-separator="-" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - ></el-date-picker> - </el-form-item> - <el-form-item> - <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">鎼滅储</el-button> - <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">閲嶇疆</el-button> - </el-form-item> --> </el-form> <el-row :gutter="10" class="mb8"> @@ -156,11 +136,6 @@ </el-col> <!-- <el-col :span="1.5"> </el-col> --> </el-row> - <!-- <right-toolbar - :showSearch.sync="showSearch" - @queryTable="getList" - :columns="columns" - ></right-toolbar> --> <el-table v-loading="loading" :data="userList" @@ -170,65 +145,60 @@ <el-table-column label="搴忓彿" align="center" - key="userId" - prop="userId" + key="patid" + prop="patid" /> - <el-table-column - label="濮撳悕" - align="center" - key="userName" - prop="userName" - :show-overflow-tooltip="true" - /> - <el-table-column - label="鎬у埆" - align="center" - key="nickName" - prop="nickName" - :show-overflow-tooltip="true" - /> + <el-table-column label="濮撳悕" align="center" key="name" prop="name" /> + <el-table-column label="鎬у埆" align="center" key="sex" prop="sex"> + <template slot-scope="scope"> + <span>{{ scope.row.sex == 1 ? "鐢�" : "濂�" }}</span> + </template> + </el-table-column> <el-table-column label="鎮h�呮爣绛�" align="center" - key="deptName" - prop="dept.deptName" + key="tagList" + prop="tagList" + width="160" :show-overflow-tooltip="true" - /> + > + <template slot-scope="scope"> + <span v-for="item in scope.row.tagList">{{ item }} </span> + </template> + </el-table-column> <el-table-column label="璇佷欢绫诲瀷" align="center" - key="phonenumber" - prop="phonenumber" + key="iccardtype" + prop="iccardtype" width="120" /><el-table-column label="璇佷欢鍙风爜" align="center" - key="phonenumber" - prop="phonenumber" - width="120" + key="iccardno" + prop="iccardno" + width="190" /> <el-table-column label="骞撮緞" align="center" - key="phonenumber" - prop="phonenumber" - v-if="columns[4].visible" + key="age" + prop="age" width="120" /> <el-table-column label="鑱旂郴鏂瑰紡" align="center" - key="phonenumber" - prop="phonenumber" - v-if="columns[4].visible" + key="telcode" + prop="telcode" width="120" /> <el-table-column label="寤烘。鏃ユ湡" align="center" - prop="createTime" - v-if="columns[6].visible" + key="archivetime" + prop="archivetime" width="160" > <template slot-scope="scope"> @@ -238,8 +208,7 @@ <el-table-column label="鏇存柊鏃ユ湡" align="center" - prop="createTime" - v-if="columns[6].visible" + prop="updateTime" width="160" > <template slot-scope="scope"> @@ -252,14 +221,29 @@ width="160" class-name="small-padding fixed-width" > - <template slot-scope="scope" v-if="scope.row.userId !== 1"> + <template slot-scope="scope"> <el-button size="medium" type="text" - icon="el-icon-edit" - @click="$router.push('/patient/patient/profile/')" + @click=" + $router.push({ + path: '/patient/patient/profile/', + query: { id: scope.row.patid }, + }) + " v-hasPermi="['system:user:edit']" - >鏌ョ湅</el-button + ><span class="button-textsc" + ><i class="el-icon-zoom-in"></i>鏌ョ湅</span + ></el-button + > + <el-button + size="medium" + type="text" + @click="handleUpdate(scope.row)" + v-hasPermi="['system:user:edit']" + ><span class="button-textxg" + ><i class="el-icon-edit"></i>淇敼</span + ></el-button > </template> </el-table-column> @@ -276,20 +260,24 @@ </el-row> <!-- 娣诲姞鎴栦慨鏀圭敤鎴烽厤缃璇濇 --> - <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body> + <el-dialog + :title="amendtag ? '淇敼鎮h�呬俊鎭�' : '鏂板鎮h��'" + :visible.sync="Labelchange" + width="900px" + > <el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-row> <el-col :span="12"> - <el-form-item label="濮撳悕" prop="nickName"> + <el-form-item label="濮撳悕" prop="name"> <el-input - v-model="form.nickName" + v-model="form.name" placeholder="璇疯緭鍏ュ鍚�" maxlength="30" /> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="鎬у埆" prop="deptId"> + <el-form-item label="鎬у埆" prop="sex"> <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆"> <el-option v-for="dict in dict.type.sys_user_sex" @@ -303,18 +291,21 @@ </el-row> <el-row> <el-col :span="12"> - <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber"> - <el-input - v-model="form.phonenumber" - placeholder="璇烽�夋嫨璇佷欢绫诲瀷" - maxlength="11" - /> + <el-form-item label="璇佷欢绫诲瀷" prop="iccardtype"> + <el-select v-model="form.iccardtype" placeholder="璇烽�夋嫨鎬у埆"> + <el-option + v-for="item in paperstypes" + :key="item.papersname" + :label="item.papersname" + :value="item.papersname" + ></el-option> + </el-select> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="璇佷欢鍙�" prop="email"> + <el-form-item label="璇佷欢鍙�" prop="iccardno"> <el-input - v-model="form.email" + v-model="form.iccardno" placeholder="璇疯緭鍏ヨ瘉浠跺彿" maxlength="50" /> @@ -323,18 +314,18 @@ </el-row> <el-row> <el-col :span="12"> - <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName"> + <el-form-item label="鏈汉鎵嬫満鍙�" prop="telcode"> <el-input - v-model="form.userName" + v-model="form.telcode" placeholder="璇疯緭鍏ユ墜鏈哄彿" maxlength="30" /> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="浜插睘鎵嬫満鍙�" prop="password"> + <el-form-item label="浜插睘鎵嬫満鍙�" prop="relativetelcode"> <el-input - v-model="form.password" + v-model="form.relativetelcode" placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿" type="password" maxlength="20" @@ -345,65 +336,30 @@ </el-row> <el-row> <el-col :span="12"> + <el-form-item label="骞撮緞" prop="age"> + <el-input + v-model="form.age" + placeholder="璇疯緭鍏ュ勾榫�" + maxlength="30" + /> + </el-form-item> + </el-col> + <el-col :span="12"> <el-form-item label="鎮h�呮爣绛�"> <!-- <el-select v-model="form.sex" placeholder="璇烽�夋嫨"> --> - <el-cascader - :options="optionss" - :props="propss" - clearable - ></el-cascader> + <el-select v-model="form.tagList" multiple placeholder="璇烽�夋嫨"> + <el-option + v-for="item in optionstag" + :key="item.tagid" + :label="item.tagname" + :value="item.tagid" + > + </el-option> + </el-select> <!-- </el-select> --> </el-form-item> </el-col> - <!-- <el-col :span="12"> - <el-form-item label="鐘舵��"> - <el-radio-group v-model="form.status"> - <el-radio - v-for="dict in dict.type.sys_normal_disable" - :key="dict.value" - :label="dict.value" - >{{ dict.label }}</el-radio - > - </el-radio-group> - </el-form-item> - </el-col> --> </el-row> - <!-- <el-row> - <el-col :span="12"> - <el-form-item label="宀椾綅"> - <el-select - v-model="form.postIds" - multiple - placeholder="璇烽�夋嫨宀椾綅" - > - <el-option - v-for="item in postOptions" - :key="item.postId" - :label="item.postName" - :value="item.postId" - :disabled="item.status == 1" - ></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="瑙掕壊"> - <el-select - v-model="form.roleIds" - multiple - placeholder="璇烽�夋嫨瑙掕壊" - > - <el-option - v-for="item in roleOptions" - :key="item.roleId" - :label="item.roleName" - :value="item.roleId" - :disabled="item.status == 1" - ></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> --> <el-row> <el-col :span="24"> <el-form-item label="澶囨敞"> @@ -515,8 +471,6 @@ <script> import { - listUser, - getUser, delUser, addUser, updateUser, @@ -524,7 +478,16 @@ changeUserStatus, deptTreeSelect, } from "@/api/system/user"; -import { listpatient } from "@/api/patient/homepage"; +import { + listpatient, + messagelistpatient, + alterpatient, + addpatient, + deletepatient, + Exporterrorpatient, +} from "@/api/patient/homepage"; +import { listtag } from "@/api/system/label"; + import { getToken } from "@/utils/auth"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; @@ -559,47 +522,35 @@ deptName: undefined, // 榛樿瀵嗙爜 initPassword: undefined, + amendtag: false, //鏄惁淇敼 // 鏃ユ湡鑼冨洿 dateRange: [], - // 宀椾綅閫夐」 - postOptions: [], - // 瑙掕壊閫夐」 - roleOptions: [], + paperstypes: [ + { papersname: "韬唤璇�" }, + { papersname: "鎶ょ収" }, + { papersname: "涓浗娓境灞呮皯韬唤璇�" }, + { papersname: "涓浗鍙版咕灞呮皯韬唤璇�" }, + ], // 琛ㄥ崟鍙傛暟 - form: {}, + form: { + name: "", + age: "", + sex: "", + tagList: [], + iccardno: "", + telcode: "", + iccardtype: "", + relativetelcode: "", + }, //瀵煎叆杩涘害 dractive: 1, // 瀵煎叆灞曠ず琛ㄥ崟 uploadingData: {}, total: 0, // 鎬绘潯鏁� ImportQuantity: 999, //瀵煎叆鎮h�呮暟閲� - // 鏌ヨ鍙傛暟 - queryParams: { - pageNum: 1, - pageSize: 10, - jobName: undefined, - jobGroup: undefined, - status: undefined, - }, + Labelchange: false, //淇敼鏂板寮圭獥 propss: { multiple: true }, - optionss: [ - { - value: 1, - label: "涓滃崡", - }, - { - value: 2, - label: "瑗垮寳", - }, - { - value: 3, - label: "浠ㄤ花浠�", - }, - { - value: 4, - label: "鍏椋掗", - }, - ], + optionstag: [], //鏍囩鍒楄〃 defaultProps: { children: "children", label: "label", @@ -622,69 +573,58 @@ // 鏌ヨ鍙傛暟 queryParams: { pageNum: 1, - name: "鐜嬪ぇ", pageSize: 10, - userName: undefined, - phonenumber: undefined, + iccardno: undefined, + name: undefined, status: undefined, - deptId: undefined, - IDnumber: undefined, + tagIds: undefined, + telcode: undefined, }, - // 鍒椾俊鎭� - columns: [ - { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true }, - { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true }, - { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true }, - { key: 3, label: `閮ㄩ棬`, visible: true }, - { key: 4, label: `鎵嬫満鍙风爜`, visible: true }, - { key: 5, label: `鐘舵�乣, visible: true }, - { key: 6, label: `鍒涘缓鏃堕棿`, visible: true }, - ], // 琛ㄥ崟鏍¢獙 rules: { - userName: [ - { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, - { - min: 2, - max: 20, - message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", - trigger: "blur", - }, - ], - nickName: [ - { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }, - ], - password: [ - { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, - { - min: 5, - max: 20, - message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", - trigger: "blur", - }, - ], - email: [ - { - type: "email", - message: "璇疯緭鍏ユ纭殑閭鍦板潃", - trigger: ["blur", "change"], - }, - ], - phonenumber: [ - { - pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, - message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", - trigger: "blur", - }, - ], - IDnumber: [ - { - pattern: - /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/, - message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�", - trigger: "blur", - }, - ], + // userName: [ + // { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, + // { + // min: 2, + // max: 20, + // message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", + // trigger: "blur", + // }, + // ], + // nickName: [ + // { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }, + // ], + // password: [ + // { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, + // { + // min: 5, + // max: 20, + // message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", + // trigger: "blur", + // }, + // ], + // email: [ + // { + // type: "email", + // message: "璇疯緭鍏ユ纭殑閭鍦板潃", + // trigger: ["blur", "change"], + // }, + // ], + // phonenumber: [ + // { + // pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, + // message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", + // trigger: "blur", + // }, + // ], + // IDnumber: [ + // { + // pattern: + // /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/, + // message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�", + // trigger: "blur", + // }, + // ], }, }; }, @@ -696,6 +636,7 @@ }, created() { this.getList(); + this.gettabList(); this.getDeptTree(); this.getConfigKey("sys.user.initPassword").then((response) => { this.initPassword = response.msg; @@ -705,11 +646,19 @@ /** 鏌ヨ鎮h�呭垪琛� */ getList() { this.loading = true; - listUser(this.queryParams).then((response) => { + messagelistpatient(this.queryParams).then((response) => { console.log(response); this.userList = response.rows; this.total = response.total; this.loading = false; + }); + }, + /** 鏌ヨ鏍囩鍒楄〃 */ + gettabList() { + const queryParams = {}; + listtag(this.addDateRange(queryParams)).then((response) => { + console.log(response); + this.optionstag = response.rows; }); }, // 鏌ヨ瀵煎叆灞曠ず鍒楄〃 @@ -760,20 +709,16 @@ // 琛ㄥ崟閲嶇疆 reset() { this.form = { - userId: undefined, - deptId: undefined, - userName: undefined, - nickName: undefined, - password: undefined, - phonenumber: undefined, - email: undefined, - sex: undefined, - status: "0", - remark: undefined, - postIds: [], - roleIds: [], + name: "", + age: "", + sex: "", + tagList: [], + iccardno: "", + telcode: "", + iccardtype: "", + relativetelcode: "", }; - this.resetForm("form"); + // this.resetForm("form"); }, /** 鎼滅储鎸夐挳鎿嶄綔 */ handleQuery() { @@ -784,54 +729,47 @@ resetQuery() { this.dateRange = []; this.resetForm("queryForm"); - this.queryParams.deptId = undefined; this.$refs.tree.setCurrentKey(null); this.handleQuery(); }, // 澶氶�夋閫変腑鏁版嵁 handleSelectionChange(selection) { - this.ids = selection.map((item) => item.userId); + this.ids = selection.map((item) => item.patid); this.single = selection.length != 1; this.multiple = !selection.length; }, - // 鏇村鎿嶄綔瑙﹀彂 - handleCommand(command, row) { - switch (command) { - case "handleResetPwd": - this.handleResetPwd(row); - break; - case "handleAuthRole": - this.handleAuthRole(row); - break; - default: - break; - } - }, + /** 鏂板鎸夐挳鎿嶄綔 */ handleAdd() { this.reset(); - getUser().then((response) => { - this.postOptions = response.posts; - this.roleOptions = response.roles; - this.open = true; - this.title = "鏂板鎮h��"; - this.form.password = this.initPassword; - }); + this.Labelchange = true; }, /** 淇敼鎸夐挳鎿嶄綔 */ handleUpdate(row) { + this.amendtag = true; + this.Labelchange = true; + }, + //淇敼/鏂板鎮h�� + updatevaluedate() { + if (this.amendtag) { + this.form.tagcategoryid = this.idds; + // toamendtagcategory(this.addDateRange(this.classifyform)).then( + // (response) => { + // console.log(response); + // this.gitclasify(); + // } + // ); + } else { + // addtagcategory(this.addDateRange(this.classifyform)).then( + // (response) => { + // console.log(response); + // this.gitclasify(); + // } + // ); + } this.reset(); - const userId = row.userId || this.ids; - getUser(userId).then((response) => { - this.form = response.data; - this.postOptions = response.posts; - this.roleOptions = response.roles; - this.$set(this.form, "postIds", response.postIds); - this.$set(this.form, "roleIds", response.roleIds); - this.open = true; - this.title = "淇敼鐢ㄦ埛"; - this.form.password = ""; - }); + // this.idds = ""; + this.Labelchange = false; }, /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */ handleResetPwd(row) { @@ -854,26 +792,7 @@ const userId = row.userId; this.$router.push("/system/user-auth/role/" + userId); }, - /** 鎻愪氦鎸夐挳 */ - submitForm: function () { - this.$refs["form"].validate((valid) => { - if (valid) { - if (this.form.userId != undefined) { - updateUser(this.form).then((response) => { - this.$modal.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }); - } else { - addUser(this.form).then((response) => { - this.$modal.msgSuccess("鏂板鎴愬姛"); - this.open = false; - this.getList(); - }); - } - } - }); - }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { const userIds = row.userId || this.ids; @@ -990,4 +909,7 @@ height: 100px; } } +.button-textsc { + color: #28cfe6; +} </style> diff --git a/src/views/repositoryai/intention/index.vue b/src/views/repositoryai/intention/index.vue new file mode 100644 index 0000000..bba76ed --- /dev/null +++ b/src/views/repositoryai/intention/index.vue @@ -0,0 +1,863 @@ +<template> + <div class="Questionnairemanagement"> + <!-- 宸︿晶鏍� --> + <div class="sidecolumn"> + <div class="sidecolumn-top"> + <div class="top-wj">鎰忓浘绫诲瀷</div> + <div class="top-tj" @click="dialogFormVisible = true">+娣诲姞</div> + </div> + <div class="center-ss"> + <el-input + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="sidecolumnval" + class="input-with-select" + size="medium " + > + <el-button + @click="sidecolumnss" + slot="append" + icon="el-icon-search" + ></el-button> + </el-input> + </div> + <div class="bottom-fl"> + <el-tabs tab-position="right"> + <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane> + <el-tab-pane + class="tab-paness" + :key="item.title" + v-for="(item, index) in editableTabs" + > + <span slot="label"> + {{ + item.title + " (" + item.number + ")" + }}   <el-popover + placement="top-start" + width="100" + trigger="hover" + > + <div style="text-align: center"> + <el-button type="text" @click="popoveramend(item)" + >淇敼</el-button + ><el-button type="text" @click="deletefenlei(item)" + ><span style="color: rgb(173, 55, 55)" + >鍒犻櫎</span + ></el-button + > + </div> + <i slot="reference" class="el-icon-share"></i> </el-popover + ></span> + </el-tab-pane> + </el-tabs> + </div> + </div> + <!-- 鍙充晶鏁版嵁 --> + <div class="leftvlue"> + <div class="leftvlue-top"> + <el-tabs v-model="topactiveName" @tab-click="tophandleClick"> + <el-tab-pane name="Local"> + <span class="mulsz" slot="label">鏈湴鎰忓浘搴� </span> + </el-tab-pane> + <el-tab-pane name="sharing"> + <span class="mulsz" slot="label">鍏变韩鎰忓浘搴� </span> + </el-tab-pane> + </el-tabs> + </div> + <div class="leftvlue-bg"> + <el-row :gutter="20"> + <!--鐢ㄦ埛鏁版嵁--> + <el-col :span="24" :xs="24"> + <el-form + :model="queryParams" + ref="queryForm" + size="small" + :inline="true" + v-show="showSearch" + label-width="98px" + > + <el-form-item label="鎰忓浘鍚嶇О" prop="userName"> + <el-input + v-model="queryParams.userName" + placeholder="璇疯緭鍏�" + clearable + style="width: 200px" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="閫傜敤鐤剧梾" prop="status"> + <el-cascader + v-model="queryParams.status" + :options="optionss" + :props="propss" + clearable + ></el-cascader> + </el-form-item> + + <el-form-item> + <el-button + type="primary" + icon="el-icon-search" + size="medium" + @click="handleQuery" + >鎼滅储</el-button + > + <el-button + icon="el-icon-refresh" + size="medium" + @click="resetQuery" + >閲嶇疆</el-button + > + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="el-icon-plus" + size="medium" + @click="handleAdd" + v-hasPermi="['system:user:add']" + >鏂板</el-button + > + </el-col> + + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="el-icon-delete" + size="medium" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['system:user:remove']" + >鍒犻櫎</el-button + > + </el-col> + + <!-- <el-col :span="1.5"> </el-col> --> + </el-row> + <!-- <right-toolbar + :showSearch.sync="showSearch" + @queryTable="getList" + :columns="columns" + ></right-toolbar> --> + <el-table + v-loading="loading" + :data="userList" + :border="true" + @selection-change="handleSelectionChange" + > + <el-table-column type="selection" width="50" align="center" /> + <el-table-column + label="搴忓彿" + align="center" + key="userId" + prop="userId" + v-if="columns[0].visible" + /> + <el-table-column + label="鎰忓浘鍚嶇О" + align="center" + key="userName" + prop="userName" + v-if="columns[1].visible" + :show-overflow-tooltip="true" + /> + <el-table-column + label="鐗堟湰" + align="center" + key="nickName" + prop="nickName" + v-if="columns[2].visible" + :show-overflow-tooltip="true" + /> + + <el-table-column + label="閫傜敤鐤剧梾" + align="center" + key="aphonenumber" + prop="aphonenumber" + v-if="columns[4].visible" + width="120" + /><el-table-column + label="鎰忓浘鎻忚堪" + align="center" + key="bphonenumber" + prop="bphonenumber" + v-if="columns[4].visible" + width="120" + /> + <el-table-column + label="鏈�杩戠紪杈�" + align="center" + key="cphonenumber" + prop="cphonenumber" + v-if="columns[4].visible" + width="120" + /> + + <el-table-column + label="鎿嶄綔" + align="center" + width="300" + class-name="small-padding fixed-width" + > + <template slot-scope="scope"> + <el-button + size="medium" + type="text" + @click="goQRCode(scope.row)" + v-hasPermi="['system:user:edit']" + > + <span class="button-text" + ><i class="el-icon-edit"></i>浜岀淮鐮�</span + ></el-button + > + <el-button + size="medium" + type="text" + @click="ViewQuestionnaire(scope.row)" + v-hasPermi="['system:user:edit']" + ><span class="button-textck" + ><i class="el-icon-edit"></i>鏌ョ湅</span + ></el-button + > + <el-button + size="medium" + type="text" + @click="handleUpdate(scope.row)" + v-hasPermi="['system:user:edit']" + ><span class="button-textxg" + ><i class="el-icon-edit"></i>淇敼</span + ></el-button + > + <el-button + size="medium" + type="text" + @click="handleDelete(scope.row)" + v-hasPermi="['system:user:remove']" + ><span class="button-textsc" + ><i class="el-icon-edit"></i>鍒犻櫎</span + ></el-button + > + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total > 0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + </el-col> + </el-row> + + <!-- 娣诲姞鎴栦慨鏀规剰鍥鹃厤缃璇濇 --> + <el-dialog + :title="title" + :visible.sync="open" + width="900px" + append-to-body + > + <el-form ref="form" :model="form" :rules="rules" label-width="100px"> + <el-row> + <el-col :span="12"> + <el-form-item label="濮撳悕" prop="nickName"> + <el-input + v-model="form.nickName" + placeholder="璇疯緭鍏ュ鍚�" + maxlength="30" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎬у埆" prop="deptId"> + <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆"> + <el-option + v-for="dict in dict.type.sys_user_sex" + :key="dict.value" + :label="dict.label" + :value="dict.value" + ></el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber"> + <el-input + v-model="form.phonenumber" + placeholder="璇烽�夋嫨璇佷欢绫诲瀷" + maxlength="11" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璇佷欢鍙�" prop="email"> + <el-input + v-model="form.email" + placeholder="璇疯緭鍏ヨ瘉浠跺彿" + maxlength="50" + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName"> + <el-input + v-model="form.userName" + placeholder="璇疯緭鍏ユ墜鏈哄彿" + maxlength="30" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="浜插睘鎵嬫満鍙�" prop="password"> + <el-input + v-model="form.password" + placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿" + type="password" + maxlength="20" + show-password + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="鎮h�呮爣绛�"> + <el-cascader + :options="optionss" + :props="propss" + clearable + ></el-cascader> + </el-form-item> + </el-col> + </el-row> + + <el-row> + <el-col :span="24"> + <el-form-item label="澶囨敞"> + <el-input + v-model="form.remark" + type="textarea" + placeholder="璇疯緭鍏ュ唴瀹�" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> + </div> + <!-- 娣诲姞绫诲埆寮规 --> + <el-dialog + :title="amendtag ? '淇敼绫诲埆' : '鏂板绫诲埆'" + width="30%" + :visible.sync="dialogFormVisible" + > + <el-form :model="classifyform"> + <el-form-item + :label="amendtag ? '璇疯緭鍏ユ柊鐨勭被鍒悕绉�' : '璇疯緭鍏ョ被鍒悕绉�'" + > + <el-input + v-model="classifyform.categoryname" + autocomplete="off" + ></el-input> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button> + </div> + </el-dialog> + <!-- 鍒犻櫎绫诲埆纭妗� --> + <el-dialog title="璀﹀憡" :visible.sync="deleteVisible" width="40%"> + <div style="font-size: 20px; color: rgb(247, 76, 76)"> + 鏄惁纭鍒犻櫎鍒嗙被锛歔<span>{{ deletefenl }}</span + >]? + </div> + <div style="font-size: 20px"> + 姝ゆ搷浣滀細灏嗚绫诲埆涓嬫墍鏈夋ā鍧楄浆绉昏嚦[鏈垎绫籡锛屾槸鍚︾户缁垹闄ゆ鍒嗙被锛� + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="deleteVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="deletefenlei">纭� 瀹�</el-button> + </span> + </el-dialog> + <!-- 浜岀淮鐮佸睍绀哄脊妗� --> + <el-dialog width="30%" :visible.sync="goQRCodeVisible"> + <div class="qrcode-dialo"> + <div class="qrcode-text"> + {{ namequestionnaire }}<span>{{ haoquestionnaire }}</span> + </div> + <div class="qrcode-img"></div> + </div> + </el-dialog> + </div> +</template> + +<script> +import { + listUser, + getUser, + delUser, + addUser, + updateUser, +} from "@/api/system/user"; +import { getToken } from "@/utils/auth"; +import Treeselect from "@riophae/vue-treeselect"; +import "@riophae/vue-treeselect/dist/vue-treeselect.css"; +export default { + name: "questionnaire", + dicts: ["sys_normal_disable", "sys_user_sex"], + components: { Treeselect }, + data() { + return { + topactiveName: "Local", //椤堕儴閫夋嫨 + // 閬僵灞� + loading: false, + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + namequestionnaire: "", + haoquestionnaire: "", + idds: "", + amendtag: false, //鏄惁淇敼绫诲埆 + dialogFormVisible: false, //淇敼娣诲姞绫诲埆寮规 + deleteVisible: false, //鍒嗙被鍒犻櫎寮规 + deletefenl: "楂樿鍘�", //鍒犻櫎椤� + classifyform: { + categoryname: "", + }, //绫诲埆琛ㄥ崟 + // 琛ㄦ牸鏁版嵁 + userList: [ + { + userid: 1, + userName: "涓夊彿鎰忓浘", + nickName: "1.2.4", + aphonenumber: "鍏宠妭鐐庣棁", + bphonenumber: "寰堟", + cphonenumber: "2022-12-12 ", + }, + ], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 鏃ユ湡鑼冨洿 + dateRange: [], + // 宀椾綅閫夐」 + postOptions: [], + // 瑙掕壊閫夐」 + roleOptions: [], + // 琛ㄥ崟鍙傛暟 + form: {}, + numberlb: 22, + numberlbs: 2, + sidecolumnform: {}, //娣诲姞绫诲埆琛ㄥ崟 + dialogFormVisible: false, //娣诲姞绫诲埆寮规 + goQRCodeVisible: false, //浜岀淮鐮佸脊妗� + sidecolumnval: "", //绫诲埆鎼滅储 + propss: { multiple: true }, + optionss: [ + { + value: 1, + label: "涓滃崡", + }, + { + value: 2, + label: "瑗垮寳", + }, + { + value: 3, + label: "浠ㄤ花浠�", + }, + { + value: 4, + label: "鍏椋掗", + }, + ], + //绫诲埆鍒楄〃 + editableTabs: [ + { + title: "鎰忓浘鍒嗙被涓�", + number: "1", + }, + { + title: "鎰忓浘鍒嗙被浜�", + number: "2", + }, + { + title: "鎰忓浘鍒嗙被涓�", + number: "2", + }, + { + title: "鎰忓浘鍒嗙被鍥�", + number: "2", + }, + { + title: "鎰忓浘鍒嗙被浜�", + number: "2", + }, + ], + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + userName: undefined, + phonenumber: undefined, + status: undefined, + deptId: undefined, + IDnumber: undefined, + }, + // 鍒椾俊鎭� + columns: [ + { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true }, + { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true }, + { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true }, + { key: 3, label: `閮ㄩ棬`, visible: true }, + { key: 4, label: `鎵嬫満鍙风爜`, visible: true }, + { key: 5, label: `鐘舵�乣, visible: true }, + { key: 6, label: `鍒涘缓鏃堕棿`, visible: true }, + ], + // 琛ㄥ崟鏍¢獙 + rules: { + userName: [ + { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, + { + min: 2, + max: 20, + message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", + trigger: "blur", + }, + ], + nickName: [ + { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }, + ], + password: [ + { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, + { + min: 5, + max: 20, + message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", + trigger: "blur", + }, + ], + email: [ + { + type: "email", + message: "璇疯緭鍏ユ纭殑閭鍦板潃", + trigger: ["blur", "change"], + }, + ], + phonenumber: [ + { + pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, + message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", + trigger: "blur", + }, + ], + IDnumber: [ + { + pattern: + /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/, + message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�", + trigger: "blur", + }, + ], + }, + }; + }, + watch: {}, + created() { + this.getList(); + }, + + methods: { + /** 鏌ヨ鐢ㄦ埛鍒楄〃 */ + getList() { + // this.loading = true; + listUser().then((response) => { + console.log(response); + console.log(this.userList); + }); + }, + // 娣诲姞銆佷慨鏀圭被鍒� + submitsidecolumn() { + if (this.amendtag) { + this.classifyform.tagcategoryid = this.idds; + // toamendtagcategory(this.addDateRange(this.classifyform)).then( + // (response) => { + // console.log(response); + // this.gitclasify(); + // } + // ); + } else { + // addtagcategory(this.addDateRange(this.classifyform)).then( + // (response) => { + // console.log(response); + // this.gitclasify(); + // } + // ); + } + this.classifyform = { + categoryname: "", + }; + this.idds = ""; + this.dialogFormVisible = false; + }, + //鍒犻櫎鍒嗙被 + deletefenlei(row) { + if (this.deleteVisible) { + // deletetagcategory(this.idds).then((response) => { + // console.log(response); + // this.gitclasify(); + // }); + this.deleteVisible = false; + this.idds = ""; + } else { + this.deleteVisible = true; + this.idds = row.tagcategoryid; + this.deletefenl = row.title; + } + }, + //鎼滅储绫诲埆 + sidecolumnss() {}, + // 鍒囨崲鍏变韩/鏈湴 + tophandleClick() {}, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + goQRCode(row) { + this.goQRCodeVisible = true; + this.namequestionnaire = row.userName; + this.haoquestionnaire = row.nickName; + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + userId: undefined, + deptId: undefined, + userName: undefined, + nickName: undefined, + password: undefined, + phonenumber: undefined, + email: undefined, + sex: undefined, + status: "0", + remark: undefined, + postIds: [], + roleIds: [], + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.dateRange = []; + this.resetForm("queryForm"); + this.queryParams.deptId = undefined; + this.$refs.tree.setCurrentKey(null); + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map((item) => item.userId); + this.single = selection.length != 1; + this.multiple = !selection.length; + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.$router.push({ + path: "/knowledge/questionnaire/compilequer/", + }); + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.$router.push({ + path: "/knowledge/questionnaire/compilequer/", + query: { id: "1" }, + }); + }, + // 鏌ョ湅鎰忓浘 + ViewQuestionnaire() { + this.$router.push({ + path: "/knowledge/questionnaire/examine/", + query: { id: "1" }, + }); + }, + // 淇敼鍒嗙被寮规 + popoveramend(tagcategoryid) { + this.idds = tagcategoryid; + this.amendtag = true; + this.dialogFormVisible = true; + }, + + /** 鏇存柊/淇敼鎻愪氦鎸夐挳 */ + submitForm: function () { + this.$refs["form"].validate((valid) => { + if (valid) { + if (this.form.userId != undefined) { + updateUser(this.form).then((response) => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }); + } else { + addUser(this.form).then((response) => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); + } + } + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const userIds = row.userId || this.ids; + this.$modal + .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�') + .then(function () { + return delUser(userIds); + }) + .then(() => { + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }) + .catch(() => {}); + }, + }, +}; +</script> + +<style lang="scss" scoped> +.Questionnairemanagement { + display: flex; +} +.sidecolumn { + width: 300px; + min-height: 100vh; + text-align: center; + // display: flex; + margin-top: 20px; + margin: 20px; + padding: 30px; + background: #edf1f7; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); + .sidecolumn-top { + display: flex; + justify-content: space-between; + .top-wj { + font-size: 20px; + } + .top-tj { + font-size: 18px; + + color: rgb(0, 89, 255); + cursor: pointer; + } + } + .center-ss { + margin-top: 30px; + .input-with-select { + height: 40px !important; + } + } + .bottom-fl { + margin-top: 30px; + display: center !important; + } +} +.qrcode-dialo { + text-align: center; + // display: flex; + margin: 20px; + padding: 30px; + background: #edf1f7; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); + .qrcode-text { + font-size: 20px; + span { + margin-left: 20px; + } + } + .qrcode-img { + width: 300px; + height: 400px; + } +} +::v-deep.el-tabs--left, +.el-tabs--right { + overflow: hidden; + align-items: center; + display: flex; +} +::v-deep.el-input--medium .el-input__inner { + height: 40px !important; +} +::v-deep.el-tabs--right .el-tabs__active-bar.is-right { + height: 40px; + width: 5px; + left: 0; +} +::v-deep.el-tabs--right .el-tabs__item.is-right { + display: block; + font-size: 20px; +} +.leftvlue { + // display: flex; + // flex: 1; + width: 80%; + margin-top: 20px; + // margin: 20px; + padding: 30px; + background: #ffff; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); + .mulsz { + font-size: 20px; + } +} +.button-text { + color: rgb(70, 204, 238); +} +.button-textck { + color: rgb(39, 167, 67); +} +.button-textxg { + color: rgb(35, 81, 233); +} +.button-textsc { + color: rgb(235, 23, 23); +} +</style> diff --git a/src/views/repositoryai/templateku/index.vue b/src/views/repositoryai/templateku/index.vue new file mode 100644 index 0000000..76e8a51 --- /dev/null +++ b/src/views/repositoryai/templateku/index.vue @@ -0,0 +1,17 @@ +<template> + <div>闅忚妯$増</div> +</template> + +<script> +export default { + data() { + return {}; + }, + + created() {}, + + methods: {}, +}; +</script> + +<style lang="scss" scoped></style> diff --git a/src/views/repositoryai/verbaltrick/index.vue b/src/views/repositoryai/verbaltrick/index.vue new file mode 100644 index 0000000..ef7032a --- /dev/null +++ b/src/views/repositoryai/verbaltrick/index.vue @@ -0,0 +1,863 @@ +<template> + <div class="Questionnairemanagement"> + <!-- 宸︿晶鏍� --> + <div class="sidecolumn"> + <div class="sidecolumn-top"> + <div class="top-wj">璇濇湳绫诲瀷</div> + <div class="top-tj" @click="dialogFormVisible = true">+娣诲姞</div> + </div> + <div class="center-ss"> + <el-input + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="sidecolumnval" + class="input-with-select" + size="medium " + > + <el-button + @click="sidecolumnss" + slot="append" + icon="el-icon-search" + ></el-button> + </el-input> + </div> + <div class="bottom-fl"> + <el-tabs tab-position="right"> + <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane> + <el-tab-pane + class="tab-paness" + :key="item.title" + v-for="(item, index) in editableTabs" + > + <span slot="label"> + {{ + item.title + " (" + item.number + ")" + }}   <el-popover + placement="top-start" + width="100" + trigger="hover" + > + <div style="text-align: center"> + <el-button type="text" @click="popoveramend(item)" + >淇敼</el-button + ><el-button type="text" @click="deletefenlei(item)" + ><span style="color: rgb(173, 55, 55)" + >鍒犻櫎</span + ></el-button + > + </div> + <i slot="reference" class="el-icon-share"></i> </el-popover + ></span> + </el-tab-pane> + </el-tabs> + </div> + </div> + <!-- 鍙充晶鏁版嵁 --> + <div class="leftvlue"> + <div class="leftvlue-top"> + <el-tabs v-model="topactiveName" @tab-click="tophandleClick"> + <el-tab-pane name="Local"> + <span class="mulsz" slot="label">鏈湴璇濇湳搴� </span> + </el-tab-pane> + <el-tab-pane name="sharing"> + <span class="mulsz" slot="label">鍏变韩璇濇湳搴� </span> + </el-tab-pane> + </el-tabs> + </div> + <div class="leftvlue-bg"> + <el-row :gutter="20"> + <!--鐢ㄦ埛鏁版嵁--> + <el-col :span="24" :xs="24"> + <el-form + :model="queryParams" + ref="queryForm" + size="small" + :inline="true" + v-show="showSearch" + label-width="98px" + > + <el-form-item label="璇濇湳鍚嶇О" prop="userName"> + <el-input + v-model="queryParams.userName" + placeholder="璇疯緭鍏�" + clearable + style="width: 200px" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="閫傜敤鐤剧梾" prop="status"> + <el-cascader + v-model="queryParams.status" + :options="optionss" + :props="propss" + clearable + ></el-cascader> + </el-form-item> + + <el-form-item> + <el-button + type="primary" + icon="el-icon-search" + size="medium" + @click="handleQuery" + >鎼滅储</el-button + > + <el-button + icon="el-icon-refresh" + size="medium" + @click="resetQuery" + >閲嶇疆</el-button + > + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="el-icon-plus" + size="medium" + @click="handleAdd" + v-hasPermi="['system:user:add']" + >鏂板</el-button + > + </el-col> + + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="el-icon-delete" + size="medium" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['system:user:remove']" + >鍒犻櫎</el-button + > + </el-col> + + <!-- <el-col :span="1.5"> </el-col> --> + </el-row> + <!-- <right-toolbar + :showSearch.sync="showSearch" + @queryTable="getList" + :columns="columns" + ></right-toolbar> --> + <el-table + v-loading="loading" + :data="userList" + :border="true" + @selection-change="handleSelectionChange" + > + <el-table-column type="selection" width="50" align="center" /> + <el-table-column + label="搴忓彿" + align="center" + key="userId" + prop="userId" + v-if="columns[0].visible" + /> + <el-table-column + label="璇濇湳鍚嶇О" + align="center" + key="userName" + prop="userName" + v-if="columns[1].visible" + :show-overflow-tooltip="true" + /> + <el-table-column + label="鐗堟湰" + align="center" + key="nickName" + prop="nickName" + v-if="columns[2].visible" + :show-overflow-tooltip="true" + /> + + <el-table-column + label="閫傜敤鐤剧梾" + align="center" + key="aphonenumber" + prop="aphonenumber" + v-if="columns[4].visible" + width="120" + /><el-table-column + label="璇濇湳鎻忚堪" + align="center" + key="bphonenumber" + prop="bphonenumber" + v-if="columns[4].visible" + width="120" + /> + <el-table-column + label="鏈�杩戠紪杈�" + align="center" + key="cphonenumber" + prop="cphonenumber" + v-if="columns[4].visible" + width="120" + /> + + <el-table-column + label="鎿嶄綔" + align="center" + width="300" + class-name="small-padding fixed-width" + > + <template slot-scope="scope"> + <el-button + size="medium" + type="text" + @click="goQRCode(scope.row)" + v-hasPermi="['system:user:edit']" + > + <span class="button-text" + ><i class="el-icon-edit"></i>浜岀淮鐮�</span + ></el-button + > + <el-button + size="medium" + type="text" + @click="ViewQuestionnaire(scope.row)" + v-hasPermi="['system:user:edit']" + ><span class="button-textck" + ><i class="el-icon-edit"></i>鏌ョ湅</span + ></el-button + > + <el-button + size="medium" + type="text" + @click="handleUpdate(scope.row)" + v-hasPermi="['system:user:edit']" + ><span class="button-textxg" + ><i class="el-icon-edit"></i>淇敼</span + ></el-button + > + <el-button + size="medium" + type="text" + @click="handleDelete(scope.row)" + v-hasPermi="['system:user:remove']" + ><span class="button-textsc" + ><i class="el-icon-edit"></i>鍒犻櫎</span + ></el-button + > + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total > 0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + </el-col> + </el-row> + + <!-- 娣诲姞鎴栦慨鏀硅瘽鏈厤缃璇濇 --> + <el-dialog + :title="title" + :visible.sync="open" + width="900px" + append-to-body + > + <el-form ref="form" :model="form" :rules="rules" label-width="100px"> + <el-row> + <el-col :span="12"> + <el-form-item label="濮撳悕" prop="nickName"> + <el-input + v-model="form.nickName" + placeholder="璇疯緭鍏ュ鍚�" + maxlength="30" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎬у埆" prop="deptId"> + <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆"> + <el-option + v-for="dict in dict.type.sys_user_sex" + :key="dict.value" + :label="dict.label" + :value="dict.value" + ></el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber"> + <el-input + v-model="form.phonenumber" + placeholder="璇烽�夋嫨璇佷欢绫诲瀷" + maxlength="11" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璇佷欢鍙�" prop="email"> + <el-input + v-model="form.email" + placeholder="璇疯緭鍏ヨ瘉浠跺彿" + maxlength="50" + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName"> + <el-input + v-model="form.userName" + placeholder="璇疯緭鍏ユ墜鏈哄彿" + maxlength="30" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="浜插睘鎵嬫満鍙�" prop="password"> + <el-input + v-model="form.password" + placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿" + type="password" + maxlength="20" + show-password + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="鎮h�呮爣绛�"> + <el-cascader + :options="optionss" + :props="propss" + clearable + ></el-cascader> + </el-form-item> + </el-col> + </el-row> + + <el-row> + <el-col :span="24"> + <el-form-item label="澶囨敞"> + <el-input + v-model="form.remark" + type="textarea" + placeholder="璇疯緭鍏ュ唴瀹�" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> + </div> + <!-- 娣诲姞绫诲埆寮规 --> + <el-dialog + :title="amendtag ? '淇敼绫诲埆' : '鏂板绫诲埆'" + width="30%" + :visible.sync="dialogFormVisible" + > + <el-form :model="classifyform"> + <el-form-item + :label="amendtag ? '璇疯緭鍏ユ柊鐨勭被鍒悕绉�' : '璇疯緭鍏ョ被鍒悕绉�'" + > + <el-input + v-model="classifyform.categoryname" + autocomplete="off" + ></el-input> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button> + </div> + </el-dialog> + <!-- 鍒犻櫎绫诲埆纭妗� --> + <el-dialog title="璀﹀憡" :visible.sync="deleteVisible" width="40%"> + <div style="font-size: 20px; color: rgb(247, 76, 76)"> + 鏄惁纭鍒犻櫎鍒嗙被锛歔<span>{{ deletefenl }}</span + >]? + </div> + <div style="font-size: 20px"> + 姝ゆ搷浣滀細灏嗚绫诲埆涓嬫墍鏈夋ā鍧楄浆绉昏嚦[鏈垎绫籡锛屾槸鍚︾户缁垹闄ゆ鍒嗙被锛� + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="deleteVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="deletefenlei">纭� 瀹�</el-button> + </span> + </el-dialog> + <!-- 浜岀淮鐮佸睍绀哄脊妗� --> + <el-dialog width="30%" :visible.sync="goQRCodeVisible"> + <div class="qrcode-dialo"> + <div class="qrcode-text"> + {{ namequestionnaire }}<span>{{ haoquestionnaire }}</span> + </div> + <div class="qrcode-img"></div> + </div> + </el-dialog> + </div> +</template> + +<script> +import { + listUser, + getUser, + delUser, + addUser, + updateUser, +} from "@/api/system/user"; +import { getToken } from "@/utils/auth"; +import Treeselect from "@riophae/vue-treeselect"; +import "@riophae/vue-treeselect/dist/vue-treeselect.css"; +export default { + name: "questionnaire", + dicts: ["sys_normal_disable", "sys_user_sex"], + components: { Treeselect }, + data() { + return { + topactiveName: "Local", //椤堕儴閫夋嫨 + // 閬僵灞� + loading: false, + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + namequestionnaire: "", + haoquestionnaire: "", + idds: "", + amendtag: false, //鏄惁淇敼绫诲埆 + dialogFormVisible: false, //淇敼娣诲姞绫诲埆寮规 + deleteVisible: false, //鍒嗙被鍒犻櫎寮规 + deletefenl: "楂樿鍘�", //鍒犻櫎椤� + classifyform: { + categoryname: "", + }, //绫诲埆琛ㄥ崟 + // 琛ㄦ牸鏁版嵁 + userList: [ + { + userid: 1, + userName: "涓夊彿璇濇湳", + nickName: "1.2.4", + aphonenumber: "鍏宠妭鐐庣棁", + bphonenumber: "寰堟", + cphonenumber: "2022-12-12 ", + }, + ], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 鏃ユ湡鑼冨洿 + dateRange: [], + // 宀椾綅閫夐」 + postOptions: [], + // 瑙掕壊閫夐」 + roleOptions: [], + // 琛ㄥ崟鍙傛暟 + form: {}, + numberlb: 22, + numberlbs: 2, + sidecolumnform: {}, //娣诲姞绫诲埆琛ㄥ崟 + dialogFormVisible: false, //娣诲姞绫诲埆寮规 + goQRCodeVisible: false, //浜岀淮鐮佸脊妗� + sidecolumnval: "", //绫诲埆鎼滅储 + propss: { multiple: true }, + optionss: [ + { + value: 1, + label: "涓滃崡", + }, + { + value: 2, + label: "瑗垮寳", + }, + { + value: 3, + label: "浠ㄤ花浠�", + }, + { + value: 4, + label: "鍏椋掗", + }, + ], + //绫诲埆鍒楄〃 + editableTabs: [ + { + title: "璇濇湳鍒嗙被涓�", + number: "1", + }, + { + title: "璇濇湳鍒嗙被浜�", + number: "2", + }, + { + title: "璇濇湳鍒嗙被涓�", + number: "2", + }, + { + title: "璇濇湳鍒嗙被鍥�", + number: "2", + }, + { + title: "璇濇湳鍒嗙被浜�", + number: "2", + }, + ], + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + userName: undefined, + phonenumber: undefined, + status: undefined, + deptId: undefined, + IDnumber: undefined, + }, + // 鍒椾俊鎭� + columns: [ + { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true }, + { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true }, + { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true }, + { key: 3, label: `閮ㄩ棬`, visible: true }, + { key: 4, label: `鎵嬫満鍙风爜`, visible: true }, + { key: 5, label: `鐘舵�乣, visible: true }, + { key: 6, label: `鍒涘缓鏃堕棿`, visible: true }, + ], + // 琛ㄥ崟鏍¢獙 + rules: { + userName: [ + { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, + { + min: 2, + max: 20, + message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", + trigger: "blur", + }, + ], + nickName: [ + { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }, + ], + password: [ + { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, + { + min: 5, + max: 20, + message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", + trigger: "blur", + }, + ], + email: [ + { + type: "email", + message: "璇疯緭鍏ユ纭殑閭鍦板潃", + trigger: ["blur", "change"], + }, + ], + phonenumber: [ + { + pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, + message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", + trigger: "blur", + }, + ], + IDnumber: [ + { + pattern: + /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/, + message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�", + trigger: "blur", + }, + ], + }, + }; + }, + watch: {}, + created() { + this.getList(); + }, + + methods: { + /** 鏌ヨ鐢ㄦ埛鍒楄〃 */ + getList() { + // this.loading = true; + listUser().then((response) => { + console.log(response); + console.log(this.userList); + }); + }, + // 娣诲姞銆佷慨鏀圭被鍒� + submitsidecolumn() { + if (this.amendtag) { + this.classifyform.tagcategoryid = this.idds; + // toamendtagcategory(this.addDateRange(this.classifyform)).then( + // (response) => { + // console.log(response); + // this.gitclasify(); + // } + // ); + } else { + // addtagcategory(this.addDateRange(this.classifyform)).then( + // (response) => { + // console.log(response); + // this.gitclasify(); + // } + // ); + } + this.classifyform = { + categoryname: "", + }; + this.idds = ""; + this.dialogFormVisible = false; + }, + //鍒犻櫎鍒嗙被 + deletefenlei(row) { + if (this.deleteVisible) { + // deletetagcategory(this.idds).then((response) => { + // console.log(response); + // this.gitclasify(); + // }); + this.deleteVisible = false; + this.idds = ""; + } else { + this.deleteVisible = true; + this.idds = row.tagcategoryid; + this.deletefenl = row.title; + } + }, + //鎼滅储绫诲埆 + sidecolumnss() {}, + // 鍒囨崲鍏变韩/鏈湴 + tophandleClick() {}, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + goQRCode(row) { + this.goQRCodeVisible = true; + this.namequestionnaire = row.userName; + this.haoquestionnaire = row.nickName; + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + userId: undefined, + deptId: undefined, + userName: undefined, + nickName: undefined, + password: undefined, + phonenumber: undefined, + email: undefined, + sex: undefined, + status: "0", + remark: undefined, + postIds: [], + roleIds: [], + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.dateRange = []; + this.resetForm("queryForm"); + this.queryParams.deptId = undefined; + this.$refs.tree.setCurrentKey(null); + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map((item) => item.userId); + this.single = selection.length != 1; + this.multiple = !selection.length; + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.$router.push({ + path: "/knowledge/questionnaire/compilequer/", + }); + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.$router.push({ + path: "/knowledge/questionnaire/compilequer/", + query: { id: "1" }, + }); + }, + // 鏌ョ湅璇濇湳 + ViewQuestionnaire() { + this.$router.push({ + path: "/knowledge/questionnaire/examine/", + query: { id: "1" }, + }); + }, + // 淇敼鍒嗙被寮规 + popoveramend(tagcategoryid) { + this.idds = tagcategoryid; + this.amendtag = true; + this.dialogFormVisible = true; + }, + + /** 鏇存柊/淇敼鎻愪氦鎸夐挳 */ + submitForm: function () { + this.$refs["form"].validate((valid) => { + if (valid) { + if (this.form.userId != undefined) { + updateUser(this.form).then((response) => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }); + } else { + addUser(this.form).then((response) => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); + } + } + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const userIds = row.userId || this.ids; + this.$modal + .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�') + .then(function () { + return delUser(userIds); + }) + .then(() => { + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }) + .catch(() => {}); + }, + }, +}; +</script> + +<style lang="scss" scoped> +.Questionnairemanagement { + display: flex; +} +.sidecolumn { + width: 300px; + min-height: 100vh; + text-align: center; + // display: flex; + margin-top: 20px; + margin: 20px; + padding: 30px; + background: #edf1f7; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); + .sidecolumn-top { + display: flex; + justify-content: space-between; + .top-wj { + font-size: 20px; + } + .top-tj { + font-size: 18px; + + color: rgb(0, 89, 255); + cursor: pointer; + } + } + .center-ss { + margin-top: 30px; + .input-with-select { + height: 40px !important; + } + } + .bottom-fl { + margin-top: 30px; + display: center !important; + } +} +.qrcode-dialo { + text-align: center; + // display: flex; + margin: 20px; + padding: 30px; + background: #edf1f7; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); + .qrcode-text { + font-size: 20px; + span { + margin-left: 20px; + } + } + .qrcode-img { + width: 300px; + height: 400px; + } +} +::v-deep.el-tabs--left, +.el-tabs--right { + overflow: hidden; + align-items: center; + display: flex; +} +::v-deep.el-input--medium .el-input__inner { + height: 40px !important; +} +::v-deep.el-tabs--right .el-tabs__active-bar.is-right { + height: 40px; + width: 5px; + left: 0; +} +::v-deep.el-tabs--right .el-tabs__item.is-right { + display: block; + font-size: 20px; +} +.leftvlue { + // display: flex; + // flex: 1; + width: 80%; + margin-top: 20px; + // margin: 20px; + padding: 30px; + background: #ffff; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); + .mulsz { + font-size: 20px; + } +} +.button-text { + color: rgb(70, 204, 238); +} +.button-textck { + color: rgb(39, 167, 67); +} +.button-textxg { + color: rgb(35, 81, 233); +} +.button-textsc { + color: rgb(235, 23, 23); +} +</style> diff --git a/src/views/system/label/index.vue b/src/views/system/label/index.vue index a5f3a42..2f291ed 100644 --- a/src/views/system/label/index.vue +++ b/src/views/system/label/index.vue @@ -14,7 +14,7 @@ size="medium " > <el-button - @click="sidecolumnss" + @click="gitclasify" slot="append" icon="el-icon-search" ></el-button> @@ -22,7 +22,7 @@ </div> <div class="bottom-fl"> <el-tabs tab-position="right"> - <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane> + <el-tab-pane :label="`鍏ㄩ儴 (${total})`"></el-tab-pane> <el-tab-pane class="tab-paness" :key="item.name" @@ -30,15 +30,18 @@ > <span slot="label"> {{ - item.title + " (" + item.number + ")" + item.categoryname + " (" + item.tagNum + ")" }}   <el-popover placement="top-start" width="100" trigger="hover" > <div style="text-align: center"> - <el-button type="text" @click="popoveramend">淇敼</el-button - ><el-button type="text" @click="deleteVisible = true" + <el-button + type="text" + @click="popoveramend(item.tagcategoryid)" + >淇敼</el-button + ><el-button type="text" @click="deletefenlei(item)" ><span style="color: rgb(173, 55, 55)" >鍒犻櫎</span ></el-button @@ -47,8 +50,6 @@ <i slot="reference" class="el-icon-share"></i> </el-popover ></span> </el-tab-pane> - - <el-tab-pane :label="`鏈垎缁�(${numberlbs})`"></el-tab-pane> </el-tabs> </div> </div> @@ -57,7 +58,7 @@ <div class="leftvlue-top"></div> <div class="leftvlue-bg"> <el-row :gutter="20"> - <!--鐢ㄦ埛鏁版嵁--> + <!--鏍囩鏁版嵁--> <el-col :span="24" :xs="24"> <el-form :model="queryParams" @@ -69,7 +70,7 @@ > <el-form-item label="鏍囩鍚嶇О" prop="userName"> <el-input - v-model="queryParams.userName" + v-model="queryParams.tagname" placeholder="璇疯緭鍏�" clearable style="width: 200px" @@ -101,7 +102,7 @@ plain icon="el-icon-plus" size="medium" - @click="lstamendtagVisible = true" + @click="addladeltag" v-hasPermi="['system:user:add']" >鏂板</el-button > @@ -118,6 +119,21 @@ v-hasPermi="['system:user:remove']" >鍒犻櫎</el-button > + </el-col> + <el-col :span="1.5"> + <div class="documentf"> + <div class="document"> + <el-button + type="warning" + plain + icon="el-icon-download" + size="medium" + @click="handleExport" + v-hasPermi="['system:user:export']" + >瀵煎嚭</el-button + > + </div> + </div> </el-col> <!-- <el-col :span="1.5"> </el-col> --> @@ -137,41 +153,51 @@ <el-table-column label="搴忓彿" align="center" - key="userId" - prop="userId" + key="tagid" + prop="tagid" /> <el-table-column label="鏍囩鍚嶇О" align="center" - key="userName" - prop="userName" + key="tagname" + prop="tagname" :show-overflow-tooltip="true" /> <el-table-column label="鏈�杩戠紪杈�" align="center" - key="nickName" - prop="nickName" - :show-overflow-tooltip="true" - /> + key="updateTime" + prop="updateTime" + > + <template slot-scope="scope"> + <span + >{{ scope.row.updateBy }} + <p>{{ scope.row.updateTime }}</p></span + > + </template> + </el-table-column> <el-table-column label="鏍囩鎻忚堪" align="center" - key="aphonenumber" - prop="aphonenumber" + key="tagdescription" + prop="tagdescription" width="120" - /> + > + </el-table-column> <el-table-column label="鐘舵��" align="center" - key="aphonenumbers" - prop="aphonenumbers" + key="isupload" + prop="isupload" width="120" > <template slot-scope="scope"> <el-switch - v-model="scope.row.delivery" + v-model="scope.row.isupload" + :active-value="1" + :inactive-value="0" + active-color="#13ce66" @change="handleStatusChange(scope.row)" ></el-switch> </template> @@ -223,12 +249,12 @@ width="30%" :visible.sync="dialogFormVisible" > - <el-form :model="sidecolumnform"> + <el-form :model="classifyform"> <el-form-item :label="amendtag ? '璇疯緭鍏ユ柊鐨勭被鍒悕绉�' : '璇疯緭鍏ョ被鍒悕绉�'" > <el-input - v-model="sidecolumnform.classesname" + v-model="classifyform.categoryname" autocomplete="off" ></el-input> </el-form-item> @@ -249,9 +275,7 @@ </div> <span slot="footer" class="dialog-footer"> <el-button @click="deleteVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="deleteVisible = false" - >纭� 瀹�</el-button - > + <el-button type="primary" @click="deletefenlei">纭� 瀹�</el-button> </span> </el-dialog> <!-- 淇敼/娣诲姞鏍囩寮规 --> @@ -262,20 +286,39 @@ > <el-form ref="form" :model="tagform" label-width="80px"> <el-form-item label="鏍囩鍚嶇О"> - <el-input v-model="tagform.name"></el-input> + <el-input v-model="tagform.tagname"></el-input> + </el-form-item> + <el-form-item label="鏍囩鎻忚堪"> + <el-select + v-model="tagform.tagcategoryid" + placeholder="璇烽�夋嫨鏍囩鍒嗙被" + > + <el-option + v-for="item in editableTabs" + :key="item.tagcategoryid" + :label="item.categoryname" + :value="item.tagcategoryid" + > + </el-option> + </el-select> </el-form-item> <el-form-item label="鏄惁鍚敤"> - <el-switch v-model="tagform.delivery"></el-switch> + <el-switch + v-model="tagform.isupload" + :active-value="1" + :inactive-value="0" + active-color="#13ce66" + ></el-switch> </el-form-item> <el-form-item label="鏍囩鎻忚堪"> - <el-input type="textarea" v-model="tagform.desc"></el-input> + <el-input type="textarea" v-model="tagform.tagdescription"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="lstamendtagVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button> + <el-button type="primary" @click="Maintenancetag">纭� 瀹�</el-button> </div> </el-dialog> </div> @@ -283,13 +326,18 @@ <script> import { - listUser, - getUser, - delUser, - addUser, - updateUser, -} from "@/api/system/user"; -import { getToken } from "@/utils/auth"; + toamendtag, + addapitag, + detailstag, + deletetag, + changetagcategory, + toamendtagcategory, + addtagcategory, + deletetagcategory, + listtag, + tagclassifylist, +} from "@/api/system/label"; + import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; export default { @@ -309,6 +357,7 @@ multiple: true, // 鏄剧ず鎼滅储鏉′欢 showSearch: true, + idds: "", //鍒嗙被id // 鎬绘潯鏁� total: 0, amendtag: false, //鏄惁淇敼绫诲埆 @@ -318,23 +367,16 @@ deletefenl: "楂樿鍘�", //鍒犻櫎椤� //淇敼娣诲姞鏍囩寮规鏁版嵁 tagform: { - delivery: "", - name: "", - desc: "", + isupload: "", + tagname: "", + tagcategoryid: "", + tagdescription: "", + }, + classifyform: { + categoryname: "", }, // 鏍囩琛ㄦ牸鏁版嵁 - userList: [ - { - userId: 1, - userName: "涓夊彿", - nickName: "1.2.4", - aphonenumber: "鍏宠妭鐐庣棁", - delivery: true, - aphonenumbers: "", - bphonenumber: "寰堟", - cphonenumber: "2022-12-12 ", - }, - ], + userList: [], // 寮瑰嚭灞傛爣棰� title: "", // 鏄惁鏄剧ず寮瑰嚭灞� @@ -347,16 +389,16 @@ roleOptions: [], // 琛ㄥ崟鍙傛暟 form: {}, + forms: { + name: "", + }, numberlb: 22, - numberlbs: 2, - sidecolumnform: { - classesname: "", - }, //娣诲姞绫诲埆琛ㄥ崟 dialogFormVisible: false, //娣诲姞銆佷慨鏀圭被鍒脊妗� lstamendtagVisible: false, //娣诲姞銆佷慨鏀规爣绛惧脊妗� goQRCodeVisible: false, //浜岀淮鐮佸脊妗� sidecolumnval: "", //绫诲埆鎼滅储 propss: { multiple: true }, + topqueryParams: {}, //瀵煎嚭绛涢�夋潯浠� optionss: [ { value: 1, @@ -394,117 +436,186 @@ number: "2", }, ], - // 鏌ヨ鍙傛暟 + // 鏌ヨ鏍囩鍒楄〃鍙傛暟 queryParams: { pageNum: 1, pageSize: 10, - userName: undefined, - phonenumber: undefined, - status: undefined, - deptId: undefined, - IDnumber: undefined, + tagname: undefined, + tagdescription: undefined, }, // 鍒椾俊鎭� columns: [ - { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true }, - { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true }, - { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true }, + { key: 0, label: `鏍囩缂栧彿`, visible: true }, + { key: 1, label: `鏍囩鍚嶇О`, visible: true }, + { key: 2, label: `鏍囩鏄电О`, visible: true }, { key: 3, label: `閮ㄩ棬`, visible: true }, { key: 4, label: `鎵嬫満鍙风爜`, visible: true }, { key: 5, label: `鐘舵�乣, visible: true }, { key: 6, label: `鍒涘缓鏃堕棿`, visible: true }, ], // 琛ㄥ崟鏍¢獙 - rules: { - userName: [ - { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, - { - min: 2, - max: 20, - message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", - trigger: "blur", - }, - ], - nickName: [ - { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }, - ], - password: [ - { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, - { - min: 5, - max: 20, - message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", - trigger: "blur", - }, - ], - email: [ - { - type: "email", - message: "璇疯緭鍏ユ纭殑閭鍦板潃", - trigger: ["blur", "change"], - }, - ], - phonenumber: [ - { - pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, - message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", - trigger: "blur", - }, - ], - IDnumber: [ - { - pattern: - /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/, - message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�", - trigger: "blur", - }, - ], - }, + // rules: { + // userName: [ + // { required: true, message: "鏍囩鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, + // { + // min: 2, + // max: 20, + // message: "鏍囩鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", + // trigger: "blur", + // }, + // ], + // nickName: [ + // { required: true, message: "鏍囩鏄电О涓嶈兘涓虹┖", trigger: "blur" }, + // ], + // password: [ + // { required: true, message: "鏍囩瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, + // { + // min: 5, + // max: 20, + // message: "鏍囩瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", + // trigger: "blur", + // }, + // ], + // email: [ + // { + // type: "email", + // message: "璇疯緭鍏ユ纭殑閭鍦板潃", + // trigger: ["blur", "change"], + // }, + // ], + // phonenumber: [ + // { + // pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, + // message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", + // trigger: "blur", + // }, + // ], + // IDnumber: [ + // { + // pattern: + // /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/, + // message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�", + // trigger: "blur", + // }, + // ], + // }, }; }, watch: {}, created() { this.getList(); + this.gitclasify(); }, methods: { - /** 鏌ヨ鐢ㄦ埛鍒楄〃 */ + /** 鏌ヨ鏍囩鍒楄〃 */ getList() { - // this.loading = true; - listUser().then((response) => { + listtag(this.addDateRange(this.queryParams)).then((response) => { console.log(response); - // this.userList = response.data; - // this.total = response.total; - // this.loading = false; - console.log(this.userList); + this.total = response.total; + this.userList = response.rows; }); - // const { rows } = await listUser(); - // console.log(rows); - // this.list = rows; }, - // 娣诲姞绫诲埆 - submitsidecolumn() { - this.dialogFormVisible = false; + /** 淇敼鏍囩 */ + handleUpdate(row) { + console.log(row, "淇敼鏍囩"); + this.lstamendtagVisible = true; + this.lstamendtag = true; this.tagform = { - delivery: "", - name: "", - desc: "", + isupload: row.isupload, + tagname: row.tagname, + tagcategoryid: row.tagcategoryid, + tagdescription: row.tagdescription, + tagid: row.tagid, }; }, - // 淇敼寮规 - popoveramend() { + addladeltag() { + this.lstamendtagVisible = true; + this.lstamendtag = false; + this.tagform = { + isupload: "", + tagname: "", + tagcategoryid: "", + tagdescription: "", + tagid: "", + }; + }, + // 娣诲姞/淇敼鏍囩 + Maintenancetag() { + if (this.lstamendtag) { + toamendtag(this.addDateRange(this.tagform)).then((response) => { + console.log(response); + this.getList(); + }); + } else { + addapitag(this.addDateRange(this.tagform)).then((response) => { + console.log(response); + this.getList(); + }); + } + this.tagform = { + isupload: "", + tagname: "", + tagcategoryid: "", + tagdescription: "", + tagid: "", + }; + }, + + // 鑾峰彇鏍囩鍒嗙被 + gitclasify() { + tagclassifylist(this.addDateRange(this.forms)).then((response) => { + console.log(response); + this.numberlb = response.total; + this.editableTabs = response.rows; + }); + }, + // 娣诲姞/淇敼绫诲埆 + submitsidecolumn() { + if (this.amendtag) { + this.classifyform.tagcategoryid = this.idds; + toamendtagcategory(this.addDateRange(this.classifyform)).then( + (response) => { + console.log(response); + this.gitclasify(); + } + ); + } else { + addtagcategory(this.addDateRange(this.classifyform)).then( + (response) => { + console.log(response); + this.gitclasify(); + } + ); + } + this.classifyform = { + categoryname: "", + }; + this.idds = ""; + this.dialogFormVisible = false; + }, + //鍒犻櫎鍒嗙被 + deletefenlei(row) { + if (this.deleteVisible) { + deletetagcategory(this.idds).then((response) => { + console.log(response); + this.gitclasify(); + }); + this.deleteVisible = false; + this.idds = ""; + } else { + this.deleteVisible = true; + this.idds = row.tagcategoryid; + this.deletefenl = row.categoryname; + } + }, + // 淇敼鍒嗙被寮规 + popoveramend(tagcategoryid) { + this.idds = tagcategoryid; this.amendtag = true; this.dialogFormVisible = true; }, - //鎼滅储绫诲埆 - sidecolumnss() {}, - // 鍒囨崲鍏变韩/鏈湴 - tophandleClick() {}, - // 鍙栨秷鎸夐挳 - cancel() { - this.open = false; - this.reset(); - }, + // 琛ㄥ崟閲嶇疆 reset() { this.form = { @@ -523,19 +634,20 @@ }; this.resetForm("form"); }, - // 鐢ㄦ埛鐘舵�佷慨鏀� + // 鏍囩鐘舵�佷慨鏀� handleStatusChange(row) { - let text = row.status === "0" ? "鍚敤" : "鍋滅敤"; + console.log(row.isupload); + let text = row.isupload === "0" ? "鍚敤" : "鍋滅敤"; this.$modal - .confirm('纭瑕�"' + text + '""' + row.userName + '"鏍囩鍚楋紵') + .confirm('纭瑕�"' + text + '""' + row.tagname + '"鏍囩鍚楋紵') .then(function () { - // return changeUserStatus(row.userId, row.status); + return changetagcategory(row.tagid, row.isupload); }) .then(() => { this.$modal.msgSuccess(text + "鎴愬姛"); }) .catch(function () { - row.status = row.status === "0" ? "1" : "0"; + row.isupload = row.isupload === "0" ? "1" : "0"; }); }, /** 鎼滅储鎸夐挳鎿嶄綔 */ @@ -547,74 +659,47 @@ resetQuery() { this.dateRange = []; this.resetForm("queryForm"); - this.queryParams.deptId = undefined; + this.queryParams.tagname = ""; this.$refs.tree.setCurrentKey(null); this.handleQuery(); }, // 澶氶�夋閫変腑鏁版嵁 handleSelectionChange(selection) { - this.ids = selection.map((item) => item.userId); + this.ids = selection.map((item) => item.tagid); this.single = selection.length != 1; this.multiple = !selection.length; }, - /** 淇敼鏍囩 */ - handleUpdate(row) { - console.log(row, "淇敼鏍囩"); - this.lstamendtagVisible = true; - this.lstamendtag = true; - this.tagform = { - delivery: row.delivery, - name: row.userName, - desc: row.bphonenumber, - }; - }, - // 鏌ョ湅闂嵎 - ViewQuestionnaire() { - this.$router.push({ - path: "/knowledge/questionnaire/examine/", - query: { id: "1" }, - }); - }, - /** 鏇存柊/淇敼鎻愪氦鎸夐挳 */ - submitForm: function () { - this.$refs["form"].validate((valid) => { - if (valid) { - if (this.form.userId != undefined) { - updateUser(this.form).then((response) => { - this.$modal.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }); - } else { - addUser(this.form).then((response) => { - this.$modal.msgSuccess("鏂板鎴愬姛"); - this.open = false; - this.getList(); - }); - } - } - }); - }, /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { console.log(row, "鍒犻櫎寮圭獥"); - const userIds = row.userId || this.ids; - const aphonenumber = row.aphonenumber; + const tagids = row.tagid || this.ids; + console.log(tagids); + const tagname = row.tagname; this.$modal .confirm( - aphonenumber - ? '鏄惁纭鍒犻櫎鏍囩鍚嶇О涓�"' + aphonenumber + '"鐨勬暟鎹」锛�' + tagname + ? '鏄惁纭鍒犻櫎鏍囩鍚嶇О涓�"' + tagname + '"鐨勬暟鎹」锛�' : "鏄惁纭鍒犻櫎閫変腑鐨勬暟鎹」锛�" ) .then(function () { - return delUser(userIds); + return deletetag(tagids); }) .then(() => { this.getList(); this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); }) .catch(() => {}); + }, + /** 瀵煎嚭鎸夐挳鎿嶄綔 */ + handleExport() { + this.download( + "base/tag/export", + { + ...this.topqueryParams, + }, + `user_${new Date().getTime()}.xlsx` + ); }, }, }; @@ -715,6 +800,14 @@ font-size: 20px; } } +.document { + width: 100px; + height: 50px; +} +.documentf { + display: flex; + justify-content: flex-end; +} .button-text { color: rgb(70, 204, 238); } diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index ae87fe4..6f1d6d2 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -29,7 +29,14 @@ </el-col> <!--鐢ㄦ埛鏁版嵁--> <el-col :span="20" :xs="24"> - <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> + <el-form + :model="queryParams" + ref="queryForm" + size="small" + :inline="true" + v-show="showSearch" + label-width="68px" + > <el-form-item label="鐢ㄦ埛鍚嶇О" prop="userName"> <el-input v-model="queryParams.userName" @@ -75,8 +82,16 @@ ></el-date-picker> </el-form-item> <el-form-item> - <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> - <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + <el-button + type="primary" + icon="el-icon-search" + size="mini" + @click="handleQuery" + >鎼滅储</el-button + > + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" + >閲嶇疆</el-button + > </el-form-item> </el-form> @@ -89,7 +104,8 @@ size="mini" @click="handleAdd" v-hasPermi="['system:user:add']" - >鏂板</el-button> + >鏂板</el-button + > </el-col> <el-col :span="1.5"> <el-button @@ -100,7 +116,8 @@ :disabled="single" @click="handleUpdate" v-hasPermi="['system:user:edit']" - >淇敼</el-button> + >淇敼</el-button + > </el-col> <el-col :span="1.5"> <el-button @@ -111,7 +128,8 @@ :disabled="multiple" @click="handleDelete" v-hasPermi="['system:user:remove']" - >鍒犻櫎</el-button> + >鍒犻櫎</el-button + > </el-col> <el-col :span="1.5"> <el-button @@ -121,7 +139,8 @@ size="mini" @click="handleImport" v-hasPermi="['system:user:import']" - >瀵煎叆</el-button> + >瀵煎叆</el-button + > </el-col> <el-col :span="1.5"> <el-button @@ -131,19 +150,67 @@ size="mini" @click="handleExport" v-hasPermi="['system:user:export']" - >瀵煎嚭</el-button> + >瀵煎嚭</el-button + > </el-col> - <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> + <right-toolbar + :showSearch.sync="showSearch" + @queryTable="getList" + :columns="columns" + ></right-toolbar> </el-row> - <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> + <el-table + v-loading="loading" + :data="userList" + @selection-change="handleSelectionChange" + > <el-table-column type="selection" width="50" align="center" /> - <el-table-column label="鐢ㄦ埛缂栧彿" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> - <el-table-column label="鐢ㄦ埛鍚嶇О" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" /> - <el-table-column label="鐢ㄦ埛鏄电О" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" /> - <el-table-column label="閮ㄩ棬" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" /> - <el-table-column label="鎵嬫満鍙风爜" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" /> - <el-table-column label="鐘舵��" align="center" key="status" v-if="columns[5].visible"> + <el-table-column + label="鐢ㄦ埛缂栧彿" + align="center" + key="userId" + prop="userId" + v-if="columns[0].visible" + /> + <el-table-column + label="鐢ㄦ埛鍚嶇О" + align="center" + key="userName" + prop="userName" + v-if="columns[1].visible" + :show-overflow-tooltip="true" + /> + <el-table-column + label="鐢ㄦ埛鏄电О" + align="center" + key="nickName" + prop="nickName" + v-if="columns[2].visible" + :show-overflow-tooltip="true" + /> + <el-table-column + label="閮ㄩ棬" + align="center" + key="deptName" + prop="dept.deptName" + v-if="columns[3].visible" + :show-overflow-tooltip="true" + /> + <el-table-column + label="鎵嬫満鍙风爜" + align="center" + key="phonenumber" + prop="phonenumber" + v-if="columns[4].visible" + width="120" + /> + <el-table-column + label="鐘舵��" + align="center" + key="status" + v-if="columns[5].visible" + > <template slot-scope="scope"> <el-switch v-model="scope.row.status" @@ -153,7 +220,13 @@ ></el-switch> </template> </el-table-column> - <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" v-if="columns[6].visible" width="160"> + <el-table-column + label="鍒涘缓鏃堕棿" + align="center" + prop="createTime" + v-if="columns[6].visible" + width="160" + > <template slot-scope="scope"> <span>{{ parseTime(scope.row.createTime) }}</span> </template> @@ -171,21 +244,37 @@ icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']" - >淇敼</el-button> + >淇敼</el-button + > <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']" - >鍒犻櫎</el-button> - <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']"> - <el-button size="mini" type="text" icon="el-icon-d-arrow-right">鏇村</el-button> + >鍒犻櫎</el-button + > + <el-dropdown + size="mini" + @command="(command) => handleCommand(command, scope.row)" + v-hasPermi="['system:user:resetPwd', 'system:user:edit']" + > + <el-button size="mini" type="text" icon="el-icon-d-arrow-right" + >鏇村</el-button + > <el-dropdown-menu slot="dropdown"> - <el-dropdown-item command="handleResetPwd" icon="el-icon-key" - v-hasPermi="['system:user:resetPwd']">閲嶇疆瀵嗙爜</el-dropdown-item> - <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" - v-hasPermi="['system:user:edit']">鍒嗛厤瑙掕壊</el-dropdown-item> + <el-dropdown-item + command="handleResetPwd" + icon="el-icon-key" + v-hasPermi="['system:user:resetPwd']" + >閲嶇疆瀵嗙爜</el-dropdown-item + > + <el-dropdown-item + command="handleAuthRole" + icon="el-icon-circle-check" + v-hasPermi="['system:user:edit']" + >鍒嗛厤瑙掕壊</el-dropdown-item + > </el-dropdown-menu> </el-dropdown> </template> @@ -193,7 +282,7 @@ </el-table> <pagination - v-show="total>0" + v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @@ -208,36 +297,71 @@ <el-row> <el-col :span="12"> <el-form-item label="鐢ㄦ埛鏄电О" prop="nickName"> - <el-input v-model="form.nickName" placeholder="璇疯緭鍏ョ敤鎴锋樀绉�" maxlength="30" /> + <el-input + v-model="form.nickName" + placeholder="璇疯緭鍏ョ敤鎴锋樀绉�" + maxlength="30" + /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="褰掑睘閮ㄩ棬" prop="deptId"> - <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="璇烽�夋嫨褰掑睘閮ㄩ棬" /> + <treeselect + v-model="form.deptId" + :options="deptOptions" + :show-count="true" + placeholder="璇烽�夋嫨褰掑睘閮ㄩ棬" + /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="鎵嬫満鍙风爜" prop="phonenumber"> - <el-input v-model="form.phonenumber" placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" maxlength="11" /> + <el-input + v-model="form.phonenumber" + placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" + maxlength="11" + /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="閭" prop="email"> - <el-input v-model="form.email" placeholder="璇疯緭鍏ラ偖绠�" maxlength="50" /> + <el-input + v-model="form.email" + placeholder="璇疯緭鍏ラ偖绠�" + maxlength="50" + /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> - <el-form-item v-if="form.userId == undefined" label="鐢ㄦ埛鍚嶇О" prop="userName"> - <el-input v-model="form.userName" placeholder="璇疯緭鍏ョ敤鎴峰悕绉�" maxlength="30" /> + <el-form-item + v-if="form.userId == undefined" + label="鐢ㄦ埛鍚嶇О" + prop="userName" + > + <el-input + v-model="form.userName" + placeholder="璇疯緭鍏ョ敤鎴峰悕绉�" + maxlength="30" + /> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item v-if="form.userId == undefined" label="鐢ㄦ埛瀵嗙爜" prop="password"> - <el-input v-model="form.password" placeholder="璇疯緭鍏ョ敤鎴峰瘑鐮�" type="password" maxlength="20" show-password/> + <el-form-item + v-if="form.userId == undefined" + label="鐢ㄦ埛瀵嗙爜" + prop="password" + > + <el-input + v-model="form.password" + placeholder="璇疯緭鍏ョ敤鎴峰瘑鐮�" + type="password" + maxlength="20" + show-password + /> </el-form-item> </el-col> </el-row> @@ -261,7 +385,8 @@ v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value" - >{{dict.label}}</el-radio> + >{{ dict.label }}</el-radio + > </el-radio-group> </el-form-item> </el-col> @@ -269,7 +394,11 @@ <el-row> <el-col :span="12"> <el-form-item label="宀椾綅"> - <el-select v-model="form.postIds" multiple placeholder="璇烽�夋嫨宀椾綅"> + <el-select + v-model="form.postIds" + multiple + placeholder="璇烽�夋嫨宀椾綅" + > <el-option v-for="item in postOptions" :key="item.postId" @@ -282,7 +411,11 @@ </el-col> <el-col :span="12"> <el-form-item label="瑙掕壊"> - <el-select v-model="form.roleIds" multiple placeholder="璇烽�夋嫨瑙掕壊"> + <el-select + v-model="form.roleIds" + multiple + placeholder="璇烽�夋嫨瑙掕壊" + > <el-option v-for="item in roleOptions" :key="item.roleId" @@ -297,7 +430,11 @@ <el-row> <el-col :span="24"> <el-form-item label="澶囨敞"> - <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�"></el-input> + <el-input + v-model="form.remark" + type="textarea" + placeholder="璇疯緭鍏ュ唴瀹�" + ></el-input> </el-form-item> </el-col> </el-row> @@ -309,7 +446,12 @@ </el-dialog> <!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� --> - <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> + <el-dialog + :title="upload.title" + :visible.sync="upload.open" + width="400px" + append-to-body + > <el-upload ref="upload" :limit="1" @@ -326,10 +468,17 @@ <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> <div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip" slot="tip"> - <el-checkbox v-model="upload.updateSupport" /> 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹� + <el-checkbox v-model="upload.updateSupport" /> + 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹� </div> <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span> - <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">涓嬭浇妯℃澘</el-link> + <el-link + type="primary" + :underline="false" + style="font-size: 12px; vertical-align: baseline" + @click="importTemplate" + >涓嬭浇妯℃澘</el-link + > </div> </el-upload> <div slot="footer" class="dialog-footer"> @@ -341,14 +490,23 @@ </template> <script> -import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user"; +import { + listUser, + getUser, + delUser, + addUser, + updateUser, + resetUserPwd, + changeUserStatus, + deptTreeSelect, +} from "@/api/system/user"; import { getToken } from "@/utils/auth"; import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; export default { name: "User", - dicts: ['sys_normal_disable', 'sys_user_sex'], + dicts: ["sys_normal_disable", "sys_user_sex"], components: { Treeselect }, data() { return { @@ -386,7 +544,7 @@ form: {}, defaultProps: { children: "children", - label: "label" + label: "label", }, // 鐢ㄦ埛瀵煎叆鍙傛暟 upload: { @@ -401,7 +559,7 @@ // 璁剧疆涓婁紶鐨勮姹傚ご閮� headers: { Authorization: "Bearer " + getToken() }, // 涓婁紶鐨勫湴鍧� - url: process.env.VUE_APP_BASE_API + "/system/user/importData" + url: process.env.VUE_APP_BASE_API + "/system/user/importData", }, // 鏌ヨ鍙傛暟 queryParams: { @@ -410,7 +568,7 @@ userName: undefined, phonenumber: undefined, status: undefined, - deptId: undefined + deptId: undefined, }, // 鍒椾俊鎭� columns: [ @@ -420,48 +578,58 @@ { key: 3, label: `閮ㄩ棬`, visible: true }, { key: 4, label: `鎵嬫満鍙风爜`, visible: true }, { key: 5, label: `鐘舵�乣, visible: true }, - { key: 6, label: `鍒涘缓鏃堕棿`, visible: true } + { key: 6, label: `鍒涘缓鏃堕棿`, visible: true }, ], // 琛ㄥ崟鏍¢獙 rules: { userName: [ { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, - { min: 2, max: 20, message: '鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿', trigger: 'blur' } + { + min: 2, + max: 20, + message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", + trigger: "blur", + }, ], nickName: [ - { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" } + { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }, ], password: [ { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, - { min: 5, max: 20, message: '鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿', trigger: 'blur' } + { + min: 5, + max: 20, + message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", + trigger: "blur", + }, ], email: [ { type: "email", message: "璇疯緭鍏ユ纭殑閭鍦板潃", - trigger: ["blur", "change"] - } + trigger: ["blur", "change"], + }, ], phonenumber: [ { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", - trigger: "blur" - } - ] - } + trigger: "blur", + }, + ], + }, }; }, watch: { // 鏍规嵁鍚嶇О绛涢�夐儴闂ㄦ爲 deptName(val) { this.$refs.tree.filter(val); - } + }, }, created() { this.getList(); this.getDeptTree(); - this.getConfigKey("sys.user.initPassword").then(response => { + this.getConfigKey("sys.user.initPassword").then((response) => { this.initPassword = response.msg; }); }, @@ -469,7 +637,9 @@ /** 鏌ヨ鐢ㄦ埛鍒楄〃 */ getList() { this.loading = true; - listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => { + console.log(this.queryParams); + listUser(this.addDateRange(this.queryParams, this.dateRange)).then( + (response) => { this.userList = response.rows; this.total = response.total; this.loading = false; @@ -478,7 +648,7 @@ }, /** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */ getDeptTree() { - deptTreeSelect().then(response => { + deptTreeSelect().then((response) => { this.deptOptions = response.data; }); }, @@ -495,13 +665,17 @@ // 鐢ㄦ埛鐘舵�佷慨鏀� handleStatusChange(row) { let text = row.status === "0" ? "鍚敤" : "鍋滅敤"; - this.$modal.confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵').then(function() { - return changeUserStatus(row.userId, row.status); - }).then(() => { - this.$modal.msgSuccess(text + "鎴愬姛"); - }).catch(function() { - row.status = row.status === "0" ? "1" : "0"; - }); + this.$modal + .confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵') + .then(function () { + return changeUserStatus(row.userId, row.status); + }) + .then(() => { + this.$modal.msgSuccess(text + "鎴愬姛"); + }) + .catch(function () { + row.status = row.status === "0" ? "1" : "0"; + }); }, // 鍙栨秷鎸夐挳 cancel() { @@ -522,7 +696,7 @@ status: "0", remark: undefined, postIds: [], - roleIds: [] + roleIds: [], }; this.resetForm("form"); }, @@ -541,7 +715,7 @@ }, // 澶氶�夋閫変腑鏁版嵁 handleSelectionChange(selection) { - this.ids = selection.map(item => item.userId); + this.ids = selection.map((item) => item.userId); this.single = selection.length != 1; this.multiple = !selection.length; }, @@ -561,7 +735,7 @@ /** 鏂板鎸夐挳鎿嶄綔 */ handleAdd() { this.reset(); - getUser().then(response => { + getUser().then((response) => { this.postOptions = response.posts; this.roleOptions = response.roles; this.open = true; @@ -573,7 +747,7 @@ handleUpdate(row) { this.reset(); const userId = row.userId || this.ids; - getUser(userId).then(response => { + getUser(userId).then((response) => { this.form = response.data; this.postOptions = response.posts; this.roleOptions = response.roles; @@ -591,30 +765,32 @@ cancelButtonText: "鍙栨秷", closeOnClickModal: false, inputPattern: /^.{5,20}$/, - inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿" - }).then(({ value }) => { - resetUserPwd(row.userId, value).then(response => { + inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", + }) + .then(({ value }) => { + resetUserPwd(row.userId, value).then((response) => { this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value); }); - }).catch(() => {}); + }) + .catch(() => {}); }, /** 鍒嗛厤瑙掕壊鎿嶄綔 */ - handleAuthRole: function(row) { + handleAuthRole: function (row) { const userId = row.userId; this.$router.push("/system/user-auth/role/" + userId); }, /** 鎻愪氦鎸夐挳 */ - submitForm: function() { - this.$refs["form"].validate(valid => { + submitForm: function () { + this.$refs["form"].validate((valid) => { if (valid) { if (this.form.userId != undefined) { - updateUser(this.form).then(response => { + updateUser(this.form).then((response) => { this.$modal.msgSuccess("淇敼鎴愬姛"); this.open = false; this.getList(); }); } else { - addUser(this.form).then(response => { + addUser(this.form).then((response) => { this.$modal.msgSuccess("鏂板鎴愬姛"); this.open = false; this.getList(); @@ -626,18 +802,26 @@ /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { const userIds = row.userId || this.ids; - this.$modal.confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�').then(function() { - return delUser(userIds); - }).then(() => { - this.getList(); - this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); - }).catch(() => {}); + this.$modal + .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�') + .then(function () { + return delUser(userIds); + }) + .then(() => { + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }) + .catch(() => {}); }, /** 瀵煎嚭鎸夐挳鎿嶄綔 */ handleExport() { - this.download('system/user/export', { - ...this.queryParams - }, `user_${new Date().getTime()}.xlsx`) + this.download( + "system/user/export", + { + ...this.queryParams, + }, + `user_${new Date().getTime()}.xlsx` + ); }, /** 瀵煎叆鎸夐挳鎿嶄綔 */ handleImport() { @@ -646,8 +830,11 @@ }, /** 涓嬭浇妯℃澘鎿嶄綔 */ importTemplate() { - this.download('system/user/importTemplate', { - }, `user_template_${new Date().getTime()}.xlsx`) + this.download( + "system/user/importTemplate", + {}, + `user_template_${new Date().getTime()}.xlsx` + ); }, // 鏂囦欢涓婁紶涓鐞� handleFileUploadProgress(event, file, fileList) { @@ -658,13 +845,19 @@ this.upload.open = false; this.upload.isUploading = false; this.$refs.upload.clearFiles(); - this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "瀵煎叆缁撴灉", { dangerouslyUseHTMLString: true }); + this.$alert( + "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + + response.msg + + "</div>", + "瀵煎叆缁撴灉", + { dangerouslyUseHTMLString: true } + ); this.getList(); }, // 鎻愪氦涓婁紶鏂囦欢 submitFileForm() { this.$refs.upload.submit(); - } - } + }, + }, }; -</script> \ No newline at end of file +</script> diff --git a/vue.config.js b/vue.config.js index 58d5a8b..311eeab 100644 --- a/vue.config.js +++ b/vue.config.js @@ -35,8 +35,8 @@ proxy: { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { - target1: `http://116.62.18.175:8080`, - target: `http://localhost:8080`, + target1: `http://192.168.1.4:8080`, + target: `http://192.168.1.4:8080`, changeOrigin: true, pathRewrite: { ['^' + process.env.VUE_APP_BASE_API]: '' -- Gitblit v1.9.3