瀏覽代碼

admin-2025-07-29 02:51:11

genlitex 4 天之前
父節點
當前提交
5c9ee09ec6

+ 1 - 1
dist/assets/LoginView-Cfxh2mrh.js → dist/assets/LoginView-B9nz7psf.js

@@ -1 +1 @@
-import{_ as o,c as t,a as e,o as s}from"./index-BKM4pekJ.js";const a={name:"LoginView"},n={class:"flex items-center justify-center min-h-screen bg-gray-100"};function r(i,d,c,f,l,m){return s(),t("div",n,d[0]||(d[0]=[e('<div class="bg-white p-8 rounded-lg shadow-md w-full max-w-md" data-v-fd22d47c><h2 class="text-2xl font-bold mb-6" data-v-fd22d47c>Login</h2><form data-v-fd22d47c><div class="mb-4" data-v-fd22d47c><label for="username" class="block text-sm font-medium text-gray-700" data-v-fd22d47c>Username</label><input type="text" id="username" class="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" data-v-fd22d47c></div><div class="mb-6" data-v-fd22d47c><label for="password" class="block text-sm font-medium text-gray-700" data-v-fd22d47c>Password</label><input type="password" id="password" class="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" data-v-fd22d47c></div><button type="submit" class="w-full bg-indigo-600 text-white font-bold py-2 px-4 rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" data-v-fd22d47c>Login</button></form></div>',1)]))}const b=o(a,[["render",r],["__scopeId","data-v-fd22d47c"]]);export{b as default};
+import{_ as o,c as t,a as e,o as s}from"./index-RzmkUbAC.js";const a={name:"LoginView"},n={class:"flex items-center justify-center min-h-screen bg-gray-100"};function r(i,d,c,f,l,m){return s(),t("div",n,d[0]||(d[0]=[e('<div class="bg-white p-8 rounded-lg shadow-md w-full max-w-md" data-v-fd22d47c><h2 class="text-2xl font-bold mb-6" data-v-fd22d47c>Login</h2><form data-v-fd22d47c><div class="mb-4" data-v-fd22d47c><label for="username" class="block text-sm font-medium text-gray-700" data-v-fd22d47c>Username</label><input type="text" id="username" class="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" data-v-fd22d47c></div><div class="mb-6" data-v-fd22d47c><label for="password" class="block text-sm font-medium text-gray-700" data-v-fd22d47c>Password</label><input type="password" id="password" class="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" data-v-fd22d47c></div><button type="submit" class="w-full bg-indigo-600 text-white font-bold py-2 px-4 rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" data-v-fd22d47c>Login</button></form></div>',1)]))}const b=o(a,[["render",r],["__scopeId","data-v-fd22d47c"]]);export{b as default};

文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index-4owCqU6i.css


文件差異過大導致無法顯示
+ 0 - 0
dist/assets/index-BDtE0HKU.css


文件差異過大導致無法顯示
+ 0 - 5
dist/assets/index-BKM4pekJ.js


文件差異過大導致無法顯示
+ 5 - 0
dist/assets/index-RzmkUbAC.js


+ 2 - 2
dist/index.html

@@ -5,8 +5,8 @@
     <link rel="icon" type="image/svg+xml" href="/vite.svg" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>Vite + Vue</title>
-    <script type="module" crossorigin src="/ide/proxy/6000/assets/index-BKM4pekJ.js"></script>
-    <link rel="stylesheet" crossorigin href="/ide/proxy/6000/assets/index-4owCqU6i.css">
+    <script type="module" crossorigin src="/ide/proxy/6005/assets/index-RzmkUbAC.js"></script>
+    <link rel="stylesheet" crossorigin href="/ide/proxy/6005/assets/index-BDtE0HKU.css">
   </head>
   <body>
     <div id="app"></div>

+ 6 - 0
src/router/index.js

@@ -1,5 +1,6 @@
 import { createRouter, createWebHashHistory } from 'vue-router'
 import HomeView from '../views/HomeView.vue'
+import RawMaterialCategoryManagement from '../views/RawMaterialCategoryManagement.vue'
 import MinimalistView from '../assets/templates/ui-standard/MinimalistView.vue'
 import DarkModeView from '../assets/templates/ui-standard/DarkModeView.vue'
 import RetroView from '../assets/templates/ui-standard/RetroView.vue'
@@ -162,6 +163,11 @@ const routes = [
     name: 'Login',
     component: () => import('../views/LoginView.vue')
   },
+  {
+    path: '/raw-material-category-management',
+    name: 'RawMaterialCategoryManagement',
+    component: RawMaterialCategoryManagement
+  },
   {
     path: '/:pathMatch(.*)*',
     redirect: '/'

+ 139 - 0
src/views/RawMaterialCategoryManagement.vue

@@ -0,0 +1,139 @@
+<template>
+  <div class="container mx-auto p-4">
+    <header class="mb-4">
+      <h1 class="text-2xl font-bold">原料品类管理</h1>
+      <div class="mt-4 flex space-x-2">
+        <a href="#/add-raw-material" class="bg-blue-500 text-white px-4 py-2 rounded">新增</a>
+        <a href="#/edit-raw-material" class="bg-green-500 text-white px-4 py-2 rounded">修改</a>
+        <a href="#" class="bg-red-500 text-white px-4 py-2 rounded">删除</a>
+        <a href="#" class="bg-yellow-500 text-white px-4 py-2 rounded">导出</a>
+        <a href="#" class="bg-gray-500 text-white px-4 py-2 rounded">导入</a>
+      </div>
+    </header>
+
+    <div class="mb-4">
+      <div class="grid grid-cols-5 gap-4">
+        <input type="text" v-model="searchCriteria.materialCode" placeholder="物料编码" class="border p-2 rounded" />
+        <input type="text" v-model="searchCriteria.materialGroup" placeholder="物料组" class="border p-2 rounded" />
+        <input type="text" v-model="searchCriteria.categoryOne" placeholder="类别一" class="border p-2 rounded" />
+        <input type="text" v-model="searchCriteria.categoryTwo" placeholder="类别二" class="border p-2 rounded" />
+        <input type="text" v-model="searchCriteria.rawMaterialClass" placeholder="原料大类" class="border p-2 rounded" />
+      </div>
+      <div class="mt-2 flex justify-between">
+        <button @click="resetSearch" class="bg-gray-300 text-black px-4 py-2 rounded">重置</button>
+        <button @click="performSearch" class="bg-blue-500 text-white px-4 py-2 rounded">查询</button>
+      </div>
+    </div>
+
+    <table class="w-full border-collapse border">
+      <thead>
+        <tr>
+          <th class="border p-2">序号</th>
+          <th class="border p-2">物料编码</th>
+          <th class="border p-2">物料组</th>
+          <th class="border p-2">类别一</th>
+          <th class="border p-2">类别二</th>
+          <th class="border p-2">原料大类</th>
+          <th class="border p-2">选择</th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr v-for="(item, index) in filteredItems" :key="item.id">
+          <td class="border p-2">{{ index + 1 }}</td>
+          <td class="border p-2">{{ item.materialCode }}</td>
+          <td class="border p-2">{{ item.materialGroup }}</td>
+          <td class="border p-2">{{ item.categoryOne }}</td>
+          <td class="border p-2">{{ item.categoryTwo }}</td>
+          <td class="border p-2">{{ item.rawMaterialClass }}</td>
+          <td class="border p-2">
+            <input type="checkbox" v-model="selectedItems" :value="item.id" />
+          </td>
+        </tr>
+      </tbody>
+    </table>
+  </div>
+</template>
+
+<script>
+import { ref, computed } from 'vue';
+
+export default {
+  setup() {
+    const searchCriteria = ref({
+      materialCode: '',
+      materialGroup: '',
+      categoryOne: '',
+      categoryTwo: '',
+      rawMaterialClass: ''
+    });
+
+    const items = ref([
+      // Sample data
+      { id: 1, materialCode: 'A123', materialGroup: 'Group1', categoryOne: 'Cat1', categoryTwo: 'SubCat1', rawMaterialClass: 'Class1' },
+      { id: 2, materialCode: 'B456', materialGroup: 'Group2', categoryOne: 'Cat2', categoryTwo: 'SubCat2', rawMaterialClass: 'Class2' },
+      // Add more sample data as needed
+    ]);
+
+    const selectedItems = ref([]);
+
+    const filteredItems = computed(() => {
+      return items.value.filter(item => {
+        return (
+          (!searchCriteria.value.materialCode || item.materialCode.includes(searchCriteria.value.materialCode)) &&
+          (!searchCriteria.value.materialGroup || item.materialGroup.includes(searchCriteria.value.materialGroup)) &&
+          (!searchCriteria.value.categoryOne || item.categoryOne.includes(searchCriteria.value.categoryOne)) &&
+          (!searchCriteria.value.categoryTwo || item.categoryTwo.includes(searchCriteria.value.categoryTwo)) &&
+          (!searchCriteria.value.rawMaterialClass || item.rawMaterialClass.includes(searchCriteria.value.rawMaterialClass))
+        );
+      });
+    });
+
+    const resetSearch = () => {
+      searchCriteria.value = {
+        materialCode: '',
+        materialGroup: '',
+        categoryOne: '',
+        categoryTwo: '',
+        rawMaterialClass: ''
+      };
+    };
+
+    const performSearch = () => {
+      // Search logic is handled by the computed property `filteredItems`
+    };
+
+    return {
+      searchCriteria,
+      items,
+      selectedItems,
+      filteredItems,
+      resetSearch,
+      performSearch
+    };
+  }
+};
+</script>
+
+<style scoped>
+.container {
+  max-width: 1200px;
+}
+
+table {
+  width: 100%;
+  border-collapse: collapse;
+}
+
+th, td {
+  border: 1px solid #ddd;
+  padding: 8px;
+}
+
+th {
+  background-color: #f4f4f4;
+}
+
+input[type="checkbox"] {
+  accent-color: #007bff;
+}
+</style>

部分文件因文件數量過多而無法顯示