Forráskód Böngészése

Merge branch 'dev' of United_Software/k_online_ui into test

Jack Zhou 7 hónapja
szülő
commit
a7b576c473

BIN
src/components/AIRobot/image/score_normal.png


+ 1 - 0
src/components/AIRobot/index.ts

@@ -0,0 +1 @@
+export { default } from './src/AIRobot.vue'

+ 157 - 0
src/components/AIRobot/src/AIRobot.vue

@@ -0,0 +1,157 @@
+<script setup lang="ts">
+import { ref } from 'vue'
+import normalPng from '../image/score_normal.png'
+
+const clickSrc = ref(normalPng)
+const visible = ref(false)
+const AIRobotHoverVisible = ref(false)
+const AIRobotClickVisible = ref(false)
+const clicked = ref(false)
+// 鼠标hover AIRobot图标
+const AvatarMouseEnter = () => {
+  if (!clicked.value) {
+    AIRobotHoverVisible.value = true
+    visible.value = true
+  }
+}
+// 鼠标move AIRobot图标
+const AvatarMouseLeave = () => {
+  if (!clicked.value) {
+    visible.value = false
+    AIRobotHoverVisible.value = false
+  }
+}
+// 点击AIRobot图标
+const AvatarClick = () => {
+  AIRobotHoverVisible.value = false
+  if(AIRobotClickVisible.value == true && visible.value) {
+    AIRobotClickVisible.value = false
+    visible.value = false
+    clicked.value = false
+  } else {
+    visible.value = true 
+    AIRobotClickVisible.value = true
+    clicked.value = true
+  }
+}
+const handlePopoverHide = () => {
+  clicked.value = false
+  AIRobotHoverVisible.value = false
+  AIRobotClickVisible.value = false
+}
+</script>
+<template>
+  <!-- 上方显示的弹窗 -->
+  <div class="AIRobot-top">
+    <div class="flex_end">
+      <div class="icon flex_center">
+        <span class="iconfont_icon icon_dark">
+            <svg class="iconfont" aria-hidden="true">
+              <use xlink:href="#icon-icon_reject_b"></use>
+            </svg>
+          </span>
+      </div>
+    </div>
+    <div class="dialogue_title">
+      Hi! I'm your Freight Assistant, always on call
+    </div>
+    <div class="dialogue_content">
+      <div class="dialogue_content_title">
+        <div class="dialogue_title_left">
+          Frequently Asked Questions
+        </div>
+        <div class="dialogue_title_right">
+          Refresh Questions
+        </div>
+      </div>
+    </div>
+  </div>
+  <!-- 悬浮icon -->
+  <div class="AIRobot flex_center">
+    <el-popover
+      :visible="visible"
+      placement="top-end"
+      width="auto"
+      @hide="handlePopoverHide"
+    >
+      <template #reference>
+        <el-avatar @click="AvatarClick" @mouseenter="AvatarMouseEnter" @mouseleave="AvatarMouseLeave" :size="46" shape="square" :src="clickSrc" />
+      </template>
+      <!-- hover时显示的对话框 -->
+      <div v-if="AIRobotHoverVisible" class="AIRobot_dialog">Continue the conversation</div>
+      <!-- click时显示的对话框 -->
+      <div v-if="AIRobotClickVisible" class="AIRobot_dialog">Continue the conversation  156468482</div>
+    </el-popover>
+  </div>
+</template>
+
+<style lang="scss">
+.iconfont_icon {
+  margin-right: 0;
+}
+.flex_center {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.flex_end {
+  display: flex;
+  justify-content: end;
+}
+.AIRobot-top {
+  position: absolute;
+  z-index: 2013;
+  right: 20px;
+  bottom: 250px;
+}
+.dialogue_content_title {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.dialogue_title_left {
+  margin-right: 80px;
+  background: linear-gradient(90deg, #A71549 1.77%, #06256E 46.77%);
+  -webkit-background-clip: text;
+  background-clip: text;
+  color: transparent;
+  font-size: 14px;
+  font-weight: 700;
+}
+.icon {
+  width: 24px;
+  height: 24px;
+  background-color: var(--management-bg-color);
+  box-shadow: -2px 2px 12px rgba(0, 0, 0, 15%);
+  border-radius: 6px;
+}
+.AIRobot {
+  width: 64px;
+  height: 64px;
+  border-radius: 12px;
+  background: radial-gradient(50% 43% at 50% 54.79%, #D5B4F3 0%, #FFF9FC 100%);
+  position: absolute;
+  box-shadow: -2px 2px 12px rgba(0, 0, 0, 15%);
+  z-index: 2013;
+  right: 20px;
+  bottom: 164px;
+}
+.AIRobot_dialog {
+  background: linear-gradient(92deg, #EAECFF 1.33%, #F1E3FB 99.63%);
+  box-shadow: -10px 10px 24px 0px rgba(58, 0, 78, 0.15);
+  padding: 5px 8px;
+  border-radius: 3px;
+}
+.dialogue_title {
+  background: linear-gradient(92deg, #EAECFF 1.33%, #F1E3FB 99.63%);
+  padding: 8px;
+  border-radius: 12px;
+  margin: 10px 0;
+  width: 294px;
+}
+.dialogue_content {
+  background: linear-gradient(92deg, #EAECFF 1.33%, #F1E3FB 99.63%);
+  padding: 8px;
+  border-radius: 12px;
+}
+</style>

+ 4 - 0
src/components/AddRules/src/components/NotiMethods.vue

@@ -27,14 +27,17 @@ watch(
 const emits = defineEmits(['ChangeMethodsAdd'])
 // 初始设置Methods
 const MethodsInit = () => {
+  checkMethodList.value = []
   if (methods_data.value?.method_display != undefined) {
     if (methods_data.value?.method_display.indexOf('Email') != -1) {
       checkMethodList.value.push('By Email')
+      savesubscribeobj.method_by_email = true
     }
   }
   if (methods_data.value?.method_display != undefined) {
     if (methods_data.value?.method_display.indexOf('System Message') != -1) {
       checkMethodList.value.push('By System Message')
+      savesubscribeobj.method_by_message = true
     }
   }
   changeMethod(checkMethodList.value)
@@ -42,6 +45,7 @@ const MethodsInit = () => {
 
 // 选中Method
 const changeMethod = (val: any) => {
+  console.log(val)
   if (val.indexOf('By Email') != -1) {
     savesubscribeobj.method_by_email = true
   } else {

+ 4 - 4
src/components/ScoringGrade/src/ScoringGrade.vue

@@ -393,12 +393,12 @@ const SubmitText = ref()
 .scoring {
   width: 64px;
   height: 64px;
-  border-radius: 12px 0 0 12px;
+  border-radius: 12px;
   background-color: var(--management-bg-color);
   position: absolute;
   box-shadow: -2px 2px 12px rgba(0, 0, 0, 15%);
   z-index: 2013;
-  right: 0;
+  right: 20px;
   bottom: 80px;
   display: flex;
   align-items: center;
@@ -413,7 +413,7 @@ const SubmitText = ref()
   height: 64px;
   align-items: center;
   position: absolute;
-  right: 64px;
+  right: 84px;
   top: -30px;
   background-color: var(--management-bg-color);
   border-radius: 12px 0 0 12px;
@@ -422,7 +422,7 @@ const SubmitText = ref()
   margin: 0 16px;
 }
 .el-popover.popver_class {
-  border-radius: 12px 0 0 12px !important;
+  border-radius: 12px !important;
   box-shadow: none;
   filter: drop-shadow(-2px 2px 12px rgba(0, 0, 0, 0.15));
   right: 0 !important;

+ 3 - 1
src/styles/vxeTable.scss

@@ -90,7 +90,9 @@ div.vxe-table--render-default .vxe-cell--checkbox.is--indeterminate .vxe-checkbo
 div.vxe-table--render-default .vxe-cell--checkbox:not(.is--disabled):hover .vxe-checkbox--icon {
   color: var(--color-btn-main-bg-hover);
 }
-
+div.theme--dark .vxe-table--tooltip-content {
+  color: #fff;
+}
 // 表格tooltipzIndex
 .vxe-table--tooltip-wrapper.is--active {
   z-index: 9999 !important;

+ 2 - 0
src/views/Layout/src/LayoutView.vue

@@ -4,6 +4,7 @@ import Header from './components/Header/HeaderView.vue'
 import Menu from './components/Menu/MenuView.vue'
 import Logo from './images/logo.png'
 import ScoringGrade from '@/components/ScoringGrade'
+import AIRobot from '@/components/AIRobot'
 import LogoMenu from './images/logo_menu.png'
 
 const leftAsideWidth = ref('232px')
@@ -41,6 +42,7 @@ const handleMenuCollapse = (val: boolean) => {
         <router-view />
       </el-main>
     </el-container>
+    <!-- <AIRobot></AIRobot> -->
     <ScoringGrade></ScoringGrade>
   </el-container>
 </template>