Selaa lähdekoodia

鼠标右键复制粘贴

xiaochan 2 vuotta sitten
vanhempi
commit
2f07244724

+ 14 - 3
src/components/menu-item/RightClickMenu.vue

@@ -7,9 +7,12 @@
         <ul v-else>
             <li v-for="(item,index) in props.config"
                 :style="prohibit(item)"
-                @click="handlingClickEvents(item.click)">
+                @click="handlingClickEvents(item.click, index)">
                 {{ item.name }}
             </li>
+            <li @click="modal = false">
+                关闭
+            </li>
         </ul>
     </div>
 </template>
@@ -52,8 +55,16 @@ let displayLocation = $ref({
     top: '0px'
 })
 
-const handlingClickEvents = (cb) => {
-    cb(props.mousePosition.data, props.mousePosition.index)
+const handlingClickEvents = (cb, index) => {
+    let data = props.config[index]
+    if (data.validator) {
+        if (!data.validator(props.mousePosition.data)) {
+            modal.value = false
+            return;
+        }
+    }
+
+    cb(props.mousePosition.data, props.mousePosition.index);
     modal.value = false
 }
 

+ 19 - 2
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/table/YzTableV2.vue

@@ -274,6 +274,19 @@ const scrollToEnd = () => {
 
 const mousePosition = ref()
 const opt = [
+    {
+        name: '复制', click: (data) => {
+            yzMitt.emit('copy', data.actOrderNo, data.frequCode)
+        }
+    },
+    {
+        name: '粘贴', click: (data) => {
+            yzMitt.emit('paste')
+        },
+        validator: () => {
+            return yzMitt.emit('allowReplication')
+        }
+    },
     {
         name: '关联', click: (data, index) => {
             emits('clickAssociate', data)
@@ -304,7 +317,7 @@ const opt = [
             emits('voidOrders', data)
         }
     }
-]
+];
 
 const contextmenuItem = (data, index, event) => {
     mousePosition.value = {
@@ -339,10 +352,14 @@ onMounted(() => {
     yzMitt.on('scrollEndAndTwinkle', async (val) => {
         twinkleList.value = val;
         await nextTick()
-        tableRef.value.scrollTo(tempYzData.value.length + 10)
+        scrollToEnd()
     });
 })
 
+watch(() => tempYzData.value.length, () => {
+    tableRef.value.scrollTo(0)
+})
+
 defineExpose({
     scrollTo,
     scrollToEnd,

+ 18 - 4
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/yz-edit/YzEditor.vue

@@ -7,12 +7,14 @@
         </div>
         <div class="ribbon">
             <button @click="qingKong" title="清空工作台">清空工作台</button>
+            <el-divider direction="vertical"/>
             <button @click="toAddAnOrder" title="录入医嘱">录入医嘱</button>
             <el-divider direction="vertical"/>
             <button @click="copyClick" title="复制当前工作台的医嘱,并粘贴到工作台中">复制</button>
             <button @click="pasteClick" :disabled="copyOrderNo.actOrderNo === null"
                     title="复制当前工作台的医嘱,并粘贴到工作台中">粘贴
             </button>
+            <el-divider direction="vertical"/>
             <button @click="duplicateAndPaste" title="复制当前工作台的医嘱,并粘贴到工作台中">复制并粘贴</button>
             <el-divider direction="vertical"/>
             <button @click="openTheOrderPopUpWindow" title="打开医嘱弹窗,如转科,抗菌药物信息,处置医嘱等">打开医嘱弹窗
@@ -843,15 +845,19 @@ const copyClick = () => {
     if (stringIsBlank(yiZhuData.value.actOrderNo) || yiZhuData.value.actOrderNo === 'tempOrderNo') {
         BizException(ExceptionEnum.MESSAGE_ERROR, '请先选择医嘱')
     }
-    copyOrderNo.actOrderNo = yiZhuData.value.actOrderNo
-    copyOrderNo.frequCode = yiZhuData.value.frequCode
+    copy(yiZhuData.value.actOrderNo, yiZhuData.value.frequCode)
+}
+
+const copy = (actOrderNo, frequCode) => {
+    copyOrderNo.actOrderNo = actOrderNo
+    copyOrderNo.frequCode = frequCode
     xcMessage.success('复制成功。')
 }
 
 const pasteClick = () => {
-    if (currentPage.value === frequCodeEnum.temporary && yiZhuData.value.frequCode !== 'ONCE') {
+    if (currentPage.value === frequCodeEnum.temporary && copyOrderNo.frequCode !== 'ONCE') {
         copyOrderNo.frequCode = 'ONCE'
-    } else if (currentPage.value === frequCodeEnum.longTerm && yiZhuData.value.frequCode === 'ONCE') {
+    } else if (currentPage.value === frequCodeEnum.longTerm && copyOrderNo.frequCode === 'ONCE') {
         copyOrderNo.frequCode = 'ALWAYS'
     } else if (currentPage.value === frequCodeEnum.takeMedicine) {
         copyOrderNo.frequCode = 'ONCE'
@@ -901,6 +907,14 @@ let shortcutKeyRegistration = {
 }
 
 onMounted(() => {
+
+    yzMitt.on('copy', copy)
+    yzMitt.on('paste', pasteClick)
+    yzMitt.on('allowReplication', () => {
+        return copyOrderNo.actOrderNo !== null
+    })
+
+
     yzMitt.on('deleteAnOrderByOrderNo', ({actOrderNo, orderName}, clearOrNot = true) => {
         if (stringIsBlank(actOrderNo)) {
             BizException(ExceptionEnum.MESSAGE_ERROR, '请先选择要删除的医嘱')