style: 💄 代码整理 (#88)

This commit is contained in:
2024-02-02 18:16:51 +08:00
committed by GitHub
parent 8293ec0297
commit 6f32acaacf
147 changed files with 715 additions and 658 deletions

View File

@ -1,10 +1,13 @@
{
"tabWidth": 4,
"useTabs": false,
"attributeGroups": ["^v-", "$DEFAULT"],
"attributeSort": "ASC",
"bracketSameLine": true,
"endOfLine": "auto",
"plugins": ["prettier-plugin-organize-attributes"],
"printWidth": 150,
"semi": false,
"singleQuote": true,
"tabWidth": 4,
"trailingComma": "all",
"bracketSameLine": true,
"printWidth": 150,
"endOfLine": "auto"
"useTabs": false
}

View File

@ -99,7 +99,7 @@
<noscript>
<strong>We're sorry but NetAdmin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app" class="aminui">
<div class="aminui" id="app">
<div class="app-loading">
<div class="app-loading__logo">
<img alt="" src="/src/assets/img/logo.png" />

View File

@ -36,6 +36,7 @@
"devDependencies": {
"@vitejs/plugin-vue": "^5.0.3",
"prettier": "^3.2.4",
"prettier-plugin-organize-attributes": "^1.0.0",
"sass": "^1.70.0",
"terser": "^5.27.0",
"vite": "^5.0.12"

View File

@ -1,5 +1,5 @@
<template>
<svg t="1700643247048" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5913" width="128" height="128">
<svg class="icon" height="128" p-id="5913" t="1700643247048" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path
d="M957.6 872l-432-736c-3.2-5.6-8.8-8-13.6-8s-10.4 2.4-13.6 8l-432 736c-6.4 10.4 1.6 24 13.6 24h864c12 0 20-13.6 13.6-24z m-793.6-40L512 239.2l348 592.8h-696zM480 704h64v64h-64v-64z m0-320h64v256h-64V384z"
p-id="5914"></path>

View File

@ -1,7 +1,25 @@
<template>
<svg class="icon" height="300" p-id="9845" t="1678846153777" version="1.1" viewBox="0 0 1024 1024" width="300" xmlns="http://www.w3.org/2000/svg">
<svg
class="icon"
height="128"
p-id="11193"
t="1706508305545"
version="1.1"
viewBox="0 0 1149 1024"
width="128"
xmlns="http://www.w3.org/2000/svg">
<path
d="M864 64H160a96 96 0 0 0-96 96v576a96 96 0 0 0 96 96h320v64H256a32 32 0 0 0 0 64h512a32 32 0 0 0 0-64h-224v-64h320a96 96 0 0 0 96-96V160a96 96 0 0 0-96-96zM160 128h704a32 32 0 0 1 32 32v448H128V160a32 32 0 0 1 32-32z m736 608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32v-64h768v64z"
p-id="9846"></path>
d="M1061.585878 1024H88.369851A88.369851 88.369851 0 0 1 0 935.630149V88.369851A88.369851 88.369851 0 0 1 88.369851 0H1061.585878a88.369851 88.369851 0 0 1 88.369852 88.369851v847.260298A88.369851 88.369851 0 0 1 1061.585878 1024zM88.369851 57.38302A30.986831 30.986831 0 0 0 57.38302 88.369851v847.260298a30.986831 30.986831 0 0 0 30.986831 30.986831H1061.585878a30.986831 30.986831 0 0 0 30.986831-30.986831V88.369851A30.986831 30.986831 0 0 0 1061.585878 57.38302z"
p-id="11194"></path>
<path d="M28.69151 333.682264h1091.711964v57.38302H28.69151zM28.69151 655.027178h1091.711964v57.383021H28.69151z" p-id="11195"></path>
<path
d="M104.437097 168.70608m28.69151 0l82.63155 0q28.69151 0 28.69151 28.69151l0 0q0 28.69151-28.69151 28.691511l-82.63155 0q-28.69151 0-28.69151-28.691511l0 0q0-28.69151 28.69151-28.69151Z"
p-id="11196"></path>
<path
d="M104.437097 494.354721m28.69151 0l82.63155 0q28.69151 0 28.69151 28.69151l0 0q0 28.69151-28.69151 28.691511l-82.63155 0q-28.69151 0-28.69151-28.691511l0 0q0-28.69151 28.69151-28.69151Z"
p-id="11197"></path>
<path
d="M104.437097 815.986551m28.69151 0l82.63155 0q28.69151 0 28.69151 28.69151l0 0q0 28.69151-28.69151 28.69151l-82.63155 0q-28.69151 0-28.69151-28.69151l0 0q0-28.69151 28.69151-28.69151Z"
p-id="11198"></path>
</svg>
</template>

View File

@ -1,5 +1,5 @@
<template>
<svg t="1695638866565" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4181" width="128" height="128">
<svg class="icon" height="128" p-id="4181" t="1695638866565" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path
d="M512 97.52381c228.912762 0 414.47619 185.563429 414.47619 414.47619s-185.563429 414.47619-414.47619 414.47619S97.52381 740.912762 97.52381 512 283.087238 97.52381 512 97.52381z m129.29219 233.447619l-129.267809 129.29219-129.316571-129.29219-51.736381 51.736381 129.316571 129.267809-129.316571 129.316571 51.736381 51.736381L512 563.687619l129.29219 129.316571 51.736381-51.73638L563.687619 512l129.316571-129.29219-51.73638-51.736381z"
p-id="4182"></path>

View File

@ -1,5 +1,5 @@
<template>
<svg t="1700287923195" class="icon" viewBox="0 0 1159 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7208" width="128" height="128">
<svg class="icon" height="128" p-id="7208" t="1700287923195" version="1.1" viewBox="0 0 1159 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path
d="M375.432019 950.647918H139.942526a65.628219 65.628219 0 0 1-66.59334-63.697977V137.051024a64.663098 64.663098 0 0 1 66.59334-63.697977h669.793885a64.663098 64.663098 0 0 1 66.59334 63.697977V289.540122a38.604835 38.604835 0 0 0 0 14.476813l7.720967 11.58145a37.639714 37.639714 0 0 0 40.535076 7.720967l11.581451-7.720967A37.639714 37.639714 0 0 0 949.678937 289.540122V137.051024A138.977405 138.977405 0 0 0 809.736411 0.00386H139.942526A138.977405 138.977405 0 0 0 0 137.051024v749.898917a138.977405 138.977405 0 0 0 139.942526 137.047164h235.489493a38.604835 38.604835 0 0 0 26.058263-10.61633 37.639714 37.639714 0 0 0 0-52.116527 38.604835 38.604835 0 0 0-26.058263-10.61633zM691.026544 289.540122a39.569956 39.569956 0 0 0-36.674593-39.569956H216.187075a39.569956 39.569956 0 0 0-36.674593 39.569956 38.604835 38.604835 0 0 0 36.674593 38.604835h438.164876a38.604835 38.604835 0 0 0 36.674593-38.604835zM216.187075 482.564296a39.569956 39.569956 0 0 0 0 79.139911h289.536261a39.569956 39.569956 0 0 0 0-79.139911z m219.082438 226.803405H216.187075a40.535077 40.535077 0 0 0-36.674593 40.535076 39.569956 39.569956 0 0 0 36.674593 39.569956h219.082438a39.569956 39.569956 0 0 0 36.674593-39.569956 40.535077 40.535077 0 0 0-36.674593-40.535076zM1147.528716 868.612644L895.632168 428.517527a86.860878 86.860878 0 0 0-146.698372 0L497.037249 868.612644a80.105032 80.105032 0 0 0-14.476813 38.604835 84.930637 84.930637 0 0 0 11.58145 42.465319 96.512087 96.512087 0 0 0 30.883868 30.883867 85.895758 85.895758 0 0 0 43.430439 11.581451h502.827974a85.895758 85.895758 0 0 0 86.860878-84.930637 80.105032 80.105032 0 0 0-10.616329-38.604835zM801.050323 796.228579h-8.686088a8.686088 8.686088 0 0 1 0-6.755846v-173.721757a7.720967 7.720967 0 0 1 7.720967 0h39.569956a9.651209 9.651209 0 0 1 8.686088 0v171.791515H839.655158z m0 37.639714h44.39556a18.337297 18.337297 0 0 1 0 9.651209V868.612644a18.337297 18.337297 0 0 1 0 9.651209 11.58145 11.58145 0 0 1-8.686088 0h-36.674593a8.686088 8.686088 0 0 1-7.720967 0 18.337297 18.337297 0 0 1 0-9.651209v-21.232659a18.337297 18.337297 0 0 1 0-9.651208z"
p-id="7209"></path>

View File

@ -1,5 +1,5 @@
<template>
<svg t="1700642583398" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6047" width="128" height="128">
<svg class="icon" height="128" p-id="6047" t="1700642583398" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path
d="M830.4 513.6C786.4 469.6 729.6 448 672 448c-48.8 0-96.8 16-136.8 47.2L277.6 237.6 384 131.2l-29.6-29.6L224 184 128.8 88.8l-44 44 406.4 406.4c-64.8 88-56.8 212 22.4 291.2 44 44 100.8 65.6 158.4 65.6s114.4-21.6 158.4-65.6c87.2-87.2 87.2-229.6 0-316.8z m-45.6 271.2c-30.4 30.4-70.4 47.2-112.8 47.2-42.4 0-83.2-16.8-112.8-47.2-62.4-62.4-62.4-164 0-226.4C588.8 528.8 629.6 512 672 512s83.2 16.8 112.8 47.2c62.4 62.4 62.4 163.2 0 225.6z"
p-id="6048"></path>

View File

@ -1,5 +1,5 @@
<template>
<svg t="1700278692453" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7645" width="128" height="128">
<svg class="icon" height="128" p-id="7645" t="1700278692453" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path
d="M341.764096 68.266667h682.666667v136.533333H341.764096zM341.764096 443.733333h682.666667v136.533334H341.764096zM341.764096 819.2h682.666667v136.533333H341.764096zM111.022763 223.914667h-32.085334V0h32.085334zM189.529429 445.098667a57.344 57.344 0 0 1-22.528 49.834666 80.554667 80.554667 0 0 1-50.517333 14.336H68.697429a43.690667 43.690667 0 0 0-29.354666 6.826667 43.690667 43.690667 0 0 0-6.826667 30.037333v32.085334h154.282667V614.4H0.430763V546.133333a61.44 61.44 0 0 1 68.266666-68.266666h47.786667c27.306667 0 40.96-10.24 40.96-32.085334a23.210667 23.210667 0 0 0-10.24-18.432 44.373333 44.373333 0 0 0-26.624-8.192H0.430763v-32.085333h120.149333a79.189333 79.189333 0 0 1 45.056 12.970667 52.565333 52.565333 0 0 1 23.893333 45.056zM186.798763 955.733333a58.709333 58.709333 0 0 1-22.528 49.834667 77.141333 77.141333 0 0 1-49.152 15.701333H7.257429v-32.085333h106.496c26.624 0 40.277333-10.922667 40.277334-33.450667s-15.018667-34.133333-44.373334-34.133333H8.622763v-32.085333h105.130666c25.941333 0 38.912-10.922667 38.912-32.085334s-12.970667-27.989333-37.546666-27.989333H0.430763v-32.085333h114.688a73.728 73.728 0 0 1 42.325333 10.922666 51.882667 51.882667 0 0 1 27.306667 49.152 58.026667 58.026667 0 0 1-21.845334 49.152 51.882667 51.882667 0 0 1 23.893334 49.152z"
p-id="7646"></path>

View File

@ -1,5 +1,5 @@
<template>
<svg t="1700287773746" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5124" width="128" height="128">
<svg class="icon" height="128" p-id="5124" t="1700287773746" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path
d="M136.3 410.2h70v150.2h-70zM206.3 851.3V733.8h-70v117.5c0 40.7 31.5 73.9 70.2 73.9h206.1v-70H207.5c-0.5-0.6-1.2-1.9-1.2-3.9zM206.3 139c0-2 0.7-3.3 1.1-3.9h619.8c0.5 0.6 1.1 1.8 1.1 3.9v151.1h70V139c0-40.7-31.5-73.9-70.2-73.9H206.5c-38.7 0-70.2 33.1-70.2 73.9v97.9h70V139zM886.8 677.2c-20-20-43-35.9-68-47.2 19.2-22.2 30.9-51.2 30.9-82.8 0-69.9-56.8-126.7-126.7-126.7s-126.7 56.8-126.7 126.7c0 31.6 11.7 60.6 30.9 82.8-25 11.4-48 27.2-68 47.2-43.8 43.8-67.9 101.9-67.9 163.8 0 6.1 0.2 12.2 0.7 18.2l69.8-5.5c-0.3-4.2-0.5-8.5-0.5-12.7 0-89.1 72.5-161.6 161.6-161.6S884.6 751.9 884.6 841c0 4.3-0.2 8.6-0.5 12.7l69.8 5.5c0.5-6 0.7-12.1 0.7-18.2 0-61.9-24.1-120-67.8-163.8zM723 490.5c31.3 0 56.7 25.4 56.7 56.7s-25.4 56.7-56.7 56.7-56.7-25.4-56.7-56.7 25.4-56.7 56.7-56.7zM93.9 288.5h154.8v70H93.9zM93.9 612.1h154.8v70H93.9z"
p-id="5125"></path>

View File

@ -1,5 +1,5 @@
<template>
<svg t="1700643176982" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4094" width="128" height="128">
<svg class="icon" height="128" p-id="4094" t="1700643176982" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path
d="M532.168854 539.929096h1.786692c15.748682 0 28.607548-12.809747 28.67918-28.559453 0.071631-15.821337-12.738116-28.739555-28.67918-28.811186-15.748682 0-28.607548 12.809747-28.679179 28.702716-0.071631 15.246239 11.874445 27.805276 26.892487 28.667923z"
p-id="4095"></path>

View File

@ -1,5 +1,5 @@
<template>
<svg t="1700287474570" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4076" width="128" height="128">
<svg class="icon" height="128" p-id="4076" t="1700287474570" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path
d="M758.969877 1017.428352H58.739777a35.205133 35.205133 0 0 1-35.205134-35.205134V154.902586a35.205133 35.205133 0 0 1 35.205134-35.205133h700.2301a35.205133 35.205133 0 0 1 35.205134 35.205133v177.609898a35.205133 35.205133 0 0 1-70.410267 0V190.10772H93.94491v756.910365h629.819834V805.376099a35.205133 35.205133 0 0 1 70.410267 0V982.223218a35.205133 35.205133 0 0 1-35.205134 35.205134z"
p-id="4077"></path>

View File

@ -1,7 +1,13 @@
<template>
<svg class="icon" height="300" p-id="4952" t="1678864333679" version="1.1" viewBox="0 0 1024 1024" width="300" xmlns="http://www.w3.org/2000/svg">
<svg class="icon" height="128" p-id="5220" t="1706579628535" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path
d="M342 472h342c0.4 0 0.9 0 1.3-0.1 4.4-0.7 7.3-4.8 6.6-9.2l-40.2-248c-0.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-0.1 0.4-0.1 0.9-0.1 1.3 0 4.4 3.6 8 8 8z m91.2-196h159.5l20.7 128h-201l20.8-128zM435.7 558.7c-0.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-0.1 0.4-0.1 0.9-0.1 1.3 0 4.4 3.6 8 8 8h342c0.4 0 0.9 0 1.3-0.1 4.4-0.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zM905.9 806.7l-40.2-248c-0.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-0.1 0.4-0.1 0.9-0.1 1.3 0 4.4 3.6 8 8 8h342c0.4 0 0.9 0 1.3-0.1 4.3-0.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5z"
p-id="4953"></path>
d="M913.066667 264.533333l-371.2-209.066666c-25.6-12.8-59.733333-12.8-85.333334 0L89.6 264.533333C34.133333 298.666667 34.133333 379.733333 89.6 413.866667l371.2 209.066666c25.6 12.8 59.733333 12.8 85.333333 0l371.2-209.066666c55.466667-34.133333 55.466667-119.466667-4.266666-149.333334z m-413.866667 281.6L132.266667 337.066667 499.2 128l371.2 209.066667-371.2 209.066666z"
p-id="5221"></path>
<path
d="M46.933333 516.266667c12.8-21.333333 38.4-25.6 59.733334-17.066667l384 221.866667c12.8 8.533333 29.866667 8.533333 42.666666 0l388.266667-217.6c21.333333-12.8 46.933333-4.266667 59.733333 17.066666 12.8 21.333333 4.266667 46.933333-17.066666 59.733334l-388.266667 217.6c-38.4 21.333333-89.6 21.333333-128 0l-384-221.866667c-21.333333-12.8-25.6-38.4-17.066667-59.733333z"
p-id="5222"></path>
<path
d="M106.666667 669.866667c-21.333333-12.8-46.933333-4.266667-59.733334 17.066666-12.8 21.333333-4.266667 46.933333 17.066667 59.733334l388.266667 217.6c38.4 21.333333 85.333333 21.333333 128 0l379.733333-217.6c21.333333-12.8 25.6-38.4 17.066667-59.733334-12.8-21.333333-38.4-25.6-59.733334-17.066666l-379.733333 217.6c-12.8 8.533333-29.866667 8.533333-42.666667 0l-388.266666-217.6z"
p-id="5223"></path>
</svg>
</template>

View File

@ -1,5 +1,5 @@
<template>
<svg t="1706693297583" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4279" width="128" height="128">
<svg class="icon" height="128" p-id="4279" t="1706693297583" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path
d="M553 186.4v-84h204.8c22.5 0 41-18.4 41-41 0-22.5-18.4-41-41-41H266.2c-22.5 0-41 18.4-41 41 0 22.5 18.4 41 41 41H471v84C264 207 102.4 381.5 102.4 593.9c0 226.2 183.4 409.6 409.6 409.6s409.6-183.4 409.6-409.6c0-212.4-161.7-387-368.6-407.5z m-41 735.2c-180.7 0-327.7-147-327.7-327.7s147-327.7 327.7-327.7 327.7 147 327.7 327.7-147 327.7-327.7 327.7z"
p-id="4280"></path>

View File

@ -1,5 +1,5 @@
<template>
<svg t="1695640506520" class="icon" viewBox="0 0 1026 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4207" width="128" height="128">
<svg class="icon" height="128" p-id="4207" t="1695640506520" version="1.1" viewBox="0 0 1026 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path
d="M420.864 450.56l-164.864 139.264 0-186.368 185.344-162.816 5.12 6.144 167.936 195.584 308.224-320.512 92.16 112.64-413.696 431.104-3.072-7.168zM928.768 705.536q19.456 0 37.376 7.68t30.72 20.48 20.48 30.208 7.68 36.864q0 20.48-7.68 37.888t-20.48 30.208-30.72 20.48-37.376 7.68l-832.512 0q-20.48 0-37.888-7.68t-30.208-20.48-20.48-30.208-7.68-37.888l0-640q0-19.456 7.68-37.376t20.48-30.72 30.208-20.48 37.888-7.68q19.456 0 37.376 7.68t30.72 20.48 20.48 30.72 7.68 37.376l0 544.768 736.256 0z"
p-id="4208"></path>

View File

@ -1,10 +1,18 @@
<template>
<svg class="icon" height="200" p-id="2826" t="1679624385345" version="1.1" viewBox="0 0 1024 1024" width="200" xmlns="http://www.w3.org/2000/svg">
<svg
class="icon"
height="128"
p-id="13280"
t="1706508686630"
version="1.1"
viewBox="0 0 1024 1024"
width="128"
xmlns="http://www.w3.org/2000/svg">
<path
d="M831.825474 63.940169H191.939717C121.2479 63.940169 63.940169 121.2479 63.940169 191.939717v639.885757C63.940169 902.517291 121.2479 959.825022 191.939717 959.825022h639.885757c70.691817 0 127.999548-57.307731 127.999548-127.999548V191.939717C959.825022 121.2479 902.517291 63.940169 831.825474 63.940169zM895.884854 831.998871A63.835408 63.835408 0 0 1 831.912173 895.884854H192.087827c-17.112123 0-33.270563-6.574639-45.372232-18.67631S127.880338 849.110994 127.880338 831.998871V192.001129A64.236389 64.236389 0 0 1 192.087827 127.880338h639.824346A64.037705 64.037705 0 0 1 895.884854 192.001129v639.997742z"
p-id="2827"></path>
p-id="13281"></path>
<path
d="M791.998335 351.851551h-255.999097a31.970084 31.970084 0 0 0 0 63.940169h255.999097a31.970084 31.970084 0 0 0 0-63.940169zM791.998335 607.973471h-255.999097a31.970084 31.970084 0 0 0 0 63.940169h255.999097a31.970084 31.970084 0 0 0 0-63.940169zM344.001722 527.997686c-61.855792 0-111.985607 50.144265-111.985607 111.985606s50.144265 111.985607 111.985607 111.985607 111.985607-50.144265 111.985606-111.985607-50.129815-111.985607-111.985606-111.985606z m33.982213 145.982269a48.045438 48.045438 0 1 1 14.088511-33.982213 47.745605 47.745605 0 0 1-14.088511 33.985826zM417.395643 297.394035L311.999125 402.78694 270.6078 361.392003a31.970084 31.970084 0 1 0-45.213286 45.213285l63.997968 64.001581a31.970084 31.970084 0 0 0 45.213286 0l127.999548-127.999549a31.970084 31.970084 0 0 0-45.209673-45.213285z"
p-id="2828"></path>
p-id="13282"></path>
</svg>
</template>

View File

@ -1,56 +1,56 @@
export { default as Vue } from './Vue.vue'
export { default as Code } from './Code.vue'
export { default as Wechat } from './Wechat.vue'
export { default as BugFill } from './BugFill.vue'
export { default as BugLine } from './BugLine.vue'
export { default as FileWord } from './FileWord.vue'
export { default as FileExcel } from './FileExcel.vue'
export { default as FilePpt } from './FilePpt.vue'
export { default as Organization } from './Organization.vue'
export { default as Upload } from './Upload.vue'
export { default as Download } from './Download.vue'
export { default as Role } from './Role.vue'
export { default as Dept } from './Dept.vue'
export { default as Js } from './Js.vue'
export { default as Memory } from './Memory.vue'
export { default as Dashboard } from './Dashboard.vue'
export { default as Alert } from './Alert.vue'
export { default as Api } from './Api.vue'
export { default as Code2 } from './Code2.vue'
export { default as Csharp } from './Csharp.vue'
export { default as Dic } from './Dic.vue'
export { default as Position } from './Position.vue'
export { default as Tpl } from './Tpl.vue'
export { default as Demo } from './Demo.vue'
export { default as Link } from './Link.vue'
export { default as Unlink } from './Unlink.vue'
export { default as Send } from './Send.vue'
export { default as SmsCode } from './SmsCode.vue'
export { default as Meter } from './Meter.vue'
export { default as Grafana } from './Grafana.vue'
export { default as Elastic } from './Elastic.vue'
export { default as Kibana } from './Kibana.vue'
export { default as Kafka } from './Kafka.vue'
export { default as Resource } from './Resource.vue'
export { default as Robot } from './Robot.vue'
export { default as Device } from './Device.vue'
export { default as Business } from './Business.vue'
export { default as App } from './App.vue'
export { default as App2 } from './App2.vue'
export { default as Sync } from './Sync.vue'
export { default as Drone } from './Drone.vue'
export { default as Gitea } from './Gitea.vue'
export { default as BugFill } from './BugFill.vue'
export { default as BugLine } from './BugLine.vue'
export { default as Business } from './Business.vue'
export { default as Code } from './Code.vue'
export { default as Code2 } from './Code2.vue'
export { default as Csharp } from './Csharp.vue'
export { default as Dashboard } from './Dashboard.vue'
export { default as Demo } from './Demo.vue'
export { default as Dept } from './Dept.vue'
export { default as Device } from './Device.vue'
export { default as Dic } from './Dic.vue'
export { default as Docker } from './Docker.vue'
export { default as Task } from './Task.vue'
export { default as ProductCategory } from './ProductCategory.vue'
export { default as Product } from './Product.vue'
export { default as Download } from './Download.vue'
export { default as Drone } from './Drone.vue'
export { default as Elastic } from './Elastic.vue'
export { default as Error } from './Error.vue'
export { default as Warning } from './Warning.vue'
export { default as Stats } from './Stats.vue'
export { default as Log } from './Log.vue'
export { default as OperLog } from './OperLog.vue'
export { default as LoginLog } from './LoginLog.vue'
export { default as ExLog } from './ExLog.vue'
export { default as FileExcel } from './FileExcel.vue'
export { default as FilePpt } from './FilePpt.vue'
export { default as FileWord } from './FileWord.vue'
export { default as Gitea } from './Gitea.vue'
export { default as Grafana } from './Grafana.vue'
export { default as Js } from './Js.vue'
export { default as Kafka } from './Kafka.vue'
export { default as Key } from './Key.vue'
export { default as Kibana } from './Kibana.vue'
export { default as Link } from './Link.vue'
export { default as Log } from './Log.vue'
export { default as LoginLog } from './LoginLog.vue'
export { default as Memory } from './Memory.vue'
export { default as Meter } from './Meter.vue'
export { default as OpenDoor } from './OpenDoor.vue'
export { default as Alert } from './Alert.vue'
export { default as ScheduledJob } from './ScheduledJob.vue'
export { default as OperLog } from './OperLog.vue'
export { default as Organization } from './Organization.vue'
export { default as Position } from './Position.vue'
export { default as Product } from './Product.vue'
export { default as ProductCategory } from './ProductCategory.vue'
export { default as Resource } from './Resource.vue'
export { default as Robot } from './Robot.vue'
export { default as Role } from './Role.vue'
export { default as ScheduledJob } from './ScheduledJob.vue'
export { default as Send } from './Send.vue'
export { default as SmsCode } from './SmsCode.vue'
export { default as Stats } from './Stats.vue'
export { default as Sync } from './Sync.vue'
export { default as Task } from './Task.vue'
export { default as Tpl } from './Tpl.vue'
export { default as Unlink } from './Unlink.vue'
export { default as Upload } from './Upload.vue'
export { default as Vue } from './Vue.vue'
export { default as Warning } from './Warning.vue'
export { default as Wechat } from './Wechat.vue'

View File

@ -1,16 +1,16 @@
<template>
<sc-table-select
ref="area"
v-model="area"
:apiObj="$API.sys_dic.pagedQueryContent"
:params="form"
:props="{ label: 'key', value: 'value' }"
:table-width="600"
clearable>
clearable
ref="area">
<template #header>
<el-form :model="form">
<el-form-item>
<el-input v-model="form.keywords" clearable :placeholder="$t('请输入地区或代码')" @input="onInput"></el-input>
<el-input v-model="form.keywords" :placeholder="$t('请输入地区或代码')" @input="onInput" clearable></el-input>
</el-form-item>
</el-form>
</template>

View File

@ -1,5 +1,5 @@
<template>
<el-button icon="el-icon-plus" type="primary" @click="add"></el-button>
<el-button @click="add" icon="el-icon-plus" type="primary"></el-button>
</template>
<style scoped></style>
<script>

View File

@ -1,5 +1,5 @@
<template>
<el-button :disabled="vue.selection.length === 0" :loading="loading" icon="el-icon-delete" plain type="danger" @click="batchDel"></el-button>
<el-button :disabled="vue.selection.length === 0" :loading="loading" @click="batchDel" icon="el-icon-delete" plain type="danger"></el-button>
</template>
<style scoped></style>
<script>

View File

@ -1,14 +1,14 @@
<template>
<el-table-column align="right" :label="$t('操作')">
<el-table-column :label="$t('操作')" align="right">
<template #default="scope">
<el-button-group>
<template v-for="(item, i) in buttons?.filter((x) => !x.condition || x.condition(scope))" :key="i">
<el-popconfirm v-if="item.confirm" :title="`确定${item.title}吗?`" @confirm="item.click(scope.row, vue)">
<template #reference>
<el-button :icon="item.icon" :title="item.title" :type="item.type" size="small" @click.native.stop></el-button>
<el-button :icon="item.icon" :title="item.title" :type="item.type" @click.native.stop size="small"></el-button>
</template>
</el-popconfirm>
<el-button v-else :icon="item.icon" :title="item.title" size="small" @click="item.click(scope.row, vue)"
<el-button v-else :icon="item.icon" :title="item.title" @click="item.click(scope.row, vue)" size="small"
>{{ item.title }}
</el-button>
</template>

View File

@ -13,17 +13,17 @@
<div class="msg-yzm">
<el-input
v-model="form[Array.isArray(codeField) ? codeField[1] : codeField]"
:placeholder="$t('邮箱验证码')"
clearable
maxlength="4"
oninput="value=value.replace(/\D/g,'')"
:placeholder="$t('邮箱验证码')"
prefix-icon="el-icon-message"></el-input>
<el-button :disabled="sendDisabled" @click="getYzm"
>获取验证码<span v-if="sendDisabled"> ({{ waitSecs }})</span></el-button
>
</div>
</el-form-item>
<na-verify ref="verify" :imgSize="{ width: '310px', height: '155px' }" captchaType="blockPuzzle" mode="pop" @success="captchaSuccess"></na-verify>
<na-verify :imgSize="{ width: '310px', height: '155px' }" @success="captchaSuccess" captchaType="blockPuzzle" mode="pop" ref="verify"></na-verify>
</template>
<script>

View File

@ -24,7 +24,7 @@
>
</div>
</el-form-item>
<na-verify ref="verify" :imgSize="{ width: '310px', height: '155px' }" captchaType="blockPuzzle" mode="pop" @success="captchaSuccess"></na-verify>
<na-verify :imgSize="{ width: '310px', height: '155px' }" @success="captchaSuccess" captchaType="blockPuzzle" mode="pop" ref="verify"></na-verify>
</template>
<script>

View File

@ -1,5 +1,5 @@
<template>
<el-drawer v-model="visible" :size="size" :title="title" destroy-on-close @closed="$emit('closed')">
<el-drawer v-model="visible" :size="size" :title="title" @closed="$emit('closed')" destroy-on-close>
<el-main>
<el-descriptions :column="1" border size="small">
<el-descriptions-item v-for="(item, i) in data" :key="i" :label="i" label-class-name="w15">

View File

@ -1,8 +1,10 @@
<template>
<form class="right-panel-search" @keyup.enter="search" @submit.prevent="search">
<form @keyup.enter="search" @submit.prevent="search" class="right-panel-search">
<el-date-picker
v-if="hasDate"
v-model="form.dy.createdTime"
:end-placeholder="$t('结束日期')"
:range-separator="$t('至')"
:shortcuts="[
{
text: '今天',
@ -68,10 +70,8 @@
},
},
]"
:teleported="false"
:end-placeholder="$t('结束日期')"
:range-separator="$t('至')"
:start-placeholder="$t('开始日期')"
:teleported="false"
type="daterange"
value-format="YYYY-MM-DD"></el-date-picker>
@ -118,8 +118,8 @@
</template>
<el-button-group>
<el-button icon="el-icon-search" type="primary" @click="search">查询</el-button>
<el-button icon="el-icon-refresh-left" @click="tool.refreshTab(vue)">重置</el-button>
<el-button @click="search" icon="el-icon-search" type="primary">查询</el-button>
<el-button @click="tool.refreshTab(vue)" icon="el-icon-refresh-left">重置</el-button>
</el-button-group>
</form>
</template>

View File

@ -1,20 +1,20 @@
<template>
<sc-table-select
ref="user"
v-model="user"
:apiObj="$API.sys_user.pagedQuery"
:params="form"
:props="{ label: 'userName', value: 'id' }"
:table-width="600"
clearable>
clearable
ref="user">
<template #header>
<el-form :model="form">
<el-form-item>
<el-input
v-model="form.keywords"
clearable
:placeholder="$t('用户编号 / 用户名 / 手机号 / 邮箱 / 备注')"
@input="onInput"></el-input>
@input="onInput"
clearable></el-input>
</el-form-item>
</el-form>
</template>

View File

@ -3,16 +3,14 @@
<div :class="mode === 'pop' ? 'verifybox' : ''" :style="{ 'max-width': parseInt(imgSize.width) + 30 + 'px' }">
<div v-if="mode === 'pop'" class="verifybox-top">
请完成安全验证
<span class="verifybox-close" @click="closeBox">
<span @click="closeBox" class="verifybox-close">
<i class="iconfont icon-close"></i>
</span>
</div>
<div :style="{ padding: mode === 'pop' ? '1rem' : '0' }" class="verifybox-bottom">
<!-- 验证码容器 -->
<component
:is="componentType"
v-if="componentType"
ref="instance"
:arith="arith"
:barSize="barSize"
:blockSize="blockSize"
@ -20,10 +18,12 @@
:explain="explain"
:figure="figure"
:imgSize="imgSize"
:is="componentType"
:mode="mode"
:tpl="tpl"
:type="verifyType"
:vSpace="vSpace"></component>
:vSpace="vSpace"
ref="instance"></component>
</div>
</div>
</div>

View File

@ -3,7 +3,7 @@
<div v-if="type === '2'" :style="{ height: parseInt(setSize.imgHeight) + vSpace + 'px' }" class="verify-img-out">
<div :style="{ width: setSize.imgWidth, height: setSize.imgHeight }" class="verify-img-panel">
<img :src="backImgBase" alt="" style="width: 100%; height: 100%; display: block" />
<div v-show="showRefresh" class="verify-refresh" @click="refresh">
<div v-show="showRefresh" @click="refresh" class="verify-refresh">
<i class="iconfont icon-refresh"></i>
</div>
<transition name="tips">
@ -19,7 +19,7 @@
'line-height': barSize.height,
}"
class="verify-bar-area">
<span class="verify-msg" v-text="text"></span>
<span v-text="text" class="verify-msg"></span>
<div
:style="{
width: leftBarWidth !== undefined ? leftBarWidth : barSize.height,
@ -28,7 +28,7 @@
transaction: transitionWidth,
}"
class="verify-left-bar">
<span class="verify-msg" v-text="finishText"></span>
<span v-text="finishText" class="verify-msg"></span>
<div
:style="{
width: barSize.height,
@ -37,9 +37,9 @@
left: moveBlockLeft,
transition: transitionLeft,
}"
class="verify-move-block"
@mousedown="start"
@touchstart="start">
@touchstart="start"
class="verify-move-block">
<i :class="['verify-icon iconfont', iconClass]" :style="{ color: iconColor }"></i>
<div
v-if="type === '2'"

View File

@ -10,7 +10,7 @@
<template>
<transition name="el-zoom-in-top">
<div v-if="visible" ref="contextmenu" :style="{ left: left + 'px', top: top + 'px' }" class="sc-contextmenu" @contextmenu.prevent="fun">
<div v-if="visible" :style="{ left: left + 'px', top: top + 'px' }" @contextmenu.prevent="fun" class="sc-contextmenu" ref="contextmenu">
<ul class="sc-contextmenu__menu">
<slot></slot>
</ul>

View File

@ -9,9 +9,9 @@
<template>
<hr v-if="divided" />
<li :class="disabled ? 'disabled' : ''" @mouseenter="openSubmenu($event)" @mouseleave="closeSubmenu($event)" @click.stop="liClick">
<li :class="disabled ? 'disabled' : ''" @click.stop="liClick" @mouseenter="openSubmenu($event)" @mouseleave="closeSubmenu($event)">
<span class="title">
<el-icon class="sc-contextmenu__icon"><component :is="icon" v-if="icon" /></el-icon>
<el-icon class="sc-contextmenu__icon"><component v-if="icon" :is="icon" /></el-icon>
{{ title }}
</span>
<span class="sc-contextmenu__suffix">

View File

@ -8,9 +8,9 @@
-->
<template>
<el-input v-model="defaultValue" v-bind="$attrs">
<el-input v-bind="$attrs" v-model="defaultValue">
<template #append>
<el-dropdown size="medium" @command="handleShortcuts">
<el-dropdown @command="handleShortcuts" size="medium">
<el-button icon="el-icon-arrow-down"></el-button>
<template #dropdown>
<el-dropdown-menu>
@ -20,7 +20,7 @@
<el-dropdown-item command="0 0 0 1 * ?">每月一号零点</el-dropdown-item>
<el-dropdown-item command="0 0 0 L * ?">每月最后一天零点</el-dropdown-item>
<el-dropdown-item command="0 0 0 ? * 1">每周星期日零点</el-dropdown-item>
<el-dropdown-item v-for="(item, index) in shortcuts" :key="item.value" :command="item.value" :divided="index == 0"
<el-dropdown-item v-for="(item, index) in shortcuts" :command="item.value" :divided="index == 0" :key="item.value"
>{{ item.text }}
</el-dropdown-item>
<el-dropdown-item command="custom" divided icon="el-icon-plus">自定义</el-dropdown-item>
@ -295,7 +295,7 @@
<template #footer>
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="submit()"> </el-button>
<el-button @click="submit()" type="primary"> </el-button>
</template>
</el-dialog>
</template>

View File

@ -11,11 +11,11 @@
<template>
<div class="sc-cropper">
<div class="sc-cropper__img">
<img ref="img" :src="src" />
<img :src="src" ref="img" />
</div>
<div class="sc-cropper__preview">
<h4>图像预览</h4>
<div ref="preview" class="sc-cropper__preview__img"></div>
<div class="sc-cropper__preview__img" ref="preview"></div>
</div>
</div>
</template>

View File

@ -8,14 +8,14 @@
-->
<template>
<div ref="scDialog" class="sc-dialog">
<el-dialog ref="dialog" v-model="dialogVisible" :fullscreen="isFullscreen" :show-close="false" v-bind="$attrs">
<div class="sc-dialog" ref="scDialog">
<el-dialog v-bind="$attrs" v-model="dialogVisible" :fullscreen="isFullscreen" :show-close="false" ref="dialog">
<template #header>
<slot name="header">
<span class="el-dialog__title">{{ title }}</span>
</slot>
<div class="sc-dialog__headerbtn">
<button v-if="showFullscreen" aria-label="fullscreen" type="button" @click="setFullscreen">
<button v-if="showFullscreen" @click="setFullscreen" aria-label="fullscreen" type="button">
<el-icon v-if="isFullscreen" class="el-dialog__close">
<el-icon-bottom-left />
</el-icon>
@ -23,7 +23,7 @@
<el-icon-full-screen />
</el-icon>
</button>
<button v-if="showClose" aria-label="close" type="button" @click="closeDialog">
<button v-if="showClose" @click="closeDialog" aria-label="close" type="button">
<el-icon class="el-dialog__close">
<el-icon-close />
</el-icon>
@ -48,19 +48,17 @@ export default {
showClose: { type: Boolean, default: true },
showFullscreen: { type: Boolean, default: true },
loading: { type: Boolean, default: false },
fullScreen: { type: Boolean, default: false },
},
data() {
return {
dialogVisible: false,
isFullscreen: false,
isFullscreen: this.fullScreen,
}
},
watch: {
modelValue() {
this.dialogVisible = this.modelValue
if (this.dialogVisible) {
this.isFullscreen = false
}
},
},
mounted() {

View File

@ -1,5 +1,5 @@
<template>
<div ref="scEcharts" :style="{ height: height, width: width }"></div>
<div :style="{ height: height, width: width }" ref="scEcharts"></div>
</template>
<script>

View File

@ -1,5 +1,5 @@
<template>
<el-table ref="table" :data="columnData" border row-key="prop" style="width: 100%">
<el-table :data="columnData" border ref="table" row-key="prop" style="width: 100%">
<el-table-column :label="$t('排序')" prop="" width="60">
<el-tag class="move" disable-transitions style="cursor: move">
<el-icon style="cursor: move">

View File

@ -9,9 +9,9 @@
<template>
<slot :open="open">
<el-button plain type="primary" @click="open">导出</el-button>
<el-button @click="open" plain type="primary">导出</el-button>
</slot>
<el-drawer v-model="dialog" :size="400" append-to-body destroy-on-close direction="rtl" :title="$t('导出')">
<el-drawer v-model="dialog" :size="400" :title="$t('导出')" append-to-body destroy-on-close direction="rtl">
<el-main style="padding: 0 20px 20px 20px">
<div v-loading="downLoading" :element-loading-text="$t('正在处理中...')">
<div
@ -35,14 +35,14 @@
<el-button
v-if="async"
:loading="asyncLoading"
@click="download"
icon="el-icon-plus"
size="large"
style="width: 100%"
type="primary"
@click="download"
>发起导出任务
</el-button>
<el-button v-else icon="el-icon-download" size="large" style="width: 100%" type="primary" @click="download"> </el-button>
<el-button v-else @click="download" icon="el-icon-download" size="large" style="width: 100%" type="primary"> </el-button>
</el-tab-pane>
<el-tab-pane v-if="columnData.length > 0" :label="$t('列设置')" lazy>
<columnSet :column="columnData"></columnSet>

View File

@ -9,13 +9,12 @@
<template>
<slot :open="open">
<el-button plain type="primary" @click="open">导入</el-button>
<el-button @click="open" plain type="primary">导入</el-button>
</slot>
<el-dialog v-model="dialog" :close-on-click-modal="false" :width="550" append-to-body destroy-on-close :title="$t('导入')">
<el-dialog v-model="dialog" :close-on-click-modal="false" :title="$t('导入')" :width="550" append-to-body destroy-on-close>
<el-progress v-if="loading" :percentage="percentage" :stroke-width="20" :text-inside="true" style="margin-bottom: 1rem" />
<div v-loading="loading">
<el-upload
ref="uploader"
:accept="accept"
:before-upload="before"
:data="data"
@ -26,7 +25,8 @@
:on-progress="progress"
:on-success="success"
:show-file-list="false"
drag>
drag
ref="uploader">
<slot name="uploader">
<el-icon class="el-icon--upload">
<el-icon-upload-filled />

View File

@ -12,14 +12,14 @@
<div v-loading="menuLoading" class="sc-file-select__side">
<div class="sc-file-select__side-menu">
<el-tree
ref="group"
:current-node-key="menu.length > 0 ? menu[0][treeProps.key] : ''"
:data="menu"
:node-key="treeProps.key"
:props="treeProps"
@node-click="groupClick"
class="menu"
highlight-current
@node-click="groupClick">
ref="group">
<template #default="{ node }">
<span class="el-tree-node__label">
<el-icon class="icon"><el-icon-folder /></el-icon>{{ node.label }}
@ -55,16 +55,16 @@
<div class="keyword">
<el-input
v-model="keyword"
clearable
:placeholder="$t('文件名搜索')"
prefix-icon="el-icon-search"
@clear="search"
@keyup.enter="search"></el-input>
@keyup.enter="search"
clearable
prefix-icon="el-icon-search"></el-input>
</div>
</div>
<div class="sc-file-select__list">
<el-scrollbar ref="scrollbar">
<el-empty v-if="fileList.length === 0 && data.length === 0" :image-size="80" :description="$t('无数据')"></el-empty>
<el-empty v-if="fileList.length === 0 && data.length === 0" :description="$t('无数据')" :image-size="80"></el-empty>
<div v-for="(file, index) in fileList" :key="index" class="sc-file-select__item">
<div class="sc-file-select__item__file">
<div class="sc-file-select__item__upload">
@ -76,10 +76,10 @@
</div>
<div
v-for="item in data"
:key="item[fileProps.key]"
:class="{ active: value.includes(item[fileProps.url]) }"
class="sc-file-select__item"
@click="select(item)">
:key="item[fileProps.key]"
@click="select(item)"
class="sc-file-select__item">
<div class="sc-file-select__item__file">
<div v-if="multiple" class="sc-file-select__item__checkbox">
<el-icon>
@ -110,14 +110,14 @@
v-model:currentPage="currentPage"
:page-size="pageSize"
:total="total"
@current-change="reload"
background
layout="prev, pager, next"
small
@current-change="reload"></el-pagination>
small></el-pagination>
</div>
<div class="sc-file-select__do">
<slot name="do"></slot>
<el-button :disabled="value.length <= 0" type="primary" @click="submit"> </el-button>
<el-button :disabled="value.length <= 0" @click="submit" type="primary"> </el-button>
</div>
</div>
</div>

View File

@ -11,11 +11,11 @@
<div class="sc-filterBar">
<slot :filterLength="filterObjLength" :openFilter="openFilter">
<el-badge :hidden="filterObjLength <= 0" :value="filterObjLength" type="danger">
<el-button icon="el-icon-filter" @click="openFilter"></el-button>
<el-button @click="openFilter" icon="el-icon-filter"></el-button>
</el-badge>
</slot>
<el-drawer v-model="drawer" :size="650" append-to-body :title="$t('过滤器')">
<el-drawer v-model="drawer" :size="650" :title="$t('过滤器')" append-to-body>
<el-container v-loading="saveLoading">
<el-main style="padding: 0">
<el-tabs class="root">
@ -44,9 +44,9 @@
v-model="item.field"
:filter="filter"
:options="fields"
filterable
:placeholder="$t('过滤字段')"
@change="fieldChange(item)">
@change="fieldChange(item)"
filterable>
</py-select>
</td>
<td v-if="showOperator">
@ -62,8 +62,8 @@
<el-input
v-if="!item.field.type"
v-model="item.value"
disabled
:placeholder="$t('请选择过滤字段')"></el-input>
:placeholder="$t('请选择过滤字段')"
disabled></el-input>
<!-- 输入框 -->
<el-input
v-if="item.field.type === 'text'"
@ -82,8 +82,8 @@
remoteMethod(query, item)
}
"
filterable
@visible-change="visibleChange($event, item)">
@visible-change="visibleChange($event, item)"
filterable>
<el-option
v-for="field in item.field.extend.data"
:key="field.value"
@ -152,13 +152,13 @@
no-data-text="$t('输入关键词后按回车确认')"></el-select>
</td>
<td>
<el-icon class="del" @click="delFilter(index)">
<el-icon @click="delFilter(index)" class="del">
<el-icon-delete />
</el-icon>
</td>
</tr>
</table>
<el-button icon="el-icon-plus" text type="primary" @click="addFilter">增加过滤项</el-button>
<el-button @click="addFilter" icon="el-icon-plus" text type="primary">增加过滤项</el-button>
</div>
</el-scrollbar>
</el-tab-pane>
@ -167,14 +167,14 @@
<div class="tabs-label">常用</div>
</template>
<el-scrollbar>
<my ref="my" :data="myFilter" :filterName="filterName" @selectMyfilter="selectMyfilter"></my>
<my :data="myFilter" :filterName="filterName" @selectMyfilter="selectMyfilter" ref="my"></my>
</el-scrollbar>
</el-tab-pane>
</el-tabs>
</el-main>
<el-footer>
<el-button :disabled="filter.length <= 0" type="primary" @click="ok">立即过滤</el-button>
<el-button :disabled="filter.length <= 0" plain type="primary" @click="saveMy">另存为常用</el-button>
<el-button :disabled="filter.length <= 0" @click="ok" type="primary">立即过滤</el-button>
<el-button :disabled="filter.length <= 0" @click="saveMy" plain type="primary">另存为常用</el-button>
<el-button @click="clear">清空过滤</el-button>
</el-footer>
</el-container>

View File

@ -25,7 +25,7 @@
<label>{{ item.title }}</label>
<el-popconfirm :title="$t('确认删除此常用过滤吗?')" @confirm="closeMyfilter(item, index)">
<template #reference>
<el-icon class="del" @click.stop="() => {}">
<el-icon @click.stop="() => {}" class="del">
<el-icon-delete />
</el-icon>
</template>

View File

@ -8,11 +8,11 @@
-->
<template>
<el-select :filter-method="filterMethod" v-bind="$attrs" @visible-change="visibleChange">
<el-select v-bind="$attrs" :filter-method="filterMethod" @visible-change="visibleChange">
<el-option
v-for="field in optionsList"
:key="field.value"
:disabled="isDisabled(field.value)"
:key="field.value"
:label="field.label"
:value="field"></el-option>
</el-select>

View File

@ -12,12 +12,12 @@
<el-form
v-else
ref="form"
v-loading="loading"
:label-position="config.labelPosition"
:label-width="config.labelWidth"
:model="form"
element-loading-text="Loading...">
element-loading-text="Loading..."
ref="form">
<el-row :gutter="15">
<template v-for="(item, index) in config.formItems" :key="index">
<el-col v-if="!hideHandle(item)" :span="item.span || 24">
@ -45,15 +45,15 @@
<template v-if="item.name">
<el-checkbox
v-for="(_item, _index) in item.options.items"
:key="_index"
v-model="form[item.name][_item.name]"
:key="_index"
:label="_item.label"></el-checkbox>
</template>
<template v-else>
<el-checkbox
v-for="(_item, _index) in item.options.items"
:key="_index"
v-model="form[_item.name]"
:key="_index"
:label="_item.label"></el-checkbox>
</template>
</template>
@ -148,7 +148,7 @@
<el-col :span="24">
<el-form-item>
<slot>
<el-button type="primary" @click="submit">提交</el-button>
<el-button @click="submit" type="primary">提交</el-button>
</slot>
</el-form-item>
</el-col>

View File

@ -8,23 +8,23 @@
-->
<template>
<div ref="scFormTable" class="sc-form-table">
<el-table ref="table" :data="data" border stripe>
<div class="sc-form-table" ref="scFormTable">
<el-table :data="data" border ref="table" stripe>
<el-table-column fixed="left" type="index" width="50">
<template #header>
<el-button v-if="!hideAdd" circle icon="el-icon-plus" size="small" type="primary" @click="rowAdd"></el-button>
<el-button v-if="!hideAdd" @click="rowAdd" circle icon="el-icon-plus" size="small" type="primary"></el-button>
</template>
<template #default="scope">
<div :class="['sc-form-table-handle', { 'sc-form-table-handle-delete': !hideDelete }]">
<span>{{ scope.$index + 1 }}</span>
<el-button
v-if="!hideDelete"
@click="rowDel(scope.row, scope.$index)"
circle
icon="el-icon-delete"
plain
size="small"
type="danger"
@click="rowDel(scope.row, scope.$index)"></el-button>
type="danger"></el-button>
</div>
</template>
</el-table-column>

View File

@ -9,18 +9,18 @@
<template>
<div class="sc-icon-select">
<div :class="{ hasValue: value }" class="sc-icon-select__wrapper" @click="open">
<div :class="{ hasValue: value }" @click="open" class="sc-icon-select__wrapper">
<el-input v-model="value" :disabled="disabled" :prefix-icon="value || 'el-icon-plus'" readonly></el-input>
</div>
<el-dialog v-model="dialogVisible" :width="760" append-to-body destroy-on-close :title="$t('图标选择器')">
<el-dialog v-model="dialogVisible" :title="$t('图标选择器')" :width="760" append-to-body destroy-on-close>
<div class="sc-icon-select__dialog" style="margin: -20px 0 -10px 0">
<el-form :rules="{}">
<el-form-item prop="searchText">
<el-input
v-model="searchText"
:placeholder="$t('搜索')"
class="sc-icon-select__search-input"
clearable
:placeholder="$t('搜索')"
prefix-icon="el-icon-search"
size="large" />
</el-form-item>
@ -34,7 +34,7 @@
<div class="sc-icon-select__list">
<el-scrollbar>
<ul @click="selectIcon">
<el-empty v-if="item.icons.length === 0" :image-size="100" :description="$t('未查询到相关图标')" />
<el-empty v-if="item.icons.length === 0" :description="$t('未查询到相关图标')" :image-size="100" />
<li v-for="icon in item.icons" :key="icon">
<span :data-icon="icon"></span>
<el-icon>
@ -48,7 +48,7 @@
</el-tabs>
</div>
<template #footer>
<el-button text @click="clear">清除</el-button>
<el-button @click="clear" text>清除</el-button>
<el-button @click="dialogVisible = false">取消</el-button>
</template>
</el-dialog>

View File

@ -14,7 +14,7 @@
<el-icon-loading />
</el-icon>
</div>
<el-select :loading="loading" v-bind="$attrs" @visible-change="visibleChange">
<el-select v-bind="$attrs" :loading="loading" @visible-change="visibleChange">
<el-option v-for="item in options" :key="item[props.value]" :label="item[props.label]" :value="objValueType ? item : item[props.value]">
<slot :data="item" name="option"></slot>
</el-option>

View File

@ -18,8 +18,8 @@
<ul>
<li
v-for="option in item.options"
:key="option.value"
:class="{ active: selected[item.key] && selected[item.key].includes(option.value) }"
:key="option.value"
@click="select(option, item)">
<el-icon v-if="option.icon">
<component :is="option.icon" />

View File

@ -8,7 +8,7 @@
<span class="sortable_b">排序</span>
<span class="fixed_b">固定</span>
</div>
<div ref="list" class="setting-column__list">
<div class="setting-column__list" ref="list">
<ul>
<li v-for="item in usercolumn" :key="item.prop">
<span class="move_b">
@ -32,10 +32,10 @@
</div>
<div class="setting-column__bottom">
<el-button :disabled="isSave" @click="backDefaul">重置</el-button>
<el-button type="primary" @click="save">保存</el-button>
<el-button @click="save" type="primary">保存</el-button>
</div>
</div>
<el-empty v-else :image-size="80" :description="$t('暂无可配置的列')"></el-empty>
<el-empty v-else :description="$t('暂无可配置的列')" :image-size="80"></el-empty>
</template>
<script>

View File

@ -7,24 +7,24 @@
* @LastEditTime: 2023年3月2日10:43:35
-->
<template>
<div ref="scTableMain" v-loading="loading" :style="{ height: _height }" class="scTable">
<div v-loading="loading" :style="{ height: _height }" class="scTable" ref="scTableMain">
<div :style="{ height: _table_height }" class="scTable-table">
<el-table
:key="toggleIndex"
ref="scTable"
v-bind="$attrs"
:border="config.border"
:data="tableData"
:default-expand-all="config.defaultExpandAll"
:default-sort="defaultSort"
:height="height === 'auto' ? null : '100%'"
:key="toggleIndex"
:row-key="rowKey"
:size="config.size"
:stripe="config.stripe"
:summary-method="remoteSummary ? remoteSummaryMethod : summaryMethod"
v-bind="$attrs"
@sort-change="sortChange"
@cell-click="cellClickMethod"
@filter-change="filterChange"
@cell-click="cellClickMethod">
@sort-change="sortChange"
ref="scTable">
<slot></slot>
<template v-for="(item, index) in userColumn" :key="index">
<el-table-column
@ -39,7 +39,7 @@
:sortable="item.sortable"
:width="item.width">
<template #default="scope">
<slot :name="item.prop" v-bind="scope">
<slot v-bind="scope" :name="item.prop">
{{ scope.row[item.prop] }}
</slot>
</template>
@ -61,39 +61,39 @@
:page-sizes="pageSizes"
:small="true"
:total="total"
background
@current-change="paginationChange"
@update:page-size="pageSizeChange"></el-pagination>
@update:page-size="pageSizeChange"
background></el-pagination>
</div>
<div v-if="!hideDo" class="scTable-do">
<el-button v-if="!hideRefresh" circle icon="el-icon-refresh" style="margin-left: 1rem" @click="refresh"></el-button>
<el-button v-if="!hideRefresh" @click="refresh" circle icon="el-icon-refresh" style="margin-left: 1rem"></el-button>
<el-popover
v-if="column"
:hide-after="0"
:width="500"
placement="top"
:title="$t('列设置')"
trigger="click"
:width="500"
@after-leave="customColumnShow = false"
@show="customColumnShow = true"
@after-leave="customColumnShow = false">
placement="top"
trigger="click">
<template #reference>
<el-button circle icon="el-icon-set-up" style="margin-left: 1rem"></el-button>
</template>
<columnSetting
v-if="customColumnShow"
ref="columnSetting"
:column="userColumn"
@back="columnSettingBack"
@save="columnSettingSave"
@userChange="columnSettingChange"></columnSetting>
@userChange="columnSettingChange"
ref="columnSetting"></columnSetting>
</el-popover>
<el-popover v-if="!hideSetting" :hide-after="0" :width="400" placement="top" :title="$t('表格设置')" trigger="click">
<el-popover v-if="!hideSetting" :hide-after="0" :title="$t('表格设置')" :width="400" placement="top" trigger="click">
<template #reference>
<el-button circle icon="el-icon-setting" style="margin-left: 1rem"></el-button>
</template>
<el-form label-position="left" label-width="80px">
<el-form-item :label="$t('表格尺寸')">
<el-radio-group v-model="config.size" size="small" @change="configSizeChange">
<el-radio-group v-model="config.size" @change="configSizeChange" size="small">
<el-radio-button label="large"></el-radio-button>
<el-radio-button label="default">正常</el-radio-button>
<el-radio-button label="small"></el-radio-button>

View File

@ -9,7 +9,6 @@
<template>
<el-select
ref="select"
v-model="defaultValue"
:clearable="clearable"
:collapse-tags="collapseTags"
@ -22,20 +21,21 @@
:size="size"
@clear="clear"
@remove-tag="removeTag"
@visible-change="visibleChange">
@visible-change="visibleChange"
ref="select">
<template #empty>
<div v-loading="loading" :style="{ width: tableWidth + 'px' }" class="sc-table-select__table">
<div class="sc-table-select__header">
<slot :form="formData" :submit="formSubmit" name="header"></slot>
</div>
<el-table
ref="table"
:data="tableData"
:height="245"
:highlight-current-row="!multiple"
@select="select"
@row-click="click"
@select-all="selectAll">
@select="select"
@select-all="selectAll"
max-height="30rem"
ref="table">
<el-table-column v-if="multiple" type="selection" width="45"></el-table-column>
<el-table-column v-else type="index" width="45">
<template #default="scope"
@ -49,10 +49,10 @@
v-model:currentPage="currentPage"
:page-size="pageSize"
:total="total"
@current-change="reload"
background
layout="prev, pager, next"
small
@current-change="reload"></el-pagination>
small></el-pagination>
</div>
</div>
</template>
@ -182,7 +182,7 @@ export default {
item.currentLabel = item.value[this.defaultProps.label]
})
} else {
this.$refs.select.selectedLabel = this.defaultValue[this.defaultProps.label]
this.$refs.select.states.selectedLabel = this.defaultValue[this.defaultProps.label]
}
})
},

View File

@ -13,14 +13,13 @@
</template>
</el-image>
<div v-if="!disabled" class="sc-upload__img-actions">
<span class="del" @click="handleRemove()"
<span @click="handleRemove()" class="del"
><el-icon><el-icon-delete /></el-icon
></span>
</div>
</div>
<el-upload
v-if="!file"
ref="uploader"
:accept="accept"
:action="action"
:auto-upload="cropper ? false : autoUpload"
@ -35,7 +34,8 @@
:on-exceed="handleExceed"
:on-success="success"
:show-file-list="showFileList"
class="uploader">
class="uploader"
ref="uploader">
<slot>
<div class="el-upload--picture-card">
<div class="file-empty">
@ -48,11 +48,11 @@
</slot>
</el-upload>
<span style="display: none !important"><el-input v-model="value"></el-input></span>
<el-dialog v-model="cropperDialogVisible" :width="580" destroy-on-close draggable :title="$t('剪裁')" @closed="cropperClosed">
<sc-cropper ref="cropper" :aspectRatio="aspectRatio" :compress="compress" :src="cropperFile.tempCropperFile"></sc-cropper>
<el-dialog v-model="cropperDialogVisible" :title="$t('剪裁')" :width="580" @closed="cropperClosed" destroy-on-close draggable>
<sc-cropper :aspectRatio="aspectRatio" :compress="compress" :src="cropperFile.tempCropperFile" ref="cropper"></sc-cropper>
<template #footer>
<el-button @click="cropperDialogVisible = false"> </el-button>
<el-button type="primary" @click="cropperSave"> </el-button>
<el-button @click="cropperSave" type="primary"> </el-button>
</template>
</el-dialog>
</div>

View File

@ -1,7 +1,6 @@
<template>
<div class="sc-upload-multiple">
<el-upload
ref="uploader"
v-model:file-list="defaultFileList"
:accept="accept"
:action="action"
@ -18,7 +17,8 @@
:on-preview="handlePreview"
:on-success="success"
:show-file-list="showFileList"
list-type="picture-card">
list-type="picture-card"
ref="uploader">
<slot>
<el-icon>
<el-icon-plus />
@ -43,7 +43,7 @@
</template>
</el-image>
<div v-if="!disabled && file.status === 'success'" class="sc-upload__item-actions">
<span class="del" @click="handleRemove(file)"
<span @click="handleRemove(file)" class="del"
><el-icon><el-icon-delete /></el-icon
></span>
</div>

View File

@ -8,7 +8,7 @@
-->
<template>
<div ref="scVideo" class="sc-video"></div>
<div class="sc-video" ref="scVideo"></div>
</template>
<script>

View File

@ -8,7 +8,7 @@
-->
<template>
<div ref="scWaterMark" class="sc-water-mark">
<div class="sc-water-mark" ref="scWaterMark">
<slot></slot>
</div>
</template>

View File

@ -16,7 +16,7 @@
<div class="end-node-text">流程结束</div>
</div>
</div>
<use-select v-if="selectVisible" ref="useselect" @closed="selectVisible = false"></use-select>
<use-select v-if="selectVisible" @closed="selectVisible = false" ref="useselect"></use-select>
</div>
</template>

View File

@ -8,19 +8,19 @@
<div class="add-node-popover-body">
<ul>
<li>
<el-icon style="color: #ff943e" @click="addType(1)">
<el-icon @click="addType(1)" style="color: #ff943e">
<el-icon-user-filled />
</el-icon>
<p>审批节点</p>
</li>
<li>
<el-icon style="color: #3296fa" @click="addType(2)">
<el-icon @click="addType(2)" style="color: #3296fa">
<el-icon-promotion />
</el-icon>
<p>抄送节点</p>
</li>
<li>
<el-icon style="color: #15bc83" @click="addType(4)">
<el-icon @click="addType(4)" style="color: #15bc83">
<el-icon-share />
</el-icon>
<p>条件分支</p>

View File

@ -1,12 +1,12 @@
<template>
<div class="node-wrap">
<div class="node-wrap-box" @click="show">
<div @click="show" class="node-wrap-box">
<div class="title" style="background: #ff943e">
<el-icon class="icon">
<el-icon-user-filled />
</el-icon>
<span>{{ nodeConfig.nodeName }}</span>
<el-icon class="close" @click.stop="delNode()">
<el-icon @click.stop="delNode()" class="close">
<el-icon-close />
</el-icon>
</div>
@ -16,7 +16,7 @@
</div>
</div>
<add-node v-model="nodeConfig.childNode"></add-node>
<el-drawer v-model="drawer" :size="500" append-to-body destroy-on-close :title="$t('审批人设置')">
<el-drawer v-model="drawer" :size="500" :title="$t('审批人设置')" append-to-body destroy-on-close>
<template #header>
<div class="node-wrap-drawer__title">
<label v-if="!isEditTitle" @click="editTitle"
@ -27,11 +27,11 @@
</label>
<el-input
v-if="isEditTitle"
ref="nodeTitle"
v-model="form.nodeName"
clearable
@blur="saveTitle"
@keyup.enter="saveTitle"></el-input>
@keyup.enter="saveTitle"
clearable
ref="nodeTitle"></el-input>
</div>
</template>
<el-container>
@ -39,19 +39,19 @@
<el-form label-position="top">
<el-form-item :label="$t('审批人员类型')">
<el-select v-model="form.setType">
<el-option :value="1" :label="$t('指定成员')"></el-option>
<el-option :value="2" :label="$t('主管')"></el-option>
<el-option :value="3" :label="$t('角色')"></el-option>
<el-option :value="4" :label="$t('发起人自选')"></el-option>
<el-option :value="5" :label="$t('发起人自己')"></el-option>
<el-option :value="7" :label="$t('连续多级主管')"></el-option>
<el-option :label="$t('指定成员')" :value="1"></el-option>
<el-option :label="$t('主管')" :value="2"></el-option>
<el-option :label="$t('角色')" :value="3"></el-option>
<el-option :label="$t('发起人自选')" :value="4"></el-option>
<el-option :label="$t('发起人自己')" :value="5"></el-option>
<el-option :label="$t('连续多级主管')" :value="7"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="form.setType === 1" :label="$t('选择成员')">
<el-button icon="el-icon-plus" round type="primary" @click="selectHandle(1, form.nodeUserList)">选择人员</el-button>
<el-button @click="selectHandle(1, form.nodeUserList)" icon="el-icon-plus" round type="primary">选择人员</el-button>
<div class="tags-list">
<el-tag v-for="(user, index) in form.nodeUserList" :key="user.id" closable @close="delUser(index)"
<el-tag v-for="(user, index) in form.nodeUserList" :key="user.id" @close="delUser(index)" closable
>{{ user.name }}
</el-tag>
</div>
@ -64,9 +64,9 @@
</el-form-item>
<el-form-item v-if="form.setType === 3" :label="$t('选择角色')">
<el-button icon="el-icon-plus" round type="primary" @click="selectHandle(2, form.nodeRoleList)">选择角色</el-button>
<el-button @click="selectHandle(2, form.nodeRoleList)" icon="el-icon-plus" round type="primary">选择角色</el-button>
<div class="tags-list">
<el-tag v-for="(role, index) in form.nodeRoleList" :key="role.id" closable type="info" @close="delRole(index)"
<el-tag v-for="(role, index) in form.nodeRoleList" :key="role.id" @close="delRole(index)" closable type="info"
>{{ role.name }}
</el-tag>
</div>
@ -124,7 +124,7 @@
</el-form>
</el-main>
<el-footer>
<el-button type="primary" @click="save">保存</el-button>
<el-button @click="save" type="primary">保存</el-button>
<el-button @click="drawer = false">取消</el-button>
</el-footer>
</el-container>

View File

@ -2,12 +2,12 @@
<div class="branch-wrap">
<div class="branch-box-wrap">
<div class="branch-box">
<el-button class="add-branch" plain round type="success" @click="addTerm">添加条件</el-button>
<el-button @click="addTerm" class="add-branch" plain round type="success">添加条件</el-button>
<div v-for="(item, index) in nodeConfig.conditionNodes" :key="index" class="col-box">
<div class="condition-node">
<div class="condition-node-box">
<div class="auto-judge" @click="show(index)">
<div v-if="index !== 0" class="sort-left" @click.stop="arrTransfer(index, -1)">
<div @click="show(index)" class="auto-judge">
<div v-if="index !== 0" @click.stop="arrTransfer(index, -1)" class="sort-left">
<el-icon>
<el-icon-arrow-left />
</el-icon>
@ -15,7 +15,7 @@
<div class="title">
<span class="node-title">{{ item.nodeName }}</span>
<span class="priority-title">优先级{{ item.priorityLevel }}</span>
<el-icon class="close" @click.stop="delTerm(index)">
<el-icon @click.stop="delTerm(index)" class="close">
<el-icon-close />
</el-icon>
</div>
@ -23,7 +23,7 @@
<span v-if="toText(nodeConfig, index)">{{ toText(nodeConfig, index) }}</span>
<span v-else class="placeholder">请设置条件</span>
</div>
<div v-if="index != nodeConfig.conditionNodes.length - 1" class="sort-right" @click.stop="arrTransfer(index)">
<div v-if="index != nodeConfig.conditionNodes.length - 1" @click.stop="arrTransfer(index)" class="sort-right">
<el-icon>
<el-icon-arrow-right />
</el-icon>
@ -41,7 +41,7 @@
</div>
<add-node v-model="nodeConfig.childNode"></add-node>
</div>
<el-drawer v-model="drawer" :size="600" append-to-body destroy-on-close :title="$t('条件设置')">
<el-drawer v-model="drawer" :size="600" :title="$t('条件设置')" append-to-body destroy-on-close>
<template #header>
<div class="node-wrap-drawer__title">
<label v-if="!isEditTitle" @click="editTitle"
@ -52,11 +52,11 @@
</label>
<el-input
v-if="isEditTitle"
ref="nodeTitle"
v-model="form.nodeName"
clearable
@blur="saveTitle"
@keyup.enter="saveTitle"></el-input>
@keyup.enter="saveTitle"
clearable
ref="nodeTitle"></el-input>
</div>
</template>
<el-container>
@ -102,18 +102,18 @@
</el-table-column>
<el-table-column :label="$t('移除')" prop="value" width="55">
<template #default="scope">
<el-link :underline="false" type="danger" @click="deleteConditionList(scope.$index)">移除</el-link>
<el-link :underline="false" @click="deleteConditionList(scope.$index)" type="danger">移除</el-link>
</template>
</el-table-column>
</el-table>
</el-form-item>
<p>
<el-button icon="el-icon-plus" round type="primary" @click="addConditionList">增加条件</el-button>
<el-button @click="addConditionList" icon="el-icon-plus" round type="primary">增加条件</el-button>
</p>
</el-form>
</el-main>
<el-footer>
<el-button type="primary" @click="save">保存</el-button>
<el-button @click="save" type="primary">保存</el-button>
<el-button @click="drawer = false">取消</el-button>
</el-footer>
</el-container>

View File

@ -1,6 +1,6 @@
<template>
<div class="node-wrap">
<div class="node-wrap-box start-node" @click="show">
<div @click="show" class="node-wrap-box start-node">
<div class="title" style="background: #576a95">
<el-icon class="icon">
<el-icon-user-filled />
@ -12,7 +12,7 @@
</div>
</div>
<add-node v-model="nodeConfig.childNode"></add-node>
<el-drawer v-model="drawer" :size="500" append-to-body destroy-on-close :title="$t('发起人')">
<el-drawer v-model="drawer" :size="500" :title="$t('发起人')" append-to-body destroy-on-close>
<template #header>
<div class="node-wrap-drawer__title">
<label v-if="!isEditTitle" @click="editTitle"
@ -23,20 +23,20 @@
</label>
<el-input
v-if="isEditTitle"
ref="nodeTitle"
v-model="form.nodeName"
clearable
@blur="saveTitle"
@keyup.enter="saveTitle"></el-input>
@keyup.enter="saveTitle"
clearable
ref="nodeTitle"></el-input>
</div>
</template>
<el-container>
<el-main style="padding: 0 20px 20px 20px">
<el-form label-position="top">
<el-form-item :label="$t('谁可以发起此审批')">
<el-button icon="el-icon-plus" round type="primary" @click="selectHandle(2, form.nodeRoleList)">选择角色</el-button>
<el-button @click="selectHandle(2, form.nodeRoleList)" icon="el-icon-plus" round type="primary">选择角色</el-button>
<div class="tags-list">
<el-tag v-for="(role, index) in form.nodeRoleList" :key="role.id" closable type="info" @close="delRole(index)"
<el-tag v-for="(role, index) in form.nodeRoleList" :key="role.id" @close="delRole(index)" closable type="info"
>{{ role.name }}
</el-tag>
</div>
@ -49,7 +49,7 @@
</el-form>
</el-main>
<el-footer>
<el-button type="primary" @click="save">保存</el-button>
<el-button @click="save" type="primary">保存</el-button>
<el-button @click="drawer = false">取消</el-button>
</el-footer>
</el-container>

View File

@ -1,12 +1,12 @@
<template>
<div class="node-wrap">
<div class="node-wrap-box" @click="show">
<div @click="show" class="node-wrap-box">
<div class="title" style="background: #3296fa">
<el-icon class="icon">
<el-icon-promotion />
</el-icon>
<span>{{ nodeConfig.nodeName }}</span>
<el-icon class="close" @click.stop="delNode()">
<el-icon @click.stop="delNode()" class="close">
<el-icon-close />
</el-icon>
</div>
@ -16,7 +16,7 @@
</div>
</div>
<add-node v-model="nodeConfig.childNode"></add-node>
<el-drawer v-model="drawer" :size="500" append-to-body destroy-on-close :title="$t('抄送人设置')">
<el-drawer v-model="drawer" :size="500" :title="$t('抄送人设置')" append-to-body destroy-on-close>
<template #header>
<div class="node-wrap-drawer__title">
<label v-if="!isEditTitle" @click="editTitle"
@ -27,20 +27,20 @@
</label>
<el-input
v-if="isEditTitle"
ref="nodeTitle"
v-model="form.nodeName"
clearable
@blur="saveTitle"
@keyup.enter="saveTitle"></el-input>
@keyup.enter="saveTitle"
clearable
ref="nodeTitle"></el-input>
</div>
</template>
<el-container>
<el-main style="padding: 0 20px 20px 20px">
<el-form label-position="top">
<el-form-item :label="$t('选择要抄送的人员')">
<el-button icon="el-icon-plus" round type="primary" @click="selectHandle(1, form.nodeUserList)">选择人员</el-button>
<el-button @click="selectHandle(1, form.nodeUserList)" icon="el-icon-plus" round type="primary">选择人员</el-button>
<div class="tags-list">
<el-tag v-for="(user, index) in form.nodeUserList" :key="user.id" closable @close="delUser(index)"
<el-tag v-for="(user, index) in form.nodeUserList" :key="user.id" @close="delUser(index)" closable
>{{ user.name }}
</el-tag>
</div>
@ -51,7 +51,7 @@
</el-form>
</el-main>
<el-footer>
<el-button type="primary" @click="save">保存</el-button>
<el-button @click="save" type="primary">保存</el-button>
<el-button @click="drawer = false">取消</el-button>
</el-footer>
</el-container>

View File

@ -3,16 +3,16 @@
v-model="dialogVisible"
:title="titleMap[type - 1]"
:width="type == 1 ? 680 : 460"
@closed="$emit('closed')"
append-to-body
destroy-on-close
@closed="$emit('closed')">
destroy-on-close>
<template v-if="type === 1">
<div class="sc-user-select">
<div class="sc-user-select__left">
<div class="sc-user-select__search">
<el-input v-model="keyword" :placeholder="$t('搜索成员')" prefix-icon="el-icon-search">
<template #append>
<el-button icon="el-icon-search" @click="search"></el-button>
<el-button @click="search" icon="el-icon-search"></el-button>
</template>
</el-input>
</div>
@ -20,30 +20,30 @@
<div v-loading="showGrouploading" class="sc-user-select__tree">
<el-scrollbar>
<el-tree
ref="groupTree"
:current-node-key="groupId"
:data="group"
:expand-on-click-node="false"
:node-key="groupProps.key"
:props="groupProps"
@node-click="groupClick"
class="menu"
highlight-current
@node-click="groupClick" />
ref="groupTree" />
</el-scrollbar>
</div>
<div v-loading="showUserloading" class="sc-user-select__user">
<div class="sc-user-select__user__list">
<el-scrollbar ref="userScrollbar">
<el-tree
ref="userTree"
:data="user"
:default-checked-keys="selectedIds"
:node-key="userProps.key"
:props="userProps"
@check-change="userClick"
check-on-click-node
class="menu"
show-checkbox
@check-change="userClick"></el-tree>
ref="userTree"
show-checkbox></el-tree>
</el-scrollbar>
</div>
<footer>
@ -51,10 +51,10 @@
v-model:currentPage="currentPage"
:page-size="pageSize"
:total="total"
@current-change="paginationChange"
background
layout="prev,next"
small
@current-change="paginationChange"></el-pagination>
small></el-pagination>
</footer>
</div>
</div>
@ -74,7 +74,7 @@
<label>{{ item.name }}</label>
</span>
<span class="delete">
<el-button circle icon="el-icon-delete" size="small" type="danger" @click="deleteSelected(index)"></el-button>
<el-button @click="deleteSelected(index)" circle icon="el-icon-delete" size="small" type="danger"></el-button>
</span>
</li>
</el-scrollbar>
@ -90,17 +90,17 @@
<div v-loading="showGrouploading" class="sc-user-select__tree">
<el-scrollbar>
<el-tree
ref="groupTree"
:data="role"
:default-checked-keys="selectedIds"
:expand-on-click-node="false"
:node-key="roleProps.key"
:props="roleProps"
@check-change="roleClick"
check-on-click-node
check-strictly
class="menu"
show-checkbox
@check-change="roleClick" />
ref="groupTree"
show-checkbox />
</el-scrollbar>
</div>
</div>
@ -119,7 +119,7 @@
<label>{{ item.name }}</label>
</span>
<span class="delete">
<el-button circle icon="el-icon-delete" size="small" type="danger" @click="deleteSelected(index)"></el-button>
<el-button @click="deleteSelected(index)" circle icon="el-icon-delete" size="small" type="danger"></el-button>
</span>
</li>
</el-scrollbar>
@ -130,7 +130,7 @@
<template #footer>
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="save"> </el-button>
<el-button @click="save" type="primary"> </el-button>
</template>
</el-dialog>
</template>

File diff suppressed because one or more lines are too long

View File

@ -6,7 +6,7 @@ export default {
vue.loading = true
vue.dialog.save = true
await vue.$nextTick()
vue.$refs.saveDialog.open('view', row)
await vue.$refs.saveDialog.open('view', row)
vue.loading = false
},
},
@ -16,7 +16,7 @@ export default {
vue.loading = true
vue.dialog.save = true
await vue.$nextTick()
vue.$refs.saveDialog.open('edit', row)
await vue.$refs.saveDialog.open('edit', row)
vue.loading = false
},
},

View File

@ -7,7 +7,7 @@ import copy from '@/directives/copy'
import errorHandler from '@/utils/errorHandler'
import http from '@/utils/request'
import naArea from '@/components/naArea/index.vue'
import naUser from '@/components/naUser/index.vue'
import naUserSelect from '@/components/naUserSelect/index.vue'
import naButtonAdd from '@/components/naButtonAdd/index.vue'
import naButtonBatchDel from '@/components/naButtonBatchDel/index.vue'
import naColAvatar from '@/components/naColAvatar'
@ -95,7 +95,7 @@ export default {
app.component('naButtonBatchDel', naButtonBatchDel)
app.component('naFormEmail', naFormEmail)
app.component('naColTime', naColTime)
app.component('naUser', naUser)
app.component('naUserSelect', naUserSelect)
//注册全局指令
app.directive('auth', auth)

View File

@ -1,10 +1,10 @@
<template>
<div v-if="navMenus.length <= 0" style="padding: 20px">
<el-alert :closable="false" center :title="$t('无子集菜单')" type="info"></el-alert>
<el-alert :closable="false" :title="$t('无子集菜单')" center type="info"></el-alert>
</div>
<template v-for="navMenu in navMenus" v-bind:key="navMenu">
<template v-bind:key="navMenu" v-for="navMenu in navMenus">
<el-menu-item v-if="!hasChildren(navMenu)" :index="navMenu.path">
<a v-if="navMenu.meta && navMenu.meta.type == 'link'" :href="navMenu.path" target="_blank" @click.stop="() => {}"></a>
<a v-if="navMenu.meta && navMenu.meta.type == 'link'" :href="navMenu.path" @click.stop="() => {}" target="_blank"></a>
<el-icon v-if="navMenu.meta && navMenu.meta.icon">
<component :is="navMenu.meta.icon || 'el-icon-menu'" />
</el-icon>

View File

@ -1,23 +1,23 @@
<template>
<div class="sc-search">
<el-input
ref="input"
v-model="input"
:trigger-on-focus="false"
clearable
:placeholder="$t('搜索')"
:trigger-on-focus="false"
@input="inputChange"
clearable
prefix-icon="el-icon-search"
size="large"
@input="inputChange" />
ref="input"
size="large" />
<div v-if="history.length > 0" class="sc-search-history">
<el-tag
v-for="(item, index) in history"
:key="item"
@click="historyClick(item)"
@close="historyClose(index)"
closable
effect="dark"
type="info"
@click="historyClick(item)"
@close="historyClose(index)"
>{{ item }}
</el-tag>
</div>

View File

@ -1,11 +1,11 @@
<template>
<div v-drag class="mobile-nav-button" draggable="false" @click="showMobileNav($event)">
<div v-drag @click="showMobileNav($event)" class="mobile-nav-button" draggable="false">
<el-icon>
<el-icon-menu />
</el-icon>
</div>
<el-drawer ref="mobileNavBox" v-model="nav" :size="240" :with-header="false" destroy-on-close direction="ltr" :title="$t('移动端菜单')">
<el-drawer v-model="nav" :size="240" :title="$t('移动端菜单')" :with-header="false" destroy-on-close direction="ltr" ref="mobileNavBox">
<el-container class="mobile-nav">
<el-header>
<div class="logo-bar">
@ -16,11 +16,11 @@
<el-scrollbar>
<el-menu
:default-active="$route.meta.active || $route.fullPath"
@select="select"
active-text-color="#409EFF"
background-color="#212d3d"
router
text-color="#fff"
@select="select">
text-color="#fff">
<NavMenu :navMenus="menu"></NavMenu>
</el-menu>
</el-scrollbar>

View File

@ -2,8 +2,8 @@
<div class="adminui-tags">
<ul ref="tags">
<li
v-for="tag in tagList"
v-bind:key="tag"
v-for="tag in tagList"
:class="[isActive(tag) ? 'active' : '', tag.meta.affix ? 'affix' : '']"
@contextmenu.prevent="openContextMenu($event, tag)">
<router-link :to="tag">
@ -17,7 +17,7 @@
</div>
<transition name="el-zoom-in-top">
<ul v-if="contextMenuVisible" id="contextmenu" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu">
<ul v-if="contextMenuVisible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu" id="contextmenu">
<li @click="refreshTab()">
<el-icon>
<el-icon-refresh />

View File

@ -32,10 +32,10 @@
<div class="handler">
<el-button
v-if="task.state === '1'"
@click="download(task)"
circle
icon="el-icon-download"
type="primary"
@click="download(task)"></el-button>
type="primary"></el-button>
</div>
</div>
</div>
@ -43,7 +43,7 @@
</el-card>
</el-main>
<el-footer style="padding: 10px; text-align: right">
<el-button circle icon="el-icon-refresh" @click="refresh"></el-button>
<el-button @click="refresh" circle icon="el-icon-refresh"></el-button>
</el-footer>
</el-container>
</template>

View File

@ -1,27 +1,27 @@
<template>
<div class="user-bar">
<div class="panel-item hidden-sm-and-down" @click="search">
<div @click="search" class="panel-item hidden-sm-and-down">
<el-icon>
<el-icon-search />
</el-icon>
</div>
<div class="screen panel-item hidden-sm-and-down" @click="screen">
<div @click="screen" class="screen panel-item hidden-sm-and-down">
<el-icon>
<el-icon-full-screen />
</el-icon>
</div>
<div class="tasks panel-item" @click="tasks">
<div @click="tasks" class="tasks panel-item">
<el-icon>
<el-icon-sort />
</el-icon>
</div>
<div class="msg panel-item" @click="showMsg">
<div @click="showMsg" class="msg panel-item">
<el-badge :hidden="unreadCnt === 0" :value="unreadCnt" class="badge" type="danger">
<el-icon>
<el-icon-chat-dot-round />
</el-icon>
</el-badge>
<el-drawer v-model="msg" append-to-body destroy-on-close :title="$t('新消息')">
<el-drawer v-model="msg" :title="$t('新消息')" append-to-body destroy-on-close>
<el-container>
<el-main style="padding: 0 1rem">
<message />
@ -32,7 +32,7 @@
</el-container>
</el-drawer>
</div>
<el-dropdown class="user panel-item" trigger="click" @command="handleUser">
<el-dropdown @command="handleUser" class="user panel-item" trigger="click">
<div class="user-avatar">
<el-avatar :size="30" :src="user.avatar ? user.avatar : $CONFIG.DEFAULT_AVATAR"></el-avatar>
<label>{{ user.userName }}</label>
@ -50,11 +50,11 @@
</el-dropdown>
</div>
<el-dialog v-model="searchVisible" :width="700" center destroy-on-close :title="$t('搜索')">
<el-dialog v-model="searchVisible" :title="$t('搜索')" :width="700" center destroy-on-close>
<search @success="searchVisible = false"></search>
</el-dialog>
<el-drawer v-model="tasksVisible" :size="450" destroy-on-close :title="$t('任务中心')">
<el-drawer v-model="tasksVisible" :size="450" :title="$t('任务中心')" destroy-on-close>
<tasks></tasks>
</el-drawer>
</template>

View File

@ -8,7 +8,7 @@
<span>{{ $CONFIG.APP_NAME }}</span>
</div>
<ul v-if="!ismobile" class="nav">
<li v-for="item in menu" :key="item" :class="pmenu.path == item.path ? 'active' : ''" @click="showMenu(item)">
<li v-for="item in menu" :class="pmenu.path == item.path ? 'active' : ''" :key="item" @click="showMenu(item)">
<el-icon>
<component :is="item.meta.icon || 'el-icon-menu'" />
</el-icon>
@ -32,7 +32,7 @@
</el-menu>
</el-scrollbar>
</div>
<div class="adminui-side-bottom" @click="$store.commit('TOGGLE_menuIsCollapse')">
<div @click="$store.commit('TOGGLE_menuIsCollapse')" class="adminui-side-bottom">
<el-icon>
<el-icon-expand v-if="menuIsCollapse" />
<el-icon-fold v-else />
@ -43,10 +43,10 @@
<div class="aminui-body el-container">
<Topbar v-if="!ismobile"></Topbar>
<Tags v-if="!ismobile && layoutTags"></Tags>
<div id="adminui-main" class="adminui-main">
<div class="adminui-main" id="adminui-main">
<router-view v-slot="{ Component }">
<keep-alive :include="this.$store.state.keepAlive.keepLiveRoute">
<component :is="Component" v-if="$store.state.keepAlive.routeShow" :key="$route.fullPath" />
<component v-if="$store.state.keepAlive.routeShow" :is="Component" :key="$route.fullPath" />
</keep-alive>
</router-view>
<iframe-view></iframe-view>
@ -77,7 +77,7 @@
</el-menu>
</el-scrollbar>
</div>
<div class="adminui-side-bottom" @click="$store.commit('TOGGLE_menuIsCollapse')">
<div @click="$store.commit('TOGGLE_menuIsCollapse')" class="adminui-side-bottom">
<el-icon>
<el-icon-expand v-if="menuIsCollapse" />
<el-icon-fold v-else />
@ -88,10 +88,10 @@
<div class="aminui-body el-container">
<Topbar v-if="!ismobile"></Topbar>
<Tags v-if="!ismobile && layoutTags"></Tags>
<div id="adminui-main" class="adminui-main">
<div class="adminui-main" id="adminui-main">
<router-view v-slot="{ Component }">
<keep-alive :include="this.$store.state.keepAlive.keepLiveRoute">
<component :is="Component" v-if="$store.state.keepAlive.routeShow" :key="$route.fullPath" />
<component v-if="$store.state.keepAlive.routeShow" :is="Component" :key="$route.fullPath" />
</keep-alive>
</router-view>
<iframe-view></iframe-view>
@ -128,10 +128,10 @@
<section class="aminui-wrapper">
<div class="aminui-body el-container">
<Tags v-if="!ismobile && layoutTags"></Tags>
<div id="adminui-main" class="adminui-main">
<div class="adminui-main" id="adminui-main">
<router-view v-slot="{ Component }">
<keep-alive :include="this.$store.state.keepAlive.keepLiveRoute">
<component :is="Component" v-if="$store.state.keepAlive.routeShow" :key="$route.fullPath" />
<component v-if="$store.state.keepAlive.routeShow" :is="Component" :key="$route.fullPath" />
</keep-alive>
</router-view>
<iframe-view></iframe-view>
@ -152,7 +152,7 @@
<div class="adminui-side-split-scroll">
<el-scrollbar>
<ul>
<li v-for="item in menu" :key="item" :class="pmenu.path == item.path ? 'active' : ''" @click="showMenu(item)">
<li v-for="item in menu" :class="pmenu.path == item.path ? 'active' : ''" :key="item" @click="showMenu(item)">
<el-icon>
<component :is="item.meta.icon || el - icon - menu" />
</el-icon>
@ -173,7 +173,7 @@
</el-menu>
</el-scrollbar>
</div>
<div class="adminui-side-bottom" @click="$store.commit('TOGGLE_menuIsCollapse')">
<div @click="$store.commit('TOGGLE_menuIsCollapse')" class="adminui-side-bottom">
<el-icon>
<el-icon-expand v-if="menuIsCollapse" />
<el-icon-fold v-else />
@ -186,10 +186,10 @@
<userbar></userbar>
</Topbar>
<Tags v-if="!ismobile && layoutTags"></Tags>
<div id="adminui-main" class="adminui-main">
<div class="adminui-main" id="adminui-main">
<router-view v-slot="{ Component }">
<keep-alive :include="this.$store.state.keepAlive.keepLiveRoute">
<component :is="Component" v-if="$store.state.keepAlive.routeShow" :key="$route.fullPath" />
<component v-if="$store.state.keepAlive.routeShow" :is="Component" :key="$route.fullPath" />
</keep-alive>
</router-view>
<iframe-view></iframe-view>
@ -198,7 +198,7 @@
</section>
</template>
<div class="main-maximize-exit" @click="exitMaximize">
<div @click="exitMaximize" class="main-maximize-exit">
<el-icon>
<el-icon-close />
</el-icon>

View File

@ -6,9 +6,9 @@
<div class="router-err__content">
<h2>无权限或找不到页面</h2>
<p>当前页面无权限访问或者打开了一个不存在的链接请检查当前账户权限和链接的可访问性</p>
<el-button plain round type="primary" @click="gohome">返回首页</el-button>
<el-button plain round type="primary" @click="gologin">重新登录</el-button>
<el-button round type="primary" @click="goback">返回上一页</el-button>
<el-button @click="gohome" plain round type="primary">返回首页</el-button>
<el-button @click="gologin" plain round type="primary">重新登录</el-button>
<el-button @click="goback" round type="primary">返回上一页</el-button>
</div>
</div>
</template>

View File

@ -1,5 +1,5 @@
<template>
<el-form ref="loginForm" :model="form" :rules="rules" label-width="0" size="large" @keyup.enter="login">
<el-form :model="form" :rules="rules" @keyup.enter="login" label-width="0" ref="loginForm" size="large">
<el-form-item prop="account">
<el-input v-model="form.account" :placeholder="$t('用户名 / 手机 / 邮箱')" clearable prefix-icon="el-icon-user"></el-input>
</el-form-item>
@ -15,7 +15,7 @@
</el-col>
</el-form-item>
<el-form-item>
<el-button :loading="isLoading" round style="width: 100%" type="primary" @click="login">{{ $t('登录') }}</el-button>
<el-button :loading="isLoading" @click="login" round style="width: 100%" type="primary">{{ $t('登录') }}</el-button>
</el-form-item>
<div class="login-reg">
{{ $t('还没有账号?') }}

View File

@ -1,8 +1,8 @@
<template>
<el-form ref="loginForm" :model="form" :rules="rules" label-width="0" size="large" @keyup.enter="login">
<el-form :model="form" :rules="rules" @keyup.enter="login" label-width="0" ref="loginForm" size="large">
<na-form-phone v-model="form" :vue="this" code-field="code" form-name="loginForm" phone-field="destDevice"></na-form-phone>
<el-form-item>
<el-button :loading="loading" class="w100p" round type="primary" @click="login">{{ $t('登录') }}</el-button>
<el-button :loading="loading" @click="login" class="w100p" round type="primary">{{ $t('登录') }}</el-button>
</el-form-item>
<div class="login-reg">
{{ $t('还没有账号?') }}

View File

@ -2,8 +2,8 @@
<div class="login_bg">
<div class="login_main">
<div class="login_config">
<el-button :icon="config.dark ? 'el-icon-sunny' : 'el-icon-moon'" circle type="info" @click="configDark"></el-button>
<el-dropdown placement="bottom-end" trigger="click" @command="configLang">
<el-button :icon="config.dark ? 'el-icon-sunny' : 'el-icon-moon'" @click="configDark" circle type="info"></el-button>
<el-dropdown @command="configLang" placement="bottom-end" trigger="click">
<el-button circle>
<svg
aria-hidden="true"
@ -12,8 +12,8 @@
role="img"
viewBox="0 0 512 512"
width="1em"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg">
<path
d="M478.33 433.6l-90-218a22 22 0 0 0-40.67 0l-90 218a22 22 0 1 0 40.67 16.79L316.66 406h102.67l18.33 44.39A22 22 0 0 0 458 464a22 22 0 0 0 20.32-30.4zM334.83 362L368 281.65L401.17 362z"
fill="currentColor"></path>
@ -24,7 +24,7 @@
</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item v-for="item in lang" :key="item.value" :class="{ selected: config.lang === item.value }" :command="item"
<el-dropdown-item v-for="item in lang" :class="{ selected: config.lang === item.value }" :command="item" :key="item.value"
>{{ item.name }}
</el-dropdown-item>
</el-dropdown-menu>
@ -49,7 +49,7 @@
<template v-if="$CONFIG.MY_SHOW_LOGIN_OAUTH">
<el-divider>{{ $t('其他登录方式') }}</el-divider>
<div class="login-oauth">
<el-button circle icon="sc-icon-wechat" type="success" @click="wechatLogin"></el-button>
<el-button @click="wechatLogin" circle icon="sc-icon-wechat" type="success"></el-button>
</div>
</template>
</div>

View File

@ -5,16 +5,16 @@
<el-step :title="$t('验证手机')" />
<el-step :title="$t('注册成功')" />
</el-steps>
<el-form v-if="stepActive === 0" ref="stepForm_0" :model="form" :rules="rules" label-width="120" size="large" @keyup.enter="next">
<el-form v-if="stepActive === 0" :model="form" :rules="rules" @keyup.enter="next" label-width="120" ref="stepForm_0" size="large">
<el-form-item :label="$t('登录账号')" prop="userName">
<el-input v-model="form.userName" clearable maxlength="16" :placeholder="$t('请输入登录账号')"></el-input>
<el-input v-model="form.userName" :placeholder="$t('请输入登录账号')" clearable maxlength="16"></el-input>
</el-form-item>
<el-form-item :label="$t('登录密码')" prop="passwordText">
<el-input
v-model="form.passwordText"
:placeholder="$t('请输入登录密码')"
clearable
maxlength="16"
:placeholder="$t('请输入登录密码')"
show-password
type="password"></el-input>
<sc-password-strength v-model="form.passwordText"></sc-password-strength>
@ -23,18 +23,18 @@
<el-form-item :label="$t('确认密码')" prop="passwordText2">
<el-input
v-model="form.passwordText2"
:placeholder="$t('请再一次输入登录密码')"
clearable
maxlength="16"
:placeholder="$t('请再一次输入登录密码')"
show-password
type="password"></el-input>
</el-form-item>
<el-form-item label="" prop="agree">
<el-checkbox v-model="form.agree" label="">已阅读并同意</el-checkbox>
<span class="link" @click="showAgree = true">平台服务协议</span>
<span @click="showAgree = true" class="link">平台服务协议</span>
</el-form-item>
</el-form>
<el-form v-if="stepActive === 1" ref="stepForm_1" :model="form" :rules="rules" size="large">
<el-form v-if="stepActive === 1" :model="form" :rules="rules" ref="stepForm_1" size="large">
<na-form-phone
v-model="form.verifySmsCodeReq"
:code-field="['verifySmsCodeReq.code', 'code']"
@ -43,29 +43,29 @@
form-name="stepForm_1"></na-form-phone>
</el-form>
<div v-if="stepActive >= 2">
<el-result icon="success" sub-title="$t('可以使用登录账号以及手机号登录系统')" :title="$t('注册成功')">
<el-result :title="$t('注册成功')" icon="success" sub-title="$t('可以使用登录账号以及手机号登录系统')">
<template #extra>
<el-button size="large" type="primary" @click="goLogin">前去登录</el-button>
<el-button @click="goLogin" size="large" type="primary">前去登录</el-button>
</template>
</el-result>
</div>
<el-form size="large" style="text-align: center">
<el-button v-if="stepActive > 0 && stepActive < 2" size="large" @click="pre">上一步</el-button>
<el-button v-if="stepActive < 1" size="large" type="primary" @click="next">下一步</el-button>
<el-button v-if="stepActive === 1" :loading="loading" size="large" type="primary" @click="save"> </el-button>
<el-button v-if="stepActive > 0 && stepActive < 2" @click="pre" size="large">上一步</el-button>
<el-button v-if="stepActive < 1" @click="next" size="large" type="primary">下一步</el-button>
<el-button v-if="stepActive === 1" :loading="loading" @click="save" size="large" type="primary"> </el-button>
</el-form>
<el-dialog v-model="showAgree" destroy-on-close :title="$t('平台服务协议')">
<el-dialog v-model="showAgree" :title="$t('平台服务协议')" destroy-on-close>
平台服务协议
<template #footer>
<el-button @click="showAgree = false">取消</el-button>
<el-button
type="primary"
@click="
() => {
showAgree = false
form.agree = true
}
"
type="primary"
>我已阅读并同意
</el-button>
</template>

View File

@ -4,7 +4,7 @@
<el-step :title="$t('填写新密码')" />
<el-step :title="$t('完成重置')" />
</el-steps>
<el-form v-if="stepActive === 0" ref="form" :label-width="120" :model="form" :rules="rules" size="large" @keyup.enter="save">
<el-form v-if="stepActive === 0" :label-width="120" :model="form" :rules="rules" @keyup.enter="save" ref="form" size="large">
<na-form-phone
v-model="form.verifySmsCodeReq"
:code-field="['verifySmsCodeReq.code', 'code']"
@ -22,12 +22,12 @@
<el-input v-model="form.passwordText2" :placeholder="$t('请再一次输入新密码')" show-password></el-input>
</el-form-item>
<el-form-item>
<el-button :loading="loading" type="primary" @click="save">提交</el-button>
<el-button :loading="loading" @click="save" type="primary">提交</el-button>
</el-form-item>
</el-form>
<el-result v-if="stepActive >= 1" icon="success" :sub-title="$t('请牢记自己的新密码,返回登录后使用新密码登录')" :title="$t('密码重置成功')">
<el-result v-if="stepActive >= 1" :sub-title="$t('请牢记自己的新密码,返回登录后使用新密码登录')" :title="$t('密码重置成功')" icon="success">
<template #extra>
<el-button size="large" type="primary" @click="backLogin">返回登录</el-button>
<el-button @click="backLogin" size="large" type="primary">返回登录</el-button>
</template>
</el-result>
</common-page>

View File

@ -1,5 +1,5 @@
<template>
<el-card class="item-background" :header="$t('关于项目')" shadow="hover">
<el-card :header="$t('关于项目')" class="item-background" shadow="hover">
<p>高性能 / 精致 / 优雅基于Vue3 + Element-Plus 的中后台前端解决方案如果喜欢就点个星星支持一下</p>
<p>
<a href="https://gitee.com/lolicode/scui" target="_blank">

View File

@ -1,6 +1,6 @@
<template>
<el-card v-loading="loading" :header="$t('实时收入')" shadow="hover">
<scEcharts ref="c1" :option="option" height="300px"></scEcharts>
<scEcharts :option="option" height="300px" ref="c1"></scEcharts>
</el-card>
</template>

View File

@ -1,5 +1,5 @@
<template>
<el-card class="item-background" :header="$t('时钟')" shadow="hover">
<el-card :header="$t('时钟')" class="item-background" shadow="hover">
<div class="time">
<h2>{{ time }}</h2>
<p>{{ day }}</p>

View File

@ -2,29 +2,29 @@
<el-main>
<el-row>
<el-col :lg="24">
<el-card shadow="never" class="aboutTop">
<el-card class="aboutTop" shadow="never">
<div class="aboutTop-info">
<img src="@/assets/img/logo.png" alt="" />
<img alt="" src="@/assets/img/logo.png" />
<h2>{{ packageJson.name }}</h2>
<p>{{ ver }}</p>
</div>
</el-card>
<el-card shadow="never" header="dependencies">
<el-descriptions border :column="3">
<el-card header="dependencies" shadow="never">
<el-descriptions :column="3" border>
<el-descriptions-item v-for="(value, key) in packageJson.dependencies" :key="key" :label="key">{{
value
}}</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card shadow="never" header="devDependencies">
<el-descriptions border :column="3">
<el-card header="devDependencies" shadow="never">
<el-descriptions :column="3" border>
<el-descriptions-item v-for="(value, key) in packageJson.devDependencies" :key="key" :label="key">{{
value
}}</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card shadow="never" header="Assemblies">
<el-descriptions border :column="2">
<el-card header="Assemblies" shadow="never">
<el-descriptions :column="2" border>
<el-descriptions-item v-for="(value, key) in modules" :key="key" :label="value.name">{{
value.version
}}</el-descriptions-item>

View File

@ -32,7 +32,7 @@
</div>
</div>
<div class="actions">
<el-button icon="el-icon-check" size="large" type="primary" @click="godoc">文档</el-button>
<el-button @click="godoc" icon="el-icon-check" size="large" type="primary">文档</el-button>
</div>
</div>
</el-card>

View File

@ -1,13 +1,13 @@
<template>
<div ref="main" :class="['widgets-home', customizing ? 'customizing' : '']">
<div :class="['widgets-home', customizing ? 'customizing' : '']" ref="main">
<div class="widgets-content">
<div ref="widgets" class="widgets">
<div class="widgets" ref="widgets">
<div class="widgets-wrapper">
<div v-if="nowCompsList.length <= 0" class="no-widgets">
<el-empty :image-size="280" :description="$t('没有部件啦')"></el-empty>
<el-empty :description="$t('没有部件啦')" :image-size="280"></el-empty>
</div>
<el-row :gutter="15">
<el-col v-for="(item, index) in grid.layout" v-bind:key="index" :md="item" :xs="24">
<el-col v-bind:key="index" v-for="(item, index) in grid.layout" :md="item" :xs="24">
<draggable
v-model="grid.compsList[index]"
animation="200"
@ -23,12 +23,12 @@
<component :is="allComps[element]"></component>
<div v-if="customizing" class="customize-overlay">
<el-button
@click="remove(element)"
class="close"
icon="el-icon-close"
plain
size="small"
type="danger"
@click="remove(element)"></el-button>
type="danger"></el-button>
<label>
<el-icon>
<component :is="allComps[element].icon" />
@ -54,9 +54,9 @@
添加部件
</div>
<div>
<el-button v-if="customizing" icon="el-icon-check" round type="primary" @click="save">完成</el-button>
<el-button v-if="customizing" @click="save" icon="el-icon-check" round type="primary">完成</el-button>
</div>
<div class="widgets-aside-close" @click="close()">
<div @click="close()" class="widgets-aside-close">
<el-icon>
<el-icon-close />
</el-icon>
@ -64,7 +64,7 @@
</el-header>
<el-header style="height: auto">
<div class="selectLayout">
<div :class="{ active: grid.layout.join(',') === '12,6,6' }" class="selectLayout-item item01" @click="setLayout([12, 6, 6])">
<div :class="{ active: grid.layout.join(',') === '12,6,6' }" @click="setLayout([12, 6, 6])" class="selectLayout-item item01">
<el-row :gutter="2">
<el-col :span="12"><span></span></el-col>
<el-col :span="6"><span></span></el-col>
@ -73,15 +73,15 @@
</div>
<div
:class="{ active: grid.layout.join(',') === '24,16,8' }"
class="selectLayout-item item02"
@click="setLayout([24, 16, 8])">
@click="setLayout([24, 16, 8])"
class="selectLayout-item item02">
<el-row :gutter="2">
<el-col :span="24"><span></span></el-col>
<el-col :span="16"><span></span></el-col>
<el-col :span="8"><span></span></el-col>
</el-row>
</div>
<div :class="{ active: grid.layout.join(',') === '24' }" class="selectLayout-item item03" @click="setLayout([24])">
<div :class="{ active: grid.layout.join(',') === '24' }" @click="setLayout([24])" class="selectLayout-item item03">
<el-row :gutter="2">
<el-col :span="24"><span></span></el-col>
<el-col :span="24"><span></span></el-col>
@ -93,7 +93,7 @@
<el-main class="nopadding">
<div class="widgets-list">
<div v-if="myCompsList.length <= 0" class="widgets-list-nodata">
<el-empty :image-size="60" :description="$t('没有部件啦')"></el-empty>
<el-empty :description="$t('没有部件啦')" :image-size="60"></el-empty>
</div>
<div v-for="item in myCompsList" :key="item.title" class="widgets-list-item">
<div class="item-logo">
@ -106,19 +106,19 @@
<p>{{ item.description }}</p>
</div>
<div class="item-actions">
<el-button icon="el-icon-plus" size="small" type="primary" @click="push(item)"></el-button>
<el-button @click="push(item)" icon="el-icon-plus" size="small" type="primary"></el-button>
</div>
</div>
</div>
</el-main>
<el-footer style="height: 51px">
<el-button size="small" @click="backDefault()">恢复默认</el-button>
<el-button @click="backDefault()" size="small">恢复默认</el-button>
</el-footer>
</el-container>
</div>
</div>
<div class="layout-setting" @click="custom">
<div @click="custom" class="layout-setting">
<el-icon><el-icon-setting /></el-icon>
</div>
</template>

View File

@ -15,7 +15,7 @@
<p>{{ mod.meta.title }}</p>
</router-link>
</li>
<li class="modItem-add" @click="addMods">
<li @click="addMods" class="modItem-add">
<a href="javascript:void(0)">
<el-icon>
<el-icon-plus />
@ -24,7 +24,7 @@
</li>
</ul>
<el-drawer v-model="modsDrawer" :size="570" destroy-on-close :title="$t('添加应用')">
<el-drawer v-model="modsDrawer" :size="570" :title="$t('添加应用')" destroy-on-close>
<div class="setMods">
<h4>我的常用 ( {{ myMods.length }} )</h4>
<draggable v-model="myMods" animation="200" group="people" item-key="path" tag="ul">
@ -53,7 +53,7 @@
</div>
<template #footer>
<el-button @click="modsDrawer = false">取消</el-button>
<el-button type="primary" @click="saveMods">保存</el-button>
<el-button @click="saveMods" type="primary">保存</el-button>
</template>
</el-drawer>
</div>

View File

@ -1,6 +1,6 @@
<template>
<el-card :header="$t('账号信息')" shadow="never">
<el-form ref="form" :model="form" label-width="10rem">
<el-form :model="form" label-width="10rem" ref="form">
<el-form-item :label="$t('头像')">
<sc-upload v-model="form.avatar" :onSuccess="updateUser" :title="$t('上传头像')"></sc-upload>
</el-form-item>
@ -34,9 +34,9 @@
</el-form>
</el-card>
<set-mobile-dialog v-if="dialog.setMobile" ref="setMobileDialog" @closed="dialog.setMobile = false" @success="setSuccess"></set-mobile-dialog>
<set-password-dialog v-if="dialog.setPassword" ref="setPasswordDialog" @closed="dialog.setPassword = false"></set-password-dialog>
<set-email-dialog v-if="dialog.setEmail" ref="setEmailDialog" @closed="dialog.setEmail = false" @success="setSuccess"></set-email-dialog>
<set-mobile-dialog v-if="dialog.setMobile" @closed="dialog.setMobile = false" @success="setSuccess" ref="setMobileDialog"></set-mobile-dialog>
<set-password-dialog v-if="dialog.setPassword" @closed="dialog.setPassword = false" ref="setPasswordDialog"></set-password-dialog>
<set-email-dialog v-if="dialog.setEmail" @closed="dialog.setEmail = false" @success="setSuccess" ref="setEmailDialog"></set-email-dialog>
</template>
<script>

View File

@ -1,6 +1,6 @@
<template>
<el-dialog v-model="visible" :title="$t('设置邮箱')" :width="800" destroy-on-close @closed="$emit('closed')">
<el-form ref="form" :model="form" :rules="rules" label-position="top">
<el-dialog v-model="visible" :title="$t('设置邮箱')" :width="800" @closed="$emit('closed')" destroy-on-close>
<el-form :model="form" :rules="rules" label-position="top" ref="form">
<el-row class="is-justify-space-evenly">
<el-col v-if="$GLOBAL.user.mobile" :lg="10">
<na-form-phone
@ -28,7 +28,7 @@
<template #footer>
<el-button @click="visible = false"> </el-button>
<el-button :loading="loading" type="primary" @click="submit"> </el-button>
<el-button :loading="loading" @click="submit" type="primary"> </el-button>
</template>
</el-dialog>
</template>

View File

@ -1,17 +1,17 @@
<template>
<el-dialog v-model="visible" :title="titleMap[mode]" :width="800" destroy-on-close @closed="$emit('closed')">
<el-form ref="form" :model="form" :rules="rules" label-position="top">
<el-dialog v-model="visible" :title="titleMap[mode]" :width="800" @closed="$emit('closed')" destroy-on-close>
<el-form :model="form" :rules="rules" label-position="top" ref="form">
<el-row class="items-center justify-content-center">
<el-col v-if="mode === 'edit'" :lg="10">
<na-form-phone
v-model="form.originverifySmsCodeReq"
:code-field="['originverifySmsCodeReq.code', 'code']"
:code-label="$t('原手机验证码')"
:phone-field="['originverifySmsCodeReq.destDevice', 'destDevice']"
:phone-label="$t('原手机号码')"
:phone-place-holder="$GLOBAL.user.mobile"
:vue="this"
:code-label="$t('原手机验证码')"
form-name="form"
:phone-label="$t('原手机号码')" />
form-name="form" />
</el-col>
<el-col v-if="mode === 'edit'" :lg="4" class="text-center arrow">
<el-icon>
@ -22,18 +22,18 @@
<na-form-phone
v-model="form.newverifySmsCodeReq"
:code-field="['newverifySmsCodeReq.code', 'code']"
:phone-field="['newverifySmsCodeReq.destDevice', 'destDevice']"
:vue="this"
:code-label="$t('新手机验证码')"
form-name="form"
:phone-label="$t('新手机号码')" />
:phone-field="['newverifySmsCodeReq.destDevice', 'destDevice']"
:phone-label="$t('新手机号码')"
:vue="this"
form-name="form" />
</el-col>
</el-row>
</el-form>
<template #footer>
<el-button @click="visible = false"> </el-button>
<el-button :loading="loading" type="primary" @click="submit"> </el-button>
<el-button :loading="loading" @click="submit" type="primary"> </el-button>
</template>
</el-dialog>
</template>

View File

@ -1,12 +1,12 @@
<template>
<el-dialog v-model="visible" :width="800" destroy-on-close :title="$t('修改密码')" @closed="$emit('closed')">
<el-form ref="form" :model="form" :rules="rules" label-width="120">
<el-dialog v-model="visible" :title="$t('修改密码')" :width="800" @closed="$emit('closed')" destroy-on-close>
<el-form :model="form" :rules="rules" label-width="120" ref="form">
<el-form-item :label="$t('旧密码')" prop="oldPassword">
<el-input
v-model="form.oldPassword"
:placeholder="$t('请输入当前密码')"
clearable
maxlength="16"
:placeholder="$t('请输入当前密码')"
show-password
type="password"></el-input>
<div class="el-form-item-msg">必须提供当前登录用户密码才能进行更改</div>
@ -14,9 +14,9 @@
<el-form-item :label="$t('新密码')" prop="newPassword">
<el-input
v-model="form.newPassword"
:placeholder="$t('请输入新密码')"
clearable
maxlength="16"
:placeholder="$t('请输入新密码')"
show-password
type="password"></el-input>
<sc-password-strength v-model="form.newPassword"></sc-password-strength>
@ -25,16 +25,16 @@
<el-form-item :label="$t('确认新密码')" prop="confirmNewPassword">
<el-input
v-model="form.confirmNewPassword"
:placeholder="$t('请再次输入新密码')"
clearable
maxlength="16"
:placeholder="$t('请再次输入新密码')"
show-password
type="password"></el-input>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="visible = false"> </el-button>
<el-button :loading="loading" type="primary" @click="submit"> </el-button>
<el-button :loading="loading" @click="submit" type="primary"> </el-button>
</template>
</el-dialog>
</template>

View File

@ -14,7 +14,7 @@
<el-main class="nopadding">
<el-menu :default-active="$route.path" class="menu">
<el-menu-item-group v-for="group in menu" :key="$t(group.groupName)" :title="$t(group.groupName)">
<el-menu-item v-for="item in group.list" :key="item.component" :index="item.component" @click="openPage">
<el-menu-item v-for="item in group.list" :index="item.component" :key="item.component" @click="openPage">
<el-icon v-if="item.icon">
<component :is="item.icon" />
</el-icon>

View File

@ -1,6 +1,6 @@
<template>
<el-card :header="$t('近7天操作记录')" shadow="never">
<scTable ref="table" :data="data" height="auto" hideDo paginationLayout="total, prev, pager, next">
<scTable :data="data" height="auto" hideDo paginationLayout="total, prev, pager, next" ref="table">
<sc-table-column :label="$t('序号')" type="index"></sc-table-column>
<sc-table-column :label="$t('业务名称')" min-width="240" prop="title"></sc-table-column>
<sc-table-column label="IP" prop="ip" width="150"></sc-table-column>

View File

@ -1,13 +1,13 @@
<template>
<el-skeleton :rows="5" animated v-if="loading" />
<el-skeleton v-if="loading" :rows="5" animated />
<template v-else>
<el-container v-if="msgList.length > 0" class="nopadding">
<el-header style="border: none">
<div class="right-panel">
<el-button icon="el-icon-message" plain type="success" @click="batchRead"></el-button>
<el-button @click="batchRead" icon="el-icon-message" plain type="success"></el-button>
<el-popconfirm :title="`确定清空本页消息吗?`" @confirm="batchDel" width="15rem">
<template #reference>
<el-button icon="el-icon-delete" plain type="danger" v-loading="delLoading"></el-button>
<el-button v-loading="delLoading" icon="el-icon-delete" plain type="danger"></el-button>
</template>
</el-popconfirm>
</div>
@ -15,17 +15,17 @@
<el-main>
<div class="msg-collapse">
<el-collapse
v-model="currMsgId"
accordion
@change="change"
v-infinite-scroll="load"
infinite-scroll-distance="200"
v-loading="msgLoading">
v-loading="msgLoading"
v-model="currMsgId"
@change="change"
accordion
infinite-scroll-distance="200">
<el-collapse-item
v-for="(msg, i) in msgList"
:class="msg.myFlags.userSiteMsgStatus === 'read' ? 'msg-wrapper-read' : ''"
:key="i"
:name="msg.id"
:class="msg.myFlags.userSiteMsgStatus === 'read' ? 'msg-wrapper-read' : ''">
:name="msg.id">
<template #title>
<div class="msg-title">
<div>
@ -49,7 +49,7 @@
</div>
</div>
</template>
<div class="msg-content" v-html="msg.content"></div>
<div v-html="msg.content" class="msg-content"></div>
</el-collapse-item>
</el-collapse>
</div>

View File

@ -4,22 +4,22 @@
<el-row :gutter="15" style="margin-top: 20px">
<el-col :lg="6">
<el-card shadow="never">
<sc-statistic groupSeparator suffix="GB" :title="$t('文档')" value="7.41"></sc-statistic>
<sc-statistic :title="$t('文档')" groupSeparator suffix="GB" value="7.41"></sc-statistic>
</el-card>
</el-col>
<el-col :lg="6">
<el-card shadow="never">
<sc-statistic groupSeparator suffix="GB" :title="$t('图片')" value="12.90"></sc-statistic>
<sc-statistic :title="$t('图片')" groupSeparator suffix="GB" value="12.90"></sc-statistic>
</el-card>
</el-col>
<el-col :lg="6">
<el-card shadow="never">
<sc-statistic groupSeparator suffix="MB" :title="$t('视音频')" value="68.79"></sc-statistic>
<sc-statistic :title="$t('视音频')" groupSeparator suffix="MB" value="68.79"></sc-statistic>
</el-card>
</el-col>
<el-col :lg="6">
<el-card shadow="never">
<sc-statistic groupSeparator suffix="GB" :title="$t('其他')" value="17.58"></sc-statistic>
<sc-statistic :title="$t('其他')" groupSeparator suffix="GB" value="17.58"></sc-statistic>
</el-card>
</el-col>
</el-row>

View File

@ -3,16 +3,16 @@
<el-header>
<div class="left-panel"></div>
<div class="right-panel">
<el-button :loading="loading" icon="sc-icon-sync" type="primary" @click="sync">同步接口</el-button>
<el-button :loading="loading" @click="sync" icon="sc-icon-sync" type="primary">同步接口</el-button>
</div>
</el-header>
<el-main class="nopadding">
<sc-table
ref="table"
:apiObj="$API.sys_api.query"
:summary-method="(x) => ['接口总数', countTotalRows(x.data)]"
default-expand-all
hidePagination
ref="table"
row-key="id"
show-summary
stripe>

View File

@ -11,9 +11,9 @@
<el-col :lg="4">
<el-card shadow="never">
<sc-statistic
:suffix="$t('天')"
:value="parseInt(statistics.upTime / 86400)"
groupSeparator
:suffix="$t('天')"
title="Redis 运行时间"></sc-statistic>
</el-card>
</el-col>
@ -29,24 +29,24 @@
<el-col :lg="4">
<el-card shadow="never">
<sc-statistic
:title="$t('内存使用量')"
:value="(statistics.usedMemory / 1024 / 1024).toFixed(2)"
groupSeparator
suffix="MiB"
:title="$t('内存使用量')"></sc-statistic>
suffix="MiB"></sc-statistic>
</el-card>
</el-col>
<el-col :lg="4">
<el-card shadow="never">
<sc-statistic :value="statistics.dbSize" groupSeparator :title="$t('缓存数量')"></sc-statistic>
<sc-statistic :title="$t('缓存数量')" :value="statistics.dbSize" groupSeparator></sc-statistic>
</el-card>
</el-col>
<el-col :lg="4">
<el-card shadow="never">
<sc-statistic
:title="$t('缓存命中率')"
:value="((statistics.keyspaceHits / (statistics.keyspaceMisses + statistics.keyspaceHits)) * 100).toFixed(2)"
groupSeparator
suffix="%"
:title="$t('缓存命中率')"></sc-statistic>
suffix="%"></sc-statistic>
</el-card>
</el-col>
</el-row>
@ -56,7 +56,7 @@
<el-container>
<el-aside>
<el-menu :default-active="query.filter.dbIndex" class="el-menu-vertical-demo">
<el-menu-item v-for="(i, index) in 16" :key="index" :index="index" @click="this.query.filter.dbIndex = index">
<el-menu-item v-for="(i, index) in 16" :index="index" :key="index" @click="this.query.filter.dbIndex = index">
<el-icon>
<el-icon-notebook></el-icon-notebook>
</el-icon>
@ -65,11 +65,11 @@
</el-menu>
</el-aside>
<el-main>
<sc-table ref="table" :apiObj="$API.sys_cache.getAllEntries" :params="query" row-key="key" stripe @row-click="rowClick">
<el-table-column :min-width="300" :label="$t('键名')" prop="key" show-overflow-tooltip />
<sc-table :apiObj="$API.sys_cache.getAllEntries" :params="query" @row-click="rowClick" ref="table" row-key="key" stripe>
<el-table-column :label="$t('键名')" :min-width="300" prop="key" show-overflow-tooltip />
<el-table-column :label="$t('键值')" prop="data" show-overflow-tooltip />
<el-table-column align="right" :label="$t('滑动过期')" prop="sldExp" />
<el-table-column align="right" :label="$t('绝对过期')" prop="absExp" />
<el-table-column :label="$t('滑动过期')" align="right" prop="sldExp" />
<el-table-column :label="$t('绝对过期')" align="right" prop="absExp" />
</sc-table>
</el-main>
</el-container>

View File

@ -3,21 +3,21 @@
<el-header>
<div class="left-panel">
<na-button-add :vue="this"></na-button-add>
<el-button :disabled="selection.length === 0" icon="el-icon-delete" plain type="danger" @click="batchDel"></el-button>
<el-button :disabled="selection.length === 0" @click="batchDel" icon="el-icon-delete" plain type="danger"></el-button>
</div>
<div class="right-panel"></div>
</el-header>
<el-main class="nopadding">
<sc-table
ref="table"
:apiObj="$API.sys_config.pagedQuery"
row-key="id"
stripe
@selection-change="
(items) => {
selection = items
}
">
"
ref="table"
row-key="id"
stripe>
<el-table-column type="selection"></el-table-column>
<el-table-column :label="$t('配置编号')" prop="id"></el-table-column>
<el-table-column :label="$t('用户注册')">
@ -51,9 +51,9 @@
<save-dialog
v-if="dialog.save"
ref="saveDialog"
@closed="dialog.save = false"
@success="(data, mode) => table.handleUpdate($refs.table, data, mode)"></save-dialog>
@success="(data, mode) => table.handleUpdate($refs.table, data, mode)"
ref="saveDialog"></save-dialog>
</template>
<script>

View File

@ -1,11 +1,11 @@
<template>
<sc-dialog v-model="visible" :title="titleMap[mode]" destroy-on-close @closed="$emit('closed')">
<sc-dialog v-model="visible" :title="titleMap[mode]" @closed="$emit('closed')" destroy-on-close>
<div v-loading="loading">
<el-tabs v-if="!loading" tab-position="top">
<el-tab-pane :label="$t('基本信息')">
<el-form ref="dialogForm" :disabled="mode === 'view'" :model="form" :rules="rules" label-width="100px">
<el-form :disabled="mode === 'view'" :model="form" :rules="rules" label-width="100px" ref="dialogForm">
<el-collapse>
<el-collapse-item name="1" :title="$t('用户注册设置')">
<el-collapse-item :title="$t('用户注册设置')" name="1">
<div style="margin: 10px">
<el-form-item :label="$t('默认角色')" prop="userRegisterRoleId">
<sc-select
@ -23,7 +23,7 @@
</el-form-item>
</div>
</el-collapse-item>
<el-collapse-item name="2" :title="$t('其他设置')"></el-collapse-item>
<el-collapse-item :title="$t('其他设置')" name="2"></el-collapse-item>
</el-collapse>
<el-form-item :label="$t('启用')" prop="enabled">
@ -44,7 +44,7 @@
</div>
<template #footer>
<el-button @click="visible = false"> </el-button>
<el-button v-if="mode !== 'view'" :loading="loading" type="primary" @click="submit"> </el-button>
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary"> </el-button>
</template>
</sc-dialog>
</template>

View File

@ -26,26 +26,26 @@
</div>
<div class="right-panel">
<na-button-add :vue="this"></na-button-add>
<el-button :disabled="selection.length === 0" icon="el-icon-delete" plain type="danger" @click="batchDel"></el-button>
<el-button :disabled="selection.length === 0" @click="batchDel" icon="el-icon-delete" plain type="danger"></el-button>
</div>
</el-header>
<el-main class="nopadding">
<sc-table
ref="table"
:apiObj="$API.sys_dept.query"
:default-sort="{ prop: 'sort', order: 'descending' }"
:params="query"
default-expand-all
hidePagination
remote-filter
remote-sort
row-key="id"
stripe
@selection-change="
(items) => {
selection = items
}
">
"
default-expand-all
hidePagination
ref="table"
remote-filter
remote-sort
row-key="id"
stripe>
<el-table-column type="selection" width="50"></el-table-column>
<el-table-column :label="$t('部门编号')" prop="id" sortable="custom"></el-table-column>
<el-table-column :label="$t('部门名称')" prop="name" sortable="custom"></el-table-column>
@ -75,9 +75,9 @@
<save-dialog
v-if="dialog.save"
ref="saveDialog"
@closed="dialog.save = false"
@success="(data, mode) => table.handleUpdate($refs.table, data, mode)"></save-dialog>
@success="(data, mode) => table.handleUpdate($refs.table, data, mode)"
ref="saveDialog"></save-dialog>
</template>
<script>

View File

@ -1,9 +1,9 @@
<template>
<sc-dialog v-model="visible" :title="titleMap[mode]" :width="500" destroy-on-close @closed="$emit('closed')">
<sc-dialog v-model="visible" :title="titleMap[mode]" :width="500" @closed="$emit('closed')" destroy-on-close>
<div v-loading="loading">
<el-tabs tab-position="top">
<el-tab-pane :label="$t('基本信息')">
<el-form ref="dialogForm" :disabled="mode === 'view'" :model="form" :rules="rules" label-width="100px">
<el-form :disabled="mode === 'view'" :model="form" :rules="rules" label-width="100px" ref="dialogForm">
<el-form-item :label="$t('上级部门')" prop="parentId">
<el-cascader
v-model="form.parentId"
@ -14,7 +14,7 @@
style="width: 100%"></el-cascader>
</el-form-item>
<el-form-item :label="$t('部门名称')" prop="name">
<el-input v-model="form.name" clearable :placeholder="$t('请输入部门名称')"></el-input>
<el-input v-model="form.name" :placeholder="$t('请输入部门名称')" clearable></el-input>
</el-form-item>
<el-form-item :label="$t('排序')" prop="sort">
<el-input-number v-model="form.sort" :min="0" controls-position="right" style="width: 100%"></el-input-number>
@ -40,7 +40,7 @@
</div>
<template #footer>
<el-button @click="visible = false"> </el-button>
<el-button v-if="mode !== 'view'" :loading="loading" type="primary" @click="submit"> </el-button>
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary"> </el-button>
</template>
</sc-dialog>
</template>

View File

@ -3,11 +3,10 @@
<el-aside v-loading="loading" width="300px">
<el-container>
<el-header>
<el-input v-model="filterText" clearable :placeholder="$t('输入关键字进行过滤')"></el-input>
<el-input v-model="filterText" :placeholder="$t('输入关键字进行过滤')" clearable></el-input>
</el-header>
<el-main class="nopadding">
<el-tree
ref="dic"
:data="data"
:expand-on-click-node="false"
:filter-node-method="filterNode"
@ -15,18 +14,19 @@
:props="{
label: 'name',
}"
@node-click="click"
default-expand-all
node-key="id"
@node-click="click">
ref="dic">
<template #default="{ _, data }">
<div class="custom-tree-node">
<span>{{ data.name }} {{ data.code }}</span>
<span class="btn">
<el-button-group size="small">
<el-button icon="el-icon-edit" @click.stop="edit(data)"></el-button>
<el-button @click.stop="edit(data)" icon="el-icon-edit"></el-button>
<el-popconfirm :title="`确定删除 ${data.name} 吗?`" @confirm="del(data)">
<template #reference>
<el-button icon="el-icon-delete" @click.stop="() => {}"></el-button>
<el-button @click.stop="() => {}" icon="el-icon-delete"></el-button>
</template>
</el-popconfirm>
</el-button-group>
@ -36,13 +36,13 @@
</el-tree>
</el-main>
<el-footer>
<el-button icon="el-icon-plus" size="small" style="width: 100%" type="primary" @click="add">字典分类</el-button>
<el-button @click="add" icon="el-icon-plus" size="small" style="width: 100%" type="primary">字典分类</el-button>
</el-footer>
</el-container>
</el-aside>
<list :catalogId="form.catalogId" />
</el-container>
<save-dialog v-if="dialog.save" ref="saveDialog" @closed="dialog.save = false" @success="getData"></save-dialog>
<save-dialog v-if="dialog.save" @closed="dialog.save = false" @success="getData" ref="saveDialog"></save-dialog>
</template>
<script>

View File

@ -3,7 +3,6 @@
<el-header>
<div class="left-panel">
<na-search
ref="search"
:controls="[
{
type: 'input',
@ -13,7 +12,8 @@
},
]"
:vue="this"
@search="onSearch" />
@search="onSearch"
ref="search" />
</div>
<div class="right-panel">
<na-button-add :data="{ catalogId: this.catalogId }" :vue="this" />
@ -22,19 +22,19 @@
</el-header>
<el-main class="nopadding">
<sc-table
ref="table"
:apiObj="$API.sys_dic.pagedQueryContent"
:before-post="(data) => data.dynamicFilter.filters.length > 0"
:default-sort="{ prop: 'createdTime', order: 'descending' }"
:params="query"
remote-sort
row-key="id"
stripe
@selection-change="
(items) => {
selection = items
}
">
"
ref="table"
remote-sort
row-key="id"
stripe>
<el-table-column type="selection" width="50"></el-table-column>
<el-table-column :label="$t('项名')" prop="key" sortable="custom"></el-table-column>
<el-table-column :label="$t('项值')" prop="value" sortable="custom"></el-table-column>
@ -54,9 +54,9 @@
</el-container>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
@closed="dialog.save = false"
@success="(data, mode) => table.handleUpdate($refs.table, data, mode)"></save-dialog>
@success="(data, mode) => table.handleUpdate($refs.table, data, mode)"
ref="saveDialog"></save-dialog>
</template>
<script>
import saveDialog from './save'

View File

@ -1,9 +1,9 @@
<template>
<sc-dialog v-model="visible" :title="titleMap[mode]" :width="400" destroy-on-close @closed="$emit('closed')">
<sc-dialog v-model="visible" :title="titleMap[mode]" :width="400" @closed="$emit('closed')" destroy-on-close>
<div v-loading="loading">
<el-tabs tab-position="top">
<el-tab-pane :label="$t('基本信息')">
<el-form ref="dialogForm" :disabled="mode === 'view'" :model="form" :rules="rules" label-width="100px">
<el-form :disabled="mode === 'view'" :model="form" :rules="rules" label-width="100px" ref="dialogForm">
<el-form-item :label="$t('所属字典')" prop="catalogId">
<na-dic-catalog v-model="form.catalogId" />
</el-form-item>
@ -28,7 +28,7 @@
</div>
<template #footer>
<el-button @click="visible = false"> </el-button>
<el-button v-if="mode !== 'view'" :loading="loading" type="primary" @click="submit"> </el-button>
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary"> </el-button>
</template>
</sc-dialog>
</template>

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