tianyun 4 bulan lalu
induk
melakukan
de726125da
2 mengubah file dengan 101 tambahan dan 66 penghapusan
  1. 3 2
      simple-demo/excalidraw-versions.html
  2. 98 64
      simple-demo/excalidraw_all.html

+ 3 - 2
simple-demo/excalidraw-versions.html

@@ -3,6 +3,9 @@
 <head>
     <meta charset="UTF-8">
     <title>所有版本</title>
+
+    <script src="js/jquery.min.js"></script>
+    <script src="js/util.js"></script>
     <script>
         $(document).ready(function () {
             // 获取url中的参数a和title
@@ -66,8 +69,6 @@
             });
         }
     </script>
-    <script src="js/jquery.min.js"></script>
-    <script src="js/util.js"></script>
 </head>
 <body>
 <p>版本如下:</p>

+ 98 - 64
simple-demo/excalidraw_all.html

@@ -6,86 +6,120 @@
     <script src="js/jquery.min.js"></script>
     <script src="js/login.js"></script>
     <script src="js/util.js"></script>
+    <script src="js/vue3.global.prod.js"></script>
+    <script src="js/axios.min.js"></script>
 </head>
 <body>
-<div id="nameList"></div>
-<ul id="list"></ul>
+<div id="app">
+    <div id="nameList">
+        <span v-for="name in names" :key="name.id" style="margin-right: 1.5em;min-width: 5em">
+            <a  href="#" @click.prevent="loadList(name.id)">
+            {{ name.name }} - ({{ name.count }})
+        </a>
+        </span>
+
+    </div>
+    <ul id="list">
+        <li v-for="item in listItems" :key="item.id">
+            <a :href="getUrl(item)" target="_blank">{{ item.name }}_{{ item.version }}</a>
+            &nbsp;&nbsp;&nbsp;
+            <button @click="confirmDelete(item.id, item.version)">删除</button>
+        </li>
+    </ul>
+</div>
+
 <script>
-    $(function () {
-        if (!checkLogin()) {
-            return;
-        }
-        let urlParams = new URLSearchParams(window.location.search);
-        let idParam = urlParams.get('id');
-        if (idParam) {
-            loadList(idParam);
-        } else {
-            $.getJSON('https://php.tianyunperfect.cn/controller/excalidraw.php?action=getAllName', function (result) {
-                if (result.code === 200) {
-                    let names = result.data;
-                    let nameListHtml = '';
-                    for (let i = 0; i < names.length; i++) {
-                        nameListHtml += `<a href="?id=${names[i].id}">${names[i].name} - (${names[i].count})</a>`;
-                        if (i < names.length - 1) {
-                            nameListHtml += ' &nbsp;|&nbsp; ';
-                        }
+    const { createApp, ref, onMounted } = Vue;
+
+    createApp({
+        setup() {
+            const names = ref([]);
+            const listItems = ref([]);
+            const currentId = ref(null);
+            if (!checkLogin()) {
+                return;
+            }
+
+            const loadNames = async () => {
+                try {
+                    const response = await axios.get('https://php.tianyunperfect.cn/controller/excalidraw.php?action=getAllName');
+                    if (response.data.code === 200) {
+                        names.value = response.data.data;
+                    } else {
+                        alert(response.data.message);
                     }
-                    $('#nameList').html(nameListHtml);
-                    $('#nameList a').click(function (e) {
-                        e.preventDefault();
-                        let id = $(this).attr('href').split('=')[1];
-                        loadList(id);
-                    });
-                } else {
-                    alert(result.message);
+                } catch (error) {
+                    console.error('加载名称列表失败', error);
+                    alert('加载名称列表失败');
                 }
-            });
-        }
+            };
 
-        function loadList(id) {
-            $.getJSON('https://php.tianyunperfect.cn/controller/excalidraw.php?action=get_by_id&id=' + id, function (result) {
-                if (result.code === 200) {
-                    let data = result.data;
-                    let listHtml = '';
-                    for (let i = 0; i < data.length; i++) {
-                        let a = data[i].id;
-                        let title = data[i].name;
-                        let version = data[i].version;
-                        let url = 'https://excalidraw.tianyunperfect.cn/?a=' + a + '&version=' + version;
-                        listHtml += '<li><a href="' + url + '" target="_blank">' + title + '_' + version + '</a>&nbsp;&nbsp;&nbsp;<button class="delete-btn" data-id="' + a + '" data-version="' + version + '">删除</button></li>';
+            const loadList = async (id) => {
+                currentId.value = id;
+                try {
+                    const response = await axios.get(`https://php.tianyunperfect.cn/controller/excalidraw.php?action=get_by_id&id=${id}`);
+                    if (response.data.code === 200) {
+                        listItems.value = response.data.data;
+                        // 如果没有数据,就根据id,重新加载名称列表
+                        if (listItems.value.length === 0) {
+                            await loadNames();
+                        }
+                    } else {
+                        alert(response.data.message);
                     }
-                    $('#list').html(listHtml);
 
-                    $('.delete-btn').click(function () {
-                        if (confirm('确认要删除吗?')) {
-                            let id = $(this).data('id');
-                            let version = $(this).data('version');
-                            deleteData(id, version);
-                        }
-                    });
-                } else {
-                    alert(result.message);
+                } catch (error) {
+                    console.error('加载列表失败', error);
+                    alert('加载列表失败');
                 }
-            });
-        }
+            };
+
+            const getUrl = (item) => {
+                return `https://excalidraw.tianyunperfect.cn/?a=${item.id}&version=${item.version}`;
+            };
+
+            const confirmDelete = (id, version) => {
+                if (confirm('确认要删除吗?')) {
+                    deleteData(id, version);
+                }
+            };
 
-        function deleteData(id, version) {
-            $.ajax({
-                url: 'https://php.tianyunperfect.cn/controller/excalidraw.php?action=delete&id=' + id + '&version=' + version,
-                type: 'DELETE',
-                success: function (result) {
-                    if (result.code === 200) {
-                        loadList(id);
+            const deleteData = async (id, version) => {
+                try {
+                    const response = await axios.delete(`https://php.tianyunperfect.cn/controller/excalidraw.php?action=delete&id=${id}&version=${version}`);
+                    if (response.data.code === 200) {
+                        loadList(currentId.value);
                     } else {
-                        alert(result.message);
+                        alert(response.data.message);
                     }
-                },
-                error: function () {
+                } catch (error) {
+                    console.error('删除失败', error);
                     alert('删除失败');
                 }
+            };
+
+            onMounted(() => {
+                if (!checkLogin()) {
+                    return;
+                }
+                const urlParams = new URLSearchParams(window.location.search);
+                const idParam = urlParams.get('id');
+                if (idParam) {
+                    loadList(idParam);
+                } else {
+                    loadNames();
+                }
             });
+
+            return {
+                names,
+                listItems,
+                loadList,
+                getUrl,
+                confirmDelete
+            };
         }
-    });
+    }).mount('#app');
 </script>
 </body>
 </html>