diff --git a/mock/post/index.js b/mock/post/index.js new file mode 100644 index 0000000..71f5264 --- /dev/null +++ b/mock/post/index.js @@ -0,0 +1,393 @@ +export default [ + { + url: '/api/posts', + method: 'get', + response: () => { + return { + code: 0, + message: 'ok', + data: [ + { + id: 38, + title: '关于Vite配置preprocessorOptions.scss.additionalData全局引入scss文件无效问题', + author: 'Ronnie', + category: 'Vite', + description: '在vite项目中,有时候我们需要全局引入css变量、scss变量...', + content: + '在vite项目中,有时候我们需要全局引入css变量、scss变量,或者引入全局scss样式文件,vite提供了以下这种配置方式\n\n```js\n//vite.config.js\ncss: {\n preprocessorOptions: {\n //define global scss variable\n scss: {\n additionalData: `@import \'@/styles/variables.scss\';`,\n },\n },\n}\n```\n\n这种写法没有任何问题,并且我已经在一些项目中实践过了,可有一次我创建新项目的时候却无效了,在浏览器上也没有看到任何相关的样式,但是在main.js中引入又是正常的\n\n我先是排查写法和路径是否有问题,然后排查sass或者vite的版本是否有问题,排查几个小时下来发现都没有问题,纳闷不已,唯一能确定的是vite的问题\n\n于是我就想,也许别人也碰到过这种问题,当我找遍各大博客网站都没答案后(一大堆妥协说直接在main.js引入就好的),我准备去Vite仓库提各Issue\n\n当我尝试查一下有没有类似的Issue时,发现竟然有好几个类似的Issue,还是关闭状态,难道这个问题已经解决了?我一个一个点开看,终于在其中一个Issue中找到了答案\n\n[#issue5682](https://github.com/vitejs/vite/issues/5682#issuecomment-968713998)\n\n![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/876fcf83012f49d6b768e2f919e33031~tplv-k3u1fbpfcp-watermark.image?)\n原来这不是一个bug,只有在main.js引入一个其他scss文件或者在.vue文件中使用 diff --git a/src/views/examples/table/post/post-create.vue b/src/views/examples/table/post/post-create.vue new file mode 100644 index 0000000..0aeb5fd --- /dev/null +++ b/src/views/examples/table/post/post-create.vue @@ -0,0 +1,60 @@ + + + + + + + diff --git a/src/views/examples/table/post/post-table.js b/src/views/examples/table/post/post-table.js new file mode 100644 index 0000000..b655687 --- /dev/null +++ b/src/views/examples/table/post/post-table.js @@ -0,0 +1,99 @@ +import { h } from 'vue' +import { NButton, NSwitch } from 'naive-ui' +import { getPosts } from '@/api/post' +import { formatDateTime } from '@/utils' + +export async function getTableData() { + try { + const res = await getPosts() + if (res.code === 0) { + return res.data + } + console.warn(res.message) + return [] + } catch (error) { + console.error(error) + return [] + } +} + +export function createColumns({ handleDelete, handleRecommend, handlePublish }) { + return [ + { type: 'selection' }, + { title: '标题', key: 'title', width: 150 }, + { title: '分类', key: 'category', width: 80 }, + { + title: '描述', + key: 'description', + width: 200, + }, + { title: '创建人', key: 'author', width: 80 }, + { + title: '创建时间', + key: 'createDate', + width: 150, + render(row) { + return h('span', formatDateTime(row['createDate'])) + }, + }, + { + title: '最后更新时间', + key: 'updateDate', + width: 150, + render(row) { + return h('span', formatDateTime(row['updateDate'])) + }, + }, + { + title: '推荐', + key: 'isRecommend', + width: 100, + align: 'center', + fixed: 'right', + render(row) { + return h(NSwitch, { + size: 'small', + defaultValue: row['isRecommend'], + loading: !!row.recommending, + onUpdateValue: () => handleRecommend(row), + }) + }, + }, + { + title: '发布', + key: 'isPublish', + width: 100, + align: 'center', + fixed: 'right', + render(row) { + return h(NSwitch, { + size: 'small', + defaultValue: row['isPublish'], + loading: !!row.publishing, + onUpdateValue: () => handlePublish(row), + }) + }, + }, + { + title: '操作', + key: 'actions', + width: 120, + align: 'center', + fixed: 'right', + render(row) { + return [ + h( + NButton, + { + size: 'small', + type: 'error', + style: 'margin-left: 15px;', + onClick: () => handleDelete(row), + }, + { default: () => '删除' } + ), + ] + }, + }, + ] +}