From f1bd6c371da44538248ea8fd479f0f4a2180e337 Mon Sep 17 00:00:00 2001 From: wwl <xchao828@163.com> Date: 星期四, 26 六月 2025 11:33:45 +0800 Subject: [PATCH] 今日通知,限制电话输入位数,富文本 --- src/views/system/tijian/index.vue | 2 src/views/system/tongbuDict/index.vue | 57 +++++++ /dev/null | 98 ------------ vue.config.js | 2 public/index.html | 3 src/main.js | 76 +------- package.json | 23 ++ src/views/system/tijianall/index.vue | 1 src/views/ceshi.vue | 198 ++++++++++++++++++++++++ 9 files changed, 296 insertions(+), 164 deletions(-) diff --git a/package.json b/package.json index d48b66a..3a3e495 100644 --- a/package.json +++ b/package.json @@ -36,31 +36,48 @@ "url": "https://gitee.com/y_project/RuoYi-Vue.git" }, "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", "@riophae/vue-treeselect": "0.4.0", + "@tinymce/tinymce-vue": "^3.2.8", + "@tiptap/extension-font-family": "^2.22.3", + "@tiptap/extension-image": "^2.22.3", + "@tiptap/extension-table": "^2.22.3", + "@tiptap/extension-table-cell": "^2.22.3", + "@tiptap/extension-table-header": "^2.22.3", + "@tiptap/extension-table-row": "^2.22.3", + "@tiptap/extension-text-style": "^2.22.3", + "@tiptap/starter-kit": "^2.22.3", + "@tiptap/vue-2": "^2.22.3", "axios": "0.24.0", "babel-polyfill": "^6.26.0", "big.js": "^6.2.2", "clipboard": "2.0.8", "cnchar": "^3.2.6", "core-js": "3.25.3", + "docx": "^9.5.1", "echarts": "4.9.0", "element-ui": "2.15.10", "file-saver": "^2.0.5", "fuse.js": "6.4.3", "highlight.js": "9.18.5", + "html2canvas": "^1.4.1", "js-beautify": "1.13.0", "js-cookie": "3.0.1", "jsbarcode": "^3.11.6", "jsencrypt": "3.0.0-rc.1", + "jspdf": "^3.0.1", "lodash": "^4.17.21", "moment": "^2.30.1", "nprogress": "0.2.0", + "pdfmake": "^0.2.20", "pinyin-match": "^1.2.2", "print-js": "^1.6.0", "quill": "1.3.7", "screenfull": "5.0.2", "sortablejs": "1.10.2", "tduck-form-generator": "^1.8.0", + "tinymce": "^7.9.1", "ua-parser-js": "^1.0.37", "vue": "2.6.12", "vue-barcode": "^1.3.0", @@ -73,6 +90,7 @@ "vue-qr": "^4.0.9", "vue-quill-editor": "^3.0.6", "vue-router": "3.4.9", + "vue2-editor": "^2.10.3", "vuedraggable": "2.24.3", "vuex": "3.6.0", "xlsx": "^0.18.5" @@ -97,7 +115,10 @@ "script-ext-html-webpack-plugin": "2.1.5", "script-loader": "^0.7.2", "svg-sprite-loader": "5.1.1", - "vue-template-compiler": "2.6.12" + "vue-loader": "^15.11.1", + "vue-template-compiler": "2.6.12", + "webpack": "^4.46.0", + "webpack-cli": "^3.3.12" }, "engines": { "node": ">=8.9", diff --git a/public/index.html b/public/index.html index 0499934..3af1e99 100644 --- a/public/index.html +++ b/public/index.html @@ -2,6 +2,9 @@ <html> <head> + <script src="https://cdn.jsdelivr.net/npm/pdfmake@0.2.7/build/pdfmake.min.js"></script> +<script src="https://cdn.jsdelivr.net/npm/pdfmake@0.2.7/build/vfs_fonts.js"></script> + <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="renderer" content="webkit"> diff --git a/src/main.js b/src/main.js index 0ac844c..7ee26a4 100644 --- a/src/main.js +++ b/src/main.js @@ -1,10 +1,8 @@ import Vue from "vue"; - import Cookies from "js-cookie"; import "babel-polyfill"; import Element from "element-ui"; import "./assets/styles/element-variables.scss"; - import "@/assets/styles/index.scss"; // global css import "@/assets/styles/ruoyi.scss"; // ruoyi css import App from "./App"; @@ -14,25 +12,7 @@ import plugins from "./plugins"; // plugins import { download } from "@/utils/request"; import Print from "vue-print-nb"; - -// import Updater from "./utils/AutoUpdate.js"; - -//鍓嶇閲嶆柊閮ㄧ讲閫氱煡鐢ㄦ埛鍒锋柊缃戦〉 -// const AutoUpdate = new Updater() -// AutoUpdate.on('update',()=>{ -// setTimeout(async()=>{ -// const result = confirm('褰撳墠鐗堟湰宸叉洿鏂帮紝璇风偣鍑荤‘瀹氬埛鏂伴〉闈綋楠�'); -// if(result){ -// location.reload(); -// } -// },500) -// }) - - import JsonExcel from "vue-json-excel"; - -Vue.component("downloadExcel", JsonExcel); - import "./assets/icons"; // icon import "./permission"; // permission control import { getDicts } from "@/api/system/dict/data"; @@ -45,36 +25,27 @@ selectDictLabels, handleTree, } from "@/utils/ruoyi"; -// 鍒嗛〉缁勪欢 import Pagination from "@/components/Pagination"; -// 鍒嗛〉缁勪欢 - -// import { monitorZoom } from "@/utils/devicePixelRatio.js"; -// const m = monitorZoom(); -// if (window.screen.width * window.devicePixelRatio >= 3840) { -// document.body.style.zoom = 100 / (Number(m) / 2); // 灞忓箷涓� 4k 鏃� -// } else { -// document.body.style.zoom = 100 / Number(m); -// } - -// 鑷畾涔夎〃鏍煎伐鍏风粍浠� import RightToolbar from "@/components/RightToolbar"; -// 瀵屾枃鏈粍浠� import Editor from "@/components/Editor"; -// 鏂囦欢涓婁紶缁勪欢 import FileUpload from "@/components/FileUpload"; -// 鍥剧墖涓婁紶缁勪欢 import ImageUpload from "@/components/ImageUpload"; -// 鍥剧墖棰勮缁勪欢 import ImagePreview from "@/components/ImagePreview"; -// 瀛楀吀鏍囩缁勪欢 import DictTag from "@/components/DictTag"; -// 澶撮儴鏍囩缁勪欢 import VueMeta from "vue-meta"; -// 瀛楀吀鏁版嵁缁勪欢 import DictData from "@/components/DictData"; - import * as echarts from "echarts"; +import VueBarcode from "vue-barcode"; + +Vue.component("downloadExcel", JsonExcel); +Vue.component("barcode", VueBarcode); +Vue.component("DictTag", DictTag); +Vue.component("Pagination", Pagination); +Vue.component("RightToolbar", RightToolbar); +Vue.component("Editor", Editor); +Vue.component("FileUpload", FileUpload); +Vue.component("ImageUpload", ImageUpload); +Vue.component("ImagePreview", ImagePreview); // 鍏ㄥ眬鏂规硶鎸傝浇 Vue.prototype.getDicts = getDicts; @@ -87,36 +58,15 @@ Vue.prototype.download = download; Vue.prototype.handleTree = handleTree; Vue.prototype.$echarts = echarts; -import VueBarcode from "vue-barcode"; -Vue.component("barcode", VueBarcode); -// 鍏ㄥ眬缁勪欢鎸傝浇 -Vue.component("DictTag", DictTag); -Vue.component("Pagination", Pagination); - -Vue.component("RightToolbar", RightToolbar); -Vue.component("Editor", Editor); -Vue.component("FileUpload", FileUpload); -Vue.component("ImageUpload", ImageUpload); -Vue.component("ImagePreview", ImagePreview); Vue.use(directive); Vue.use(plugins); Vue.use(VueMeta); Vue.use(Print); -DictData.install(); - -/** - * If you don't want to use mock-server - * you want to use MockJs for mock api - * you can execute: mockXHR() - * - * Currently MockJs will be used in the production environment, - * please remove it before going online! ! ! - */ - Vue.use(Element, { size: Cookies.get("size") || "medium", // set element-ui default size }); +DictData.install(); Vue.config.productionTip = false; @@ -125,4 +75,4 @@ router, store, render: (h) => h(App), -}); +}); \ No newline at end of file diff --git a/src/views/12.vue b/src/views/12.vue deleted file mode 100644 index b33a203..0000000 --- a/src/views/12.vue +++ /dev/null @@ -1,212 +0,0 @@ -<template> - <div class="chat-container"> - <h2 class="chat-title">DeepSeek 鑱婂ぉ瀹�</h2> - <div class="message-box"> - <textarea - v-model="inputMessage" - placeholder="璇疯緭鍏ユ偍鐨勬秷鎭�..." - class="chat-input" - :disabled="isLoading" - ></textarea> - <button - @click="sendMessage" - class="send-button" - :disabled="isLoading" - > - {{ isLoading ? '鍙戦�佷腑...' : '鍙戦�佹秷鎭�' }} - </button> - </div> - <div class="response-area"> - <p class="response-label">鍥炲:</p> - <div class="response-content">{{ reply || '鏆傛棤鍥炲' }}</div> - </div> - <p v-if="error" class="error-message">{{ error }}</p> - - <!-- 閬僵灞傚拰鍔犺浇鍔ㄧ敾 --> - <div v-if="isLoading" class="loading-overlay"> - <div class="spinner"></div> - </div> - </div> -</template> - -<script> -export default { - name: 'Chat', - data() { - return { - inputMessage: '', - reply: '', - error: '', - isLoading: false // 鏂板鍔犺浇鐘舵�� - }; - }, - methods: { - async sendMessage() { - if (!this.inputMessage.trim()) { - this.error = '娑堟伅涓嶈兘涓虹┖'; - return; - } - this.error = ''; - this.reply = ''; - this.isLoading = true; // 寮�濮嬪姞杞� - - try { - const response = await fetch('http://localhost:11434/api/chat', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - model: 'ltkj-jy-ai', - messages: [ - { - role: 'system', - content: this.inputMessage - } - ], - stream: false - }) - }); - - if (!response.ok) { - throw new Error('缃戠粶鍝嶅簲閿欒'); - } - - const data = await response.json(); - this.reply = data.message?.content || '鏀跺埌鍥炲锛屼絾鏍煎紡鍙兘涓嶆纭�'; - } catch (err) { - this.error = '璇锋眰鍑洪敊: ' + err.message; - console.error('Fetch 閿欒:', err); - } finally { - this.isLoading = false; // 缁撴潫鍔犺浇 - } - } - } -}; -</script> - -<style scoped> -.chat-container { - max-width: 600px; - margin: 0 auto; - padding: 20px; - background: #f5f7fa; - border-radius: 10px; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); - position: relative; /* 涓洪伄缃╁眰瀹氫綅 */ -} - -.chat-title { - color: #2c3e50; - text-align: center; - margin-bottom: 20px; - font-family: 'Arial', sans-serif; -} - -.message-box { - display: flex; - flex-direction: column; - gap: 10px; -} - -.chat-input { - width: 100%; - height: 120px; - padding: 15px; - border: 1px solid #ddd; - border-radius: 8px; - resize: none; - font-size: 14px; - background: #fff; - transition: border-color 0.3s; -} - -.chat-input:focus { - outline: none; - border-color: #3498db; - box-shadow: 0 0 5px rgba(52, 152, 219, 0.3); -} - -.chat-input:disabled { - background: #f0f0f0; - cursor: not-allowed; -} - -.send-button { - padding: 10px 20px; - background: #3498db; - color: white; - border: none; - border-radius: 8px; - cursor: pointer; - font-size: 14px; - transition: background 0.3s; - align-self: flex-end; -} - -.send-button:hover:not(:disabled) { - background: #2980b9; -} - -.send-button:disabled { - background: #95a5a6; - cursor: not-allowed; -} - -.response-area { - margin-top: 20px; - background: #fff; - padding: 15px; - border-radius: 8px; - border: 1px solid #eee; -} - -.response-label { - margin: 0 0 10px 0; - color: #7f8c8d; - font-size: 14px; -} - -.response-content { - color: #2c3e50; - line-height: 1.5; - word-wrap: break-word; -} - -.error-message { - color: #e74c3c; - margin-top: 10px; - font-size: 14px; - text-align: center; -} - -/* 閬僵灞傛牱寮� */ -.loading-overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.3); - display: flex; - justify-content: center; - align-items: center; - border-radius: 10px; - z-index: 10; -} - -/* 鍔犺浇鍔ㄧ敾 */ -.spinner { - width: 40px; - height: 40px; - border: 4px solid #f3f3f3; - border-top: 4px solid #3498db; - border-radius: 50%; - animation: spin 1s linear infinite; -} - -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -} -</style> \ No newline at end of file diff --git a/src/views/ceshi.vue b/src/views/ceshi.vue new file mode 100644 index 0000000..4a8f64d --- /dev/null +++ b/src/views/ceshi.vue @@ -0,0 +1,198 @@ +<template> + <div> + <h3>鍓嶇 Word 缂栬緫鍣紙TinyMCE锛�</h3> + <editor v-model="content" :init="editorInit" :api-key="apiKey"></editor> + <div class="actions"> + <button @click="exportToWord">瀵煎嚭 Word</button> + <button @click="exportToPDF">瀵煎嚭 PDF</button> + </div> + </div> +</template> + +<script> +import Editor from '@tinymce/tinymce-vue'; +import { Document, Packer, Paragraph, TextRun, ImageRun, Table as DocxTable, TableRow as DocxTableRow, TableCell as DocxTableCell } from 'docx'; +import { saveAs } from 'file-saver'; +import jsPDF from 'jspdf'; +import html2canvas from 'html2canvas'; + +export default { + components: { Editor }, + data() { + return { + apiKey: '3ceaxd5ckw4te35xj38vj3p5rmmeyv0x8pq2yrr92rwdiqzp', // 鎮ㄧ殑 TinyMCE API 瀵嗛挜 + content: ` + + `, + editorInit: { + height: 500, + menubar: true, + plugins: [ + 'advlist autolink lists link image charmap print preview anchor', + 'searchreplace visualblocks code fullscreen', + 'insertdatetime media table paste code help wordcount' + ], + toolbar: + 'undo redo | formatselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | image table | removeformat | help', + images_upload_handler: (blobInfo, success, failure) => { + const reader = new FileReader(); + reader.onload = () => success(reader.result); + reader.onerror = () => failure('鍥剧墖涓婁紶澶辫触'); + reader.readAsDataURL(blobInfo.blob()); + }, + content_style: 'body { font-family: SimSun, Arial; font-size: 14px; }', + table_default_attributes: { border: 1 }, + readonly: false, + language: 'zh_CN', // 灏濊瘯 zh-CN + }, + }; + }, + methods: { + exportToWord() { + this.parseHtmlToDocx(this.content).then((elements) => { + const doc = new Document({ + sections: [{ properties: {}, children: elements }], + }); + + Packer.toBlob(doc).then((blob) => { + saveAs(blob, '鏂囨。.docx'); + }).catch((err) => { + console.error('鐢熸垚 Word 澶辫触锛�', err); + }); + }).catch((err) => { + console.error('瑙f瀽 HTML 澶辫触锛�', err); + }); + }, + parseHtmlToDocx(html) { + return new Promise((resolve, reject) => { + const parser = new DOMParser(); + const doc = parser.parseFromString(html, 'text/html'); + const elements = []; + + const processNode = (node, callback) => { + if (node.nodeType === Node.ELEMENT_NODE) { + if (node.tagName === 'P') { + const textRuns = Array.from(node.childNodes).map((child) => { + if (child.nodeType === Node.TEXT_NODE) { + return new TextRun({ text: child.textContent || '' }); + } else if (child.tagName === 'B') { + return new TextRun({ text: child.textContent || '', bold: true }); + } else if (child.tagName === 'I') { + return new TextRun({ text: child.textContent || '', italics: true }); + } else if (child.tagName === 'IMG') { + this.getImageBase64FromUrl(child.src).then((base64) => { + callback(null, new ImageRun({ + data: base64, + transformation: { width: 200, height: 200 }, + })); + }).catch((err) => { + console.error('鍥剧墖鍔犺浇澶辫触锛�', err); + callback(null, new TextRun(`[鍥剧墖: ${child.alt || '鍥惧儚'}]`)); + }); + return null; + } + return new TextRun({ text: child.textContent || '' }); + }).filter(Boolean); + if (textRuns.length) { + elements.push(new Paragraph({ children: textRuns })); + } + } else if (node.tagName === 'H1') { + elements.push(new Paragraph({ text: node.textContent || '', heading: 'Heading1' })); + } else if (node.tagName === 'UL' || node.tagName === 'OL') { + Array.from(node.children).forEach((li) => { + elements.push( + new Paragraph({ + text: li.textContent || '', + bullet: node.tagName === 'UL' ? { level: 0 } : { level: 0, number: true }, + }) + ); + }); + } else if (node.tagName === 'TABLE') { + const rows = Array.from(node.querySelectorAll('tr')).map((tr) => { + const cells = Array.from(tr.querySelectorAll('td, th')).map((cell) => { + return new DocxTableCell({ + children: [new Paragraph(cell.textContent || '')], + }); + }); + return new DocxTableRow({ children: cells }); + }); + elements.push(new DocxTable({ rows })); + } + Array.from(node.children).forEach((child) => processNode(child, callback)); + } + callback(null); + }; + + const nodes = Array.from(doc.body.childNodes); + let completed = 0; + const checkCompletion = () => { + completed++; + if (completed === nodes.length) { + resolve(elements); + } + }; + + if (nodes.length === 0) { + resolve(elements); + } else { + nodes.forEach((node) => { + processNode(node, checkCompletion); + }); + } + }); + }, + getImageBase64FromUrl(url) { + return new Promise((resolve, reject) => { + fetch(url, { mode: 'cors' }) + .then((response) => { + if (!response.ok) throw new Error('缃戠粶鍥剧墖鍔犺浇澶辫触'); + return response.blob(); + }) + .then((blob) => { + const reader = new FileReader(); + reader.onloadend = () => resolve(reader.result.split(',')[1]); + reader.onerror = () => reject(new Error('鍥剧墖璇诲彇澶辫触')); + reader.readAsDataURL(blob); + }) + .catch((err) => reject(err)); + }); + }, + exportToPDF() { + const contentElement = document.createElement('div'); + contentElement.innerHTML = this.content; + contentElement.style.padding = '10px'; + document.body.appendChild(contentElement); + + html2canvas(contentElement, { scale: 2 }) + .then((canvas) => { + const doc = new jsPDF(); + const imgData = canvas.toDataURL('image/png'); + doc.addImage(imgData, 'PNG', 10, 10, 190, 0); + doc.save('鏂囨。.pdf'); + }) + .catch((err) => { + console.error('鐢熸垚 PDF 澶辫触锛�', err); + document.body.removeChild(contentElement); + }); + }, + }, +}; +</script> + +<style> +.actions { + margin-top: 10px; +} +.actions button { + padding: 8px 16px; + margin-right: 10px; + background-color: #409eff; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} +.actions button:hover { + background-color: #66b1ff; +} +</style> \ No newline at end of file diff --git a/src/views/index_v1.vue b/src/views/index_v1.vue deleted file mode 100644 index d2d2ec6..0000000 --- a/src/views/index_v1.vue +++ /dev/null @@ -1,98 +0,0 @@ -<template> - <div class="dashboard-editor-container"> - - <panel-group @handleSetLineChartData="handleSetLineChartData" /> - - <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> - <line-chart :chart-data="lineChartData" /> - </el-row> - - <el-row :gutter="32"> - <el-col :xs="24" :sm="24" :lg="8"> - <div class="chart-wrapper"> - <raddar-chart /> - </div> - </el-col> - <el-col :xs="24" :sm="24" :lg="8"> - <div class="chart-wrapper"> - <pie-chart /> - </div> - </el-col> - <el-col :xs="24" :sm="24" :lg="8"> - <div class="chart-wrapper"> - <bar-chart /> - </div> - </el-col> - </el-row> - - - </div> -</template> - -<script> -import PanelGroup from './dashboard/PanelGroup' -import LineChart from './dashboard/LineChart' -import RaddarChart from './dashboard/RaddarChart' -import PieChart from './dashboard/PieChart' -import BarChart from './dashboard/BarChart' - -const lineChartData = { - newVisitis: { - expectedData: [100, 120, 161, 134, 105, 160, 165], - actualData: [120, 82, 91, 154, 162, 140, 145] - }, - messages: { - expectedData: [200, 192, 120, 144, 160, 130, 140], - actualData: [180, 160, 151, 106, 145, 150, 130] - }, - purchases: { - expectedData: [80, 100, 121, 104, 105, 90, 100], - actualData: [120, 90, 100, 138, 142, 130, 130] - }, - shoppings: { - expectedData: [130, 140, 141, 142, 145, 150, 160], - actualData: [120, 82, 91, 154, 162, 140, 130] - } -} - -export default { - name: 'Index', - components: { - PanelGroup, - LineChart, - RaddarChart, - PieChart, - BarChart - }, - data() { - return { - lineChartData: lineChartData.newVisitis - } - }, - methods: { - handleSetLineChartData(type) { - this.lineChartData = lineChartData[type] - } - } -} -</script> - -<style lang="scss" scoped> -.dashboard-editor-container { - padding: 32px; - background-color: rgb(240, 242, 245); - position: relative; - - .chart-wrapper { - background: #fff; - padding: 16px 16px 0; - margin-bottom: 32px; - } -} - -@media (max-width:1024px) { - .chart-wrapper { - padding: 8px; - } -} -</style> diff --git a/src/views/system/tijian/index.vue b/src/views/system/tijian/index.vue index 3b421a8..37b2ed6 100644 --- a/src/views/system/tijian/index.vue +++ b/src/views/system/tijian/index.vue @@ -183,7 +183,7 @@ trigger: 'blur', }, ]"> - <el-input v-model="form.cusPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" :disabled="isDisabled" + <el-input v-model="form.cusPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" maxlength="11" :disabled="isDisabled" @input="form.cusPhone = $event.replace(/\s/g, '')" /> </el-form-item> diff --git a/src/views/system/tijianall/index.vue b/src/views/system/tijianall/index.vue index afbce3f..6dc5ab7 100644 --- a/src/views/system/tijianall/index.vue +++ b/src/views/system/tijianall/index.vue @@ -182,6 +182,7 @@ ]" > <el-input + maxlength="11" v-model="form.cusPhone" placeholder="璇疯緭鍏ョ數璇�" @input="form.cusPhone = $event.replace(/\s/g, '')" diff --git a/src/views/system/tongbuDict/index.vue b/src/views/system/tongbuDict/index.vue new file mode 100644 index 0000000..9bc9412 --- /dev/null +++ b/src/views/system/tongbuDict/index.vue @@ -0,0 +1,57 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> + <el-form-item label="閫夋嫨闄㈠尯" prop="status"> + <el-select v-model="queryParams.status" clearable style="width: 240px"> + <el-option v-for="area in hospitalAreas" :key="area.hospAreaId" :label="area.hospAreaName" + :value="area.hospAreaId" /> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" size="mini" @click="tongbu(true)">鍚屾瀛楀吀</el-button> + <el-button type="primary" size="mini" @click="tongbu(false)">鍙皟鐢ㄥ瓨鍌ㄨ繃绋�</el-button> + </el-form-item> + </el-form> + </div> +</template> +<script> +import { yuanqu, tongbuzidian } from "@/api/system/dict/type"; +export default { + name: "Dict", + data() { + return { + + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 瀛楀吀琛ㄦ牸鏁版嵁 + typeList: [], + // 闄㈠尯鏁版嵁 + hospitalAreas: [], + // 鏌ヨ鍙傛暟 + queryParams: { + status: undefined + }, + // 琛ㄥ崟鍙傛暟 + form: {}, + }; + }, + created() { + yuanqu().then((res) => { + this.hospitalAreas = res.data || []; + console.log(res); + }); + this.getList(); + }, + methods: { + tongbu(t) { + tongbuzidian(t).then((res) => { + console.log(res); + }) + }, + getAreaName(status) { + const area = this.hospitalAreas.find(area => area.hospAreaId === status); + return area ? area.hospAreaName : status; + } + } +}; +</script> diff --git a/vue.config.js b/vue.config.js index ae442c7..6983b38 100644 --- a/vue.config.js +++ b/vue.config.js @@ -57,7 +57,7 @@ // target: `http://192.168.1.2:5011`, - target: `http://192.168.1.113:5011`, + target: `http://192.168.1.2:5011`, // // target: `http://192.168.0.99:8080/ltkj-admin`, // target: `https://ltpeis.xaltjdkj.cn:5011/ltkj-admin`, // target: `http://10.168.0.9:5011`, ` -- Gitblit v1.8.0