优化
@@ -4,8 +4,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
|
|||||||
-->
|
-->
|
||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_PublishTargetUrl>F:\work\code\me\dysync.net\bin\Release\net6.0\publish\</_PublishTargetUrl>
|
<_PublishTargetUrl>E:\code\dysync\bin\Release\net6.0\publish\</_PublishTargetUrl>
|
||||||
<History>True|2025-10-22T14:08:11.6423148Z||;True|2025-10-22T21:54:24.7180547+08:00||;True|2025-10-22T21:40:03.5194315+08:00||;True|2025-10-22T21:28:28.8962766+08:00||;True|2025-10-22T21:22:47.9631689+08:00||;True|2025-10-22T21:18:24.5274318+08:00||;True|2025-10-22T21:14:51.6386326+08:00||;False|2025-10-22T21:14:07.6282769+08:00||;True|2025-10-22T21:03:48.9892860+08:00||;True|2025-10-22T21:00:56.3617243+08:00||;False|2025-10-22T21:00:30.5472941+08:00||;True|2025-10-22T20:51:29.6155916+08:00||;False|2025-10-22T20:50:47.1882956+08:00||;True|2025-10-22T15:01:04.1668366+08:00||;True|2025-10-22T14:49:43.6340569+08:00||;True|2025-10-22T14:38:39.4685603+08:00||;True|2025-10-21T18:35:28.8392541+08:00||;True|2025-10-20T10:31:05.5865212+08:00||;True|2025-10-20T10:20:41.5717101+08:00||;True|2025-10-19T10:08:33.6669332+08:00||;False|2025-10-19T10:07:22.3337545+08:00||;False|2025-10-19T10:05:22.9484805+08:00||;True|2025-10-10T16:54:27.1472888+08:00||;False|2025-10-10T16:53:44.1700030+08:00||;False|2025-10-10T16:52:48.1740453+08:00||;False|2025-10-10T16:51:21.5067253+08:00||;False|2025-10-10T16:50:19.2140597+08:00||;False|2025-10-10T16:49:21.2213290+08:00||;False|2025-10-10T16:48:47.7229948+08:00||;False|2025-10-10T16:48:15.1258700+08:00||;True|2025-09-30T13:29:42.2354235+08:00||;True|2025-09-25T11:44:52.6858389+08:00||;True|2025-09-25T11:08:27.8810109+08:00||;True|2025-09-25T09:28:50.2563374+08:00||;True|2025-09-24T16:14:02.3072184+08:00||;True|2025-09-23T22:38:52.4414757+08:00||;True|2025-09-23T22:19:07.1006356+08:00||;True|2025-09-23T22:18:01.5945225+08:00||;True|2025-09-23T22:06:15.6293613+08:00||;True|2025-09-23T21:53:14.2977444+08:00||;True|2025-09-23T21:46:55.2322411+08:00||;False|2025-09-23T21:45:23.7858854+08:00||;False|2025-09-23T21:03:51.8325689+08:00||;True|2025-09-23T10:03:32.2251920+08:00||;False|2025-09-23T09:38:08.2372201+08:00||;False|2025-09-23T09:37:49.9390545+08:00||;True|2024-03-11T21:31:45.8102398+08:00||;True|2024-03-11T07:26:24.7660541+08:00||;True|2024-03-08T22:08:40.0154831+08:00||;True|2024-03-03T10:14:36.8109114+08:00||;True|2024-03-02T18:44:57.3288537+08:00||;True|2024-01-24T17:51:37.9164415+08:00||;True|2024-01-24T16:36:50.5612157+08:00||;True|2024-01-24T15:51:35.7556653+08:00||;True|2024-01-17T23:40:40.7526618+08:00||;True|2024-01-17T23:36:10.3692844+08:00||;True|2024-01-17T23:22:03.2378834+08:00||;True|2024-01-03T11:35:44.7118292+08:00||;True|2024-01-03T11:11:23.4270453+08:00||;True|2024-01-03T11:04:35.2081526+08:00||;True|2024-01-03T10:57:03.7053107+08:00||;True|2024-01-03T10:51:50.7463989+08:00||;False|2024-01-03T10:50:24.9775312+08:00||;True|2024-01-03T10:47:30.1128183+08:00||;True|2024-01-03T10:42:55.8640657+08:00||;True|2024-01-03T09:24:24.3436056+08:00||;True|2024-01-02T23:40:38.2001198+08:00||;True|2024-01-02T23:08:36.7230444+08:00||;True|2024-01-02T22:53:43.9658255+08:00||;True|2024-01-02T22:25:38.5545279+08:00||;False|2024-01-02T22:24:42.6577609+08:00||;True|2024-01-02T22:04:33.4708889+08:00||;True|2024-01-02T21:49:57.9249898+08:00||;True|2023-12-28T22:42:58.5976180+08:00||;True|2023-12-28T22:24:09.2051205+08:00||;True|2023-12-28T22:05:48.4865497+08:00||;True|2023-12-28T21:50:57.4549336+08:00||;True|2023-12-28T21:45:30.4557939+08:00||;True|2023-12-28T21:19:59.3614594+08:00||;False|2023-12-28T21:17:04.3069097+08:00||;False|2023-12-28T21:15:56.7788810+08:00||;False|2023-12-28T21:14:57.3617402+08:00||;False|2023-12-28T21:10:45.4382469+08:00||;True|2023-12-28T19:45:33.1431914+08:00||;True|2023-12-26T11:30:36.6418716+08:00||;True|2023-12-26T11:17:40.6433651+08:00||;True|2023-12-26T09:13:56.0741559+08:00||;True|2023-12-26T09:10:55.5358737+08:00||;True|2023-12-25T23:15:34.6534359+08:00||;True|2023-12-25T23:09:47.1566176+08:00||;False|2023-12-25T23:07:32.1118803+08:00||;True|2023-12-25T22:59:50.4643459+08:00||;True|2023-12-25T22:50:14.3584798+08:00||;False|2023-12-25T22:49:20.0279513+08:00||;True|2023-12-25T22:44:07.4183973+08:00||;True|2023-12-25T22:35:27.3847085+08:00||;True|2023-12-25T22:23:21.3542658+08:00||;True|2023-12-25T22:12:00.5219522+08:00||;True|2023-12-25T16:52:12.5089621+08:00||;True|2023-12-25T16:43:30.8348193+08:00||;</History>
|
<History>True|2025-11-12T15:06:38.7834109Z||;False|2025-11-12T23:01:02.2269478+08:00||;True|2025-10-22T22:08:11.6423148+08:00||;True|2025-10-22T21:54:24.7180547+08:00||;True|2025-10-22T21:40:03.5194315+08:00||;True|2025-10-22T21:28:28.8962766+08:00||;True|2025-10-22T21:22:47.9631689+08:00||;True|2025-10-22T21:18:24.5274318+08:00||;True|2025-10-22T21:14:51.6386326+08:00||;False|2025-10-22T21:14:07.6282769+08:00||;True|2025-10-22T21:03:48.9892860+08:00||;True|2025-10-22T21:00:56.3617243+08:00||;False|2025-10-22T21:00:30.5472941+08:00||;True|2025-10-22T20:51:29.6155916+08:00||;False|2025-10-22T20:50:47.1882956+08:00||;True|2025-10-22T15:01:04.1668366+08:00||;True|2025-10-22T14:49:43.6340569+08:00||;True|2025-10-22T14:38:39.4685603+08:00||;True|2025-10-21T18:35:28.8392541+08:00||;True|2025-10-20T10:31:05.5865212+08:00||;True|2025-10-20T10:20:41.5717101+08:00||;True|2025-10-19T10:08:33.6669332+08:00||;False|2025-10-19T10:07:22.3337545+08:00||;False|2025-10-19T10:05:22.9484805+08:00||;True|2025-10-10T16:54:27.1472888+08:00||;False|2025-10-10T16:53:44.1700030+08:00||;False|2025-10-10T16:52:48.1740453+08:00||;False|2025-10-10T16:51:21.5067253+08:00||;False|2025-10-10T16:50:19.2140597+08:00||;False|2025-10-10T16:49:21.2213290+08:00||;False|2025-10-10T16:48:47.7229948+08:00||;False|2025-10-10T16:48:15.1258700+08:00||;True|2025-09-30T13:29:42.2354235+08:00||;True|2025-09-25T11:44:52.6858389+08:00||;True|2025-09-25T11:08:27.8810109+08:00||;True|2025-09-25T09:28:50.2563374+08:00||;True|2025-09-24T16:14:02.3072184+08:00||;True|2025-09-23T22:38:52.4414757+08:00||;True|2025-09-23T22:19:07.1006356+08:00||;True|2025-09-23T22:18:01.5945225+08:00||;True|2025-09-23T22:06:15.6293613+08:00||;True|2025-09-23T21:53:14.2977444+08:00||;True|2025-09-23T21:46:55.2322411+08:00||;False|2025-09-23T21:45:23.7858854+08:00||;False|2025-09-23T21:03:51.8325689+08:00||;True|2025-09-23T10:03:32.2251920+08:00||;False|2025-09-23T09:38:08.2372201+08:00||;False|2025-09-23T09:37:49.9390545+08:00||;True|2024-03-11T21:31:45.8102398+08:00||;True|2024-03-11T07:26:24.7660541+08:00||;True|2024-03-08T22:08:40.0154831+08:00||;True|2024-03-03T10:14:36.8109114+08:00||;True|2024-03-02T18:44:57.3288537+08:00||;True|2024-01-24T17:51:37.9164415+08:00||;True|2024-01-24T16:36:50.5612157+08:00||;True|2024-01-24T15:51:35.7556653+08:00||;True|2024-01-17T23:40:40.7526618+08:00||;True|2024-01-17T23:36:10.3692844+08:00||;True|2024-01-17T23:22:03.2378834+08:00||;True|2024-01-03T11:35:44.7118292+08:00||;True|2024-01-03T11:11:23.4270453+08:00||;True|2024-01-03T11:04:35.2081526+08:00||;True|2024-01-03T10:57:03.7053107+08:00||;True|2024-01-03T10:51:50.7463989+08:00||;False|2024-01-03T10:50:24.9775312+08:00||;True|2024-01-03T10:47:30.1128183+08:00||;True|2024-01-03T10:42:55.8640657+08:00||;True|2024-01-03T09:24:24.3436056+08:00||;True|2024-01-02T23:40:38.2001198+08:00||;True|2024-01-02T23:08:36.7230444+08:00||;True|2024-01-02T22:53:43.9658255+08:00||;True|2024-01-02T22:25:38.5545279+08:00||;False|2024-01-02T22:24:42.6577609+08:00||;True|2024-01-02T22:04:33.4708889+08:00||;True|2024-01-02T21:49:57.9249898+08:00||;True|2023-12-28T22:42:58.5976180+08:00||;True|2023-12-28T22:24:09.2051205+08:00||;True|2023-12-28T22:05:48.4865497+08:00||;True|2023-12-28T21:50:57.4549336+08:00||;True|2023-12-28T21:45:30.4557939+08:00||;True|2023-12-28T21:19:59.3614594+08:00||;False|2023-12-28T21:17:04.3069097+08:00||;False|2023-12-28T21:15:56.7788810+08:00||;False|2023-12-28T21:14:57.3617402+08:00||;False|2023-12-28T21:10:45.4382469+08:00||;True|2023-12-28T19:45:33.1431914+08:00||;True|2023-12-26T11:30:36.6418716+08:00||;True|2023-12-26T11:17:40.6433651+08:00||;True|2023-12-26T09:13:56.0741559+08:00||;True|2023-12-26T09:10:55.5358737+08:00||;True|2023-12-25T23:15:34.6534359+08:00||;True|2023-12-25T23:09:47.1566176+08:00||;False|2023-12-25T23:07:32.1118803+08:00||;True|2023-12-25T22:59:50.4643459+08:00||;True|2023-12-25T22:50:14.3584798+08:00||;False|2023-12-25T22:49:20.0279513+08:00||;True|2023-12-25T22:44:07.4183973+08:00||;True|2023-12-25T22:35:27.3847085+08:00||;True|2023-12-25T22:23:21.3542658+08:00||;True|2023-12-25T22:12:00.5219522+08:00||;</History>
|
||||||
<LastFailureDetails />
|
<LastFailureDetails />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" type="image/png" href="/logo1.png" />
|
<link rel="icon" type="image/png" href="/logo.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>抖音同步小帮手</title>
|
<title>抖音同步小帮手</title>
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
<svg width="40" height="40" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
||||||
<rect fill="rgba(0, 0, 0, 0)" width="20" height="20" />
|
|
||||||
<g fill="rgba(0, 0, 220, 0.05)" >
|
|
||||||
<rect width="10" height="10" />
|
|
||||||
<rect x="10" y="10" width="10" height="10" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 320 B |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.9 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<ThemeProvider is-root v-bind="themeConfig" :apply-style="false">
|
<ThemeProvider is-root v-bind="themeConfig" :apply-style="false">
|
||||||
<stepin-view system-name="dy.sync.net" :class="`${contentClass}`" :user="user" :navMode="navigation" :useTabs="useTabs" :themeList="themeList" v-model:show-setting="showSetting" v-model:theme="theme" @themeSelect="configTheme" logo-src="@/assets/logo1.png">
|
<stepin-view system-name="抖音小帮手" :class="`${contentClass}`" :user="user" :navMode="navigation" :useTabs="useTabs" :themeList="themeList" v-model:show-setting="showSetting" v-model:theme="theme" @themeSelect="configTheme" logo-src="@/assets/logo.png">
|
||||||
<template #headerActions>
|
<template #headerActions>
|
||||||
<HeaderActions @showSetting="showSetting = true" />
|
<HeaderActions @showSetting="showSetting = true" />
|
||||||
</template>
|
</template>
|
||||||
@@ -85,16 +85,16 @@ onMounted(() => {
|
|||||||
.apiCheckInitStatus()
|
.apiCheckInitStatus()
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
useApiStore()
|
// useApiStore()
|
||||||
.apiUserInfo()
|
// .apiUserInfo()
|
||||||
.then((res) => {
|
// .then((res) => {
|
||||||
if (res.code === 0 && res.code !== '') {
|
// if (res.code === 0 && res.code !== '') {
|
||||||
if (res.data.avatar && res.data.avatar != null) {
|
// if (res.data.avatar && res.data.avatar != null) {
|
||||||
user.avatar = `/upload/${res.data.avatar}`;
|
// user.avatar = `/upload/${res.data.avatar}`;
|
||||||
}
|
// }
|
||||||
user.name = res.data.userName;
|
// user.name = res.data.userName;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -123,6 +123,9 @@ onMounted(() => {
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background: theme('backgroundColor.layout');
|
background: theme('backgroundColor.layout');
|
||||||
}
|
}
|
||||||
|
.system-name {
|
||||||
|
// color: #16213e !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 58 KiB |
@@ -55,7 +55,7 @@ const navList = [
|
|||||||
<div class="front-header flex items-baseline py-md px-xl">
|
<div class="front-header flex items-baseline py-md px-xl">
|
||||||
<div class="text-xxl text-text hover:text-text">
|
<div class="text-xxl text-text hover:text-text">
|
||||||
<!-- <img src="@/assets/png.svg" /> -->
|
<!-- <img src="@/assets/png.svg" /> -->
|
||||||
dy.sync.net
|
<!-- 抖音同步小帮手 -->
|
||||||
</div>
|
</div>
|
||||||
<!-- <div style="width: calc(100% - 430px)" class="front-navigation mx-xl flex overflow-hidden items-center text-lg overflow-ellipsis whitespace-nowrap">
|
<!-- <div style="width: calc(100% - 430px)" class="front-navigation mx-xl flex overflow-hidden items-center text-lg overflow-ellipsis whitespace-nowrap">
|
||||||
<div :class="`front-nav-item flex items-center cursor-pointer mx-base ${nav.children ? 'with-list' : ''}`" v-for="nav in navList">
|
<div :class="`front-nav-item flex items-center cursor-pointer mx-base ${nav.children ? 'with-list' : ''}`" v-for="nav in navList">
|
||||||
|
|||||||
@@ -28,10 +28,10 @@ onMounted(() => {
|
|||||||
<template>
|
<template>
|
||||||
<ThemeProvider :color="{ middle: { 'bg-base': '#fff','bg-container':'#fff','bg-container-light':'#fff' }, primary: { DEFAULT: '#1896ff' } }" :autoAdapt="true">
|
<ThemeProvider :color="{ middle: { 'bg-base': '#fff','bg-container':'#fff','bg-container-light':'#fff' }, primary: { DEFAULT: '#1896ff' } }" :autoAdapt="true">
|
||||||
<div class="front-view flex flex-col" style="background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%)">
|
<div class="front-view flex flex-col" style="background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%)">
|
||||||
<div class="text-xxl text-text hover:text-text" style="margin-left:20px;color:#722ed1;">
|
<!-- <div class="text-xxl text-text hover:text-text" style="margin-left:20px;color:#722ed1;"> -->
|
||||||
<img src="/logo1.png" />
|
<!-- <img src="/logo.png" /> -->
|
||||||
dy.sync.net
|
<!-- 抖音同步小帮手 -->
|
||||||
</div>
|
<!-- </div> -->
|
||||||
<div class="front-content ">
|
<div class="front-content ">
|
||||||
<router-view />
|
<router-view />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,62 +1,102 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<div class="login-page min-h-screen flex items-center justify-center p-4 md:p-8">
|
||||||
<ThemeProvider :color="{
|
<ThemeProvider :color="{
|
||||||
middle: { 'bg-base': '#f8fafc' }, // 浅灰底色
|
middle: { 'bg-base': '#f8fafc' },
|
||||||
primary: { DEFAULT: '#60a5fa' } // 柔和蓝色作为主色调
|
primary: { DEFAULT: '#4f46e5', hover: '#4338ca' }
|
||||||
}">
|
}">
|
||||||
<!-- 清新风格登录框 -->
|
<!-- 登录卡片 -->
|
||||||
<div class="login-box rounded-xl bg-white shadow-md p-8 max-w-2xl mx-auto my-10 border border-gray-100 transition-all duration-300 hover:shadow-lg">
|
<div class="login-box rounded-2xl shadow-lg p-8 md:p-10 max-w-md w-full border border-gray-200 transition-all duration-500 hover:shadow-xl transform hover:-translate-y-1">
|
||||||
<a-form :model="form" :wrapperCol="{ span: 24 }" @finish="login" class="login-form w-full p-lg text-gray-700">
|
<!-- 顶部Logo区域 -->
|
||||||
<div class="third-platform">
|
<div class="flex flex-col items-center mb-8">
|
||||||
<div class="third-title mb-6 text-xl text-center font-semibold text-gray-800">抖音同步小帮手</div>
|
<div class="w-16 h-16 bg-primary/10 rounded-full flex items-center justify-center mb-4">
|
||||||
|
<img src="/public/logo.png">
|
||||||
|
</div>
|
||||||
|
<h2 class="third-title text-2xl font-bold text-gray-800 tracking-tight">抖音同步小帮手</h2>
|
||||||
</div>
|
</div>
|
||||||
<a-divider class="my-6 bg-gray-200"></a-divider>
|
|
||||||
|
|
||||||
<!-- 清新风格输入框 -->
|
<a-form :model="form" :wrapperCol="{ span: 24 }" @finish="login" class="login-form w-full text-gray-700">
|
||||||
<a-form-item :required="true" name="username" class="mb-5">
|
<!-- 用户名输入框 -->
|
||||||
<a-input v-model:value="form.username" autocomplete="new-username" placeholder="请输入用户名" class="login-input h-[45px] rounded-md bg-gray-50 border-gray-200 text-gray-800 placeholder:text-gray-400 focus:border-primary text-base transition-all focus:ring-1 focus:ring-primary" />
|
<a-form-item :required="true" name="username" class="mb-5" :validate-status="usernameStatus">
|
||||||
</a-form-item>
|
<a-input v-model:value="form.username" autocomplete="new-username" placeholder="请输入用户名" class="login-input h-[50px] rounded-lg bg-gray-50 border-gray-200 text-gray-800 placeholder:text-gray-400 focus:border-primary focus:bg-white text-base transition-all duration-300 focus:ring-2 focus:ring-primary/20">
|
||||||
|
<template #prefix>
|
||||||
<a-form-item :required="true" name="password" class="mb-2">
|
<svg class="w-5 h-5 text-gray-400 mr-2" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||||
<a-input v-model:value="form.password" autocomplete="new-password" placeholder="请输入密码" class="login-input h-[45px] rounded-md bg-gray-50 border-gray-200 text-gray-800 placeholder:text-gray-400 focus:border-primary text-base transition-all focus:ring-1 focus:ring-primary" :type="showPassword ? 'text' : 'password'">
|
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path>
|
||||||
<!-- 密码显示/隐藏图标 -->
|
<circle cx="12" cy="7" r="4"></circle>
|
||||||
<template #suffix>
|
</svg>
|
||||||
<EyeOutlined v-if="showPassword" @click="showPassword = !showPassword" class="text-gray-400 hover:text-primary cursor-pointer transition-colors" aria-label="隐藏密码" />
|
|
||||||
<EyeInvisibleOutlined v-else @click="showPassword = !showPassword" class="text-gray-400 hover:text-primary cursor-pointer transition-colors" aria-label="显示密码" />
|
|
||||||
</template>
|
</template>
|
||||||
</a-input>
|
</a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
|
||||||
<!-- 记住密码选项 -->
|
<!-- 密码输入框 -->
|
||||||
<a-form-item class="mb-6 pl-2">
|
<a-form-item :required="true" name="password" class="mb-2" :validate-status="passwordStatus">
|
||||||
<a-checkbox v-model:checked="rememberPassword" class="text-gray-600 hover:text-primary transition-colors">
|
<a-input v-model:value="form.password" autocomplete="new-password" placeholder="请输入密码" class="login-input h-[50px] rounded-lg bg-gray-50 border-gray-200 text-gray-800 placeholder:text-gray-400 focus:border-primary focus:bg-white text-base transition-all duration-300 focus:ring-2 focus:ring-primary/20" :type="showPassword ? 'text' : 'password'">
|
||||||
记住密码
|
<template #prefix>
|
||||||
</a-checkbox>
|
<svg class="w-5 h-5 text-gray-400 mr-2" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||||
|
<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect>
|
||||||
|
<path d="M7 11V7a5 5 0 0 1 10 0v4"></path>
|
||||||
|
</svg>
|
||||||
|
</template>
|
||||||
|
<!-- 密码显示/隐藏图标 -->
|
||||||
|
<template #suffix>
|
||||||
|
<EyeOutlined v-if="showPassword" @click="showPassword = !showPassword" class="text-gray-400 hover:text-primary cursor-pointer transition-colors duration-300 text-lg" aria-label="隐藏密码" />
|
||||||
|
<EyeInvisibleOutlined v-else @click="showPassword = !showPassword" class="text-gray-400 hover:text-primary cursor-pointer transition-colors duration-300 text-lg" aria-label="显示密码" />
|
||||||
|
</template>
|
||||||
|
</a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
|
||||||
<a-button htmlType="submit" class="h-[48px] w-full rounded-md transition-colors hover:bg-primary/90 bg-primary border-primary text-white text-base shadow-sm hover:shadow" type="primary" :loading="loading">
|
<!-- 记住密码与忘记密码 -->
|
||||||
登录
|
<div class="flex items-center justify-between mb-6 px-1">
|
||||||
|
<a-form-item class="mb-0">
|
||||||
|
<a-checkbox v-model:checked="rememberPassword" class="text-gray-600 hover:text-primary transition-colors duration-300 cursor-pointer">
|
||||||
|
<span class="text-sm">记住密码</span>
|
||||||
|
</a-checkbox>
|
||||||
|
</a-form-item>
|
||||||
|
<!-- <a href="#" class="text-primary hover:text-primary/80 text-sm font-medium transition-colors duration-300" @click.prevent="handleForgotPassword">
|
||||||
|
忘记密码?
|
||||||
|
</a> -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 登录按钮 -->
|
||||||
|
<a-button htmlType="submit" class="h-[52px] w-full rounded-lg transition-all duration-300 hover:bg-primary/90 bg-primary border-primary text-white text-base font-medium shadow-md hover:shadow-lg transform hover:-translate-y-0.5 active:translate-y-0" type="primary" :loading="loading">
|
||||||
|
<span v-if="!loading">登录</span>
|
||||||
|
<span v-else>登录中...</span>
|
||||||
</a-button>
|
</a-button>
|
||||||
|
|
||||||
|
<!-- 注册入口 -->
|
||||||
|
<!-- <div class="text-center mt-6 text-gray-500 text-sm">
|
||||||
|
还没有账号?
|
||||||
|
<a href="#" class="text-primary hover:text-primary/80 font-medium transition-colors duration-300 ml-1" @click.prevent="handleRegister">
|
||||||
|
立即注册
|
||||||
|
</a>
|
||||||
|
</div> -->
|
||||||
</a-form>
|
</a-form>
|
||||||
</div>
|
</div>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { reactive, ref, onMounted } from 'vue';
|
import { reactive, ref, onMounted, computed } from 'vue';
|
||||||
import { useAccountStore } from '@/store';
|
import { useAccountStore } from '@/store';
|
||||||
import { ThemeProvider } from 'stepin';
|
import { ThemeProvider } from 'stepin';
|
||||||
import { EyeOutlined, EyeInvisibleOutlined } from '@ant-design/icons-vue';
|
import { EyeOutlined, EyeInvisibleOutlined } from '@ant-design/icons-vue';
|
||||||
|
import { message } from 'ant-design-vue';
|
||||||
|
|
||||||
// 控制密码显示/隐藏的状态
|
// 控制密码显示/隐藏的状态
|
||||||
const showPassword = ref(false);
|
const showPassword = ref(false);
|
||||||
// 记住密码状态
|
// 记住密码状态
|
||||||
const rememberPassword = ref(false);
|
const rememberPassword = ref(false);
|
||||||
|
// 加载状态
|
||||||
|
const loading = ref(false);
|
||||||
|
|
||||||
|
// 表单状态(用于输入框验证反馈)
|
||||||
|
const usernameStatus = computed(() => (form.username ? 'success' : ''));
|
||||||
|
const passwordStatus = computed(() => (form.password ? 'success' : ''));
|
||||||
|
|
||||||
export interface LoginFormProps {
|
export interface LoginFormProps {
|
||||||
username: string;
|
username: string;
|
||||||
password: string;
|
password: string;
|
||||||
}
|
}
|
||||||
const loading = ref(false);
|
|
||||||
|
|
||||||
const form = reactive<LoginFormProps>({
|
const form = reactive<LoginFormProps>({
|
||||||
username: '',
|
username: '',
|
||||||
@@ -66,6 +106,8 @@ const form = reactive<LoginFormProps>({
|
|||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(e: 'success', fields: LoginFormProps): void;
|
(e: 'success', fields: LoginFormProps): void;
|
||||||
(e: 'failure', reason: string, fields: LoginFormProps): void;
|
(e: 'failure', reason: string, fields: LoginFormProps): void;
|
||||||
|
(e: 'register'): void;
|
||||||
|
(e: 'forgot-password'): void;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const accountStore = useAccountStore();
|
const accountStore = useAccountStore();
|
||||||
@@ -86,7 +128,18 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function login(params: LoginFormProps) {
|
// 登录处理
|
||||||
|
async function login(params: LoginFormProps) {
|
||||||
|
// 简单表单验证
|
||||||
|
if (!params.username) {
|
||||||
|
message.warning('请输入用户名');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!params.password) {
|
||||||
|
message.warning('请输入密码');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
|
|
||||||
// 根据记住密码状态保存/清除用户信息
|
// 根据记住密码状态保存/清除用户信息
|
||||||
@@ -102,14 +155,95 @@ function login(params: LoginFormProps) {
|
|||||||
localStorage.removeItem('rememberedUser');
|
localStorage.removeItem('rememberedUser');
|
||||||
}
|
}
|
||||||
|
|
||||||
accountStore
|
try {
|
||||||
.login(params.username, params.password)
|
const res = await accountStore.login(params.username, params.password);
|
||||||
.then((res) => {
|
|
||||||
emit('success', params);
|
emit('success', params);
|
||||||
})
|
message.success('登录成功!');
|
||||||
.catch((e) => {
|
} catch (e: any) {
|
||||||
emit('failure', e.message, e.data);
|
// emit('failure', e.message, e.data);
|
||||||
})
|
message.error(e.data.erro || '登录失败,请重试');
|
||||||
.finally(() => (loading.value = false));
|
} finally {
|
||||||
|
loading.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 忘记密码处理
|
||||||
|
function handleForgotPassword() {
|
||||||
|
emit('forgot-password');
|
||||||
|
message.info('忘记密码功能即将上线');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 注册处理
|
||||||
|
function handleRegister() {
|
||||||
|
emit('register');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
/* 页面基础样式 */
|
||||||
|
.login-page {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 输入框聚焦动画优化 */
|
||||||
|
::v-deep(.ant-input:focus) {
|
||||||
|
box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.2) !important;
|
||||||
|
border-color: #4f46e5 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 复选框样式优化 */
|
||||||
|
::v-deep(.ant-checkbox-checked .ant-checkbox-inner) {
|
||||||
|
background-color: #4f46e5 !important;
|
||||||
|
border-color: #4f46e5 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep(.ant-checkbox:hover .ant-checkbox-inner) {
|
||||||
|
border-color: #4f46e5 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮样式优化 */
|
||||||
|
::v-deep(.ant-btn-primary) {
|
||||||
|
background-color: #4f46e5 !important;
|
||||||
|
border-color: #4f46e5 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep(.ant-btn-primary:hover) {
|
||||||
|
background-color: #4338ca !important;
|
||||||
|
border-color: #4338ca !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep(.ant-btn-primary:focus) {
|
||||||
|
box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.3) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 分割线样式优化 */
|
||||||
|
::v-deep(.ant-divider) {
|
||||||
|
background-color: #e5e7eb !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 加载状态动画优化 */
|
||||||
|
::v-deep(.ant-btn-loading .ant-btn-loading-icon) {
|
||||||
|
margin-right: 8px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式调整 */
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
.login-box {
|
||||||
|
padding: 60px 20px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.third-title {
|
||||||
|
font-size: 1.5rem !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 平滑滚动 */
|
||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 防止点击闪烁 */
|
||||||
|
* {
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -116,15 +116,15 @@ const beforeUpload = (file: UploadProps['fileList'][number]) => {
|
|||||||
// const userInfo = ref<string>();
|
// const userInfo = ref<string>();
|
||||||
|
|
||||||
const loadUserInfo = () => {
|
const loadUserInfo = () => {
|
||||||
useApiStore()
|
// useApiStore()
|
||||||
.apiUserInfo()
|
// .apiUserInfo()
|
||||||
.then((res) => {
|
// .then((res) => {
|
||||||
if (res.code === 0) {
|
// if (res.code === 0) {
|
||||||
if (res.data.avatar != null && res.data.avatar !== '') imageUrl.value = `/upload/${res.data.avatar}`;
|
// if (res.data.avatar != null && res.data.avatar !== '') imageUrl.value = `/upload/${res.data.avatar}`;
|
||||||
passwordFormData.UserId = res.data.id;
|
// passwordFormData.UserId = res.data.id;
|
||||||
uploadAction.value = `/api/auth/UpdateUserAvatar?Uid=${res.data.id}`;
|
// uploadAction.value = `/api/auth/UpdateUserAvatar?Uid=${res.data.id}`;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
};
|
};
|
||||||
|
|
||||||
interface PassFormState {
|
interface PassFormState {
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import { useThemeStore } from 'stepin/es/theme-provider';
|
import { useThemeStore } from 'stepin/es/theme-provider';
|
||||||
import { useSettingStore } from '@/store';
|
import { useSettingStore } from '@/store';
|
||||||
|
|
||||||
import GreenImg from '@/assets/theme/green.png';
|
// import GreenImg from '@/assets/theme/green.png';
|
||||||
import VscodeImg from '@/assets/theme/vscode.png';
|
// import VscodeImg from '@/assets/theme/vscode.png';
|
||||||
import PinkImg from '@/assets/theme/pink.png';
|
// import PinkImg from '@/assets/theme/pink.png';
|
||||||
import SideDarkImg from '@/assets/theme/side-dark.png';
|
// import SideDarkImg from '@/assets/theme/side-dark.png';
|
||||||
import HeaderDarkImg from '@/assets/theme/header-dark.png';
|
// import HeaderDarkImg from '@/assets/theme/header-dark.png';
|
||||||
import PurpleImg from '@/assets/theme/purple.png';
|
// import PurpleImg from '@/assets/theme/purple.png';
|
||||||
import ChinaRedImg from '@/assets/theme/china-red.png';
|
// import ChinaRedImg from '@/assets/theme/china-red.png';
|
||||||
import OrangeImg from '@/assets/theme/orange.png';
|
// import OrangeImg from '@/assets/theme/orange.png';
|
||||||
import IdeaImg from '@/assets/theme/idea.png';
|
// import IdeaImg from '@/assets/theme/idea.png';
|
||||||
import LightImg from '@/assets/theme/light.png';
|
// import LightImg from '@/assets/theme/light.png';
|
||||||
|
|
||||||
export function configTheme(key: string) {
|
export function configTheme(key: string) {
|
||||||
const { setBgSeriesColors } = useThemeStore();
|
const { setBgSeriesColors } = useThemeStore();
|
||||||
@@ -36,25 +36,25 @@ export const themeList: Theme.ThemeConfig[] = [
|
|||||||
{
|
{
|
||||||
title: '亮色模式',
|
title: '亮色模式',
|
||||||
key: 'light',
|
key: 'light',
|
||||||
imgUrl: LightImg,
|
// imgUrl: LightImg,
|
||||||
config: { color: { middle: { 'bg-base': '#fff' } } },
|
config: { color: { middle: { 'bg-base': '#fff' } } },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '侧边暗色菜单',
|
title: '侧边暗色菜单',
|
||||||
key: 'side-dark',
|
key: 'side-dark',
|
||||||
imgUrl: SideDarkImg,
|
// imgUrl: SideDarkImg,
|
||||||
config: { color: { middle: { 'bg-base': '#fff', 'bg-side': '#001129' } }, size: { 'width-side': '220px' } },
|
config: { color: { middle: { 'bg-base': '#fff', 'bg-side': '#001129' } }, size: { 'width-side': '220px' } },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '顶部暗色菜单',
|
title: '顶部暗色菜单',
|
||||||
key: 'header-dark',
|
key: 'header-dark',
|
||||||
imgUrl: HeaderDarkImg,
|
// imgUrl: HeaderDarkImg,
|
||||||
config: { color: { middle: { 'bg-base': '#fff', 'bg-header': '#001129' } } },
|
config: { color: { middle: { 'bg-base': '#fff', 'bg-header': '#001129' } } },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'VSCode风',
|
title: 'VSCode风',
|
||||||
key: 'vscode',
|
key: 'vscode',
|
||||||
imgUrl: VscodeImg,
|
// imgUrl: VscodeImg,
|
||||||
config: {
|
config: {
|
||||||
color: { middle: { 'bg-base': '#23272E' } },
|
color: { middle: { 'bg-base': '#23272E' } },
|
||||||
},
|
},
|
||||||
@@ -62,7 +62,7 @@ export const themeList: Theme.ThemeConfig[] = [
|
|||||||
{
|
{
|
||||||
title: 'IDEA风',
|
title: 'IDEA风',
|
||||||
key: 'idea',
|
key: 'idea',
|
||||||
imgUrl: IdeaImg,
|
// imgUrl: IdeaImg,
|
||||||
config: {
|
config: {
|
||||||
color: { middle: { 'bg-base': '#2B2B2B' } },
|
color: { middle: { 'bg-base': '#2B2B2B' } },
|
||||||
},
|
},
|
||||||
@@ -70,7 +70,7 @@ export const themeList: Theme.ThemeConfig[] = [
|
|||||||
{
|
{
|
||||||
title: '墨绿风',
|
title: '墨绿风',
|
||||||
key: 'green',
|
key: 'green',
|
||||||
imgUrl: GreenImg,
|
// imgUrl: GreenImg,
|
||||||
config: {
|
config: {
|
||||||
color: { middle: { 'bg-base': '#013a54' } },
|
color: { middle: { 'bg-base': '#013a54' } },
|
||||||
},
|
},
|
||||||
@@ -78,7 +78,7 @@ export const themeList: Theme.ThemeConfig[] = [
|
|||||||
{
|
{
|
||||||
title: '芭比粉',
|
title: '芭比粉',
|
||||||
key: 'pink',
|
key: 'pink',
|
||||||
imgUrl: PinkImg,
|
// imgUrl: PinkImg,
|
||||||
config: {
|
config: {
|
||||||
color: { middle: { 'bg-base': '#B6266D' } },
|
color: { middle: { 'bg-base': '#B6266D' } },
|
||||||
},
|
},
|
||||||
@@ -86,7 +86,7 @@ export const themeList: Theme.ThemeConfig[] = [
|
|||||||
{
|
{
|
||||||
title: '暗夜紫',
|
title: '暗夜紫',
|
||||||
key: 'purple2',
|
key: 'purple2',
|
||||||
imgUrl: PurpleImg,
|
// imgUrl: PurpleImg,
|
||||||
config: {
|
config: {
|
||||||
color: { middle: { 'bg-base': '#361F68' } },
|
color: { middle: { 'bg-base': '#361F68' } },
|
||||||
},
|
},
|
||||||
@@ -94,7 +94,7 @@ export const themeList: Theme.ThemeConfig[] = [
|
|||||||
{
|
{
|
||||||
title: '暗夜',
|
title: '暗夜',
|
||||||
key: 'purple',
|
key: 'purple',
|
||||||
imgUrl: PurpleImg,
|
// imgUrl: PurpleImg,
|
||||||
config: {
|
config: {
|
||||||
color: { middle: { 'bg-base': '#1a1a2e' } },
|
color: { middle: { 'bg-base': '#1a1a2e' } },
|
||||||
},
|
},
|
||||||
@@ -102,7 +102,7 @@ export const themeList: Theme.ThemeConfig[] = [
|
|||||||
{
|
{
|
||||||
title: '中国红',
|
title: '中国红',
|
||||||
key: 'china',
|
key: 'china',
|
||||||
imgUrl: ChinaRedImg,
|
// imgUrl: ChinaRedImg,
|
||||||
config: {
|
config: {
|
||||||
color: { middle: { 'bg-base': 'rgb(230, 0, 0)' } },
|
color: { middle: { 'bg-base': 'rgb(230, 0, 0)' } },
|
||||||
},
|
},
|
||||||
@@ -110,7 +110,7 @@ export const themeList: Theme.ThemeConfig[] = [
|
|||||||
{
|
{
|
||||||
title: '活力橙',
|
title: '活力橙',
|
||||||
key: 'orange',
|
key: 'orange',
|
||||||
imgUrl: OrangeImg,
|
// imgUrl: OrangeImg,
|
||||||
config: {
|
config: {
|
||||||
color: { middle: { 'bg-base': '#B1740D' } },
|
color: { middle: { 'bg-base': '#B1740D' } },
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ declare namespace Theme {
|
|||||||
interface ThemeConfig {
|
interface ThemeConfig {
|
||||||
title: string;
|
title: string;
|
||||||
key: string;
|
key: string;
|
||||||
imgUrl: string;
|
// imgUrl: string;
|
||||||
config: Partial<import('stepin/es/style/interface').Theme>;
|
config: Partial<import('stepin/es/style/interface').Theme>;
|
||||||
handler?: Function;
|
handler?: Function;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,8 +81,8 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
|
<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
|
||||||
<!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
|
<!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
|
||||||
<Exec WorkingDirectory="$(SpaRoot)" Command="yarn install" />
|
<!--<Exec WorkingDirectory="$(SpaRoot)" Command="yarn install" />
|
||||||
<Exec WorkingDirectory="$(SpaRoot)" Command="yarn run build" />
|
<Exec WorkingDirectory="$(SpaRoot)" Command="yarn run build" />-->
|
||||||
|
|
||||||
<!--Include the newly-built files in the publish output-->
|
<!--Include the newly-built files in the publish output-->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ActiveDebugProfile>tiny.ddns</ActiveDebugProfile>
|
<ActiveDebugProfile>tiny.ddns</ActiveDebugProfile>
|
||||||
<NameOfLastUsedPublishProfile>F:\work\code\me\dysync.net\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
|
<NameOfLastUsedPublishProfile>E:\code\dysync\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
|
||||||
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
|
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
|
||||||
<Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath>
|
<Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|||||||