diff --git a/package.json b/package.json index 3152366..055e1e3 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "uuid": "^11.1.0", "vite-plugin-vue-devtools": "^7.7.5", "vue": "^3.5.13", + "vue-draggable-plus": "^0.6.0", "vue-router": "^4.5.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5520840..e565739 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,6 +50,9 @@ importers: vue: specifier: ^3.5.13 version: 3.5.13 + vue-draggable-plus: + specifier: ^0.6.0 + version: 0.6.0(@types/sortablejs@1.15.8) vue-router: specifier: ^4.5.0 version: 4.5.0(vue@3.5.13) @@ -1084,6 +1087,9 @@ packages: '@types/node@16.18.126': resolution: {integrity: sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==} + '@types/sortablejs@1.15.8': + resolution: {integrity: sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==} + '@types/validator@13.15.0': resolution: {integrity: sha512-nh7nrWhLr6CBq9ldtw0wx+z9wKnnv/uTVLA9g/3/TcOYxbpOSZE+MhKPmWqU+K0NvThjhv12uD8MuqijB0WzEA==} @@ -2643,6 +2649,15 @@ packages: yaml: optional: true + vue-draggable-plus@0.6.0: + resolution: {integrity: sha512-G5TSfHrt9tX9EjdG49InoFJbt2NYk0h3kgjgKxkFWr3ulIUays0oFObr5KZ8qzD4+QnhtALiRwIqY6qul4egqw==} + peerDependencies: + '@types/sortablejs': ^1.15.0 + '@vue/composition-api': '*' + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue-router@4.5.0: resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==} peerDependencies: @@ -3731,6 +3746,8 @@ snapshots: '@types/node@16.18.126': {} + '@types/sortablejs@1.15.8': {} + '@types/validator@13.15.0': {} '@vitejs/plugin-legacy@6.1.1(terser@5.39.0)(vite@6.3.2(jiti@2.4.2)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))': @@ -5351,6 +5368,10 @@ snapshots: terser: 5.39.0 yaml: 2.7.1 + vue-draggable-plus@0.6.0(@types/sortablejs@1.15.8): + dependencies: + '@types/sortablejs': 1.15.8 + vue-router@4.5.0(vue@3.5.13): dependencies: '@vue/devtools-api': 6.6.4 diff --git a/src/App.vue b/src/App.vue index 453037f..11dea8b 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,17 +1,23 @@ diff --git a/src/components/Talk/index.vue b/src/components/Talk/index.vue index 61402a7..ca9dcdb 100644 --- a/src/components/Talk/index.vue +++ b/src/components/Talk/index.vue @@ -40,8 +40,12 @@ const changeInput = debounce((value) => { } }, 2000); -const pressEnter = () => { - modelValue.value.push(...input.value.split('#').filter(Boolean).map(item => `#${item}`)); +const pressEnter = (_input, e) => { + const temp = input.value.split('#').filter(Boolean).map(item => `#${item}`); + nextTick(() => { + modelValue.value.pop(); + modelValue.value.push(...temp); + }) } diff --git a/src/components/XImage/Preview.vue b/src/components/XImage/Preview.vue new file mode 100644 index 0000000..29eed8b --- /dev/null +++ b/src/components/XImage/Preview.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/src/hooks/useTableQuery.js b/src/hooks/useTableQuery.js index 1c51b0f..e510b89 100644 --- a/src/hooks/useTableQuery.js +++ b/src/hooks/useTableQuery.js @@ -57,7 +57,7 @@ function useTableQuery({ watch( () => [pagination.current, pagination.pageSize], - () => fetchData(), + (val) => fetchData(), {deep: true, immediate: immediate} ) diff --git a/src/pages/manage-materials/manage-materials.vue b/src/pages/manage-materials/manage-materials.vue new file mode 100644 index 0000000..7f5d9d8 --- /dev/null +++ b/src/pages/manage-materials/manage-materials.vue @@ -0,0 +1,217 @@ + + + + + diff --git a/src/pages/merchant/components/AddMaterial.vue b/src/pages/merchant/components/AddMaterial.vue index 418b186..0ce313a 100644 --- a/src/pages/merchant/components/AddMaterial.vue +++ b/src/pages/merchant/components/AddMaterial.vue @@ -6,13 +6,14 @@ import Api from "../../../api/index.js"; import {v4} from "uuid"; import MaterialSource from "./MaterialSource.vue"; import {useSystemStore} from "../../../pinia/SystemStore/index.js"; +import {vDraggable} from 'vue-draggable-plus' const SystemStore = useSystemStore(); const MaterialSourceRef = ref(); const visible = ref(false); const targetList = reactive([]); const emits = defineEmits(['success']); -const {id, material} = defineProps({ +const {id, material, disabled} = defineProps({ id: { type: Number, default: null, @@ -20,6 +21,10 @@ const {id, material} = defineProps({ material: { type: Object, default: null, + }, + disabled: { + type: Boolean, + default: false, } }); @@ -57,10 +62,10 @@ const success = async () => {