ktg-mes 改造成 Saas 系統

ktg-mes 改造成 Saas 系統

快速檢驗市場,采用最簡單的方案,即添加表字段

截止2025年8月16日上傳的ktg-mes搭建存在一些問題,搭建可看文章:
搭建ktg-mes

改造

1. 添加租戶表

create table sys_tenant
(tenant_id    bigint auto_increment comment '租戶ID'primary key,tenant_key   varchar(64)             not null comment '租戶唯一標識',company_name varchar(100)            not null comment '公司名稱',contact      varchar(50)             null comment '聯系人',phone        varchar(20)             null comment '聯系電話',status       char        default '0' null comment '狀態(0正常 1停用)',create_by    varchar(64) default ''  null comment '創建者',create_time  datetime                null comment '創建時間',update_by    varchar(64) default ''  null comment '更新者',update_time  datetime                null comment '更新時間',remark       varchar(500)            null comment '備注',constraint uk_company_nameunique (company_name),constraint uk_tenant_keyunique (tenant_key)
)comment '租戶信息表';

2. 登錄頁(login.vue) 添加公司輸入框

...其他代碼<h3 class="title">苦糖果生產執行管理系統</h3><el-form-item prop="companyName"><el-inputv-model="loginForm.companyName"type="text"auto-complete="off"placeholder="公司名稱"><svg-icon slot="prefix" icon-class="tree" class="el-input__icon input-icon" /></el-input></el-form-item><el-form-item prop="username"><el-inputv-model="loginForm.username"type="text"auto-complete="off"placeholder="賬號"><svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /></el-input></el-form-item><el-form-item prop="password"><el-inputv-model="loginForm.password"type="password"auto-complete="off"placeholder="密碼"@keyup.enter.native="handleLogin"><svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" /></el-input></el-form-item>
...其他代碼

inde.vue js 部分


...其他代碼
data() {return {codeUrl: "",loginForm: {companyName: "衡陽眾德智能科技有限公司",username: "testuser",password: "123456",rememberMe: false,code: "",uuid: ""},clientList: [],client: null,loginRules: {companyName: [{ required: true, trigger: "blur", message: "請輸入您的公司名稱" }],username: [{ required: true, trigger: "blur", message: "請輸入您的賬號" }],password: [{ required: true, trigger: "blur", message: "請輸入您的密碼" }],code: [{ required: true, trigger: "change", message: "請輸入驗證碼" }]},loading: false,// 驗證碼開關captchaOnOff: true,// 注冊開關register: false,redirect: undefined};},
...其他代碼getCookie() {const companyName = Cookies.get("companyName");const username = Cookies.get("username");const password = Cookies.get("password");const rememberMe = Cookies.get('rememberMe')this.loginForm = {companyName: companyName === undefined ? this.loginForm.companyName : companyName,username: username === undefined ? this.loginForm.username : username,password: password === undefined ? this.loginForm.password : decrypt(password),rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)};},....其他代碼
this.$refs.loginForm.validate(valid => {if (valid) {this.loading = true;if (this.loginForm.rememberMe) {Cookies.set("companyName", this.loginForm.companyName, { expires: 30 });Cookies.set("username", this.loginForm.username, { expires: 30 });Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });} else {Cookies.remove("companyName");Cookies.remove("username");Cookies.remove("password");Cookies.remove('rememberMe');}this.$store.dispatch("Login", this.loginForm).then(() => {this.$router.push({ path: this.redirect || "/" }).catch(()=>{});}).catch(() => {this.loading = false;if (this.captchaOnOff) {this.getCode();}});}....其他代碼

login.js 代碼

...其他代碼
export function login(companyName, username, password, code, uuid) {const data = {companyName,username,password,code,uuid}return request({url: '/login',headers: {isToken: false},method: 'post',data: data})
}...其他代碼

未完待續…

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93753.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93753.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93753.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【新手易混】find 命令中 -perm 選項的知識點

find 命令是 Linux/Unix 系統中強大的文件查找工具&#xff0c;廣泛用于根據文件名、類型、時間、權限等條件搜索文件。其中&#xff0c;-perm 選項用于按文件權限查找文件&#xff0c;而在 -perm /mode 中出現的斜杠 / 是一種特殊的語法&#xff0c;表示“按位或&#xff08;O…

gdb的load命令和傳給opeocd的monitor flash write_image erase命令的區別

問&#xff1a; "monitor flash write_image erase ${workspaceFolder}/obj/ylad_led_blink.elf", 和 "load", "executable" : "${workspaceFolder}/obj/ylad_led_blink.elf", 的區別&#xff1f;答&#xff1a; 你提到的 "monit…

1. Docker的介紹和安裝

文章目錄1. Docker介紹核心概念核心優勢與虛擬機的區別一句話總結2. Docker的安裝Windows 10/11 安裝 Docker Desktop&#xff08;推薦 WSL2 方式&#xff09;Linux&#xff08;以 Ubuntu / Debian 系為例&#xff09;Docker 是一個開源的容器化平臺&#xff0c;它允許開發者將…

fastdds.ignore_local_endpoints 屬性

Fast DDS 的 fastdds.ignore_local_endpoints 屬性用于控制同一 DomainParticipant 下的本地端點&#xff08;即 DataWriter 和 DataReader&#xff09;是否自動匹配。以下是對該功能的詳細解釋&#xff0c;并翻譯為中文&#xff0c;結合其上下文、實現原理和使用場景&#xff…

華清遠見25072班C語言學習day11

重點內容:函數&#xff1a;定義&#xff1a;返回值類型 函數名(參數列表) { //函數體 }函數的參數列表中可以有多個數據返回值&#xff1a;如果函數沒有返回值可以寫成void 返回值的作用&#xff0c;函數的結果用來返回給主調函數的&#xff0c;如果主調函數處不需要函數的結果…

視覺語言導航(7)——VLN的數據集和評估方法 3.2

這是課上做的筆記&#xff0c;因此很多記得比較急&#xff0c;之后會逐步完善&#xff0c;每節課的邏輯流程寫在大綱部分。成功率(SR)導航誤差(NE)成功加權路徑長度&#xff08;SucceedPLength&#xff09;軌跡長度&#xff08;TL&#xff09;先知成功率&#xff08;OS&#xf…

ElasticSearch不同環境同步索引數據

目的&#xff1a;在生產環境把一個索引的數據同步到測試環境中1、在生產環境導出json數據curl -u "adims_user:xkR%cHwR5I9g" -X GET "http://172.18.251.132:9200/unify_info_mb_sp_aggregatetb_0004/_search?scroll1m" -H Content-Type: applicatio…

咨詢進階——解讀咨詢顧問技能模型

適應人群為咨詢行業從業者、咨詢團隊管理者、想提升咨詢技能的職場人士及咨詢公司培訓人員。主要內容圍繞咨詢顧問技能模型展開,核心包括五大核心能力(解決問題能力,涵蓋洞察力、分析技巧、問題構建等,從識別問題實質到構建新分析方法分層次闡述;管理能力,涉及管理他人與…

2025年- H98-Lc206--51.N皇后(回溯)--Java版

1.題目描述2.思路 二維數組集合 (1&#xff09;N皇后規則 1&#xff09;不能同行&#xff08;同一行不能出現2個皇后&#xff09; 2&#xff09;不能同列&#xff08;同一列不能出現2個皇后&#xff09; 3&#xff09;不能說45度或135度&#xff08;斜對角線不能出現2個皇后&am…

5G + AI + 云:電信技術重塑游戲生態與未來體驗

在數字娛樂蓬勃發展的今天&#xff0c;游戲產業已然成為科技創新的前沿陣地。電信網絡也經歷了一場深刻的蛻變&#xff0c;從最初僅僅是 “內容傳輸管道”&#xff0c;搖身一變成為與游戲深度綁定的技術共生體。5G 不斷刷新著體驗的邊界&#xff0c;AI 徹底顛覆傳統的創作模式&…

【React Hooks】封裝的藝術:如何編寫高質量的 React 自-定義 Hooks

【React Hooks】封裝的藝術&#xff1a;如何編寫高質量的 React 自-定義 Hooks 所屬專欄&#xff1a; 《前端小技巧集合&#xff1a;讓你的代碼更優雅高效》 上一篇&#xff1a; 【React State】告別 useState 濫用&#xff1a;何時應該選擇 useReducer 作者&#xff1a; 碼力…

華為GaussDB的前世今生:國產數據庫崛起之路

在數據庫領域&#xff0c;華為GaussDB已成為一顆耀眼的明星&#xff0c;為企業核心業務數字化轉型提供堅實的數據底座。但這并非一蹴而就&#xff0c;其背后是長達二十余年的技術沉淀、戰略投入與持續創新。本文將深入探尋華為GaussDB的歷史沿革與核心技術細節&#xff0c;展現…

數據結構初階(16)排序算法——歸并排序

2.4 歸并排序 歸并排序&#xff08;Merge Sort&#xff09;是基于分治思想的經典排序算法。核心邏輯&#xff1a; 分而治之——把復雜排序問題拆分成簡單子問題解決&#xff0c;再合并子問題的結果。聯系鏈表的合并&#xff1a;兩個有序鏈表l1、l2創建新鏈表l3&#xff08;帶頭…

MATLAB實現匈牙利算法求解二分圖最大匹配

MATLAB實現匈牙利算法求解二分圖最大匹配 匈牙利算法&#xff08;也稱為Kuhn-Munkres算法&#xff09;是解決二分圖最大匹配問題的經典算法。 代碼 function [matching, max_match] hungarian_algorithm(adjMatrix)% HUNGARIAN_ALGORITHM 實現匈牙利算法求解二分圖最大匹配% 輸…

自定義table

更好<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><title>數據表格</title><style>* {margin: 0;padding: 0;box-sizing: border-box;font-size: 14px;}html,body {width: 100%;height: 100%…

面向R語言用戶的Highcharts

如果您喜歡使用 R 進行數據科學創建交互式數據可視化&#xff0c;那么請你收藏。今天&#xff0c;我們將使用折線圖、柱狀圖和散點圖來可視化資產回報。對于我們的數據&#xff0c;我們將使用以下 5 只 ETF 的 5 年月回報率。 SPY (S&P500 fund)EFA (a non-US equities fun…

【測試工具】OnDo SIP Server--輕松搭建一個語音通話服務器

前言 Ondo SIP Server 是一款基于 SIP(Session Initiation Protocol)協議的服務器軟件&#xff0c;主要用于實現 VoIP(Voice over IP)通信&#xff0c;支持語音通話、視頻會議等多媒體會話管理&#xff0c;非常適合學習和測試VoIP的基本功能。本文介紹Ondo SIP Server的安裝、…

瘋狂星期四文案網第42天運營日記

網站運營第42天&#xff0c;點擊觀站&#xff1a; 瘋狂星期四 crazy-thursday.com 全網最全的瘋狂星期四文案網站 運營報告 今日訪問量 今日搜索引擎收錄情況 網站優化點 優化一些發現的seo錯誤 增加顏文字欄目 增加了一些tag

使用空模型實例調用輔助函數,確定在量化過程中哪些層會被跳過(43)

在Facebook的OPT-350M中,模型的頭部(lm_head)與解碼器的嵌入標記層(decoder.embed_tokens)共享其權重。 print(model.model.decoder.embed_tokens) print(model.lm_head)輸出結果 Embedding(50272, 512

從0-1使用Fastmcp開發一個MCP服務,并部署到阿里云百煉 -持續更新中

目的&#xff1a; 在本地使用fastmcp開發一個mcp,然后注冊到阿里云的百煉里面。實現在百煉里面創建智能體的時候直接引用自己開發的MCP 已完成&#xff1a;本地環境安裝 待完成&#xff1a; 1.根據需求實現一個MCP中可以調用某應用的多個API即 mcp.tool()、mcp.prompt()、接入大…