Signed-off-by: 吴文峰 <kevin@lmve.net>
This commit is contained in:
2026-01-13 21:08:19 +08:00
parent 3acc19ffd8
commit 0b67a9bf09
16 changed files with 420 additions and 117 deletions
+9 -3
View File
@@ -1,4 +1,10 @@
{
"errorpage": {
"404_title": "404 Resource Not Found",
"404_msg_title": "Oops… You just found an error page",
"404_msg": "We are sorry but the page you are looking for was not found",
"404_back_home": "Take me home"
},
"appname": {
"home": "Home",
"login": "Login",
@@ -106,9 +112,9 @@
},
"settings": {
"cancel": "Cancel",
"basic_information":"Basic Information",
"contact_information":"Contact Information",
"security_settings":"Security Settings",
"basic_information": "Basic Information",
"contact_information": "Contact Information",
"security_settings": "Security Settings",
"account_settings": "Account Settings",
"my_account": "My Account",
"profile_information": "Profile Information",
+60 -54
View File
@@ -1,60 +1,66 @@
{
"errorpage": {
"404_title": "404 资源未找到",
"404_msg_title": "抱歉…您刚刚发现了一个错误页面",
"404_msg": "您所查找的页面不存在",
"404_back_home": "返回首页"
},
"appname": {
"home": "主页",
"login": "登录",
"forgot_password": "忘记密码",
"register": "注册",
"schedule":"日程",
"purchase":"采购",
"warehouse":"仓库"
"schedule": "日程",
"purchase": "采购",
"warehouse": "仓库"
},
"cropper": {
"cropper": {
"select_image": "选择图片",
"select_File": "选择文件",
"crop_image": "裁剪图片",
"cancel": "取消",
"closs": "关闭"
},
"purchase":{
"purchase_list":"采购列表",
"item_name":"物品名称",
"purpose":"用途",
"unit":"单位",
"quantity":"数量",
"unit_price":"单价",
"total_price":"总价",
"created_at":"创建日期",
"updated_at":"更新日期",
"status":"状态",
"completed":"已完成",
"pending":"待处理",
"show":"显示",
"entries":"个物件",
"search":"搜索",
"add_part":"添加订单",
"exp_report":"生成报告"
"closs": "关闭"
},
"purchase": {
"purchase_list": "采购列表",
"item_name": "物品名称",
"purpose": "用途",
"unit": "单位",
"quantity": "数量",
"unit_price": "单价",
"total_price": "总价",
"created_at": "创建日期",
"updated_at": "更新日期",
"status": "状态",
"completed": "已完成",
"pending": "待处理",
"show": "显示",
"entries": "个物件",
"search": "搜索",
"add_part": "添加订单",
"exp_report": "生成报告"
},
"schedule": {
"my_schedule":"我的日程",
"add_event":"添加事件",
"event_title":"事件标题",
"event_date":"事件日期",
"event_time":"事件时间",
"event_description":"事件描述",
"save_event":"保存事件",
"no_events":"没有找到事件",
"delete_event":"删除事件",
"edit_event":"编辑事件",
"tody":"今天",
"week":"本周",
"month":"本月",
"previous_month":"上月",
"next_month":"下月",
"previous_year":"上年",
"next_year":"下年"
"my_schedule": "我的日程",
"add_event": "添加事件",
"event_title": "事件标题",
"event_date": "事件日期",
"event_time": "事件时间",
"event_description": "事件描述",
"save_event": "保存事件",
"no_events": "没有找到事件",
"delete_event": "删除事件",
"edit_event": "编辑事件",
"tody": "今天",
"week": "本周",
"month": "本月",
"previous_month": "上月",
"next_month": "下月",
"previous_year": "上年",
"next_year": "下年"
},
"message": {
"functionality_not_yet_developed":"功能未开发",
"functionality_not_yet_developed": "功能未开发",
"hello": "你好",
"welcome": "欢迎",
"dark_mode": "深色模式",
@@ -95,20 +101,20 @@
"user_settings": "个人资料",
"preferences": "偏好设置",
"administrator": "管理员",
"select_date":"选择日期",
"save_ok":"保存成功",
"change_ok":"更改成功",
"type_old_pass":"输入旧密码",
"type_new_pass":"输入新密码",
"type_cof_pass":"确认新密码",
"old_pass_incorrect":"旧密码不正确",
"confirm_password_incorrect":"确认密码不正确"
"select_date": "选择日期",
"save_ok": "保存成功",
"change_ok": "更改成功",
"type_old_pass": "输入旧密码",
"type_new_pass": "输入新密码",
"type_cof_pass": "确认新密码",
"old_pass_incorrect": "旧密码不正确",
"confirm_password_incorrect": "确认密码不正确"
},
"settings": {
"cancel": "取消",
"basic_information":"基本信息",
"contact_information":"联系信息",
"security_settings":"安全设置",
"basic_information": "基本信息",
"contact_information": "联系信息",
"security_settings": "安全设置",
"account_settings": "个人设置",
"my_account": "我的账户",
"profile_information": "个人信息",
@@ -122,7 +128,7 @@
"female": "女",
"birthday": "生日",
"admin": "管理员",
"website_settings":"网站设置",
"website_settings": "网站设置",
"site_name": "网站名称",
"logo_settings": "Logo设置",
"site_description": "网站描述",
+14 -4
View File
@@ -13,6 +13,11 @@ const router = createRouter({
name: "home",
component: HomeView,
},
{
path: "/404",
name: "404",
component: () => import("../views/404.vue"),
},
{
path: "/settings/account",
name: "settings account",
@@ -61,7 +66,7 @@ const router = createRouter({
name: "admin",
component: () => import("../views/adminView.vue"),
},
{
path: "/schedule",
name: "schedule",
@@ -70,13 +75,18 @@ const router = createRouter({
{
path: "/purchase",
name: "purchase",
component: () => import("../views/purchaseView.vue"),
component: () => import("../views/purchase/purchase.vue"),
},
{
{
path: "/purchase/addorder",
name: "purchase",
component: () => import("../views/purchase/addorder.vue"),
},
{
path: "/warehouse",
name: "warehouse",
component: () => import("../views/warehouse.vue"),
}
},
],
});
+1 -1
View File
@@ -41,7 +41,7 @@ export const useUserStore = defineStore("user", () => {
const getUserAvatarPath = () => {
if (userInfo.value != null) {
if (userInfo.value.AvatarPath != "") {
return userInfo.value.AvatarPath;
return "/api/static/avatar/"+userInfo.value.AvatarPath;
}
}
return "/ava.svg";
+59
View File
@@ -0,0 +1,59 @@
<script setup>
import { onMounted, watch, ref } from "vue";
import { useI18n } from "vue-i18n";
import { useRouter } from "vue-router";
const { t, locale } = useI18n();
function functionupdataTitle() {
document.title = "Operations." + t("errorpage.404_title");
}
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle();
});
onMounted(() => {
//console.log("account mounted");
//username.value.value="Kevin";
functionupdataTitle();
});
</script>
<template>
<div>
<div class="page page-center">
<div class="container-tight py-4">
<div class="empty">
<div class="empty-header">404</div>
<p class="empty-title">{{ t("errorpage.404_msg_title") }}</p>
<p class="empty-subtitle text-secondary">
{{ t("errorpage.404_msg") }}
</p>
<div class="empty-action">
<router-link to="/" class="btn btn-primary">
<!-- Download SVG icon from http://tabler-icons.io/i/arrow-left -->
<svg
xmlns="http://www.w3.org/2000/svg"
class="icon"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="2"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M5 12l14 0" />
<path d="M5 12l6 6" />
<path d="M5 12l6 -6" />
</svg>
{{ t("errorpage.404_back_home") }}
</router-link>
</div>
</div>
</div>
</div>
</div>
</template>
@@ -0,0 +1,21 @@
<script setup>
import { onMounted, watch, ref } from "vue";
import { useI18n } from "vue-i18n";
const { t, locale } = useI18n();
function functionupdataTitle() {
document.title = "Operations." + t("purchase.add_part");
}
onMounted(() => {
functionupdataTitle();
});
// 监听语言变化,更新标题
watch(locale, () => {
functionupdataTitle();
});
</script>
<template>
add_part
</template>
@@ -17,17 +17,15 @@ watch(locale, () => {
</script>
<template>
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">{{ t('purchase.purchase_list') }}</h3>
<h3 class="card-title">{{ t("purchase.purchase_list") }}</h3>
</div>
<div class="card-body border-bottom py-3">
<div class="d-flex">
<div class="text-secondary">
{{ t('purchase.show') }}
{{ t("purchase.show") }}
<div class="mx-2 d-inline-block">
<input
type="text"
@@ -37,17 +35,19 @@ watch(locale, () => {
aria-label="Invoices count"
/>
</div>
{{ t('purchase.entries') }}
{{ t("purchase.entries") }}
</div>
<div class="ms-auto text-secondary">
<button class="btn btn-info m-1">{{ t('purchase.add_part') }}</button>
<button class="btn m-1">{{ t('purchase.exp_report') }}</button>
<router-link to="/purchase/addorder" class="btn btn-info m-1">
{{ t("purchase.add_part") }}
</router-link>
<button class="btn m-1">{{ t("purchase.exp_report") }}</button>
</div>
<div class="ms-auto text-secondary">
{{ t('purchase.search') }}
{{ t("purchase.search") }}
<div class="ms-2 d-inline-block mr-2">
<input
type="text"
@@ -55,7 +55,6 @@ watch(locale, () => {
aria-label="Search invoice"
/>
</div>
</div>
</div>
</div>
@@ -89,46 +88,39 @@ watch(locale, () => {
<path d="M6 15l6 -6l6 6" />
</svg>
</th>
<th class="col-5">{{ t('purchase.item_name') }}</th>
<th class="col-1">{{ t('purchase.purpose') }}</th>
<th class="w-1">{{ t('purchase.unit') }}</th>
<th class="w-1">{{ t('purchase.quantity') }}</th>
<th class="w-1">{{ t('purchase.unit_price') }}</th>
<th class="w-1">{{ t('purchase.total_price') }}</th>
<th class="w-1">{{ t('purchase.created_at') }}</th>
<th class="w-1">{{ t('purchase.updated_at') }}</th>
<th class="w-1">{{ t('purchase.status') }}</th>
<th class="col-5">{{ t("purchase.item_name") }}</th>
<th class="col-1">{{ t("purchase.purpose") }}</th>
<th class="w-1">{{ t("purchase.unit") }}</th>
<th class="w-1">{{ t("purchase.quantity") }}</th>
<th class="w-1">{{ t("purchase.unit_price") }}</th>
<th class="w-1">{{ t("purchase.total_price") }}</th>
<th class="w-1">{{ t("purchase.created_at") }}</th>
<th class="w-1">{{ t("purchase.updated_at") }}</th>
<th class="w-1">{{ t("purchase.status") }}</th>
<th class="w-1"></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input
class="form-check-input m-0 align-middle"
type="checkbox"
aria-label="Select invoice"
/>
</td>
<td><span class="text-muted">001</span></td>
<td>
办公室用纸
</td>
<td>办公用品</td>
<td></td>
<td>10</td>
<td>15.00</td>
<td>150.00</td>
<td>2024-06-01</td>
<td>2024-06-05</td>
<td>
<span class="badge bg-success me-1"></span> 已完成
</td>
<td class="text-end">
</td>
<td>
<input
class="form-check-input m-0 align-middle"
type="checkbox"
aria-label="Select invoice"
/>
</td>
<td><span class="text-muted">001</span></td>
<td>办公室用纸</td>
<td>办公用品</td>
<td></td>
<td>10</td>
<td>15.00</td>
<td>150.00</td>
<td>2024-06-01</td>
<td>2024-06-05</td>
<td><span class="badge bg-success me-1"></span> 已完成</td>
<td class="text-end"></td>
</tr>
</tbody>
</table>
</div>