mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-11-03 13:44:47 +08:00
refactor: 使用eslint.config.js替换.eslintrc.js并遵循esm语法 (#786)
This commit is contained in:
@@ -32,8 +32,8 @@ const handleChange = value => {
|
||||
<span class="imp">
|
||||
1. 二级联动(不带“全部”选项)
|
||||
<el-cascader
|
||||
:options="provinceAndCityData"
|
||||
v-model="selectedOptions1"
|
||||
:options="provinceAndCityData"
|
||||
@change="handleChange"
|
||||
/>
|
||||
</span>
|
||||
@@ -61,8 +61,8 @@ const handleChange = value => {
|
||||
<span class="imp">
|
||||
2. 二级联动(带有“全部”选项)
|
||||
<el-cascader
|
||||
:options="provinceAndCityDataPlus"
|
||||
v-model="selectedOptions3"
|
||||
:options="provinceAndCityDataPlus"
|
||||
@change="handleChange"
|
||||
/>
|
||||
</span>
|
||||
@@ -90,8 +90,8 @@ const handleChange = value => {
|
||||
<span class="imp">
|
||||
3. 三级联动(不带“全部”选项)
|
||||
<el-cascader
|
||||
:options="regionData"
|
||||
v-model="selectedOptions2"
|
||||
:options="regionData"
|
||||
@change="handleChange"
|
||||
/>
|
||||
</span>
|
||||
@@ -121,8 +121,8 @@ const handleChange = value => {
|
||||
<span class="imp">
|
||||
4. 三级联动(带"全部选项")
|
||||
<el-cascader
|
||||
:options="regionDataPlus"
|
||||
v-model="selectedOptions4"
|
||||
:options="regionDataPlus"
|
||||
@change="handleChange"
|
||||
/>
|
||||
</span>
|
||||
|
||||
@@ -62,13 +62,13 @@ function onReset() {
|
||||
<div class="mb-2">
|
||||
防抖指令(连续输入,只会执行第一次点击事件,立即执行)
|
||||
<el-input
|
||||
v-model="search"
|
||||
v-optimize="{
|
||||
event: 'input',
|
||||
fn: onInput,
|
||||
immediate: true,
|
||||
timeout: 1000
|
||||
}"
|
||||
v-model="search"
|
||||
class="!w-[200px]"
|
||||
clearable
|
||||
@clear="onInput"
|
||||
@@ -77,8 +77,8 @@ function onReset() {
|
||||
<div class="mb-2">
|
||||
防抖指令(连续输入,只会执行最后一次事件,延后执行)
|
||||
<el-input
|
||||
v-optimize="{ event: 'input', fn: onInputTwo, timeout: 400 }"
|
||||
v-model="searchTwo"
|
||||
v-optimize="{ event: 'input', fn: onInputTwo, timeout: 400 }"
|
||||
class="!w-[200px]"
|
||||
clearable
|
||||
/>
|
||||
@@ -86,13 +86,13 @@ function onReset() {
|
||||
<div>
|
||||
防抖指令(连续输入,只会执行最后一次事件,延后执行,传参用法)
|
||||
<el-input
|
||||
v-model="searchThree"
|
||||
v-optimize="{
|
||||
event: 'input',
|
||||
fn: onInputThree,
|
||||
timeout: 400,
|
||||
params: { name: '小明', sex: '男' }
|
||||
}"
|
||||
v-model="searchThree"
|
||||
class="!w-[200px]"
|
||||
clearable
|
||||
/>
|
||||
@@ -103,8 +103,8 @@ function onReset() {
|
||||
<div class="mb-2">
|
||||
节流指令(连续输入,每一秒只会执行一次事件)
|
||||
<el-input
|
||||
v-optimize:throttle="{ event: 'input', fn: onInputFour, timeout: 1000 }"
|
||||
v-model="searchFour"
|
||||
v-optimize:throttle="{ event: 'input', fn: onInputFour, timeout: 1000 }"
|
||||
class="!w-[200px]"
|
||||
clearable
|
||||
/>
|
||||
@@ -112,12 +112,12 @@ function onReset() {
|
||||
<div>
|
||||
节流指令(连续输入,每一秒只会执行一次事件,传参用法)
|
||||
<el-input
|
||||
v-model="searchFive"
|
||||
v-optimize:throttle="{
|
||||
event: 'input',
|
||||
fn: onInputFive,
|
||||
params: { name: '小明', sex: '男' }
|
||||
}"
|
||||
v-model="searchFive"
|
||||
class="!w-[200px]"
|
||||
clearable
|
||||
/>
|
||||
@@ -127,7 +127,7 @@ function onReset() {
|
||||
|
||||
<div class="mb-2">
|
||||
文本复制指令(双击输入框内容即可复制)
|
||||
<el-input v-copy="searchSix" v-model="searchSix" class="!w-[200px]" />
|
||||
<el-input v-model="searchSix" v-copy="searchSix" class="!w-[200px]" />
|
||||
</div>
|
||||
<div>
|
||||
文本复制指令(自定义触发事件,单击复制)
|
||||
|
||||
@@ -61,8 +61,8 @@ const filterMethod = (query: string, node: treeNode) => {
|
||||
</div>
|
||||
</template>
|
||||
<el-input
|
||||
class="mb-4"
|
||||
v-model="query"
|
||||
class="mb-4"
|
||||
placeholder="请输入关键字查找"
|
||||
clearable
|
||||
@input="onQueryChanged"
|
||||
|
||||
@@ -49,8 +49,8 @@ const onPrint = () => {
|
||||
</div>
|
||||
</template>
|
||||
<div
|
||||
class="h-[calc(100vh-239px)]"
|
||||
v-loading="loading"
|
||||
class="h-[calc(100vh-239px)]"
|
||||
:element-loading-text="t('status.hsLoad')"
|
||||
>
|
||||
<div class="flex justify-between items-center h-9">
|
||||
@@ -59,9 +59,9 @@ const onPrint = () => {
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-pagination
|
||||
v-model:current-page="currentPage"
|
||||
background
|
||||
layout="prev, slot, next"
|
||||
v-model:current-page="currentPage"
|
||||
:page-size="1"
|
||||
:total="pageCount"
|
||||
>
|
||||
@@ -98,8 +98,8 @@ const onPrint = () => {
|
||||
</div>
|
||||
<el-scrollbar>
|
||||
<vue-pdf-embed
|
||||
class="h-full container overflow-auto"
|
||||
ref="pdfRef"
|
||||
class="h-full container overflow-auto"
|
||||
:rotation="rotations[currentRotation]"
|
||||
:page="currentPage"
|
||||
:source="source"
|
||||
|
||||
@@ -103,12 +103,12 @@ const tableData: User[] = [
|
||||
</template>
|
||||
<el-row :gutter="24">
|
||||
<el-col
|
||||
v-motion
|
||||
:xs="24"
|
||||
:sm="24"
|
||||
:md="24"
|
||||
:lg="24"
|
||||
:xl="24"
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -138,12 +138,12 @@ const tableData: User[] = [
|
||||
<el-divider />
|
||||
|
||||
<el-col
|
||||
v-motion
|
||||
:xs="11"
|
||||
:sm="11"
|
||||
:md="11"
|
||||
:lg="11"
|
||||
:xl="11"
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -161,12 +161,12 @@ const tableData: User[] = [
|
||||
</el-col>
|
||||
|
||||
<el-col
|
||||
v-motion
|
||||
:xs="11"
|
||||
:sm="11"
|
||||
:md="11"
|
||||
:lg="11"
|
||||
:xl="11"
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
|
||||
@@ -155,9 +155,9 @@ onBeforeUnmount(() => {
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
id="canvas-container"
|
||||
v-loading="loading"
|
||||
element-loading-text="温馨提示:可左右拖拽图片并单击选取所需的帧图片"
|
||||
id="canvas-container"
|
||||
class="w-full h-[200px] overflow-hidden mt-6"
|
||||
/>
|
||||
</el-card>
|
||||
|
||||
@@ -23,9 +23,9 @@ const filteredItems = computed(() => {
|
||||
<div class="flex-ac mb-4 shadow-2xl">
|
||||
水平模式 horizontal
|
||||
<el-input
|
||||
v-model="search"
|
||||
class="mr-2 !w-[1/1.5]"
|
||||
clearable
|
||||
v-model="search"
|
||||
placeholder="Filter..."
|
||||
style="width: 300px"
|
||||
/>
|
||||
|
||||
@@ -23,9 +23,9 @@ const filteredItems = computed(() => {
|
||||
<div class="flex-ac mb-4 shadow-2xl">
|
||||
垂直模式 vertical
|
||||
<el-input
|
||||
v-model="search"
|
||||
class="!w-[350px]"
|
||||
clearable
|
||||
v-model="search"
|
||||
placeholder="Filter..."
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -42,9 +42,9 @@ onBeforeUnmount(() => {
|
||||
</template>
|
||||
<span> 请输入要创建水印的值:</span>
|
||||
<el-input
|
||||
v-model="value"
|
||||
class="mb-4 mr-4"
|
||||
style="width: 200px"
|
||||
v-model="value"
|
||||
clearable
|
||||
/>
|
||||
<span>请选择要创建水印的颜色:</span>
|
||||
|
||||
@@ -105,41 +105,41 @@ onBeforeUnmount(() => {
|
||||
element-loading-background="transparent"
|
||||
>
|
||||
<div ref="wavesurferRef" />
|
||||
<div class="flex justify-between" v-show="totalTime">
|
||||
<div v-show="totalTime" class="flex justify-between">
|
||||
<span class="text-[#81888f]">00:00</span>
|
||||
<h1 class="text-4xl mt-2">{{ curTime }}</h1>
|
||||
<span class="text-[#81888f]">{{ totalTime }}</span>
|
||||
</div>
|
||||
<div class="flex mt-2 w-[180px] justify-around m-auto" v-show="totalTime">
|
||||
<div v-show="totalTime" class="flex mt-2 w-[180px] justify-around m-auto">
|
||||
<Rewind
|
||||
class="cursor-pointer"
|
||||
v-tippy="{
|
||||
content: '快退(可长按)',
|
||||
placement: 'bottom',
|
||||
animation: 'scale'
|
||||
}"
|
||||
v-longpress:0:100="() => wavesurfer?.skip(-1)"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
<div
|
||||
class="cursor-pointer"
|
||||
v-tippy="{
|
||||
content: isPlay ? '暂停' : '播放',
|
||||
placement: 'bottom',
|
||||
animation: 'scale'
|
||||
}"
|
||||
class="cursor-pointer"
|
||||
@click="wavesurfer?.playPause()"
|
||||
>
|
||||
<Play v-if="isPlay" v-motion-pop />
|
||||
<Pause v-else v-motion-pop />
|
||||
</div>
|
||||
<Forward
|
||||
class="cursor-pointer"
|
||||
v-tippy="{
|
||||
content: '快进(可长按)',
|
||||
placement: 'bottom',
|
||||
animation: 'scale'
|
||||
}"
|
||||
v-longpress:0:100="() => wavesurfer?.skip(1)"
|
||||
class="cursor-pointer"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -57,11 +57,11 @@ Object.keys(devDependencies).forEach(key => {
|
||||
</template>
|
||||
<el-descriptions border>
|
||||
<el-descriptions-item
|
||||
v-for="(item, index) in schema"
|
||||
:key="index"
|
||||
:label="item.label"
|
||||
label-align="left"
|
||||
align="left"
|
||||
v-for="(item, index) in schema"
|
||||
:key="index"
|
||||
>
|
||||
<a
|
||||
:href="'https://www.npmjs.com/package/' + item.label"
|
||||
@@ -81,11 +81,11 @@ Object.keys(devDependencies).forEach(key => {
|
||||
</template>
|
||||
<el-descriptions border>
|
||||
<el-descriptions-item
|
||||
v-for="(item, index) in devSchema"
|
||||
:key="index"
|
||||
:label="item.label"
|
||||
label-align="left"
|
||||
align="left"
|
||||
v-for="(item, index) in devSchema"
|
||||
:key="index"
|
||||
>
|
||||
<a
|
||||
:href="'https://www.npmjs.com/package/' + item.label"
|
||||
|
||||
@@ -120,8 +120,8 @@ function addDanmu() {
|
||||
<div class="flex gap-5">
|
||||
<vue-danmaku
|
||||
ref="danmaku"
|
||||
class="demo"
|
||||
v-model:danmus="danmus"
|
||||
class="demo"
|
||||
isSuspend
|
||||
v-bind="config"
|
||||
>
|
||||
@@ -176,9 +176,9 @@ function addDanmu() {
|
||||
</p>
|
||||
<p class="flex">
|
||||
<el-input
|
||||
v-model="danmuMsg"
|
||||
type="text"
|
||||
placeholder="输入评论后,回车发送弹幕"
|
||||
v-model="danmuMsg"
|
||||
@keyup.enter="addDanmu"
|
||||
/>
|
||||
</p>
|
||||
|
||||
@@ -27,15 +27,15 @@ const newFormInline = ref(props.formInline);
|
||||
<el-form :model="newFormInline">
|
||||
<el-form-item label="姓名">
|
||||
<el-input
|
||||
class="!w-[220px]"
|
||||
v-model="newFormInline.user"
|
||||
class="!w-[220px]"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="城市">
|
||||
<el-select
|
||||
class="!w-[220px]"
|
||||
v-model="newFormInline.region"
|
||||
class="!w-[220px]"
|
||||
placeholder="请选择城市"
|
||||
>
|
||||
<el-option label="上海" value="上海" />
|
||||
|
||||
@@ -18,5 +18,5 @@ const data = useVModel(props, "data", emit);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<el-input class="!w-[220px]" v-model="data" placeholder="请输入内容" />
|
||||
<el-input v-model="data" class="!w-[220px]" placeholder="请输入内容" />
|
||||
</template>
|
||||
|
||||
@@ -110,10 +110,10 @@ onMounted(() => {
|
||||
<draggable
|
||||
v-model="lists"
|
||||
item-key="name"
|
||||
@change="change"
|
||||
chosen-class="chosen"
|
||||
force-fallback="true"
|
||||
animation="300"
|
||||
@change="change"
|
||||
>
|
||||
<template #item="{ element, index }">
|
||||
<div class="item-single">{{ element.name }} {{ index }}</div>
|
||||
@@ -132,9 +132,9 @@ onMounted(() => {
|
||||
<!-- 拖拽实现元素位置切换 -->
|
||||
<div class="cut-container">
|
||||
<div
|
||||
class="item-cut"
|
||||
v-for="(item, index) in cutLists"
|
||||
:key="index"
|
||||
class="item-cut"
|
||||
>
|
||||
<p>{{ item.name }}</p>
|
||||
</div>
|
||||
|
||||
@@ -163,7 +163,7 @@ function onChange({ index, option }) {
|
||||
{{ optionsBasis[value].label }}
|
||||
</span>
|
||||
</p>
|
||||
<Segmented :options="optionsBasis" v-model="value" />
|
||||
<Segmented v-model="value" :options="optionsBasis" />
|
||||
<el-divider />
|
||||
<p class="mb-2">禁用</p>
|
||||
<Segmented :options="optionsDisabled" />
|
||||
|
||||
@@ -28,9 +28,9 @@ const selectedVal = ({ left, right }): void => {
|
||||
<template>
|
||||
<div>
|
||||
<el-card
|
||||
class="box-card"
|
||||
v-for="(item, key) in dataLists"
|
||||
:key="key"
|
||||
class="box-card"
|
||||
shadow="never"
|
||||
>
|
||||
<template #header>
|
||||
@@ -41,10 +41,10 @@ const selectedVal = ({ left, right }): void => {
|
||||
<Selector
|
||||
:HsKey="key"
|
||||
:echo="item.echo"
|
||||
@selectedVal="selectedVal"
|
||||
:disabled="item.disabled"
|
||||
@selectedVal="selectedVal"
|
||||
/>
|
||||
<h4 class="mt-3" v-if="!item.disabled">选中范围:{{ selectRange }}</h4>
|
||||
<h4 v-if="!item.disabled" class="mt-3">选中范围:{{ selectRange }}</h4>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -55,7 +55,7 @@ onBeforeUnmount(() => {
|
||||
|
||||
<template>
|
||||
<el-row :gutter="30" justify="space-around">
|
||||
<re-col :value="11" v-for="(edit, index) in editorList" :key="index">
|
||||
<re-col v-for="(edit, index) in editorList" :key="index" :value="11">
|
||||
<div class="wangeditor">
|
||||
<Toolbar
|
||||
:editor="edit.editorRef"
|
||||
|
||||
@@ -14,8 +14,8 @@ const router = useRouter();
|
||||
<noAccess />
|
||||
<div class="ml-12">
|
||||
<p
|
||||
class="font-medium text-4xl mb-4 dark:text-white"
|
||||
v-motion
|
||||
class="font-medium text-4xl mb-4 dark:text-white"
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -31,8 +31,8 @@ const router = useRouter();
|
||||
403
|
||||
</p>
|
||||
<p
|
||||
class="mb-4 text-gray-500"
|
||||
v-motion
|
||||
class="mb-4 text-gray-500"
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -48,9 +48,8 @@ const router = useRouter();
|
||||
抱歉,你无权访问该页面
|
||||
</p>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="router.push('/')"
|
||||
v-motion
|
||||
type="primary"
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -62,6 +61,7 @@ const router = useRouter();
|
||||
delay: 500
|
||||
}
|
||||
}"
|
||||
@click="router.push('/')"
|
||||
>
|
||||
返回首页
|
||||
</el-button>
|
||||
|
||||
@@ -14,8 +14,8 @@ const router = useRouter();
|
||||
<noExist />
|
||||
<div class="ml-12">
|
||||
<p
|
||||
class="font-medium text-4xl mb-4 dark:text-white"
|
||||
v-motion
|
||||
class="font-medium text-4xl mb-4 dark:text-white"
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -31,8 +31,8 @@ const router = useRouter();
|
||||
404
|
||||
</p>
|
||||
<p
|
||||
class="mb-4 text-gray-500"
|
||||
v-motion
|
||||
class="mb-4 text-gray-500"
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -48,9 +48,8 @@ const router = useRouter();
|
||||
抱歉,你访问的页面不存在
|
||||
</p>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="router.push('/')"
|
||||
v-motion
|
||||
type="primary"
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -62,6 +61,7 @@ const router = useRouter();
|
||||
delay: 500
|
||||
}
|
||||
}"
|
||||
@click="router.push('/')"
|
||||
>
|
||||
返回首页
|
||||
</el-button>
|
||||
|
||||
@@ -14,8 +14,8 @@ const router = useRouter();
|
||||
<noServer />
|
||||
<div class="ml-12">
|
||||
<p
|
||||
class="font-medium text-4xl mb-4 dark:text-white"
|
||||
v-motion
|
||||
class="font-medium text-4xl mb-4 dark:text-white"
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -31,8 +31,8 @@ const router = useRouter();
|
||||
500
|
||||
</p>
|
||||
<p
|
||||
class="mb-4 text-gray-500"
|
||||
v-motion
|
||||
class="mb-4 text-gray-500"
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -48,9 +48,8 @@ const router = useRouter();
|
||||
抱歉,服务器出错了
|
||||
</p>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="router.push('/')"
|
||||
v-motion
|
||||
type="primary"
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -62,6 +61,7 @@ const router = useRouter();
|
||||
delay: 500
|
||||
}
|
||||
}"
|
||||
@click="router.push('/')"
|
||||
>
|
||||
返回首页
|
||||
</el-button>
|
||||
|
||||
@@ -84,8 +84,8 @@ onMounted(() => {
|
||||
<div class="logic-flow-view">
|
||||
<!-- 辅助工具栏 -->
|
||||
<Control
|
||||
class="demo-control"
|
||||
v-if="lf"
|
||||
class="demo-control"
|
||||
:lf="lf"
|
||||
:catTurboData="false"
|
||||
@catData="catData"
|
||||
@@ -96,9 +96,9 @@ onMounted(() => {
|
||||
<div id="turbo" />
|
||||
<!-- 数据查看面板 -->
|
||||
<el-dialog
|
||||
v-model="dataVisible"
|
||||
class="flow-dialog"
|
||||
title="数据"
|
||||
v-model="dataVisible"
|
||||
width="50%"
|
||||
>
|
||||
<el-scrollbar>
|
||||
|
||||
@@ -102,8 +102,8 @@ const handleManageProduct = product => {
|
||||
新建产品
|
||||
</el-button>
|
||||
<el-input
|
||||
style="width: 300px"
|
||||
v-model="searchValue"
|
||||
style="width: 300px"
|
||||
placeholder="请输入产品名称"
|
||||
clearable
|
||||
>
|
||||
@@ -123,7 +123,6 @@ const handleManageProduct = product => {
|
||||
element-loading-svg-view-box="-10, -10, 50, 50"
|
||||
>
|
||||
<el-empty
|
||||
description="暂无数据"
|
||||
v-show="
|
||||
productList
|
||||
.slice(
|
||||
@@ -134,6 +133,7 @@ const handleManageProduct = product => {
|
||||
v.name.toLowerCase().includes(searchValue.toLowerCase())
|
||||
).length === 0
|
||||
"
|
||||
description="暂无数据"
|
||||
/>
|
||||
<template v-if="pagination.total > 0">
|
||||
<el-row :gutter="16">
|
||||
@@ -161,8 +161,8 @@ const handleManageProduct = product => {
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-pagination
|
||||
class="float-right"
|
||||
v-model:currentPage="pagination.current"
|
||||
class="float-right"
|
||||
:page-size="pagination.pageSize"
|
||||
:total="pagination.total"
|
||||
:page-sizes="[12, 24, 36]"
|
||||
|
||||
@@ -48,8 +48,8 @@ function onBack() {
|
||||
<Motion>
|
||||
<el-form-item prop="phone">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="ruleForm.phone"
|
||||
clearable
|
||||
:placeholder="t('login.phone')"
|
||||
:prefix-icon="useRenderIcon(Iphone)"
|
||||
/>
|
||||
@@ -60,8 +60,8 @@ function onBack() {
|
||||
<el-form-item prop="verifyCode">
|
||||
<div class="w-full flex justify-between">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="ruleForm.verifyCode"
|
||||
clearable
|
||||
:placeholder="t('login.smsVerifyCode')"
|
||||
:prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
|
||||
/>
|
||||
|
||||
@@ -89,8 +89,8 @@ function onBack() {
|
||||
prop="username"
|
||||
>
|
||||
<el-input
|
||||
clearable
|
||||
v-model="ruleForm.username"
|
||||
clearable
|
||||
:placeholder="t('login.username')"
|
||||
:prefix-icon="useRenderIcon(User)"
|
||||
/>
|
||||
@@ -100,8 +100,8 @@ function onBack() {
|
||||
<Motion :delay="100">
|
||||
<el-form-item prop="phone">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="ruleForm.phone"
|
||||
clearable
|
||||
:placeholder="t('login.phone')"
|
||||
:prefix-icon="useRenderIcon(Iphone)"
|
||||
/>
|
||||
@@ -112,8 +112,8 @@ function onBack() {
|
||||
<el-form-item prop="verifyCode">
|
||||
<div class="w-full flex justify-between">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="ruleForm.verifyCode"
|
||||
clearable
|
||||
:placeholder="t('login.smsVerifyCode')"
|
||||
:prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
|
||||
/>
|
||||
@@ -135,9 +135,9 @@ function onBack() {
|
||||
<Motion :delay="200">
|
||||
<el-form-item prop="password">
|
||||
<el-input
|
||||
v-model="ruleForm.password"
|
||||
clearable
|
||||
show-password
|
||||
v-model="ruleForm.password"
|
||||
:placeholder="t('login.password')"
|
||||
:prefix-icon="useRenderIcon(Lock)"
|
||||
/>
|
||||
@@ -147,9 +147,9 @@ function onBack() {
|
||||
<Motion :delay="250">
|
||||
<el-form-item :rules="repeatPasswordRule" prop="repeatPassword">
|
||||
<el-input
|
||||
v-model="ruleForm.repeatPassword"
|
||||
clearable
|
||||
show-password
|
||||
v-model="ruleForm.repeatPassword"
|
||||
:placeholder="t('login.sure')"
|
||||
:prefix-icon="useRenderIcon(Lock)"
|
||||
/>
|
||||
|
||||
@@ -72,8 +72,8 @@ function onBack() {
|
||||
<Motion>
|
||||
<el-form-item prop="phone">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="ruleForm.phone"
|
||||
clearable
|
||||
:placeholder="t('login.phone')"
|
||||
:prefix-icon="useRenderIcon(Iphone)"
|
||||
/>
|
||||
@@ -84,8 +84,8 @@ function onBack() {
|
||||
<el-form-item prop="verifyCode">
|
||||
<div class="w-full flex justify-between">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="ruleForm.verifyCode"
|
||||
clearable
|
||||
:placeholder="t('login.smsVerifyCode')"
|
||||
:prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
|
||||
/>
|
||||
@@ -107,9 +107,9 @@ function onBack() {
|
||||
<Motion :delay="150">
|
||||
<el-form-item prop="password">
|
||||
<el-input
|
||||
v-model="ruleForm.password"
|
||||
clearable
|
||||
show-password
|
||||
v-model="ruleForm.password"
|
||||
:placeholder="t('login.password')"
|
||||
:prefix-icon="useRenderIcon(Lock)"
|
||||
/>
|
||||
@@ -119,9 +119,9 @@ function onBack() {
|
||||
<Motion :delay="200">
|
||||
<el-form-item :rules="repeatPasswordRule" prop="repeatPassword">
|
||||
<el-input
|
||||
v-model="ruleForm.repeatPassword"
|
||||
clearable
|
||||
show-password
|
||||
v-model="ruleForm.repeatPassword"
|
||||
:placeholder="t('login.sure')"
|
||||
:prefix-icon="useRenderIcon(Lock)"
|
||||
/>
|
||||
|
||||
@@ -142,8 +142,8 @@ watch(loginDay, value => {
|
||||
@click="translationCh"
|
||||
>
|
||||
<IconifyIconOffline
|
||||
class="check-zh"
|
||||
v-show="locale === 'zh'"
|
||||
class="check-zh"
|
||||
:icon="Check"
|
||||
/>
|
||||
简体中文
|
||||
@@ -153,7 +153,7 @@ watch(loginDay, value => {
|
||||
:class="['dark:!text-white', getDropdownItemClass(locale, 'en')]"
|
||||
@click="translationEn"
|
||||
>
|
||||
<span class="check-en" v-show="locale === 'en'">
|
||||
<span v-show="locale === 'en'" class="check-en">
|
||||
<IconifyIconOffline :icon="Check" />
|
||||
</span>
|
||||
English
|
||||
@@ -194,8 +194,8 @@ watch(loginDay, value => {
|
||||
prop="username"
|
||||
>
|
||||
<el-input
|
||||
clearable
|
||||
v-model="ruleForm.username"
|
||||
clearable
|
||||
:placeholder="t('login.username')"
|
||||
:prefix-icon="useRenderIcon(User)"
|
||||
/>
|
||||
@@ -205,9 +205,9 @@ watch(loginDay, value => {
|
||||
<Motion :delay="150">
|
||||
<el-form-item prop="password">
|
||||
<el-input
|
||||
v-model="ruleForm.password"
|
||||
clearable
|
||||
show-password
|
||||
v-model="ruleForm.password"
|
||||
:placeholder="t('login.password')"
|
||||
:prefix-icon="useRenderIcon(Lock)"
|
||||
/>
|
||||
@@ -217,8 +217,8 @@ watch(loginDay, value => {
|
||||
<Motion :delay="200">
|
||||
<el-form-item prop="verifyCode">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="ruleForm.verifyCode"
|
||||
clearable
|
||||
:placeholder="t('login.verifyCode')"
|
||||
:prefix-icon="useRenderIcon('ri:shield-keyhole-line')"
|
||||
>
|
||||
|
||||
@@ -19,7 +19,7 @@ const { query } = useRoute();
|
||||
<p style="text-indent: 4em">{{ t("menus.hsmenu1-2-2") }}</p>
|
||||
<el-input v-model="input" />
|
||||
|
||||
<div class="mt-4" v-if="query.text">
|
||||
<div v-if="query.text" class="mt-4">
|
||||
此页面携带的参数值为:{{ query.text }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -41,15 +41,15 @@ const elStyle = computed((): CSSProperties => {
|
||||
<template #header>
|
||||
<div class="card-header">函数方式判断权限</div>
|
||||
</template>
|
||||
<el-button type="success" v-if="hasAuth('btn_add')">
|
||||
<el-button v-if="hasAuth('btn_add')" type="success">
|
||||
拥有code:'btn_add' 权限可见
|
||||
</el-button>
|
||||
<el-button type="primary" v-if="hasAuth(['btn_edit'])">
|
||||
<el-button v-if="hasAuth(['btn_edit'])" type="primary">
|
||||
拥有code:['btn_edit'] 权限可见
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
v-if="hasAuth(['btn_add', 'btn_edit', 'btn_delete'])"
|
||||
type="danger"
|
||||
>
|
||||
拥有code:['btn_add', 'btn_edit', 'btn_delete'] 权限可见
|
||||
</el-button>
|
||||
@@ -61,13 +61,13 @@ const elStyle = computed((): CSSProperties => {
|
||||
指令方式判断权限(该方式不能动态修改权限)
|
||||
</div>
|
||||
</template>
|
||||
<el-button type="success" v-auth="'btn_add'">
|
||||
<el-button v-auth="'btn_add'" type="success">
|
||||
拥有code:'btn_add' 权限可见
|
||||
</el-button>
|
||||
<el-button type="primary" v-auth="['btn_edit']">
|
||||
<el-button v-auth="['btn_edit']" type="primary">
|
||||
拥有code:['btn_edit'] 权限可见
|
||||
</el-button>
|
||||
<el-button type="danger" v-auth="['btn_add', 'btn_edit', 'btn_delete']">
|
||||
<el-button v-auth="['btn_add', 'btn_edit', 'btn_delete']" type="danger">
|
||||
拥有code:['btn_add', 'btn_edit', 'btn_delete'] 权限可见
|
||||
</el-button>
|
||||
</el-card>
|
||||
|
||||
@@ -49,7 +49,7 @@ function tabClick({ index }) {
|
||||
<span>{{ item.title }}</span>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<component v-if="selected == index" :is="item.component" />
|
||||
<component :is="item.component" v-if="selected == index" />
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</el-tabs>
|
||||
|
||||
@@ -61,15 +61,15 @@ const tableDataImage = clone(tableData, true).map((item, index) =>
|
||||
);
|
||||
|
||||
const tableDataSortable = clone(tableData, true).map((item, index) => {
|
||||
delete item["date"];
|
||||
delete item.date;
|
||||
Object.assign(item, {
|
||||
date: `${dayjs(new Date()).format("YYYY-MM")}-${index + 1}`
|
||||
});
|
||||
});
|
||||
|
||||
const tableDataDrag = clone(tableData, true).map((item, index) => {
|
||||
delete item["address"];
|
||||
delete item["date"];
|
||||
delete item.address;
|
||||
delete item.date;
|
||||
return Object.assign(
|
||||
{
|
||||
id: index + 1,
|
||||
@@ -80,7 +80,7 @@ const tableDataDrag = clone(tableData, true).map((item, index) => {
|
||||
});
|
||||
|
||||
const tableDataEdit = clone(tableData, true).map((item, index) => {
|
||||
delete item["date"];
|
||||
delete item.date;
|
||||
return Object.assign(
|
||||
{
|
||||
id: index + 1,
|
||||
|
||||
@@ -8,8 +8,8 @@ const { columns, dataList, exportExcel } = useColumns();
|
||||
<div>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="exportExcel"
|
||||
class="mb-[20px] float-right"
|
||||
@click="exportExcel"
|
||||
>
|
||||
导出
|
||||
</el-button>
|
||||
|
||||
@@ -9,13 +9,13 @@ const { columns, dataList, print, cellStyle, rowStyle, headerCellStyle } =
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<el-button type="primary" @click="print" class="mb-[20px] float-right">
|
||||
<el-button type="primary" class="mb-[20px] float-right" @click="print">
|
||||
打印
|
||||
</el-button>
|
||||
<!-- rowHoverBgColor="transparent" 鼠标经过行时,去掉行的背景色 -->
|
||||
<pure-table
|
||||
rowHoverBgColor="transparent"
|
||||
ref="printRef"
|
||||
rowHoverBgColor="transparent"
|
||||
row-key="id"
|
||||
border
|
||||
:data="dataList"
|
||||
|
||||
@@ -18,9 +18,9 @@ const {
|
||||
|
||||
<template>
|
||||
<el-select
|
||||
class="w-[160px]"
|
||||
ref="selectRef"
|
||||
v-model="selectValue"
|
||||
class="w-[160px]"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
multiple
|
||||
|
||||
@@ -50,7 +50,7 @@ function tabClick({ index }) {
|
||||
<span>{{ item.title }}</span>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<component v-if="selected == index" :is="item.component" />
|
||||
<component :is="item.component" v-if="selected == index" />
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</el-tabs>
|
||||
|
||||
@@ -41,8 +41,8 @@ defineExpose({ getRef });
|
||||
<re-col>
|
||||
<el-form-item label="上级部门">
|
||||
<el-cascader
|
||||
class="w-full"
|
||||
v-model="newFormInline.parentId"
|
||||
class="w-full"
|
||||
:options="newFormInline.higherDeptOptions"
|
||||
:props="{
|
||||
value: 'id',
|
||||
|
||||
@@ -6,7 +6,7 @@ import { getDeptList } from "@/api/system";
|
||||
import { usePublicHooks } from "../../hooks";
|
||||
import { addDialog } from "@/components/ReDialog";
|
||||
import { reactive, ref, onMounted, h } from "vue";
|
||||
import { type FormItemProps } from "../utils/types";
|
||||
import type { FormItemProps } from "../utils/types";
|
||||
import { cloneDeep, isAllEmpty } from "@pureadmin/utils";
|
||||
|
||||
export function useDept() {
|
||||
|
||||
@@ -5,8 +5,8 @@ import { getRoleList } from "@/api/system";
|
||||
import { ElMessageBox } from "element-plus";
|
||||
import { usePublicHooks } from "../../hooks";
|
||||
import { addDialog } from "@/components/ReDialog";
|
||||
import { type FormItemProps } from "../utils/types";
|
||||
import { type PaginationProps } from "@pureadmin/table";
|
||||
import type { FormItemProps } from "../utils/types";
|
||||
import type { PaginationProps } from "@pureadmin/table";
|
||||
import { reactive, ref, onMounted, h, toRaw } from "vue";
|
||||
|
||||
export function useRole() {
|
||||
|
||||
@@ -70,10 +70,10 @@ defineExpose({ getRef });
|
||||
</re-col>
|
||||
|
||||
<re-col
|
||||
v-if="newFormInline.title === '新增'"
|
||||
:value="12"
|
||||
:xs="24"
|
||||
:sm="24"
|
||||
v-if="newFormInline.title === '新增'"
|
||||
>
|
||||
<el-form-item label="用户密码" prop="password">
|
||||
<el-input
|
||||
@@ -123,8 +123,8 @@ defineExpose({ getRef });
|
||||
<re-col :value="12" :xs="24" :sm="24">
|
||||
<el-form-item label="归属部门">
|
||||
<el-cascader
|
||||
class="w-full"
|
||||
v-model="newFormInline.parentId"
|
||||
class="w-full"
|
||||
:options="newFormInline.higherDeptOptions"
|
||||
:props="{
|
||||
value: 'id',
|
||||
@@ -144,10 +144,10 @@ defineExpose({ getRef });
|
||||
</el-form-item>
|
||||
</re-col>
|
||||
<re-col
|
||||
v-if="newFormInline.title === '新增'"
|
||||
:value="12"
|
||||
:xs="24"
|
||||
:sm="24"
|
||||
v-if="newFormInline.title === '新增'"
|
||||
>
|
||||
<el-form-item label="用户状态">
|
||||
<el-switch
|
||||
|
||||
@@ -25,7 +25,7 @@ const newFormInline = ref(props.formInline);
|
||||
</re-col> -->
|
||||
<re-col>
|
||||
<el-form-item label="用户昵称" prop="nickname">
|
||||
<el-input disabled v-model="newFormInline.nickname" />
|
||||
<el-input v-model="newFormInline.nickname" disabled />
|
||||
</el-form-item>
|
||||
</re-col>
|
||||
<re-col>
|
||||
|
||||
@@ -148,8 +148,8 @@ const {
|
||||
</el-popconfirm>
|
||||
</div>
|
||||
<pure-table
|
||||
row-key="id"
|
||||
ref="tableRef"
|
||||
row-key="id"
|
||||
adaptive
|
||||
align-whole="center"
|
||||
table-layout="auto"
|
||||
|
||||
@@ -101,9 +101,9 @@ defineExpose({ onTreeReset });
|
||||
>
|
||||
<div class="flex items-center h-[34px]">
|
||||
<el-input
|
||||
v-model="searchValue"
|
||||
class="ml-2"
|
||||
size="small"
|
||||
v-model="searchValue"
|
||||
placeholder="请输入部门名称"
|
||||
clearable
|
||||
>
|
||||
|
||||
@@ -33,7 +33,7 @@ function onCropper({ base64, blob, info }) {
|
||||
@cropper="onCropper"
|
||||
@readied="showPopover = true"
|
||||
/>
|
||||
<p class="mt-1 text-center" v-show="showPopover">
|
||||
<p v-show="showPopover" class="mt-1 text-center">
|
||||
温馨提示:右键上方裁剪区可开启功能菜单
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -8,7 +8,7 @@ import { message } from "@/utils/message";
|
||||
import croppingUpload from "../upload.vue";
|
||||
import { usePublicHooks } from "../../hooks";
|
||||
import { addDialog } from "@/components/ReDialog";
|
||||
import { type PaginationProps } from "@pureadmin/table";
|
||||
import type { PaginationProps } from "@pureadmin/table";
|
||||
import type { FormItemProps, RoleFormItemProps } from "../utils/types";
|
||||
import { hideTextAtIndex, getKeyList, isAllEmpty } from "@pureadmin/utils";
|
||||
import {
|
||||
|
||||
@@ -53,9 +53,9 @@ function onCloseTags() {
|
||||
<div class="flex flex-wrap items-center">
|
||||
<p>query传参模式:</p>
|
||||
<el-button
|
||||
class="m-2"
|
||||
v-for="index in 6"
|
||||
:key="index"
|
||||
class="m-2"
|
||||
@click="toDetail({ id: index }, 'query')"
|
||||
>
|
||||
打开{{ index }}详情页
|
||||
@@ -74,9 +74,9 @@ function onCloseTags() {
|
||||
<div class="flex flex-wrap items-center">
|
||||
<p>params传参模式:</p>
|
||||
<el-button
|
||||
class="m-2"
|
||||
v-for="index in 6"
|
||||
:key="index"
|
||||
class="m-2"
|
||||
@click="toDetail({ id: index }, 'params')"
|
||||
>
|
||||
打开{{ index }}详情页
|
||||
@@ -85,6 +85,7 @@ function onCloseTags() {
|
||||
|
||||
<el-divider />
|
||||
<el-tree-select
|
||||
v-model="currentValues"
|
||||
class="w-[300px]"
|
||||
node-key="uniqueId"
|
||||
placeholder="请选择要关闭的标签"
|
||||
@@ -99,7 +100,6 @@ function onCloseTags() {
|
||||
disabled: 'disabled'
|
||||
}"
|
||||
:data="treeData"
|
||||
v-model="currentValues"
|
||||
>
|
||||
<template #default="{ data }">
|
||||
<span>{{ transformI18n(data.meta.title) }}</span>
|
||||
|
||||
@@ -48,13 +48,13 @@ getReleases().then(({ data }) => {
|
||||
<div>
|
||||
<el-row :gutter="24">
|
||||
<el-col
|
||||
v-motion
|
||||
:xs="24"
|
||||
:sm="24"
|
||||
:md="12"
|
||||
:lg="12"
|
||||
:xl="12"
|
||||
class="mb-[18px]"
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -106,13 +106,13 @@ getReleases().then(({ data }) => {
|
||||
</el-col>
|
||||
|
||||
<el-col
|
||||
v-motion
|
||||
:xs="24"
|
||||
:sm="24"
|
||||
:md="12"
|
||||
:lg="12"
|
||||
:xl="12"
|
||||
class="mb-[18px]"
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -154,13 +154,13 @@ getReleases().then(({ data }) => {
|
||||
</el-col>
|
||||
|
||||
<el-col
|
||||
v-motion
|
||||
:xs="24"
|
||||
:sm="24"
|
||||
:md="12"
|
||||
:lg="8"
|
||||
:xl="8"
|
||||
class="mb-[18px]"
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -197,13 +197,13 @@ getReleases().then(({ data }) => {
|
||||
</el-col>
|
||||
|
||||
<el-col
|
||||
v-motion
|
||||
:xs="24"
|
||||
:sm="24"
|
||||
:md="12"
|
||||
:lg="8"
|
||||
:xl="8"
|
||||
class="mb-[18px]"
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
@@ -240,13 +240,13 @@ getReleases().then(({ data }) => {
|
||||
</el-col>
|
||||
|
||||
<el-col
|
||||
v-motion
|
||||
:xs="24"
|
||||
:sm="24"
|
||||
:md="24"
|
||||
:lg="8"
|
||||
:xl="8"
|
||||
class="mb-[18px]"
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
|
||||
Reference in New Issue
Block a user