Przeglądaj źródła

通用头部组件

xiaohaizhao 11 miesięcy temu
rodzic
commit
96bc416d04

+ 131 - 0
src/WebsiteManagement/dataStatistics/modules/header.vue

@@ -0,0 +1,131 @@
+<template>
+  <div class="cord-header">
+    <div v-if="title" class="left" />
+    <el-tooltip v-if="title" :content="$t(title)" placement="top-start">
+      <div class="title text-ellipsis">{{ $t(title) }}</div>
+    </el-tooltip>
+
+    <el-radio-group
+      v-model="tabPosition"
+      style="margin-right: 20px"
+      @input="changeTab"
+    >
+      <el-radio-button
+        v-for="item in shortcutDate"
+        :key="item.label"
+        :label="item.value"
+        >{{ $t(item.label) }}</el-radio-button
+      >
+    </el-radio-group>
+
+    <el-date-picker
+      v-model="daterange"
+      :clearable="false"
+      type="daterange"
+      value-format="yyyy-MM-dd"
+      :range-separator="$t('至')"
+      :start-placeholder="$t('开始日期')"
+      :end-placeholder="$t('结束日期')"
+      :picker-options="pickerOptions"
+      @change="pickerChange"
+    >
+    </el-date-picker>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "header",
+  props: {
+    title: String,
+    subTitle: String,
+    shortcutDate: {
+      type: Array,
+      default: () => [
+        {
+          label: "近7日",
+          value: "近七日",
+        },
+        {
+          label: "近1个月",
+          value: "近一月",
+        },
+        {
+          label: "近半年",
+          value: "近半年",
+        },
+      ],
+    },
+    returnWhere: Function,
+  },
+  data() {
+    return {
+      daterange: ["", ""],
+      tabPosition: "近七日",
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() > Date.now();
+        },
+      },
+    };
+  },
+  methods: {
+    changeTab() {
+      this.daterange = ["", ""];
+      this.$emit("returnWhere", {
+        type: this.tabPosition,
+      });
+    },
+    pickerChange(e) {
+      this.tabPosition = "";
+      this.$emit("returnWhere", {
+        begindate: e[0],
+        enddate: e[1],
+      });
+    },
+  },
+};
+</script>
+
+<style scoped>
+.cord-header {
+  display: flex;
+  height: 32px;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.cord-header div {
+  flex-shrink: 0;
+}
+
+.left {
+  width: 6px;
+  height: 26px;
+  background: #3874f6;
+  margin-right: 22px;
+}
+
+.title {
+  flex: 1;
+  width: 0;
+  font-family: Microsoft YaHei, Microsoft YaHei;
+  font-weight: bold;
+  font-size: 20px;
+  color: #333333;
+  padding-right: 20px;
+}
+
+.text-ellipsis {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+}
+/deep/ .el-date-editor {
+  width: 220px;
+}
+/deep/ .el-date-editor .el-range__close-icon {
+  width: 0 !important;
+}
+</style>