Browse Source

重写时间选择组件,以及降低UI组件库的版本

ZaiZai 2 years ago
parent
commit
e768cd3259
4 changed files with 70 additions and 23 deletions
  1. 1 1
      package.json
  2. 58 12
      src/components/plugins/table-form/hc-time-picker.vue
  3. 7 6
      src/plugins/HTableForm.js
  4. 4 4
      yarn.lock

+ 1 - 1
package.json

@@ -11,7 +11,7 @@
         "crypto-js": "^4.1.1",
         "dayjs": "^1.11.7",
         "echarts": "^5.4.1",
-        "element-plus": "^2.3.0",
+        "element-plus": "2.2.36",
         "js-base64": "^3.7.5",
         "js-cookie": "^3.0.1",
         "js-md5": "^0.7.3",

+ 58 - 12
src/components/plugins/table-form/hc-time-picker.vue

@@ -1,5 +1,34 @@
 <template>
-    <el-time-picker
+    <el-popover :disabled="disabled" :width="400" trigger="click">
+        <template #reference>
+            <div
+                class="hc-date-time-input el-input el-input--prefix el-input--suffix el-date-editor el-date-editor--time"
+                @keydown.shift.up="keyupShiftUp"
+                @keydown.shift.down="keyupShiftDown"
+                @keydown.shift.left="keyupShiftLeft"
+                @keydown.shift.right="keyupShiftRight">
+                <div :class="isFocus?'is-focus':''" class="el-input__wrapper">
+                    <span class="el-input__prefix">
+                        <span class="el-input__prefix-inner">
+                            <HcIcon class="el-icon el-input__icon" name="time"/>
+                        </span>
+                    </span>
+                    <input :id="keyname" ref="timePickerRef" v-model="modelValues" :disabled="disabled"
+                           :name="keyname" :placeholder="placeholder"
+                           :readonly="readonly" autocomplete="off" class="el-input__inner" type="text"
+                           @blur="timePickerBlur"
+                           @focus="timePickerFocus">
+                    <span v-if="clearable" class="el-input__suffix">
+                        <span class="el-input__suffix-inner">
+                            <HcIcon class="el-icon el-input__icon" name="close-circle"/>
+                        </span>
+                    </span>
+                </div>
+            </div>
+        </template>
+        11111
+    </el-popover>
+    <!--el-time-picker
         :id="keyname"
         ref="timePickerRef"
         v-model="modelValues"
@@ -19,11 +48,12 @@
         @keydown.shift.up="keyupShiftUp"
         @keydown.shift.down="keyupShiftDown"
         @keydown.shift.left="keyupShiftLeft"
-        @keydown.shift.right="keyupShiftRight"></el-time-picker>
+        @keydown.shift.right="keyupShiftRight"></el-time-picker-->
 </template>
 
 <script setup>
-import {nextTick, ref, watch} from 'vue'
+import {ref, watch} from 'vue'
+import HcIcon from "~src/global/components/hc-icon/index.vue"
 
 const props = defineProps({
     modelValue: {
@@ -50,19 +80,22 @@ const props = defineProps({
         type: Boolean,
         default: true
     },
-    valueFormat: {
-        type: String,
-        default: 'HH:mm:ss'
-    },
-    popperClass: {
+    placeholder: {
         type: String,
         default: ''
     },
+    onKeydown: {
+        type: [Array],
+        default: () => {
+            return []
+        }
+    },
 })
 
 //变量
 const modelValues = ref(props.modelValue)
 const timePickerRef = ref(null)
+const isFocus = ref(false)
 
 //监听
 watch(() => [
@@ -76,34 +109,47 @@ const emit = defineEmits(['update:modelValue', 'change', 'blur', 'focus', 'visib
 //@keydown.shift.up="" @keydown.shift.down="" @keydown.shift.left="" @keydown.shift.right=
 
 const timePickerChange = (val) => {
+    console.log(val)
     emit('update:modelValue', val)
     emit('change', val)
 }
 
+//失去焦点
 const timePickerBlur = (e) => {
+    isFocus.value = false
     emit('blur', e)
 }
+
+//获取焦点
 const timePickerFocus = (e) => {
-    console.log('获得焦点', e)
+    isFocus.value = true
     emit('focus', e)
 }
-const visibleChange = (visibility) => {
-    emit('visible-change', visibility)
-}
 
+//向上
 const keyupShiftUp = (e) => {
     console.log(e)
 }
 
+//向下
 const keyupShiftDown = (e) => {
     console.log(e)
 }
 
+//向左
 const keyupShiftLeft = (e) => {
     console.log(e)
 }
 
+//向右
 const keyupShiftRight = (e) => {
     console.log(e)
 }
 </script>
+
+<style lang="scss" scoped>
+.hc-date-time-input {
+    height: 100%;
+    width: 100%;
+}
+</style>

+ 7 - 6
src/plugins/HTableForm.js

@@ -1,17 +1,17 @@
-import {createApp, nextTick} from "vue/dist/vue.esm-bundler.js";
+import {createApp} from "vue/dist/vue.esm-bundler.js";
 import {getTokenHeader} from '~src/api/request/header';
 import {toParse, isArray} from "vue-utils-plus";
 import HcTableFormUpload from "~com/plugins/table-form/hc-form-upload.vue"
 import HcFormSelectSearch from "~com/plugins/table-form/hc-form-select-search.vue"
 import HcFormCheckboxGroup from "~com/plugins/table-form/hc-form-checkbox-group.vue"
-
+import ElTimePicker from "~com/plugins/table-form/hc-time-picker.vue"
+//ElTimePicker
 import {
     ElButton, ElTooltip, ElInput, ElDatePicker, ElUpload,
     ElInputNumber, ElSelect, ElOption, ElRadioGroup,
-    ElRadio, ElCheckbox, ElCheckboxGroup, ElTimePicker
+    ElRadio, ElCheckbox, ElCheckboxGroup,
 } from 'element-plus'
 
-
 const components = {
     ElButton, ElTooltip, ElInput, ElDatePicker, ElUpload,
     ElInputNumber, ElTimePicker, ElSelect, ElOption, ElRadioGroup,
@@ -236,12 +236,13 @@ export default class HTableForm {
     //设置元素焦点
     static setElementFocus(keyId) {
         if (keyId) {
-            try {
+            document.getElementById(keyId).focus();
+            /*try {
                 console.log('focus', keyId)
                 document.getElementById(keyId).focus();
             } catch (e) {
                 console.log(e)
-            }
+            }*/
         }
     }
 }

+ 4 - 4
yarn.lock

@@ -664,10 +664,10 @@ electron-to-chromium@^1.4.284:
   resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.328.tgz#b4565ffa502542b561cea16086d6d9b916c7095a"
   integrity sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==
 
-element-plus@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.3.0.tgz#c7492fe7b604eef60163d4e900ab074ae22bc553"
-  integrity sha512-3s3JO4+LHLi61tFwF2emIHx6nxwKKdj5YWcj3GUBoXKhbuRjhq6xqaxWpBlPk7jySr/8Eci5++T2THbvrpGn7A==
+element-plus@2.2.36:
+  version "2.2.36"
+  resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.36.tgz#a343204bbf7a0783074d57eec51edec3df6b8b57"
+  integrity sha512-9DzLqOVuw8P5Ck8Uqd9XdnDYVg2Z3iosZ1gtk2xDCWNqeoACpldP5gxa/Hbfgp4QeA3xC+f3g+UeoKKu79l28g==
   dependencies:
     "@ctrl/tinycolor" "^3.4.1"
     "@element-plus/icons-vue" "^2.0.6"