diff --git a/App.vue b/App.vue index 2daafce2751534639762df463d08d749ab40d515..ad67aa36db3de3ab1c6d4c14d76f2acd5b44ee85 100644 --- a/App.vue +++ b/App.vue @@ -1,34 +1,37 @@ - - - diff --git a/api/login.js b/api/login.js index 54fb62cd5b1533b462ca88f1a755e06d198d0091..68ed518432b78df4ada320ee74bad487f28bdb60 100644 --- a/api/login.js +++ b/api/login.js @@ -1,12 +1,10 @@ import request from '@/utils/request' // 登录方法 -export function login(username, password, code, uuid) { +export function login(username, password) { const data = { username, - password, - code, - uuid + password } return request({ 'url': '/login', @@ -14,20 +12,30 @@ export function login(username, password, code, uuid) { isToken: false }, 'method': 'post', - 'data': data + 'params': data }) } - -// 注册方法 -export function register(data) { - return request({ - url: '/register', - headers: { - isToken: false - }, - method: 'post', - data: data - }) +// 微信登录 +export function wxLoginAPI(data) { + return request({ + 'url': '/wxlogin', + headers: { + isToken: false + }, + 'method': 'post', + 'params': data + }) +} +// 注册方法 +export function register(data) { + return request({ + url: '/register', + headers: { + isToken: false + }, + method: 'post', + data: data + }) } // 获取用户详细信息 @@ -56,4 +64,4 @@ export function getCodeImg() { method: 'get', timeout: 20000 }) -} +} diff --git a/api/system/dict/data.js b/api/system/dict/data.js new file mode 100644 index 0000000000000000000000000000000000000000..6c9eb79b4d98af0a82361826dd078abfa8e02c98 --- /dev/null +++ b/api/system/dict/data.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询字典数据列表 +export function listData(query) { + return request({ + url: '/system/dict/data/list', + method: 'get', + params: query + }) +} + +// 查询字典数据详细 +export function getData(dictCode) { + return request({ + url: '/system/dict/data/' + dictCode, + method: 'get' + }) +} + +// 根据字典类型查询字典数据信息 +export function getDicts(dictType) { + return request({ + url: '/system/dict/data/type/' + dictType, + method: 'get' + }) +} + +// 新增字典数据 +export function addData(data) { + return request({ + url: '/system/dict/data', + method: 'post', + data: data + }) +} + +// 修改字典数据 +export function updateData(data) { + return request({ + url: '/system/dict/data', + method: 'put', + data: data + }) +} + +// 删除字典数据 +export function delData(dictCode) { + return request({ + url: '/system/dict/data/' + dictCode, + method: 'delete' + }) +} diff --git a/api/system/dict/type.js b/api/system/dict/type.js new file mode 100644 index 0000000000000000000000000000000000000000..a0254baa713dd9e34b41d451c08d5d01909a8bb3 --- /dev/null +++ b/api/system/dict/type.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询字典类型列表 +export function listType(query) { + return request({ + url: '/system/dict/type/list', + method: 'get', + params: query + }) +} + +// 查询字典类型详细 +export function getType(dictId) { + return request({ + url: '/system/dict/type/' + dictId, + method: 'get' + }) +} + +// 新增字典类型 +export function addType(data) { + return request({ + url: '/system/dict/type', + method: 'post', + data: data + }) +} + +// 修改字典类型 +export function updateType(data) { + return request({ + url: '/system/dict/type', + method: 'put', + data: data + }) +} + +// 删除字典类型 +export function delType(dictId) { + return request({ + url: '/system/dict/type/' + dictId, + method: 'delete' + }) +} + +// 刷新字典缓存 +export function refreshCache() { + return request({ + url: '/system/dict/type/refreshCache', + method: 'delete' + }) +} + +// 获取字典选择框列表 +export function optionselect() { + return request({ + url: '/system/dict/type/optionselect', + method: 'get' + }) +} diff --git a/api/tcm/case.js b/api/tcm/case.js new file mode 100644 index 0000000000000000000000000000000000000000..0cf7c5b129268cab6ac7002a4dfbbb8794c084fa --- /dev/null +++ b/api/tcm/case.js @@ -0,0 +1,85 @@ +import request from '@/utils/request' + + + +// 查询医案列表 +export function getCaseList(query) { + return request({ + url: '/tcm/case/list', + method: 'get', + params: query + }) +} + + +// 查询中药列表 +export function getMedicineList(query) { + return request({ + url: '/tcm/search/shortcut', + method: 'get', + params: query + }) +} + +// 查询方剂详情 +export function getComposeDetail(query) { + return request({ + url: '/tcm/search/compose/detail', + method: 'get', + params: query + }) +} + +// 新增医案 +export function addCase(query) { + return request({ + url: '/tcm/case/create', + method: 'post', + data: query + }) +} + +// 编辑医案 +export function updateCase(query) { + return request({ + url: '/tcm/case/edit/'+query.id, + method: 'put', + data: query + }) +} + +// 获取病案详情 +export function getCaseDetail(query) { + return request({ + url: '/tcm/case/details', + method: 'get', + params: query + }) +} + +// 获取上一个下一个 +export function getCaseNextDetail(query) { + return request({ + url: '/tcm/case/offset', + method: 'get', + params: query + }) +} + +// 删除病案 +export function deleteCase(query) { + return request({ + url: '/tcm/case/delete', + method: 'post', + data: query + }) +} + +// 删除文件 +export function deleteFile(query) { + return request({ + url: '/tcm/common/files/remove', + method: 'post', + data: query + }) +} \ No newline at end of file diff --git a/api/tcm/patient.js b/api/tcm/patient.js new file mode 100644 index 0000000000000000000000000000000000000000..4471fd13eb6108cf3bccb0a3820d47c98916b46e --- /dev/null +++ b/api/tcm/patient.js @@ -0,0 +1,49 @@ +import request from '@/utils/request' + + + +// 查询就诊人列表 +export function getPatientList(query) { + return request({ + url: '/tcm/patient/list', + method: 'get', + params: query + }) +} + + +// 查询就诊人详情 +export function getPatientDetails(id) { + return request({ + url: '/tcm/patient/details', + method: 'get', + params:{"patientId":id} + }) +} + +// 创建就诊人 +export function createPatient(patientObj) { + return request({ + url: '/tcm/patient/create', + method: 'post', + data:patientObj + }) +} + +// 修改就诊人 +export function editPatient(patientObj) { + return request({ + url: '/tcm/patient/edit', + method: 'put', + data:patientObj + }) +} + +// 删除就诊人 +export function deletePatients(ids) { + return request({ + url: '/tcm/patient/delete', + method: 'post', + data:[ids] + }) +} \ No newline at end of file diff --git a/components/swiper-list-item/swiper-list-item.vue b/components/swiper-list-item/swiper-list-item.vue new file mode 100644 index 0000000000000000000000000000000000000000..cebe6276e65defdf8fbab0f74dcaa8bda4369cfa --- /dev/null +++ b/components/swiper-list-item/swiper-list-item.vue @@ -0,0 +1,129 @@ + + + + + + diff --git a/config.js b/config.js index 333f63ea1e643e93a8ee551a38040caebad2b3fc..dbc7d4eba4615b24ce16be5fdee6d1ad7ed07625 100644 --- a/config.js +++ b/config.js @@ -1,15 +1,16 @@ // 应用全局配置 -module.exports = { - baseUrl: 'https://vue.ruoyi.vip/prod-api', - // baseUrl: 'http://localhost:8080', +export default { + // baseUrl: 'https://vue.ruoyi.vip/prod-api', + // baseUrl: 'http://8.156.79.168:8000', + baseUrl: 'https://huaici.wecarry.cn', // 应用信息 appInfo: { // 应用名称 - name: "ruoyi-app", + name: "怀慈医录", // 应用版本 version: "1.2.0", // 应用logo - logo: "/static/logo.png", + logo: "/static/images/logo.png", // 官方网站 site_url: "http://ruoyi.vip", // 政策协议 diff --git a/index.html b/index.html new file mode 100644 index 0000000000000000000000000000000000000000..2511ed7c39df30402294d3cb8213a2cba4a88d04 --- /dev/null +++ b/index.html @@ -0,0 +1,15 @@ + + + + + + + RuoYi-App + + + +
+ + + + \ No newline at end of file diff --git a/js_sdk/jason-alioss-upload/base64.js b/js_sdk/jason-alioss-upload/base64.js new file mode 100644 index 0000000000000000000000000000000000000000..b7d5d8b92491e00d5d2c8795f49bcd18a1ece48e --- /dev/null +++ b/js_sdk/jason-alioss-upload/base64.js @@ -0,0 +1,131 @@ +export const Base64 = { + + // private property + _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", + + // public method for encoding + encode: function(input) { + var output = ""; + var chr1, chr2, chr3, enc1, enc2, enc3, enc4; + var i = 0; + + input = Base64._utf8_encode(input); + + while (i < input.length) { + + chr1 = input.charCodeAt(i++); + chr2 = input.charCodeAt(i++); + chr3 = input.charCodeAt(i++); + + enc1 = chr1 >> 2; + enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); + enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); + enc4 = chr3 & 63; + + if (isNaN(chr2)) { + enc3 = enc4 = 64; + } else if (isNaN(chr3)) { + enc4 = 64; + } + + output = output + + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); + + } + + return output; + }, + + // public method for decoding + decode: function(input) { + var output = ""; + var chr1, chr2, chr3; + var enc1, enc2, enc3, enc4; + var i = 0; + + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + + while (i < input.length) { + + enc1 = this._keyStr.indexOf(input.charAt(i++)); + enc2 = this._keyStr.indexOf(input.charAt(i++)); + enc3 = this._keyStr.indexOf(input.charAt(i++)); + enc4 = this._keyStr.indexOf(input.charAt(i++)); + + chr1 = (enc1 << 2) | (enc2 >> 4); + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); + chr3 = ((enc3 & 3) << 6) | enc4; + + output = output + String.fromCharCode(chr1); + + if (enc3 != 64) { + output = output + String.fromCharCode(chr2); + } + if (enc4 != 64) { + output = output + String.fromCharCode(chr3); + } + + } + + output = Base64._utf8_decode(output); + + return output; + + }, + + // private method for UTF-8 encoding + _utf8_encode: function(string) { + string = string.replace(/\r\n/g, "\n"); + var utftext = ""; + + for (var n = 0; n < string.length; n++) { + + var c = string.charCodeAt(n); + + if (c < 128) { + utftext += String.fromCharCode(c); + } else if ((c > 127) && (c < 2048)) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + + } + + return utftext; + }, + + // private method for UTF-8 decoding + _utf8_decode: function(utftext) { + var string = ""; + var i = 0; + var c = c1 = c2 = 0; + + while (i < utftext.length) { + + c = utftext.charCodeAt(i); + + if (c < 128) { + string += String.fromCharCode(c); + i++; + } else if ((c > 191) && (c < 224)) { + c2 = utftext.charCodeAt(i + 1); + string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } else { + c2 = utftext.charCodeAt(i + 1); + c3 = utftext.charCodeAt(i + 2); + string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + + } + + return string; + } + +} \ No newline at end of file diff --git a/js_sdk/jason-alioss-upload/crypto.js b/js_sdk/jason-alioss-upload/crypto.js new file mode 100644 index 0000000000000000000000000000000000000000..edfc6dee8fec8522fc77d4a9a081619318ee06f9 --- /dev/null +++ b/js_sdk/jason-alioss-upload/crypto.js @@ -0,0 +1,166 @@ +const base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +// Crypto utilities +export const util = { + + // Bit-wise rotate left + rotl: function (n, b) { + return (n << b) | (n >>> (32 - b)); + }, + + // Bit-wise rotate right + rotr: function (n, b) { + return (n << (32 - b)) | (n >>> b); + }, + + // Swap big-endian to little-endian and vice versa + endian: function (n) { + + // If number given, swap endian + if (n.constructor == Number) { + return util.rotl(n, 8) & 0x00FF00FF | + util.rotl(n, 24) & 0xFF00FF00; + } + + // Else, assume array and swap all items + for (var i = 0; i < n.length; i++) + n[i] = util.endian(n[i]); + return n; + + }, + + // Generate an array of any length of random bytes + randomBytes: function (n) { + for (var bytes = []; n > 0; n--) + bytes.push(Math.floor(Math.random() * 256)); + return bytes; + }, + + // Convert a string to a byte array + stringToBytes: function (str) { + var bytes = []; + for (var i = 0; i < str.length; i++) + bytes.push(str.charCodeAt(i)); + return bytes; + }, + + // Convert a byte array to a string + bytesToString: function (bytes) { + var str = []; + for (var i = 0; i < bytes.length; i++) + str.push(String.fromCharCode(bytes[i])); + return str.join(""); + }, + + // Convert a string to big-endian 32-bit words + stringToWords: function (str) { + var words = []; + for (var c = 0, b = 0; c < str.length; c++, b += 8) + words[b >>> 5] |= str.charCodeAt(c) << (24 - b % 32); + return words; + }, + + // Convert a byte array to big-endian 32-bits words + bytesToWords: function (bytes) { + var words = []; + for (var i = 0, b = 0; i < bytes.length; i++, b += 8) + words[b >>> 5] |= bytes[i] << (24 - b % 32); + return words; + }, + + // Convert big-endian 32-bit words to a byte array + wordsToBytes: function (words) { + var bytes = []; + for (var b = 0; b < words.length * 32; b += 8) + bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); + return bytes; + }, + + // Convert a byte array to a hex string + bytesToHex: function (bytes) { + var hex = []; + for (var i = 0; i < bytes.length; i++) { + hex.push((bytes[i] >>> 4).toString(16)); + hex.push((bytes[i] & 0xF).toString(16)); + } + return hex.join(""); + }, + + // Convert a hex string to a byte array + hexToBytes: function (hex) { + var bytes = []; + for (var c = 0; c < hex.length; c += 2) + bytes.push(parseInt(hex.substr(c, 2), 16)); + return bytes; + }, + + // Convert a byte array to a base-64 string + bytesToBase64: function (bytes) { + + // Use browser-native function if it exists + if (typeof btoa == "function") return btoa(util.bytesToString(bytes)); + + var base64 = [], + overflow; + + for (var i = 0; i < bytes.length; i++) { + switch (i % 3) { + case 0: + base64.push(base64map.charAt(bytes[i] >>> 2)); + overflow = (bytes[i] & 0x3) << 4; + break; + case 1: + base64.push(base64map.charAt(overflow | (bytes[i] >>> 4))); + overflow = (bytes[i] & 0xF) << 2; + break; + case 2: + base64.push(base64map.charAt(overflow | (bytes[i] >>> 6))); + base64.push(base64map.charAt(bytes[i] & 0x3F)); + overflow = -1; + } + } + + // Encode overflow bits, if there are any + if (overflow != undefined && overflow != -1) + base64.push(base64map.charAt(overflow)); + + // Add padding + while (base64.length % 4 != 0) base64.push("="); + + return base64.join(""); + + }, + + // Convert a base-64 string to a byte array + base64ToBytes: function (base64) { + + // Use browser-native function if it exists + if (typeof atob == "function") return util.stringToBytes(atob(base64)); + + // Remove non-base-64 characters + base64 = base64.replace(/[^A-Z0-9+\/]/ig, ""); + + var bytes = []; + + for (var i = 0; i < base64.length; i++) { + switch (i % 4) { + case 1: + bytes.push((base64map.indexOf(base64.charAt(i - 1)) << 2) | + (base64map.indexOf(base64.charAt(i)) >>> 4)); + break; + case 2: + bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0xF) << 4) | + (base64map.indexOf(base64.charAt(i)) >>> 2)); + break; + case 3: + bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0x3) << 6) | + (base64map.indexOf(base64.charAt(i)))); + break; + } + } + + return bytes; + + } + +} diff --git a/js_sdk/jason-alioss-upload/hmac.js b/js_sdk/jason-alioss-upload/hmac.js new file mode 100644 index 0000000000000000000000000000000000000000..df53729c4202a4e66b65cb17455e7f161b93b614 --- /dev/null +++ b/js_sdk/jason-alioss-upload/hmac.js @@ -0,0 +1,25 @@ +import { util } from './crypto.js' + +export function HMAC(hasher, message, key, options) { + const _blocksize = 16 + // Allow arbitrary length keys + key = key.length > _blocksize * 4 ? + hasher(key, { asBytes: true }) : + util.stringToBytes(key); + + // XOR keys with pad constants + var okey = key, + ikey = key.slice(0); + for (var i = 0; i < _blocksize * 4; i++) { + okey[i] ^= 0x5C; + ikey[i] ^= 0x36; + } + + var hmacbytes = hasher(util.bytesToString(okey) + + hasher(util.bytesToString(ikey) + message, { asString: true }), + { asBytes: true }); + return options && options.asBytes ? hmacbytes : + options && options.asString ? util.bytesToString(hmacbytes) : + util.bytesToHex(hmacbytes); + +} \ No newline at end of file diff --git a/js_sdk/jason-alioss-upload/oss.js b/js_sdk/jason-alioss-upload/oss.js new file mode 100644 index 0000000000000000000000000000000000000000..5cf4763ad43d6de239064309490bdc004a41f4cc --- /dev/null +++ b/js_sdk/jason-alioss-upload/oss.js @@ -0,0 +1,71 @@ +import { Base64 } from './base64.js' +import { util } from './crypto.js' +import { HMAC } from './hmac.js' +import { SHA1 } from './sha1.js' + +// 下面这3个信息必填 +const url = 'https://wecarry-prod-bucket.oss-cn-chengdu.aliyuncs.com/' +const OSSAccessKeyId = 'LTAI5tH1bQWvvgnxzbR9Nt1Z' +const OssAccesskeySercet= '6oycHYtFCQruh0cx7W41bwh3NsP5pX'; + + +const policyText = { + "expiration": "2034-01-01T12:00:00.000Z", // 设置Policy的有效期,格式为UTC时间。如果Policy失效,将无法上传文件。 + "conditions": [ + ["content-length-range", 0, 1048576000] // 限制上传文件的大小,单位为字节,此处限制文件大小为1 GB。如果上传的文件大小超过此限制,文件将无法上传到OSS。如果未设置该限制,则默认文件大小最大为5 GB。 + ] +} + +const policy = Base64.encode(JSON.stringify(policyText)) +const bytes = HMAC(SHA1, policy, OssAccesskeySercet, { asBytes: true }) +const signature = util.bytesToBase64(bytes) + +// 生成文件名随机字符串 +function random_string(len) { +  const strLeng = len || 32; +  const chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; +  const maxPos = chars.length; +  let pwd = ''; +  for (let i = 0; i < strLeng; i++) { +   pwd += chars.charAt(Math.floor(Math.random() * maxPos)); + } + return pwd; +} + +// 获取文件后缀 +function get_suffix(filename) { + const pos = filename.lastIndexOf('.') + console.log(filename,pos,filename.substring(pos)) + let suffix = '' + if (pos != -1) { + suffix = filename.substring(pos) + } + return suffix; +} + +// dir格式:'img/' +export const ossUpload = (filePath, name, dir) => { + const key = dir + random_string(10) + get_suffix(name) + console.log(key,name,url) + return new Promise((resolve, reject) => { + uni.uploadFile({ + url, + filePath, + name: 'file', + formData: { + name, + key, + policy, + OSSAccessKeyId, + success_action_status: '200', + signature + }, + success: () => { + resolve({success: true, data: key}) + }, + fail: () => { + reject({success: false, data: '上传失败'}) + } + }) + }) +} \ No newline at end of file diff --git a/js_sdk/jason-alioss-upload/package.json b/js_sdk/jason-alioss-upload/package.json new file mode 100644 index 0000000000000000000000000000000000000000..d3a3c9986bb98bf29f48f0accfea8f817524bdf3 --- /dev/null +++ b/js_sdk/jason-alioss-upload/package.json @@ -0,0 +1,20 @@ +{ + "id": "jason-alioss-upload", + "name": "阿里云存储OSS前端直接上传(全端通用) - 前端JASON", + "displayName": "阿里云存储OSS前端直接上传(全端通用) - 前端JASON", + "version": "1.0.0", + "description": "阿里云oss存储前端直传,不需要后端鉴权及签名;h5、小程序、app全端通用;支持vue2、vue3", + "keywords": [ + "对象存储", + "oss", + "文件上传", + "阿里云", + "oss上传" + ], + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ] + } +} \ No newline at end of file diff --git a/js_sdk/jason-alioss-upload/sha1.js b/js_sdk/jason-alioss-upload/sha1.js new file mode 100644 index 0000000000000000000000000000000000000000..63724c139f1a20ef162ab330a5b7352f250871d2 --- /dev/null +++ b/js_sdk/jason-alioss-upload/sha1.js @@ -0,0 +1,64 @@ +import { util } from './crypto.js' + +// The core +function _sha1(message) { + + var m = util.stringToWords(message), + l = message.length * 8, + w = [], + H0 = 1732584193, + H1 = -271733879, + H2 = -1732584194, + H3 = 271733878, + H4 = -1009589776; + + // Padding + m[l >> 5] |= 0x80 << (24 - l % 32); + m[((l + 64 >>> 9) << 4) + 15] = l; + + for (var i = 0; i < m.length; i += 16) { + + var a = H0, + b = H1, + c = H2, + d = H3, + e = H4; + + for (var j = 0; j < 80; j++) { + + if (j < 16) w[j] = m[i + j]; + else { + var n = w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16]; + w[j] = (n << 1) | (n >>> 31); + } + + var t = ((H0 << 5) | (H0 >>> 27)) + H4 + (w[j] >>> 0) + ( + j < 20 ? (H1 & H2 | ~H1 & H3) + 1518500249 : + j < 40 ? (H1 ^ H2 ^ H3) + 1859775393 : + j < 60 ? (H1 & H2 | H1 & H3 | H2 & H3) - 1894007588 : + (H1 ^ H2 ^ H3) - 899497514); + + H4 = H3; + H3 = H2; + H2 = (H1 << 30) | (H1 >>> 2); + H1 = H0; + H0 = t; + + } + + H0 += a; + H1 += b; + H2 += c; + H3 += d; + H4 += e; + } + return [H0, H1, H2, H3, H4]; +}; + +// Public API +export function SHA1(message, options) { + var digestbytes = util.wordsToBytes(_sha1(message)); + return options && options.asBytes ? digestbytes : + options && options.asString ? util.bytesToString(digestbytes) : + util.bytesToHex(digestbytes); +}; \ No newline at end of file diff --git a/main.js b/main.js index e742834c3c866d1b43b584519933e0c7524e0f52..76aa9bd3e58f3fb89b911c5200c26e740a63cb51 100644 --- a/main.js +++ b/main.js @@ -1,17 +1,16 @@ -import Vue from 'vue' -import App from './App' -import store from './store' // store -import plugins from './plugins' // plugins -import './permission' // permission -Vue.use(plugins) - -Vue.config.productionTip = false -Vue.prototype.$store = store - -App.mpType = 'app' - -const app = new Vue({ - ...App -}) - -app.$mount() +import { createSSRApp } from 'vue' +import App from './App' +import store from './store' // store +import { install } from './plugins' // plugins +import './permission' // permission +import { useDict } from '@/utils/dict' + +export function createApp() { + const app = createSSRApp(App) + app.use(store) + app.config.globalProperties.useDict = useDict + install(app) + return { + app + } +} diff --git a/manifest.json b/manifest.json index 03ee107e6808e9100df8f05115435cd007da0820..7aad53226bf9ef7a426f92bd8b1511a2bc89ad4f 100644 --- a/manifest.json +++ b/manifest.json @@ -1,8 +1,8 @@ { - "name" : "若依移动端", - "appid" : "__UNI__25A9D80", - "description" : "", - "versionName" : "1.2.0", + "name" : "怀慈医录", + "appid" : "__UNI__C3C5599", + "description" : "记录中医医案", + "versionName" : "1.0.0", "versionCode" : "100", "transformPx" : false, "app-plus" : { @@ -35,13 +35,15 @@ "" ] }, - "ios" : {}, + "ios" : { + "dSYMs" : false + }, "sdkConfigs" : {} } }, "quickapp" : {}, "mp-weixin" : { - "appid" : "wxccd7e2a0911b3397", + "appid" : "wxe63c6aa88812b004", "setting" : { "urlCheck" : false, "es6" : false, @@ -51,9 +53,12 @@ "optimization" : { "subPackages" : true }, - "usingComponents" : true + "usingComponents" : true, + "uniStatistics" : { + "enable" : true + } }, - "vueVersion" : "2", + "vueVersion" : "3", "h5" : { "template" : "static/index.html", "devServer" : { @@ -65,5 +70,6 @@ "mode" : "hash", "base" : "./" } - } + }, + "locale" : "zh-Hans" } diff --git a/pages.json b/pages.json index 955146f1ee3ca86b5607ec98698a551f83e096e5..39d6734a38e0b8a942106ebd3b37690ce44c6408 100644 --- a/pages.json +++ b/pages.json @@ -1,102 +1,116 @@ { - "pages": [{ - "path": "pages/login", - "style": { - "navigationBarTitleText": "登录" - } - }, { - "path": "pages/register", - "style": { - "navigationBarTitleText": "注册" - } - }, { - "path": "pages/index", - "style": { - "navigationBarTitleText": "若依移动端框架", - "navigationStyle": "custom" - } - }, { - "path": "pages/work/index", - "style": { - "navigationBarTitleText": "工作台" - } - }, { - "path": "pages/mine/index", - "style": { - "navigationBarTitleText": "我的" - } - }, { - "path": "pages/mine/avatar/index", - "style": { - "navigationBarTitleText": "修改头像" - } - }, { - "path": "pages/mine/info/index", - "style": { - "navigationBarTitleText": "个人信息" - } - }, { - "path": "pages/mine/info/edit", - "style": { - "navigationBarTitleText": "编辑资料" - } - }, { - "path": "pages/mine/pwd/index", - "style": { - "navigationBarTitleText": "修改密码" - } - }, { - "path": "pages/mine/setting/index", - "style": { - "navigationBarTitleText": "应用设置" - } - }, { - "path": "pages/mine/help/index", - "style": { - "navigationBarTitleText": "常见问题" - } - }, { - "path": "pages/mine/about/index", - "style": { - "navigationBarTitleText": "关于我们" - } - }, { - "path": "pages/common/webview/index", - "style": { - "navigationBarTitleText": "浏览网页" - } - }, { - "path": "pages/common/textview/index", - "style": { - "navigationBarTitleText": "浏览文本" - } - }], - "tabBar": { - "color": "#000000", - "selectedColor": "#000000", - "borderStyle": "white", - "backgroundColor": "#ffffff", - "list": [{ - "pagePath": "pages/index", - "iconPath": "static/images/tabbar/home.png", - "selectedIconPath": "static/images/tabbar/home_.png", - "text": "首页" - }, { - "pagePath": "pages/work/index", - "iconPath": "static/images/tabbar/work.png", - "selectedIconPath": "static/images/tabbar/work_.png", - "text": "工作台" - }, { - "pagePath": "pages/mine/index", - "iconPath": "static/images/tabbar/mine.png", - "selectedIconPath": "static/images/tabbar/mine_.png", - "text": "我的" - } - ] - }, - "globalStyle": { - "navigationBarTextStyle": "black", - "navigationBarTitleText": "RuoYi", - "navigationBarBackgroundColor": "#FFFFFF" - } -} + "pages": [ + { + "path": "pages/login", + "style": { + "navigationBarTitleText": "登录", + "enablePullDownRefresh": false + } + }, { + "path": "pages/register", + "style": { + "navigationBarTitleText": "注册", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/index", + "style": { + "navigationBarTitleText": "怀慈医录", + "enablePullDownRefresh": false + // "navigationStyle": "custom" + } + }, { + "path": "pages/mine/index", + "style": { + "navigationBarTitleText": "我的", + "enablePullDownRefresh": false + } + }, { + "path": "pages/common/webview/index", + "style": { + "navigationBarTitleText": "浏览网页" + } + }, { + "path": "pages/common/textview/index", + "style": { + "navigationBarTitleText": "浏览文本" + } + }, { + "path": "pages/common/agreements/services", + "style": { + "navigationBarTitleText": "用户协议" + } + }, { + "path": "pages/common/agreements/privacy", + "style": { + "navigationBarTitleText": "隐私协议" + } + }, + + { + "path": "pages/patients/edit", + "style": { + "navigationBarTitleText": "编辑就诊人", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/tcmcases/addCase", + "style": { + "navigationBarTitleText": "添加病案", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/tcmcases/detail", + "style": { + "navigationBarTitleText": "病案详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/tcmcases/prescript", + "style": { + "navigationBarTitleText": "编辑处方", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/patients/add", + "style": { + "navigationBarTitleText": "添加就诊人", + "enablePullDownRefresh": false + } + }, { + "path": "pages/patients/select", + "style": { + "navigationBarTitleText": "选择就诊人", + "enablePullDownRefresh": false + } + } + ], + "tabBar": { + "color": "#000000", + "selectedColor": "#2563eb", + "borderStyle": "white", + "backgroundColor": "#ffffff", + "custom": true, + "list": [{ + "pagePath": "pages/index", + "iconPath": "static/images/tabbar/home.png", + "selectedIconPath": "static/images/tabbar/home_.png", + "text": "首页" + }, { + "pagePath": "pages/mine/index", + "iconPath": "static/images/tabbar/mine.png", + "selectedIconPath": "static/images/tabbar/mine_.png", + "text": "我的" + }] + }, + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "RuoYi", + "navigationBarBackgroundColor": "#FFFFFF" + } +} \ No newline at end of file diff --git a/pages/common/agreements/privacy.vue b/pages/common/agreements/privacy.vue new file mode 100644 index 0000000000000000000000000000000000000000..ef638749b8f4cfa93ac75e9bfd27f6b6c76fd01b --- /dev/null +++ b/pages/common/agreements/privacy.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/pages/common/agreements/services.vue b/pages/common/agreements/services.vue new file mode 100644 index 0000000000000000000000000000000000000000..5f4700881204ccd2be364a5f2c5126bb263de3db --- /dev/null +++ b/pages/common/agreements/services.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/pages/home.vue b/pages/home.vue new file mode 100644 index 0000000000000000000000000000000000000000..bbb5ea77927060e44069126814eaa8e02cddb024 --- /dev/null +++ b/pages/home.vue @@ -0,0 +1,307 @@ + + + + + + + + diff --git a/pages/index.vue b/pages/index.vue index 791e8489dbfd69f56e7f29b2fd1b2b8c34110366..b95f4694176db0387235a4154c21710e59b6c623 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -1,36 +1,190 @@ - - - + + + + + \ No newline at end of file diff --git a/pages/login.vue b/pages/login.vue index 7ca13c33361665d1071e6fb64f9891952c3ccc9f..da26889a97b5aa2b32db40c870803cb7c5f0c7e2 100644 --- a/pages/login.vue +++ b/pages/login.vue @@ -1,9 +1,10 @@ - diff --git a/pages/mine/about/index.vue b/pages/mine/about/index.vue index baffb0dc3c122b2aa492ad34af403b16eded3d72..9e5521bef11eb6ecc042b2112649b466e2ed466c 100644 --- a/pages/mine/about/index.vue +++ b/pages/mine/about/index.vue @@ -1,4 +1,4 @@ -