zen-gitsync 2.0.6 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/ui/client/components.d.ts +1 -0
- package/src/ui/client/src/components/CommitForm.vue +354 -159
- package/src/ui/client/src/components/GitStatus.vue +517 -134
- package/src/ui/client/src/components/LogList.vue +831 -222
- package/src/ui/client/src/stores/gitLogStore.ts +12 -4
- package/src/ui/client/src/stores/gitStore.ts +42 -1
- package/src/ui/client/stats.html +1 -1
- package/src/ui/client/vite.config.ts +2 -0
- package/src/ui/public/assets/index-B1vQ6PC_.js +20 -0
- package/src/ui/public/assets/index-CC5qWyQ-.css +1 -0
- package/src/ui/public/assets/{vendor-BcSuWc8z.js → vendor-BmPvvgTD.js} +7 -7
- package/src/ui/public/index.html +3 -3
- package/src/ui/server/index.js +297 -46
- package/src/ui/public/assets/index-DaPynzAr.js +0 -10
- package/src/ui/public/assets/index-qfIezZmd.css +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { ref, onMounted, computed, watch } from "vue";
|
|
3
3
|
import { ElMessage, ElMessageBox } from "element-plus";
|
|
4
|
-
import { Setting, Edit } from "@element-plus/icons-vue";
|
|
4
|
+
import { Setting, Edit, Check, Upload, RefreshRight, Delete, Position } from "@element-plus/icons-vue";
|
|
5
5
|
import { useGitLogStore } from "../stores/gitLogStore";
|
|
6
6
|
import { useGitStore } from "../stores/gitStore";
|
|
7
7
|
|
|
@@ -10,6 +10,8 @@ const gitStore = useGitStore();
|
|
|
10
10
|
const commitMessage = ref("");
|
|
11
11
|
const isPushing = ref(false);
|
|
12
12
|
// 添加提交并推送的状态变量
|
|
13
|
+
const showPushSuccess = ref(false);
|
|
14
|
+
// 添加placeholder变量
|
|
13
15
|
const placeholder = ref("输入提交信息...");
|
|
14
16
|
// 添加默认提交信息变量
|
|
15
17
|
const defaultCommitMessage = ref("");
|
|
@@ -539,6 +541,14 @@ async function commitChanges() {
|
|
|
539
541
|
}
|
|
540
542
|
}
|
|
541
543
|
|
|
544
|
+
// 显示推送成功提示
|
|
545
|
+
function showPushSuccessIndicator() {
|
|
546
|
+
showPushSuccess.value = true;
|
|
547
|
+
setTimeout(() => {
|
|
548
|
+
showPushSuccess.value = false;
|
|
549
|
+
}, 2000);
|
|
550
|
+
}
|
|
551
|
+
|
|
542
552
|
// 推送到远程 (git push)
|
|
543
553
|
async function pushToRemote() {
|
|
544
554
|
try {
|
|
@@ -550,13 +560,16 @@ async function pushToRemote() {
|
|
|
550
560
|
// 触发成功事件
|
|
551
561
|
gitStore.getCurrentBranch();
|
|
552
562
|
gitLogStore.fetchLog();
|
|
563
|
+
|
|
564
|
+
// 显示成功动画
|
|
565
|
+
isPushing.value = false
|
|
566
|
+
showPushSuccessIndicator();
|
|
553
567
|
}
|
|
554
568
|
} catch (error) {
|
|
555
569
|
ElMessage({
|
|
556
570
|
message: `推送失败: ${(error as Error).message}`,
|
|
557
571
|
type: "error",
|
|
558
572
|
});
|
|
559
|
-
} finally {
|
|
560
573
|
isPushing.value = false
|
|
561
574
|
}
|
|
562
575
|
}
|
|
@@ -599,22 +612,28 @@ async function addCommitAndPush() {
|
|
|
599
612
|
}
|
|
600
613
|
|
|
601
614
|
try {
|
|
615
|
+
isPushing.value = true
|
|
602
616
|
await gitLogStore.addCommitAndPush(finalCommitMessage.value, skipHooks.value);
|
|
603
617
|
|
|
604
|
-
|
|
605
618
|
// 清空提交信息
|
|
606
619
|
clearCommitFields();
|
|
607
620
|
|
|
608
621
|
// 触发成功事件
|
|
609
622
|
gitStore.getCurrentBranch();
|
|
623
|
+
|
|
624
|
+
// 确保通过fetchLog获取的是最新的第1页数据
|
|
610
625
|
gitLogStore.fetchLog();
|
|
626
|
+
|
|
627
|
+
// 显示成功动画
|
|
628
|
+
isPushing.value = false
|
|
629
|
+
showPushSuccessIndicator();
|
|
611
630
|
|
|
612
631
|
} catch (error) {
|
|
613
632
|
ElMessage({
|
|
614
633
|
message: `暂存、提交并推送失败: ${(error as Error).message}`,
|
|
615
634
|
type: "error",
|
|
616
635
|
});
|
|
617
|
-
|
|
636
|
+
isPushing.value = false
|
|
618
637
|
}
|
|
619
638
|
}
|
|
620
639
|
|
|
@@ -680,6 +699,26 @@ onMounted(() => {
|
|
|
680
699
|
<h2>提交更改</h2>
|
|
681
700
|
</div>
|
|
682
701
|
|
|
702
|
+
<!-- 添加推送中指示器 -->
|
|
703
|
+
<transition name="el-fade-in-linear">
|
|
704
|
+
<div v-if="isPushing" class="pushing-indicator">
|
|
705
|
+
<div class="pushing-spinner">
|
|
706
|
+
<svg viewBox="0 0 50 50" class="circular">
|
|
707
|
+
<circle class="path" cx="25" cy="25" r="20" fill="none" />
|
|
708
|
+
</svg>
|
|
709
|
+
</div>
|
|
710
|
+
<div class="pushing-text">正在推送...</div>
|
|
711
|
+
</div>
|
|
712
|
+
</transition>
|
|
713
|
+
|
|
714
|
+
<!-- 添加推送成功指示器 -->
|
|
715
|
+
<transition name="el-fade-in-linear">
|
|
716
|
+
<div v-if="showPushSuccess" class="push-success-indicator">
|
|
717
|
+
<el-icon class="push-success-icon"><Check /></el-icon>
|
|
718
|
+
<div class="push-success-text">推送成功!</div>
|
|
719
|
+
</div>
|
|
720
|
+
</transition>
|
|
721
|
+
|
|
683
722
|
<div class="card-content">
|
|
684
723
|
<div class="layout-container">
|
|
685
724
|
<!-- 如果没有配置Git用户信息,显示提示 -->
|
|
@@ -760,89 +799,105 @@ git config --global user.email "your.email@example.com"</pre>
|
|
|
760
799
|
<div class="actions-section">
|
|
761
800
|
<h3>Git 操作</h3>
|
|
762
801
|
<div class="action-groups">
|
|
763
|
-
<div class="
|
|
764
|
-
|
|
765
|
-
<div class="group
|
|
766
|
-
<
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
802
|
+
<div class="operations-wrapper">
|
|
803
|
+
<!-- 基础操作 -->
|
|
804
|
+
<div class="action-group">
|
|
805
|
+
<div class="group-title">基础操作</div>
|
|
806
|
+
<div class="group-buttons">
|
|
807
|
+
<el-tooltip content="git add ." placement="top" effect="light" popper-class="git-cmd-tooltip">
|
|
808
|
+
<el-button
|
|
809
|
+
type="primary"
|
|
810
|
+
@click="addToStage"
|
|
811
|
+
:loading="gitLogStore.isAddingFiles"
|
|
812
|
+
class="action-button"
|
|
813
|
+
>
|
|
814
|
+
暂存更改
|
|
815
|
+
</el-button>
|
|
816
|
+
</el-tooltip>
|
|
817
|
+
|
|
818
|
+
<el-tooltip content="git commit" placement="top" effect="light" popper-class="git-cmd-tooltip">
|
|
819
|
+
<el-button
|
|
820
|
+
type="primary"
|
|
821
|
+
@click="commitChanges"
|
|
822
|
+
:loading="gitLogStore.isLoadingStatus"
|
|
823
|
+
class="action-button"
|
|
824
|
+
>
|
|
825
|
+
提交
|
|
826
|
+
</el-button>
|
|
827
|
+
</el-tooltip>
|
|
828
|
+
|
|
829
|
+
<el-tooltip content="git push" placement="top" effect="light" popper-class="git-cmd-tooltip">
|
|
830
|
+
<el-button
|
|
831
|
+
type="primary"
|
|
832
|
+
:icon="Upload"
|
|
833
|
+
@click="pushToRemote"
|
|
834
|
+
:loading="gitLogStore.isPushing"
|
|
835
|
+
:class="['action-button', 'push-button', { 'is-loading': gitLogStore.isPushing || isPushing }]"
|
|
836
|
+
>
|
|
837
|
+
推送
|
|
838
|
+
</el-button>
|
|
839
|
+
</el-tooltip>
|
|
840
|
+
</div>
|
|
795
841
|
</div>
|
|
796
|
-
</div>
|
|
797
|
-
|
|
798
|
-
<div class="action-group">
|
|
799
|
-
<div class="group-title">组合操作</div>
|
|
800
|
-
<div class="group-buttons">
|
|
801
|
-
<el-button
|
|
802
|
-
type="warning"
|
|
803
|
-
@click="addAndCommit"
|
|
804
|
-
:loading="gitLogStore.isAddingFiles || gitLogStore.isCommiting"
|
|
805
|
-
class="action-button"
|
|
806
|
-
>
|
|
807
|
-
暂存并提交
|
|
808
|
-
<span class="command-text">git add + commit</span>
|
|
809
|
-
</el-button>
|
|
810
842
|
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
class="
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
843
|
+
<!-- 组合操作 -->
|
|
844
|
+
<div class="action-group">
|
|
845
|
+
<div class="group-title">组合操作</div>
|
|
846
|
+
<div class="group-buttons">
|
|
847
|
+
<el-tooltip content="git add + git commit" placement="top" effect="light" popper-class="git-cmd-tooltip">
|
|
848
|
+
<el-button
|
|
849
|
+
type="primary"
|
|
850
|
+
:icon="Edit"
|
|
851
|
+
@click="addAndCommit"
|
|
852
|
+
:loading="gitLogStore.isAddingFiles || gitLogStore.isCommiting"
|
|
853
|
+
class="action-button"
|
|
854
|
+
>
|
|
855
|
+
暂存并提交
|
|
856
|
+
</el-button>
|
|
857
|
+
</el-tooltip>
|
|
858
|
+
|
|
859
|
+
<el-tooltip content="git add + git commit + git push" placement="top" effect="light" popper-class="git-cmd-tooltip">
|
|
860
|
+
<el-button
|
|
861
|
+
type="success"
|
|
862
|
+
:icon="Position"
|
|
863
|
+
@click="addCommitAndPush"
|
|
864
|
+
:loading="gitLogStore.isAddingFiles || gitLogStore.isCommiting || gitLogStore.isPushing"
|
|
865
|
+
:class="['action-button', 'one-click-push', { 'is-loading': gitLogStore.isAddingFiles || gitLogStore.isCommiting || gitLogStore.isPushing }]"
|
|
866
|
+
>
|
|
867
|
+
一键推送
|
|
868
|
+
</el-button>
|
|
869
|
+
</el-tooltip>
|
|
870
|
+
</div>
|
|
820
871
|
</div>
|
|
821
872
|
</div>
|
|
822
873
|
|
|
823
|
-
|
|
874
|
+
<!-- 重置操作 -->
|
|
875
|
+
<div class="action-group reset-group">
|
|
824
876
|
<div class="group-title">重置操作</div>
|
|
825
877
|
<div class="group-buttons">
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
878
|
+
<el-tooltip content="git reset HEAD" placement="top" effect="light" popper-class="git-cmd-tooltip">
|
|
879
|
+
<el-button
|
|
880
|
+
type="warning"
|
|
881
|
+
:icon="RefreshRight"
|
|
882
|
+
@click="gitLogStore.resetHead"
|
|
883
|
+
:loading="gitLogStore.isResetting"
|
|
884
|
+
class="action-button reset-button"
|
|
885
|
+
>
|
|
886
|
+
重置暂存区
|
|
887
|
+
</el-button>
|
|
888
|
+
</el-tooltip>
|
|
889
|
+
|
|
890
|
+
<el-tooltip content="git reset --hard origin/branch" placement="top" effect="light" popper-class="git-cmd-tooltip">
|
|
891
|
+
<el-button
|
|
892
|
+
type="danger"
|
|
893
|
+
:icon="Delete"
|
|
894
|
+
@click="resetToRemote"
|
|
895
|
+
:loading="gitLogStore.isResetting"
|
|
896
|
+
class="action-button danger-button"
|
|
897
|
+
>
|
|
898
|
+
重置到远程
|
|
899
|
+
</el-button>
|
|
900
|
+
</el-tooltip>
|
|
846
901
|
</div>
|
|
847
902
|
</div>
|
|
848
903
|
</div>
|
|
@@ -960,6 +1015,7 @@ git config --global user.email "your.email@example.com"</pre>
|
|
|
960
1015
|
display: flex;
|
|
961
1016
|
flex-direction: column;
|
|
962
1017
|
overflow: hidden;
|
|
1018
|
+
position: relative;
|
|
963
1019
|
}
|
|
964
1020
|
|
|
965
1021
|
.card-header {
|
|
@@ -986,7 +1042,8 @@ git config --global user.email "your.email@example.com"</pre>
|
|
|
986
1042
|
|
|
987
1043
|
.layout-container {
|
|
988
1044
|
display: flex;
|
|
989
|
-
|
|
1045
|
+
flex-direction: column;
|
|
1046
|
+
gap: 15px;
|
|
990
1047
|
height: 100%;
|
|
991
1048
|
}
|
|
992
1049
|
|
|
@@ -996,45 +1053,41 @@ git config --global user.email "your.email@example.com"</pre>
|
|
|
996
1053
|
}
|
|
997
1054
|
|
|
998
1055
|
.actions-section {
|
|
999
|
-
width:
|
|
1056
|
+
width: 100%;
|
|
1000
1057
|
flex-shrink: 0;
|
|
1001
1058
|
}
|
|
1002
1059
|
|
|
1003
1060
|
.actions-section h3 {
|
|
1004
1061
|
margin-top: 0;
|
|
1005
|
-
margin-bottom:
|
|
1006
|
-
padding-bottom:
|
|
1062
|
+
margin-bottom: 10px;
|
|
1063
|
+
padding-bottom: 8px;
|
|
1007
1064
|
border-bottom: 1px solid #dcdfe6;
|
|
1008
|
-
font-size:
|
|
1065
|
+
font-size: 16px;
|
|
1009
1066
|
color: #303133;
|
|
1010
1067
|
font-weight: 500;
|
|
1011
1068
|
}
|
|
1012
1069
|
|
|
1013
|
-
.
|
|
1070
|
+
.operations-wrapper {
|
|
1014
1071
|
display: flex;
|
|
1015
|
-
margin-bottom: 15px;
|
|
1016
1072
|
gap: 10px;
|
|
1017
1073
|
}
|
|
1018
1074
|
|
|
1019
|
-
.git-actions {
|
|
1020
|
-
margin-top: 20px;
|
|
1021
|
-
}
|
|
1022
|
-
|
|
1023
1075
|
.action-groups {
|
|
1024
1076
|
display: flex;
|
|
1025
1077
|
flex-direction: column;
|
|
1026
|
-
gap:
|
|
1078
|
+
gap: 12px;
|
|
1027
1079
|
}
|
|
1028
1080
|
|
|
1029
1081
|
.action-group {
|
|
1030
1082
|
background-color: #f9f9f9;
|
|
1031
|
-
border-radius:
|
|
1032
|
-
padding:
|
|
1083
|
+
border-radius: 6px;
|
|
1084
|
+
padding: 8px 10px;
|
|
1033
1085
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
|
|
1034
|
-
border-left:
|
|
1035
|
-
|
|
1086
|
+
border-left: 3px solid #409EFF;
|
|
1087
|
+
flex: 1;
|
|
1036
1088
|
}
|
|
1037
1089
|
|
|
1090
|
+
|
|
1038
1091
|
.action-group:nth-child(2) {
|
|
1039
1092
|
border-left-color: #E6A23C;
|
|
1040
1093
|
}
|
|
@@ -1044,82 +1097,51 @@ git config --global user.email "your.email@example.com"</pre>
|
|
|
1044
1097
|
}
|
|
1045
1098
|
|
|
1046
1099
|
.group-title {
|
|
1047
|
-
font-size:
|
|
1100
|
+
font-size: 13px;
|
|
1048
1101
|
font-weight: bold;
|
|
1049
|
-
margin-bottom:
|
|
1102
|
+
margin-bottom: 8px;
|
|
1050
1103
|
color: #606266;
|
|
1051
1104
|
text-align: left;
|
|
1052
1105
|
display: block;
|
|
1053
1106
|
position: relative;
|
|
1054
|
-
padding-left:
|
|
1107
|
+
padding-left: 6px;
|
|
1055
1108
|
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
|
|
1056
|
-
padding-bottom:
|
|
1109
|
+
padding-bottom: 6px;
|
|
1057
1110
|
}
|
|
1058
1111
|
|
|
1059
1112
|
.group-buttons {
|
|
1060
1113
|
display: flex;
|
|
1061
|
-
flex-direction:
|
|
1114
|
+
flex-direction: row;
|
|
1115
|
+
flex-wrap: wrap;
|
|
1062
1116
|
gap: 8px;
|
|
1063
|
-
padding: 0
|
|
1117
|
+
padding: 0;
|
|
1064
1118
|
}
|
|
1065
1119
|
|
|
1066
1120
|
.action-button {
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
height: auto;
|
|
1075
|
-
text-align: center;
|
|
1076
|
-
font-size: 16px;
|
|
1077
|
-
border-radius: 6px;
|
|
1078
|
-
border: none;
|
|
1121
|
+
font-size: 14px;
|
|
1122
|
+
font-weight: 500;
|
|
1123
|
+
flex: 1;
|
|
1124
|
+
min-width: 100px;
|
|
1125
|
+
border-radius: 4px;
|
|
1126
|
+
height: 36px;
|
|
1127
|
+
padding: 0 10px;
|
|
1079
1128
|
}
|
|
1080
1129
|
|
|
1081
1130
|
.action-button:hover {
|
|
1082
|
-
transform: translateY(-
|
|
1083
|
-
box-shadow: 0 2px
|
|
1131
|
+
transform: translateY(-1px);
|
|
1132
|
+
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
|
|
1084
1133
|
}
|
|
1085
1134
|
|
|
1086
1135
|
.action-button:active {
|
|
1087
1136
|
transform: translateY(0);
|
|
1088
1137
|
}
|
|
1089
1138
|
|
|
1090
|
-
.action-button :deep(.el-button__content) {
|
|
1091
|
-
display: flex;
|
|
1092
|
-
flex-direction: column;
|
|
1093
|
-
align-items: center;
|
|
1094
|
-
justify-content: center;
|
|
1095
|
-
width: 100%;
|
|
1096
|
-
min-height: 40px; /* 添加最小高度确保loading不会改变按钮高度 */
|
|
1097
|
-
}
|
|
1098
|
-
|
|
1099
|
-
.action-button :deep(.el-icon) {
|
|
1100
|
-
margin-right: 0;
|
|
1101
|
-
margin-bottom: 4px;
|
|
1102
|
-
font-size: 18px;
|
|
1103
|
-
}
|
|
1104
|
-
|
|
1105
|
-
/* 添加loading状态的样式 */
|
|
1106
|
-
.action-button :deep(.el-icon.is-loading) {
|
|
1107
|
-
position: absolute;
|
|
1108
|
-
top: calc(50% - 10px);
|
|
1109
|
-
left: calc(16px);
|
|
1110
|
-
margin-top: 0;
|
|
1111
|
-
}
|
|
1112
|
-
|
|
1113
1139
|
.command-text {
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
font-size: 14px;
|
|
1117
|
-
font-family: monospace;
|
|
1118
|
-
width: 100%;
|
|
1119
|
-
text-align: center;
|
|
1120
|
-
left: 0;
|
|
1121
|
-
white-space: nowrap;
|
|
1140
|
+
display: none;
|
|
1141
|
+
}
|
|
1122
1142
|
|
|
1143
|
+
.command-text-long {
|
|
1144
|
+
display: none;
|
|
1123
1145
|
}
|
|
1124
1146
|
|
|
1125
1147
|
.standard-commit-form {
|
|
@@ -1251,23 +1273,21 @@ git config --global user.email "your.email@example.com"</pre>
|
|
|
1251
1273
|
font-size: 14px;
|
|
1252
1274
|
}
|
|
1253
1275
|
|
|
1254
|
-
@media (
|
|
1276
|
+
@media (min-width: 768px) {
|
|
1255
1277
|
.layout-container {
|
|
1256
|
-
flex-direction:
|
|
1278
|
+
flex-direction: row;
|
|
1257
1279
|
}
|
|
1258
1280
|
|
|
1259
|
-
.
|
|
1260
|
-
|
|
1281
|
+
.commit-section {
|
|
1282
|
+
flex: 3;
|
|
1261
1283
|
}
|
|
1262
|
-
|
|
1263
|
-
.
|
|
1264
|
-
|
|
1265
|
-
flex-wrap: wrap;
|
|
1284
|
+
|
|
1285
|
+
.actions-section {
|
|
1286
|
+
width: 320px;
|
|
1266
1287
|
}
|
|
1267
1288
|
|
|
1268
|
-
.
|
|
1269
|
-
flex:
|
|
1270
|
-
min-width: 120px;
|
|
1289
|
+
.operations-wrapper {
|
|
1290
|
+
flex-direction: column;
|
|
1271
1291
|
}
|
|
1272
1292
|
}
|
|
1273
1293
|
|
|
@@ -1286,7 +1306,25 @@ git config --global user.email "your.email@example.com"</pre>
|
|
|
1286
1306
|
white-space: pre;
|
|
1287
1307
|
}
|
|
1288
1308
|
|
|
1289
|
-
/*
|
|
1309
|
+
/* 推送时的动画效果 */
|
|
1310
|
+
@keyframes pushing-pulse {
|
|
1311
|
+
0% { box-shadow: 0 0 0 0 rgba(103, 194, 58, 0.4); }
|
|
1312
|
+
70% { box-shadow: 0 0 0 15px rgba(103, 194, 58, 0); }
|
|
1313
|
+
100% { box-shadow: 0 0 0 0 rgba(103, 194, 58, 0); }
|
|
1314
|
+
}
|
|
1315
|
+
|
|
1316
|
+
@keyframes pushing-border {
|
|
1317
|
+
0% { border-color: #67c23a; }
|
|
1318
|
+
50% { border-color: #85ce61; }
|
|
1319
|
+
100% { border-color: #67c23a; }
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
.card.is-pushing {
|
|
1323
|
+
animation: pushing-border 1.5s infinite ease-in-out;
|
|
1324
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|
1325
|
+
transition: all 0.3s ease;
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1290
1328
|
.push-button {
|
|
1291
1329
|
background-color: #67c23a;
|
|
1292
1330
|
border-color: #67c23a;
|
|
@@ -1297,6 +1335,82 @@ git config --global user.email "your.email@example.com"</pre>
|
|
|
1297
1335
|
border-color: #85ce61;
|
|
1298
1336
|
}
|
|
1299
1337
|
|
|
1338
|
+
.push-button.is-loading,
|
|
1339
|
+
.push-button.is-loading:hover,
|
|
1340
|
+
.push-button.is-loading:focus {
|
|
1341
|
+
animation: pushing-pulse 1.5s infinite;
|
|
1342
|
+
background-color: #67c23a !important;
|
|
1343
|
+
border-color: #67c23a !important;
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1346
|
+
.el-button.push-button.is-loading .el-loading-spinner {
|
|
1347
|
+
color: #fff !important;
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
/* 一键推送按钮动画 */
|
|
1351
|
+
@keyframes one-click-push-glow {
|
|
1352
|
+
0% { box-shadow: 0 0 5px rgba(103, 194, 58, 0.5); }
|
|
1353
|
+
50% { box-shadow: 0 0 20px rgba(103, 194, 58, 0.8); }
|
|
1354
|
+
100% { box-shadow: 0 0 5px rgba(103, 194, 58, 0.5); }
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1357
|
+
.action-button.one-click-push {
|
|
1358
|
+
position: relative;
|
|
1359
|
+
overflow: hidden;
|
|
1360
|
+
}
|
|
1361
|
+
|
|
1362
|
+
.action-button.one-click-push.is-loading,
|
|
1363
|
+
.action-button.one-click-push.is-loading:hover {
|
|
1364
|
+
animation: one-click-push-glow 1.5s infinite;
|
|
1365
|
+
background-color: #67c23a !important;
|
|
1366
|
+
border-color: #67c23a !important;
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
/* 推送成功动画 */
|
|
1370
|
+
@keyframes push-success {
|
|
1371
|
+
0% { transform: scale(1); }
|
|
1372
|
+
50% { transform: scale(1.1); }
|
|
1373
|
+
100% { transform: scale(1); }
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
.push-success-indicator {
|
|
1377
|
+
position: absolute;
|
|
1378
|
+
inset: 0; /* 同时设置top, right, bottom, left为0 */
|
|
1379
|
+
margin: auto;
|
|
1380
|
+
background-color: rgba(255, 255, 255, 0.95);
|
|
1381
|
+
border-radius: 12px;
|
|
1382
|
+
padding: 20px 30px;
|
|
1383
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
|
1384
|
+
display: flex;
|
|
1385
|
+
flex-direction: column;
|
|
1386
|
+
align-items: center;
|
|
1387
|
+
justify-content: center;
|
|
1388
|
+
animation: push-success 0.5s ease-out;
|
|
1389
|
+
z-index: 9999;
|
|
1390
|
+
width: 200px;
|
|
1391
|
+
height: 200px;
|
|
1392
|
+
}
|
|
1393
|
+
|
|
1394
|
+
.push-success-icon {
|
|
1395
|
+
font-size: 64px;
|
|
1396
|
+
color: #67c23a;
|
|
1397
|
+
margin-bottom: 16px;
|
|
1398
|
+
animation: bounce 0.8s ease-in-out;
|
|
1399
|
+
}
|
|
1400
|
+
|
|
1401
|
+
@keyframes bounce {
|
|
1402
|
+
0%, 20%, 50%, 80%, 100% {transform: translateY(0);}
|
|
1403
|
+
40% {transform: translateY(-20px);}
|
|
1404
|
+
60% {transform: translateY(-10px);}
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
.push-success-text {
|
|
1408
|
+
font-size: 20px;
|
|
1409
|
+
font-weight: bold;
|
|
1410
|
+
color: #303133;
|
|
1411
|
+
text-align: center;
|
|
1412
|
+
}
|
|
1413
|
+
|
|
1300
1414
|
.reset-button {
|
|
1301
1415
|
background-color: #909399;
|
|
1302
1416
|
border-color: #909399;
|
|
@@ -1309,4 +1423,85 @@ git config --global user.email "your.email@example.com"</pre>
|
|
|
1309
1423
|
.el-button+.el-button {
|
|
1310
1424
|
margin-left: 0;
|
|
1311
1425
|
}
|
|
1426
|
+
|
|
1427
|
+
/* 推送中动画样式 */
|
|
1428
|
+
.pushing-indicator {
|
|
1429
|
+
position: absolute;
|
|
1430
|
+
inset: 0;
|
|
1431
|
+
margin: auto;
|
|
1432
|
+
background-color: rgba(64, 158, 255, 0.95);
|
|
1433
|
+
border-radius: 12px;
|
|
1434
|
+
padding: 20px 30px;
|
|
1435
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
|
1436
|
+
display: flex;
|
|
1437
|
+
flex-direction: column;
|
|
1438
|
+
align-items: center;
|
|
1439
|
+
justify-content: center;
|
|
1440
|
+
z-index: 9999;
|
|
1441
|
+
width: 200px;
|
|
1442
|
+
height: 200px;
|
|
1443
|
+
color: white;
|
|
1444
|
+
}
|
|
1445
|
+
|
|
1446
|
+
.pushing-spinner {
|
|
1447
|
+
margin-bottom: 16px;
|
|
1448
|
+
}
|
|
1449
|
+
|
|
1450
|
+
.pushing-text {
|
|
1451
|
+
font-size: 20px;
|
|
1452
|
+
font-weight: bold;
|
|
1453
|
+
text-align: center;
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
.circular {
|
|
1457
|
+
height: 64px;
|
|
1458
|
+
width: 64px;
|
|
1459
|
+
animation: pushing-rotate 2s linear infinite;
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1462
|
+
.path {
|
|
1463
|
+
stroke: white;
|
|
1464
|
+
stroke-width: 4;
|
|
1465
|
+
stroke-linecap: round;
|
|
1466
|
+
stroke-dasharray: 90, 150;
|
|
1467
|
+
stroke-dashoffset: 0;
|
|
1468
|
+
animation: pushing-dash 1.5s ease-in-out infinite;
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1471
|
+
@keyframes pushing-rotate {
|
|
1472
|
+
100% {
|
|
1473
|
+
transform: rotate(360deg);
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
@keyframes pushing-dash {
|
|
1478
|
+
0% {
|
|
1479
|
+
stroke-dasharray: 1, 150;
|
|
1480
|
+
stroke-dashoffset: 0;
|
|
1481
|
+
}
|
|
1482
|
+
50% {
|
|
1483
|
+
stroke-dasharray: 90, 150;
|
|
1484
|
+
stroke-dashoffset: -35;
|
|
1485
|
+
}
|
|
1486
|
+
100% {
|
|
1487
|
+
stroke-dasharray: 90, 150;
|
|
1488
|
+
stroke-dashoffset: -124;
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
</style>
|
|
1492
|
+
|
|
1493
|
+
<!-- 添加全局样式 -->
|
|
1494
|
+
<style>
|
|
1495
|
+
/* Git命令tooltip样式 */
|
|
1496
|
+
.git-cmd-tooltip {
|
|
1497
|
+
font-family: 'Consolas', 'Courier New', monospace !important;
|
|
1498
|
+
font-size: 13px !important;
|
|
1499
|
+
font-weight: 500 !important;
|
|
1500
|
+
color: #303133 !important;
|
|
1501
|
+
background-color: #f5f7fa !important;
|
|
1502
|
+
border: 1px solid #dcdfe6 !important;
|
|
1503
|
+
border-radius: 4px !important;
|
|
1504
|
+
padding: 8px 12px !important;
|
|
1505
|
+
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1) !important;
|
|
1506
|
+
}
|
|
1312
1507
|
</style>
|