Browse Source

zhengjianadmin-2025-06-30 12:10:42

genlitex 1 month ago
parent
commit
ece42f0703
3 changed files with 190 additions and 2 deletions
  1. 0 0
      dist/assets/index-B2XQudGJ.js
  2. 2 2
      dist/index.html
  3. 188 0
      src/views/RawMaterialCategoryView.vue

File diff suppressed because it is too large
+ 0 - 0
dist/assets/index-B2XQudGJ.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/6003/assets/index-4bSCNBVS.js"></script>
-    <link rel="stylesheet" crossorigin href="/ide/proxy/6003/assets/index-4owCqU6i.css">
+    <script type="module" crossorigin src="/ide/proxy/6004/assets/index-B2XQudGJ.js"></script>
+    <link rel="stylesheet" crossorigin href="/ide/proxy/6004/assets/index-4owCqU6i.css">
   </head>
   <body>
     <div id="app"></div>

+ 188 - 0
src/views/RawMaterialCategoryView.vue

@@ -0,0 +1,188 @@
+<template>
+  <div class="container mx-auto px-4">
+    <header class="bg-gray-800 text-white p-4 flex justify-between items-center">
+      <h1 class="text-2xl">原料品类管理</h1>
+      <div>
+        <a href="#/add-raw-material" class="mr-2"><button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">新增</button></a>
+        <a href="#/edit-raw-material" class="mr-2"><button class="bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded">修改</button></a>
+        <a href="#" @click.prevent="deleteSelected" class="mr-2"><button class="bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded">删除</button></a>
+        <a href="#" @click.prevent="exportData" class="mr-2"><button class="bg-purple-500 hover:bg-purple-700 text-white font-bold py-2 px-4 rounded">导出</button></a>
+        <a href="#" @click.prevent="importData" class="mr-2"><button class="bg-teal-500 hover:bg-teal-700 text-white font-bold py-2 px-4 rounded">导入</button></a>
+      </div>
+    </header>
+
+    <section class="mt-4">
+      <div class="mb-4">
+        <input v-model="search.materialCode" placeholder="物料编码" class="border p-2 mr-2" />
+        <input v-model="search.materialGroup" placeholder="物料组" class="border p-2 mr-2" />
+        <input v-model="search.categoryOne" placeholder="类别一" class="border p-2 mr-2" />
+        <input v-model="search.categoryTwo" placeholder="类别二" class="border p-2 mr-2" />
+        <input v-model="search.rawMaterialClass" placeholder="原料大类" class="border p-2 mr-2" />
+        <button @click="resetSearch" class="bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded mr-2">重置</button>
+        <button @click="performSearch" class="bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded">查询</button>
+      </div>
+
+      <table class="w-full border-collapse border">
+        <thead>
+          <tr>
+            <th class="border p-2"><input type="checkbox" v-model="selectAll" @change="toggleSelectAll" /></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="index">
+            <td class="border p-2"><input type="checkbox" v-model="selectedItems" :value="item" /></td>
+            <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>
+          </tr>
+        </tbody>
+      </table>
+    </section>
+  </div>
+</template>
+
+<script>
+import { ref, computed } from 'vue';
+
+export default {
+  name: 'RawMaterialCategoryView',
+  setup() {
+    const search = ref({
+      materialCode: '',
+      materialGroup: '',
+      categoryOne: '',
+      categoryTwo: '',
+      rawMaterialClass: ''
+    });
+
+    const items = ref([
+      { materialCode: 'MC001', materialGroup: 'MG001', categoryOne: 'C1', categoryTwo: 'C2', rawMaterialClass: 'RMC1' },
+      { materialCode: 'MC002', materialGroup: 'MG002', categoryOne: 'C3', categoryTwo: 'C4', rawMaterialClass: 'RMC2' },
+      // Add more items as needed
+    ]);
+
+    const selectedItems = ref([]);
+
+    const selectAll = computed({
+      get: () => items.value.length > 0 && selectedItems.value.length === items.value.length,
+      set: (value) => {
+        selectedItems.value = value ? items.value.slice() : [];
+      }
+    });
+
+    const toggleSelectAll = () => {
+      selectAll.value = !selectAll.value;
+    };
+
+    const resetSearch = () => {
+      search.value = {
+        materialCode: '',
+        materialGroup: '',
+        categoryOne: '',
+        categoryTwo: '',
+        rawMaterialClass: ''
+      };
+    };
+
+    const performSearch = () => {
+      // Implement search logic here
+    };
+
+    const deleteSelected = () => {
+      if (selectedItems.value.length > 0) {
+        if (confirm('确定要删除选中的项吗?')) {
+          items.value = items.value.filter(item => !selectedItems.value.includes(item));
+          selectedItems.value = [];
+        }
+      } else {
+        alert('请选择要删除的项');
+      }
+    };
+
+    const exportData = () => {
+      // Implement export logic here
+    };
+
+    const importData = () => {
+      // Implement import logic here
+    };
+
+    const filteredItems = computed(() => {
+      return items.value.filter(item => {
+        return (
+          (!search.value.materialCode || item.materialCode.includes(search.value.materialCode)) &&
+          (!search.value.materialGroup || item.materialGroup.includes(search.value.materialGroup)) &&
+          (!search.value.categoryOne || item.categoryOne.includes(search.value.categoryOne)) &&
+          (!search.value.categoryTwo || item.categoryTwo.includes(search.value.categoryTwo)) &&
+          (!search.value.rawMaterialClass || item.rawMaterialClass.includes(search.value.rawMaterialClass))
+        );
+      });
+    });
+
+    return {
+      search,
+      items,
+      selectedItems,
+      selectAll,
+      toggleSelectAll,
+      resetSearch,
+      performSearch,
+      deleteSelected,
+      exportData,
+      importData,
+      filteredItems
+    };
+  }
+};
+</script>
+
+<style scoped>
+.container {
+  max-width: 1200px;
+}
+
+header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+table {
+  width: 100%;
+  border-collapse: collapse;
+}
+
+th, td {
+  border: 1px solid #ddd;
+  padding: 8px;
+}
+
+th {
+  background-color: #f2f2f2;
+}
+
+@media (max-width: 600px) {
+  header {
+    flex-direction: column;
+    align-items: flex-start;
+  }
+
+  header div {
+    margin-top: 10px;
+  }
+
+  table {
+    display: block;
+    overflow-x: auto;
+  }
+}
+</style>

Some files were not shown because too many files changed in this diff