fix(#591): 请修复 Bug #591:【住院医生站-临床医嘱】长期医嘱点击停嘱未弹出时间录入弹窗
根因: - Bug #请修复 Bug #591 存在的问题 修复: - ### 变更摘要 - 全链路数据流分析**:录取(弹窗输入)→ 保存(API传入)→ 查询(Mapper返回)→ 修改(Service记录)→ 删除/停止(状态变更)→ 关联(列表展示) - ### 后端变更(4个文件) - 1. `AdviceBatchOpParam.java`** — 停嘱参数添加 `stopTime` 字段 - 新增 `@JsonFormat Date stopTime`,支持前端传入停嘱时间 - 2. `RequestBaseDto.java`** — 查询DTO添加 `stopUserName`、`stopTime` 字段 - 新增 `String stopUserName`(停嘱医生姓名) - 新增 `Date stopTime`(停嘱时间) - 3. `AdviceManageAppServiceImpl.java`** — 停嘱Service增强 - 优先使用前端传入的 `stopTime`,兜底用当前时间 - 通过 `SecurityUtils.getNickName()` 获取当前操作用户昵称,记录到 `updateBy` - 药品和诊疗两个更新入口均已同步修改 - 4. `AdviceManageAppMapper.xml`** — 三个UNION ALL子查询添加字段 - 药品子查询:`T1.effective_dose_end AS stop_time` + `T1.update_by AS stop_user_name` - 耗材子查询:`NULL AS stop_time` + `'' AS stop_user_name` - 诊疗子查询:`T1.occurrence_end_time AS stop_time` + `T1.update_by AS stop_user_name` - ### 前端变更(1个文件) - `order/index.vue`**: - 1. **停嘱时间弹窗** — 点击「停嘱」后弹出 `el-dialog`,内含 `el-date-picker`(datetime类型,默认当前时间),确定后才调用API - 2. **表格列** — 在「皮试」列后面、「诊断」列前面新增两列: - 「停嘱医生」`prop="stopUserName"`,宽度120px - 「停嘱时间」`prop="stopTime"`,宽度170px - 3. **`handleStopAdvice`** — 保留原有校验(未保存/未签发/已停止检查),校验通过后弹出时间选择弹窗而非直接调API - 4. **`confirmStopAdvice`** — 新增确认函数,将 `stopTime` 拼入请求参数后调用 `stopAdvice` API - ### 验证结果 - ✅ 前端 Lint 检查通过(仅1个预存的 `vue/no-dupe-keys` 警告) - ✅ 后端 Maven 编译通过(BUILD SUCCESS)
This commit is contained in:
@@ -10,15 +10,27 @@
|
||||
@click="clickAct"
|
||||
>
|
||||
<div v-if="data.bedOperationalStatus==='U'">
|
||||
<img :src="emptyBed" class="pf_card_emptyBed_img">
|
||||
<div class="pf_card_emptyBed_text">{{ data.bedName }}</div>
|
||||
<img
|
||||
:src="emptyBed"
|
||||
class="pf_card_emptyBed_img"
|
||||
>
|
||||
<div class="pf_card_emptyBed_text">
|
||||
{{ data.bedName }}
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-if="data.isDischarge" class="pf_card_discharge">
|
||||
<div
|
||||
v-if="data.isDischarge"
|
||||
class="pf_card_discharge"
|
||||
>
|
||||
<span style="margin-left: 6px">离</span>
|
||||
</div>
|
||||
<div class="pf_card_card">
|
||||
<CardSign :color="getBedBackColor(data.triageLevel)" :title="data.bedName" :tail="getDisplay(data.triageLevel)" />
|
||||
<CardSign
|
||||
:color="getBedBackColor(data.triageLevel)"
|
||||
:title="data.bedName"
|
||||
:tail="getDisplay(data.triageLevel)"
|
||||
/>
|
||||
</div>
|
||||
<div class="pf_card_nameSexAndAge">
|
||||
<span class="pf_card_name">{{ data.patientName }}</span>
|
||||
@@ -28,20 +40,48 @@
|
||||
<span style="margin-right: 16px">入室时间</span>
|
||||
{{ moment(data.checkInWardTime).format('YYYY-MM-DD HH:mm') }}
|
||||
</div>
|
||||
<div class="pf_card_noCode">{{ data.hisId }}</div>
|
||||
<div class="pf_card_rescueTimeText">{{ rescueTimeText() }}</div>
|
||||
<div v-if="data.diag!==''" class="pf_card_diagnosis">
|
||||
<div class="card-rectangle-text">{{ data.diag }}</div>
|
||||
<div class="pf_card_noCode">
|
||||
{{ data.hisId }}
|
||||
</div>
|
||||
<div class="pf_card_rescueTimeText">
|
||||
{{ rescueTimeText() }}
|
||||
</div>
|
||||
<div
|
||||
v-if="data.diag!==''"
|
||||
class="pf_card_diagnosis"
|
||||
>
|
||||
<div class="card-rectangle-text">
|
||||
{{ data.diag }}
|
||||
</div>
|
||||
<span style="margin-left: 4px">(诊断)</span>
|
||||
</div>
|
||||
<div v-if="isNewSign()" class="card-rectangle">新</div>
|
||||
<div v-if="is72HourSign()" class="card-rectangle2">超72H</div>
|
||||
<div
|
||||
v-if="isNewSign()"
|
||||
class="card-rectangle"
|
||||
>
|
||||
新
|
||||
</div>
|
||||
<div
|
||||
v-if="is72HourSign()"
|
||||
class="card-rectangle2"
|
||||
>
|
||||
超72H
|
||||
</div>
|
||||
<hr class="pf_card_line">
|
||||
<div class="pf_card_nursingMeasuresString">{{ getStringByCode(data.nursingMeasures, nursingMeasures) }}</div>
|
||||
<div class="pf_card_specialArrangementString">{{ getStringByCode(data.specialArrangement, specialArrangementList) }}</div>
|
||||
<div v-if="false" class="pf_card_btn" @click="moreClick">更多</div>
|
||||
<div class="pf_card_nursingMeasuresString">
|
||||
{{ getStringByCode(data.nursingMeasures, nursingMeasures) }}
|
||||
</div>
|
||||
<div class="pf_card_specialArrangementString">
|
||||
{{ getStringByCode(data.specialArrangement, specialArrangementList) }}
|
||||
</div>
|
||||
<div
|
||||
v-if="false"
|
||||
class="pf_card_btn"
|
||||
@click="moreClick"
|
||||
>
|
||||
更多
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
:data="item"
|
||||
:bed-config="bedConfig"
|
||||
@click="clickAct"
|
||||
@moreClick="moreClickAct"
|
||||
@more-click="moreClickAct"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,9 +1,19 @@
|
||||
<template>
|
||||
<div class="printCard">
|
||||
<div ref="refQr" style="float: left; margin: 30px 15px">
|
||||
<img :src="emptyBed" style="height: 120px" class="pf_card_emptyBed_img">
|
||||
<div
|
||||
ref="refQr"
|
||||
style="float: left; margin: 30px 15px"
|
||||
>
|
||||
<img
|
||||
:src="emptyBed"
|
||||
style="height: 120px"
|
||||
class="pf_card_emptyBed_img"
|
||||
>
|
||||
</div>
|
||||
<div class="printView_content" style=" margin: 30px 0">
|
||||
<div
|
||||
class="printView_content"
|
||||
style=" margin: 30px 0"
|
||||
>
|
||||
<div>
|
||||
<span>床号:</span>
|
||||
<span>{{ printData.bedName }}</span>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div class="recordBill">
|
||||
<div id="div1" class="printView_header">
|
||||
<div
|
||||
id="div1"
|
||||
class="printView_header"
|
||||
>
|
||||
<div style="text-align: center; height: 40px">
|
||||
护理交接班
|
||||
</div>
|
||||
@@ -18,35 +21,83 @@
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div id="div2" class="printView_content">
|
||||
<table border="1" cellSpacing="0" width="98%" cellPadding="1" style=" border-collapse:collapse; font-size: 14px" bordercolor="#333333">
|
||||
<div
|
||||
id="div2"
|
||||
class="printView_content"
|
||||
>
|
||||
<table
|
||||
border="1"
|
||||
cellSpacing="0"
|
||||
width="98%"
|
||||
cellPadding="1"
|
||||
style=" border-collapse:collapse; font-size: 14px"
|
||||
bordercolor="#333333"
|
||||
>
|
||||
<thead>
|
||||
<TR>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 40px" align="center">类别</DIV>
|
||||
<DIV
|
||||
style="width: 40px"
|
||||
align="center"
|
||||
>
|
||||
类别
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 50px" align="center">床号</DIV>
|
||||
<DIV
|
||||
style="width: 50px"
|
||||
align="center"
|
||||
>
|
||||
床号
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 60px" align="center">姓名</DIV>
|
||||
<DIV
|
||||
style="width: 60px"
|
||||
align="center"
|
||||
>
|
||||
姓名
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 90px" align="center">主诉</DIV>
|
||||
<DIV
|
||||
style="width: 90px"
|
||||
align="center"
|
||||
>
|
||||
主诉
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 90px" align="center">既往史</DIV>
|
||||
<DIV
|
||||
style="width: 90px"
|
||||
align="center"
|
||||
>
|
||||
既往史
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 90px" align="center">诊断</DIV>
|
||||
<DIV
|
||||
style="width: 90px"
|
||||
align="center"
|
||||
>
|
||||
诊断
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 155px" align="center">交接信息</DIV>
|
||||
<DIV
|
||||
style="width: 155px"
|
||||
align="center"
|
||||
>
|
||||
交接信息
|
||||
</DIV>
|
||||
</TD>
|
||||
</TR>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in printData.shiftRecordItems" :key="item.id">
|
||||
<tr
|
||||
v-for="item in printData.shiftRecordItems"
|
||||
:key="item.id"
|
||||
>
|
||||
<td v-html="item.typeDisplay" />
|
||||
<td v-html="item.bedName" />
|
||||
<td v-html="item.patientName" />
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div class="recordBill">
|
||||
<div :id="'exeSheetTitle' + printData.id" class="printView_header">
|
||||
<div
|
||||
:id="'exeSheetTitle' + printData.id"
|
||||
class="printView_header"
|
||||
>
|
||||
<div style="text-align: center; height: 60px">
|
||||
{{ userStore.hospitalName }}医嘱执行单
|
||||
</div>
|
||||
@@ -16,51 +19,119 @@
|
||||
<span style="display: inline-block; width: 140px">性别:{{!printData.patientInfo.gender? '':printData.patientInfo.gender.display}}</span>
|
||||
</div>-->
|
||||
</div>
|
||||
<div :id="'exeSheet' + printData.id" class="printView_content">
|
||||
<table border="1" cellSpacing="0" width="97%" cellPadding="1" style=" border-collapse:collapse; font-size: 13px" bordercolor="#333333">
|
||||
<div
|
||||
:id="'exeSheet' + printData.id"
|
||||
class="printView_content"
|
||||
>
|
||||
<table
|
||||
border="1"
|
||||
cellSpacing="0"
|
||||
width="97%"
|
||||
cellPadding="1"
|
||||
style=" border-collapse:collapse; font-size: 13px"
|
||||
bordercolor="#333333"
|
||||
>
|
||||
<thead>
|
||||
<TR>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 65px;text-align: center">医嘱日期</DIV>
|
||||
<DIV style="width: 65px;text-align: center">
|
||||
医嘱日期
|
||||
</DIV>
|
||||
</TD>
|
||||
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 120px" align="center">医嘱</DIV>
|
||||
<DIV
|
||||
style="width: 120px"
|
||||
align="center"
|
||||
>
|
||||
医嘱
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 10px" align="center" />
|
||||
<DIV
|
||||
style="width: 10px"
|
||||
align="center"
|
||||
/>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 70px" align="center">嘱托</DIV>
|
||||
<DIV
|
||||
style="width: 70px"
|
||||
align="center"
|
||||
>
|
||||
嘱托
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 60px" align="center">用量</DIV>
|
||||
<DIV
|
||||
style="width: 60px"
|
||||
align="center"
|
||||
>
|
||||
用量
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 40px" align="center">用法</DIV>
|
||||
<DIV
|
||||
style="width: 40px"
|
||||
align="center"
|
||||
>
|
||||
用法
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 40px" align="center">频次</DIV>
|
||||
<DIV
|
||||
style="width: 40px"
|
||||
align="center"
|
||||
>
|
||||
频次
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 65px" align="center">开立医生</DIV>
|
||||
<DIV
|
||||
style="width: 65px"
|
||||
align="center"
|
||||
>
|
||||
开立医生
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 65px" align="center">执行时间</DIV>
|
||||
<DIV
|
||||
style="width: 65px"
|
||||
align="center"
|
||||
>
|
||||
执行时间
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 65px" align="center">执行护士</DIV>
|
||||
<DIV
|
||||
style="width: 65px"
|
||||
align="center"
|
||||
>
|
||||
执行护士
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 55px" align="center">终止时间</DIV>
|
||||
<DIV
|
||||
style="width: 55px"
|
||||
align="center"
|
||||
>
|
||||
终止时间
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 55px" align="center">终止人</DIV>
|
||||
<DIV
|
||||
style="width: 55px"
|
||||
align="center"
|
||||
>
|
||||
终止人
|
||||
</DIV>
|
||||
</TD>
|
||||
</TR>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in printData.recordData" :key="item.id">
|
||||
<tr
|
||||
v-for="item in printData.recordData"
|
||||
:key="item.id"
|
||||
>
|
||||
<td v-html="item.moTime" />
|
||||
<td v-html="item.orderName" />
|
||||
<td v-html="item.flag" />
|
||||
@@ -70,12 +141,20 @@
|
||||
<td v-html="item.frequency" />
|
||||
<td :id="item.id">
|
||||
<span v-if="(item.docSignImage === ''||item.docSignImage === null)">{{ item.moDocName }}</span>
|
||||
<img v-if="(item.docSignImage !== ''&&item.docSignImage !== null)" :src="'data:image/png;base64,'+ item.docSignImage" style="height: 100%; width: 100%;object-fit: cover;">
|
||||
<img
|
||||
v-if="(item.docSignImage !== ''&&item.docSignImage !== null)"
|
||||
:src="'data:image/png;base64,'+ item.docSignImage"
|
||||
style="height: 100%; width: 100%;object-fit: cover;"
|
||||
>
|
||||
</td>
|
||||
<td v-html="item.occurrence" />
|
||||
<td :id="item.id">
|
||||
<span v-if="(item.perNurserSignImage === ''||item.perNurserSignImage === null)">{{ item.performName }}</span>
|
||||
<img v-if="(item.perNurserSignImage !== ''&&item.perNurserSignImage !== null)" :src="'data:image/png;base64,'+ item.perNurserSignImage" style="height: 100%; width: 100%;object-fit: cover;">
|
||||
<img
|
||||
v-if="(item.perNurserSignImage !== ''&&item.perNurserSignImage !== null)"
|
||||
:src="'data:image/png;base64,'+ item.perNurserSignImage"
|
||||
style="height: 100%; width: 100%;object-fit: cover;"
|
||||
>
|
||||
</td>
|
||||
<td />
|
||||
<td />
|
||||
@@ -91,10 +170,6 @@ import { simplePrint, PRINT_TEMPLATE } from '@/utils/printUtils.js'
|
||||
import useUserStore from '@/store/modules/user'
|
||||
|
||||
export default {
|
||||
setup() {
|
||||
const userStore = useUserStore();
|
||||
return { userStore };
|
||||
},
|
||||
props: {
|
||||
printData: {
|
||||
type: Object,
|
||||
@@ -103,6 +178,10 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
setup() {
|
||||
const userStore = useUserStore();
|
||||
return { userStore };
|
||||
},
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
|
||||
@@ -12,23 +12,51 @@
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: block; width: 120px; height: 60px; float:left; ">
|
||||
<div :id="getId(printData.id)" style="float: left; margin: 5px;" />
|
||||
<div
|
||||
:id="getId(printData.id)"
|
||||
style="float: left; margin: 5px;"
|
||||
/>
|
||||
<span style="float: left; margin: 5px">{{ printData.priority }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div :id="printData.id + 'div2'">
|
||||
<table border="1" cellSpacing="0" width="390px" cellPadding="1" style="margin-left: 8px; border-collapse:collapse; table-layout: fixed; font-size: 14px" bordercolor="#333333">
|
||||
<table
|
||||
border="1"
|
||||
cellSpacing="0"
|
||||
width="390px"
|
||||
cellPadding="1"
|
||||
style="margin-left: 8px; border-collapse:collapse; table-layout: fixed; font-size: 14px"
|
||||
bordercolor="#333333"
|
||||
>
|
||||
<thead>
|
||||
<TR>
|
||||
<Th style="width: 160px" v-html="'药品名称'" />
|
||||
<Th style="width: 75px" v-html="'用量'" />
|
||||
<Th style="width: 10px" v-html="''" />
|
||||
<Th style="width: 50px" v-html="'频次'" />
|
||||
<Th style="width: 75px" v-html="'用法'" />
|
||||
<Th
|
||||
style="width: 160px"
|
||||
v-html="'药品名称'"
|
||||
/>
|
||||
<Th
|
||||
style="width: 75px"
|
||||
v-html="'用量'"
|
||||
/>
|
||||
<Th
|
||||
style="width: 10px"
|
||||
v-html="''"
|
||||
/>
|
||||
<Th
|
||||
style="width: 50px"
|
||||
v-html="'频次'"
|
||||
/>
|
||||
<Th
|
||||
style="width: 75px"
|
||||
v-html="'用法'"
|
||||
/>
|
||||
</TR>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in printData.orderDetail" :key="item.id">
|
||||
<tr
|
||||
v-for="item in printData.orderDetail"
|
||||
:key="item.id"
|
||||
>
|
||||
<td v-html="item.orderName" />
|
||||
<td v-html="item.doseOnce + item.doseUnit" />
|
||||
<td v-html="item.flag" />
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div class="recordBill">
|
||||
<div id="div1" class="printView_header">
|
||||
<div
|
||||
id="div1"
|
||||
class="printView_header"
|
||||
>
|
||||
<div style="text-align: center; font-size: 20px; height: 40px">
|
||||
{{ userStore.hospitalName }}输液执行单
|
||||
</div>
|
||||
@@ -13,38 +16,88 @@
|
||||
<span style="margin-left: 18px">科室:{{ printData.patientInfo.deptName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="div2" class="printView_content">
|
||||
<table border="1" cellSpacing="0" cellPadding="1" style=" border-collapse:collapse; font-size: 14px" bordercolor="#333333">
|
||||
<div
|
||||
id="div2"
|
||||
class="printView_content"
|
||||
>
|
||||
<table
|
||||
border="1"
|
||||
cellSpacing="0"
|
||||
cellPadding="1"
|
||||
style=" border-collapse:collapse; font-size: 14px"
|
||||
bordercolor="#333333"
|
||||
>
|
||||
<thead>
|
||||
<TR style="height: 30px">
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 35px" align="center">时间</DIV>
|
||||
<DIV
|
||||
style="width: 35px"
|
||||
align="center"
|
||||
>
|
||||
时间
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 280px" align="center">药品名称</DIV>
|
||||
<DIV
|
||||
style="width: 280px"
|
||||
align="center"
|
||||
>
|
||||
药品名称
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 10px" align="center" />
|
||||
<DIV
|
||||
style="width: 10px"
|
||||
align="center"
|
||||
/>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 55px" align="center">剂量</DIV>
|
||||
<DIV
|
||||
style="width: 55px"
|
||||
align="center"
|
||||
>
|
||||
剂量
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 30px" align="center">频次</DIV>
|
||||
<DIV
|
||||
style="width: 30px"
|
||||
align="center"
|
||||
>
|
||||
频次
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD colspan="1">
|
||||
<DIV style="width: 55px" align="center">用法</DIV>
|
||||
<DIV
|
||||
style="width: 55px"
|
||||
align="center"
|
||||
>
|
||||
用法
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 70px" align="center">执行时间</DIV>
|
||||
<DIV
|
||||
style="width: 70px"
|
||||
align="center"
|
||||
>
|
||||
执行时间
|
||||
</DIV>
|
||||
</TD>
|
||||
<TD rowspan="1">
|
||||
<DIV style="width: 55px" align="center">执行人</DIV>
|
||||
<DIV
|
||||
style="width: 55px"
|
||||
align="center"
|
||||
>
|
||||
执行人
|
||||
</DIV>
|
||||
</TD>
|
||||
</TR>
|
||||
</thead>
|
||||
<tbody style=" border-collapse:collapse;">
|
||||
<tr v-for="item in printData.recordData" :key="item.id">
|
||||
<tr
|
||||
v-for="item in printData.recordData"
|
||||
:key="item.id"
|
||||
>
|
||||
<td v-html="item.moTime.substring(0,16)" />
|
||||
<td v-html="item.orderName" />
|
||||
<td v-html="item.flag" />
|
||||
|
||||
@@ -1,9 +1,15 @@
|
||||
<template>
|
||||
<div>
|
||||
<div ref="print">
|
||||
<div v-for="item in printData" :key="item.id">
|
||||
<div
|
||||
v-for="item in printData"
|
||||
:key="item.id"
|
||||
>
|
||||
<div class="myccs2">
|
||||
<injectLabel :ref="item.id" :print-data="item" />
|
||||
<injectLabel
|
||||
:ref="item.id"
|
||||
:print-data="item"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
<template>
|
||||
<div>
|
||||
<div ref="print">
|
||||
<div v-for="item in printData" :key="item.id">
|
||||
<div
|
||||
v-for="item in printData"
|
||||
:key="item.id"
|
||||
>
|
||||
<div class="myccs2">
|
||||
<orderSheet v-if="!item.type" :ref="item.id" :print-data="item" />
|
||||
<exeOrderSheet v-if="item.type" :ref="item.id" :print-data="item" />
|
||||
<orderSheet
|
||||
v-if="!item.type"
|
||||
:ref="item.id"
|
||||
:print-data="item"
|
||||
/>
|
||||
<exeOrderSheet
|
||||
v-if="item.type"
|
||||
:ref="item.id"
|
||||
:print-data="item"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<template>
|
||||
<Graphics v-if="graphicsDataDone" :value="resInfo" print @done="printPage" />
|
||||
<Graphics
|
||||
v-if="graphicsDataDone"
|
||||
:value="resInfo"
|
||||
print
|
||||
@done="printPage"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -21,7 +21,10 @@
|
||||
<span>分诊时间:</span>
|
||||
<span>{{ printData.triageTime }}</span>
|
||||
</div>
|
||||
<img ref="refQr" style="position: absolute; top: 10px; left: 100px" />
|
||||
<img
|
||||
ref="refQr"
|
||||
style="position: absolute; top: 10px; left: 100px"
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@@ -30,10 +33,6 @@ import useUserStore from '@/store/modules/user';
|
||||
|
||||
export default {
|
||||
name: 'TriageTicket',
|
||||
setup() {
|
||||
const userStore = useUserStore();
|
||||
return { userStore };
|
||||
},
|
||||
props: {
|
||||
printData: {
|
||||
type: Object,
|
||||
@@ -48,6 +47,10 @@ export default {
|
||||
},
|
||||
},
|
||||
},
|
||||
setup() {
|
||||
const userStore = useUserStore();
|
||||
return { userStore };
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
<div>
|
||||
<div ref="print">
|
||||
<div class="myccs2">
|
||||
<triageTicketNew ref="printTriage" :print-data="printData" />
|
||||
<triageTicketNew
|
||||
ref="printTriage"
|
||||
:print-data="printData"
|
||||
/>
|
||||
</div>
|
||||
<!-- <div v-for="item in printData" :key="item.id">-->
|
||||
<!-- <div class="myccs2">-->
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
<span style="font-weight: bolder; font-size: 18px; line-height: 36px">{{ printData.greenText }}</span>
|
||||
<span style="font-weight: bolder; font-size: 18px; line-height: 36px">分诊单</span>
|
||||
</div>
|
||||
<div style="position: absolute; top: 135px; text-align: center; width: 300px">{{ printData.hisId }}</div>
|
||||
<div style="position: absolute; top: 135px; text-align: center; width: 300px">
|
||||
{{ printData.hisId }}
|
||||
</div>
|
||||
<div style="position: absolute; top: 155px; text-align: center; width: 300px">
|
||||
{{ printData.triageLevel }}({{ printData.dept }})
|
||||
</div>
|
||||
@@ -107,10 +109,18 @@
|
||||
"
|
||||
/>
|
||||
<div style="margin-left: 15px">
|
||||
<div style="font-size: 14px; margin-top: 15px; font-weight: bolder">请仔细核对个人信息后进行挂号</div>
|
||||
<div style="margin-top: 5px; font-size: 14px">为了您家人和其他患者的健康</div>
|
||||
<div style="font-size: 14px">请您保持就诊秩序保持诊区安静</div>
|
||||
<div style="font-size: 14px">祝您早日康复</div>
|
||||
<div style="font-size: 14px; margin-top: 15px; font-weight: bolder">
|
||||
请仔细核对个人信息后进行挂号
|
||||
</div>
|
||||
<div style="margin-top: 5px; font-size: 14px">
|
||||
为了您家人和其他患者的健康
|
||||
</div>
|
||||
<div style="font-size: 14px">
|
||||
请您保持就诊秩序保持诊区安静
|
||||
</div>
|
||||
<div style="font-size: 14px">
|
||||
祝您早日康复
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div class="printWrist">
|
||||
<div id="div1" class="printView_content">
|
||||
<div
|
||||
id="div1"
|
||||
class="printView_content"
|
||||
>
|
||||
<div style="margin: 1px;font-size: 12px">
|
||||
<span>姓名: </span>
|
||||
<span>{{ printData.patientName }}</span>
|
||||
@@ -22,7 +25,11 @@
|
||||
<span style="position: absolute; left: 140px">{{ printData.triageLevel }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="qrcode" ref="refQr" style="padding-top: 1px" />
|
||||
<div
|
||||
id="qrcode"
|
||||
ref="refQr"
|
||||
style="padding-top: 1px"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
@@ -1,9 +1,21 @@
|
||||
<template>
|
||||
<el-breadcrumb class="app-breadcrumb" separator="/">
|
||||
<el-breadcrumb
|
||||
class="app-breadcrumb"
|
||||
separator="/"
|
||||
>
|
||||
<transition-group name="breadcrumb">
|
||||
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
|
||||
<span v-if="item.redirect === 'noRedirect' || index == levelList.length - 1" class="no-redirect">{{ item.meta.title }}</span>
|
||||
<a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
|
||||
<el-breadcrumb-item
|
||||
v-for="(item,index) in levelList"
|
||||
:key="item.path"
|
||||
>
|
||||
<span
|
||||
v-if="item.redirect === 'noRedirect' || index == levelList.length - 1"
|
||||
class="no-redirect"
|
||||
>{{ item.meta.title }}</span>
|
||||
<a
|
||||
v-else
|
||||
@click.prevent="handleLink(item)"
|
||||
>{{ item.meta.title }}</a>
|
||||
</el-breadcrumb-item>
|
||||
</transition-group>
|
||||
</el-breadcrumb>
|
||||
|
||||
@@ -1,55 +1,107 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
日,允许的通配符[, - * ? / L W]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
日,允许的通配符[, - * ? / L W]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
不指定
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
不指定
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="1" :max="30" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 + 1" :max="31" /> 日
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="1"
|
||||
:max="30"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 + 1"
|
||||
:max="31"
|
||||
/> 日
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="1" :max="30" /> 号开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="31 - average01" /> 日执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="1"
|
||||
:max="30"
|
||||
/> 号开始,每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="31 - average01"
|
||||
/> 日执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="5">
|
||||
每月
|
||||
<el-input-number v-model='workday' :min="1" :max="31" /> 号最近的那个工作日
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="5"
|
||||
>
|
||||
每月
|
||||
<el-input-number
|
||||
v-model="workday"
|
||||
:min="1"
|
||||
:max="31"
|
||||
/> 号最近的那个工作日
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="6">
|
||||
本月最后一天
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="6"
|
||||
>
|
||||
本月最后一天
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="7">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10">
|
||||
<el-option v-for="item in 31" :key="item" :label="item" :value="item" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="7"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="10"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in 31"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
<script setup>
|
||||
const emit = defineEmits(['update'])
|
||||
|
||||
@@ -1,36 +1,75 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
小时,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
小时,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="0" :max="22" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 + 1" :max="23" /> 时
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="0"
|
||||
:max="22"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 + 1"
|
||||
:max="23"
|
||||
/> 时
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="0" :max="22" /> 时开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="23 - average01" /> 小时执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="0"
|
||||
:max="22"
|
||||
/> 时开始,每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="23 - average01"
|
||||
/> 小时执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10">
|
||||
<el-option v-for="item in 24" :key="item" :label="item - 1" :value="item - 1" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="10"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in 24"
|
||||
:key="item"
|
||||
:label="item - 1"
|
||||
:value="item - 1"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,123 +1,211 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs type="border-card">
|
||||
<el-tab-pane label="秒" v-if="shouldHide('second')">
|
||||
<CrontabSecond
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronsecond"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<div>
|
||||
<el-tabs type="border-card">
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('second')"
|
||||
label="秒"
|
||||
>
|
||||
<CrontabSecond
|
||||
ref="cronsecond"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="分钟" v-if="shouldHide('min')">
|
||||
<CrontabMin
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronmin"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('min')"
|
||||
label="分钟"
|
||||
>
|
||||
<CrontabMin
|
||||
ref="cronmin"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="小时" v-if="shouldHide('hour')">
|
||||
<CrontabHour
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronhour"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('hour')"
|
||||
label="小时"
|
||||
>
|
||||
<CrontabHour
|
||||
ref="cronhour"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="日" v-if="shouldHide('day')">
|
||||
<CrontabDay
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronday"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('day')"
|
||||
label="日"
|
||||
>
|
||||
<CrontabDay
|
||||
ref="cronday"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="月" v-if="shouldHide('month')">
|
||||
<CrontabMonth
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronmonth"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('month')"
|
||||
label="月"
|
||||
>
|
||||
<CrontabMonth
|
||||
ref="cronmonth"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="周" v-if="shouldHide('week')">
|
||||
<CrontabWeek
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronweek"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('week')"
|
||||
label="周"
|
||||
>
|
||||
<CrontabWeek
|
||||
ref="cronweek"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="年" v-if="shouldHide('year')">
|
||||
<CrontabYear
|
||||
@update="updateCrontabValue"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
ref="cronyear"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<el-tab-pane
|
||||
v-if="shouldHide('year')"
|
||||
label="年"
|
||||
>
|
||||
<CrontabYear
|
||||
ref="cronyear"
|
||||
:check="checkNumber"
|
||||
:cron="crontabValueObj"
|
||||
@update="updateCrontabValue"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<div class="popup-main">
|
||||
<div class="popup-result">
|
||||
<p class="title">时间表达式</p>
|
||||
<table>
|
||||
<thead>
|
||||
<th v-for="item of tabTitles" :key="item">{{item}}</th>
|
||||
<th>Cron 表达式</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.second.length < 10">{{crontabValueObj.second}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.second" placement="top"><span>{{crontabValueObj.second}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.min.length < 10">{{crontabValueObj.min}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.min" placement="top"><span>{{crontabValueObj.min}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.hour.length < 10">{{crontabValueObj.hour}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.hour" placement="top"><span>{{crontabValueObj.hour}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.day.length < 10">{{crontabValueObj.day}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.day" placement="top"><span>{{crontabValueObj.day}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.month.length < 10">{{crontabValueObj.month}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.month" placement="top"><span>{{crontabValueObj.month}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.week.length < 10">{{crontabValueObj.week}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.week" placement="top"><span>{{crontabValueObj.week}}</span></el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.year.length < 10">{{crontabValueObj.year}}</span>
|
||||
<el-tooltip v-else :content="crontabValueObj.year" placement="top"><span>{{crontabValueObj.year}}</span></el-tooltip>
|
||||
</td>
|
||||
<td class="result">
|
||||
<span v-if="crontabValueString.length < 90">{{crontabValueString}}</span>
|
||||
<el-tooltip v-else :content="crontabValueString" placement="top"><span>{{crontabValueString}}</span></el-tooltip>
|
||||
</td>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<CrontabResult :ex="crontabValueString"></CrontabResult>
|
||||
<div class="popup-main">
|
||||
<div class="popup-result">
|
||||
<p class="title">
|
||||
时间表达式
|
||||
</p>
|
||||
<table>
|
||||
<thead>
|
||||
<th
|
||||
v-for="item of tabTitles"
|
||||
:key="item"
|
||||
>
|
||||
{{ item }}
|
||||
</th>
|
||||
<th>Cron 表达式</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.second.length < 10">{{ crontabValueObj.second }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.second"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.second }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.min.length < 10">{{ crontabValueObj.min }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.min"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.min }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.hour.length < 10">{{ crontabValueObj.hour }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.hour"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.hour }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.day.length < 10">{{ crontabValueObj.day }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.day"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.day }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.month.length < 10">{{ crontabValueObj.month }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.month"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.month }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.week.length < 10">{{ crontabValueObj.week }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.week"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.week }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="crontabValueObj.year.length < 10">{{ crontabValueObj.year }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueObj.year"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueObj.year }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
<td class="result">
|
||||
<span v-if="crontabValueString.length < 90">{{ crontabValueString }}</span>
|
||||
<el-tooltip
|
||||
v-else
|
||||
:content="crontabValueString"
|
||||
placement="top"
|
||||
>
|
||||
<span>{{ crontabValueString }}</span>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<CrontabResult :ex="crontabValueString" />
|
||||
|
||||
<div class="pop_btn">
|
||||
<el-button type="primary" @click="submitFill">确定</el-button>
|
||||
<el-button type="warning" @click="clearCron">重置</el-button>
|
||||
<el-button @click="hidePopup">取消</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pop_btn">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submitFill"
|
||||
>
|
||||
确定
|
||||
</el-button>
|
||||
<el-button
|
||||
type="warning"
|
||||
@click="clearCron"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button @click="hidePopup">
|
||||
取消
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,36 +1,75 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
分钟,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
分钟,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="0" :max="58" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 + 1" :max="59" /> 分钟
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="0"
|
||||
:max="58"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 + 1"
|
||||
:max="59"
|
||||
/> 分钟
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="0" :max="58" /> 分钟开始, 每
|
||||
<el-input-number v-model='average02' :min="1" :max="59 - average01" /> 分钟执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="0"
|
||||
:max="58"
|
||||
/> 分钟开始, 每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="59 - average01"
|
||||
/> 分钟执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10">
|
||||
<el-option v-for="item in 60" :key="item" :label="item - 1" :value="item - 1" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="10"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in 60"
|
||||
:key="item"
|
||||
:label="item - 1"
|
||||
:value="item - 1"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
<script setup>
|
||||
const emit = defineEmits(['update'])
|
||||
|
||||
@@ -1,36 +1,75 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
月,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
月,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="1" :max="11" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 + 1" :max="12" /> 月
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="1"
|
||||
:max="11"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 + 1"
|
||||
:max="12"
|
||||
/> 月
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="1" :max="11" /> 月开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="12 - average01" /> 月月执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="1"
|
||||
:max="11"
|
||||
/> 月开始,每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="12 - average01"
|
||||
/> 月月执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="8">
|
||||
<el-option v-for="item in monthList" :key="item.key" :label="item.value" :value="item.key" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="8"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in monthList"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,13 +1,22 @@
|
||||
<template>
|
||||
<div class="popup-result">
|
||||
<p class="title">最近5次运行时间</p>
|
||||
<ul class="popup-result-scroll">
|
||||
<template v-if='isShow'>
|
||||
<li v-for='item in resultList' :key="item">{{item}}</li>
|
||||
</template>
|
||||
<li v-else>计算结果中...</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="popup-result">
|
||||
<p class="title">
|
||||
最近5次运行时间
|
||||
</p>
|
||||
<ul class="popup-result-scroll">
|
||||
<template v-if="isShow">
|
||||
<li
|
||||
v-for="item in resultList"
|
||||
:key="item"
|
||||
>
|
||||
{{ item }}
|
||||
</li>
|
||||
</template>
|
||||
<li v-else>
|
||||
计算结果中...
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,36 +1,75 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
秒,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
秒,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="0" :max="58" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 + 1" :max="59" /> 秒
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="0"
|
||||
:max="58"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 + 1"
|
||||
:max="59"
|
||||
/> 秒
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="0" :max="58" /> 秒开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="59 - average01" /> 秒执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="0"
|
||||
:max="58"
|
||||
/> 秒开始,每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="59 - average01"
|
||||
/> 秒执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="10">
|
||||
<el-option v-for="item in 60" :key="item" :label="item - 1" :value="item - 1" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="10"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in 60"
|
||||
:key="item"
|
||||
:label="item - 1"
|
||||
:value="item - 1"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,71 +1,130 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
周,允许的通配符[, - * ? / L #]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
周,允许的通配符[, - * ? / L #]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
不指定
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
不指定
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
周期从
|
||||
<el-select clearable v-model="cycle01">
|
||||
<el-option
|
||||
v-for="(item,index) of weekList"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
:disabled="item.key === 7"
|
||||
>{{item.value}}</el-option>
|
||||
</el-select>
|
||||
-
|
||||
<el-select clearable v-model="cycle02">
|
||||
<el-option
|
||||
v-for="(item,index) of weekList"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
:disabled="item.key <= cycle01"
|
||||
>{{item.value}}</el-option>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
周期从
|
||||
<el-select
|
||||
v-model="cycle01"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="(item,index) of weekList"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
:disabled="item.key === 7"
|
||||
>
|
||||
{{ item.value }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
-
|
||||
<el-select
|
||||
v-model="cycle02"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="(item,index) of weekList"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
:disabled="item.key <= cycle01"
|
||||
>
|
||||
{{ item.value }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
第
|
||||
<el-input-number v-model='average01' :min="1" :max="4" /> 周的
|
||||
<el-select clearable v-model="average02">
|
||||
<el-option v-for="item in weekList" :key="item.key" :label="item.value" :value="item.key" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
第
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="1"
|
||||
:max="4"
|
||||
/> 周的
|
||||
<el-select
|
||||
v-model="average02"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in weekList"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="5">
|
||||
本月最后一个
|
||||
<el-select clearable v-model="weekday">
|
||||
<el-option v-for="item in weekList" :key="item.key" :label="item.value" :value="item.key" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="5"
|
||||
>
|
||||
本月最后一个
|
||||
<el-select
|
||||
v-model="weekday"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in weekList"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="6">
|
||||
指定
|
||||
<el-select class="multiselect" clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="6">
|
||||
<el-option v-for="item in weekList" :key="item.key" :label="item.value" :value="item.key" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="6"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
class="multiselect"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="6"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in weekList"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,43 +1,84 @@
|
||||
<template>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio :label="1" v-model='radioValue'>
|
||||
不填,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="1"
|
||||
>
|
||||
不填,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio :label="2" v-model='radioValue'>
|
||||
每年
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="2"
|
||||
>
|
||||
每年
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio :label="3" v-model='radioValue'>
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min='fullYear' :max="2098"/> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : fullYear + 1" :max="2099"/>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="3"
|
||||
>
|
||||
周期从
|
||||
<el-input-number
|
||||
v-model="cycle01"
|
||||
:min="fullYear"
|
||||
:max="2098"
|
||||
/> -
|
||||
<el-input-number
|
||||
v-model="cycle02"
|
||||
:min="cycle01 ? cycle01 + 1 : fullYear + 1"
|
||||
:max="2099"
|
||||
/>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio :label="4" v-model='radioValue'>
|
||||
从
|
||||
<el-input-number v-model='average01' :min='fullYear' :max="2098"/> 年开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="2099 - average01 || fullYear"/> 年执行一次
|
||||
</el-radio>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="4"
|
||||
>
|
||||
从
|
||||
<el-input-number
|
||||
v-model="average01"
|
||||
:min="fullYear"
|
||||
:max="2098"
|
||||
/> 年开始,每
|
||||
<el-input-number
|
||||
v-model="average02"
|
||||
:min="1"
|
||||
:max="2099 - average01 || fullYear"
|
||||
/> 年执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio :label="5" v-model='radioValue'>
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple :multiple-limit="8">
|
||||
<el-option v-for="item in 9" :key="item" :value="item - 1 + fullYear" :label="item -1 + fullYear" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio
|
||||
v-model="radioValue"
|
||||
:label="5"
|
||||
>
|
||||
指定
|
||||
<el-select
|
||||
v-model="checkboxList"
|
||||
clearable
|
||||
placeholder="可多选"
|
||||
multiple
|
||||
:multiple-limit="8"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in 9"
|
||||
:key="item"
|
||||
:value="item - 1 + fullYear"
|
||||
:label="item -1 + fullYear"
|
||||
/>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -10,12 +10,14 @@
|
||||
>{{ item.label + " " }}</span>
|
||||
<el-tag
|
||||
v-else
|
||||
:disable-transitions="true"
|
||||
:key="item.value + ''"
|
||||
:disable-transitions="true"
|
||||
:index="index"
|
||||
:type="getValidTagType(item.elTagType)"
|
||||
:class="item.elTagClass"
|
||||
>{{ item.label + " " }}</el-tag>
|
||||
>
|
||||
{{ item.label + " " }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</template>
|
||||
<template v-if="unmatch && showValue">
|
||||
|
||||
@@ -1,15 +1,33 @@
|
||||
<template>
|
||||
<div class="editor-container">
|
||||
<div>
|
||||
<el-upload :action="uploadUrl" :before-upload="handleBeforeUpload" :on-success="handleUploadSuccess"
|
||||
:on-error="handleUploadError" name="file" :show-file-list="false" :headers="headers" class="editor-img-uploader"
|
||||
v-if="type == 'url'">
|
||||
<i ref="uploadRef" class="editor-img-uploader"></i>
|
||||
<el-upload
|
||||
v-if="type == 'url'"
|
||||
:action="uploadUrl"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:on-success="handleUploadSuccess"
|
||||
:on-error="handleUploadError"
|
||||
name="file"
|
||||
:show-file-list="false"
|
||||
:headers="headers"
|
||||
class="editor-img-uploader"
|
||||
>
|
||||
<i
|
||||
ref="uploadRef"
|
||||
class="editor-img-uploader"
|
||||
/>
|
||||
</el-upload>
|
||||
</div>
|
||||
<div class="editor">
|
||||
<quill-editor ref="quillEditorRef" :content="content" @update:content="content = $event" contentType="html"
|
||||
@textChange="(e) => $emit('update:modelValue', content)" :options="options" :style="styles" />
|
||||
<quill-editor
|
||||
ref="quillEditorRef"
|
||||
:content="content"
|
||||
content-type="html"
|
||||
:options="options"
|
||||
:style="styles"
|
||||
@update:content="content = $event"
|
||||
@text-change="(e) => $emit('update:modelValue', content)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<div class="upload-file">
|
||||
<el-upload
|
||||
multiple
|
||||
ref="fileUpload"
|
||||
:action="uploadFileUrl"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:file-list="fileList"
|
||||
@@ -12,26 +13,52 @@
|
||||
:show-file-list="false"
|
||||
:headers="headers"
|
||||
class="upload-file-uploader"
|
||||
ref="fileUpload"
|
||||
>
|
||||
<!-- 上传按钮 -->
|
||||
<el-button type="primary">选取文件</el-button>
|
||||
<el-button type="primary">
|
||||
选取文件
|
||||
</el-button>
|
||||
</el-upload>
|
||||
<!-- 上传提示 -->
|
||||
<div class="el-upload__tip" v-if="showTip">
|
||||
<div
|
||||
v-if="showTip"
|
||||
class="el-upload__tip"
|
||||
>
|
||||
请上传
|
||||
<template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
|
||||
<template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
|
||||
<template v-if="fileSize">
|
||||
大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>
|
||||
</template>
|
||||
<template v-if="fileType">
|
||||
格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b>
|
||||
</template>
|
||||
的文件
|
||||
</div>
|
||||
<!-- 文件列表 -->
|
||||
<transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
|
||||
<li :key="file.uid" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
|
||||
<el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
|
||||
<transition-group
|
||||
class="upload-file-list el-upload-list el-upload-list--text"
|
||||
name="el-fade-in-linear"
|
||||
tag="ul"
|
||||
>
|
||||
<li
|
||||
v-for="(file, index) in fileList"
|
||||
:key="file.uid"
|
||||
class="el-upload-list__item ele-upload-list__item-content"
|
||||
>
|
||||
<el-link
|
||||
:href="`${baseUrl}${file.url}`"
|
||||
:underline="false"
|
||||
target="_blank"
|
||||
>
|
||||
<span class="el-icon-document"> {{ getFileName(file.name) }} </span>
|
||||
</el-link>
|
||||
<div class="ele-upload-list__item-content-action">
|
||||
<el-link :underline="false" @click="handleDelete(index)" type="danger">删除</el-link>
|
||||
<el-link
|
||||
:underline="false"
|
||||
type="danger"
|
||||
@click="handleDelete(index)"
|
||||
>
|
||||
删除
|
||||
</el-link>
|
||||
</div>
|
||||
</li>
|
||||
</transition-group>
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
<template>
|
||||
<div style="padding: 0 15px;" @click="toggleClick">
|
||||
<div
|
||||
style="padding: 0 15px;"
|
||||
@click="toggleClick"
|
||||
>
|
||||
<svg
|
||||
:class="{'is-active':isActive}"
|
||||
class="hamburger"
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<template>
|
||||
<div :class="{ show: show }" class="header-search">
|
||||
<svg-icon class-name="search-icon" icon-class="search" @click.stop="click" v-if="!show" />
|
||||
<div
|
||||
:class="{ show: show }"
|
||||
class="header-search"
|
||||
>
|
||||
<svg-icon
|
||||
v-if="!show"
|
||||
class-name="search-icon"
|
||||
icon-class="search"
|
||||
@click.stop="click"
|
||||
/>
|
||||
<el-select
|
||||
v-else
|
||||
ref="headerSearchSelectRef"
|
||||
|
||||
@@ -8,13 +8,24 @@
|
||||
@clear="filterIcons"
|
||||
@input="filterIcons"
|
||||
>
|
||||
<template #suffix><i class="el-icon-search el-input__icon" /></template>
|
||||
<template #suffix>
|
||||
<i class="el-icon-search el-input__icon" />
|
||||
</template>
|
||||
</el-input>
|
||||
<div class="icon-list">
|
||||
<div class="list-container">
|
||||
<div v-for="(item, index) in iconList" class="icon-item-wrapper" :key="index" @click="selectedIcon(item)">
|
||||
<div
|
||||
v-for="(item, index) in iconList"
|
||||
:key="index"
|
||||
class="icon-item-wrapper"
|
||||
@click="selectedIcon(item)"
|
||||
>
|
||||
<div :class="['icon-item', { active: activeIcon === item }]">
|
||||
<svg-icon :icon-class="item" class-name="icon" style="height: 25px;width: 16px;"/>
|
||||
<svg-icon
|
||||
:icon-class="item"
|
||||
class-name="icon"
|
||||
style="height: 25px;width: 16px;"
|
||||
/>
|
||||
<span>{{ item }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="component-upload-image">
|
||||
<el-upload
|
||||
ref="imageUpload"
|
||||
multiple
|
||||
:action="uploadImgUrl"
|
||||
list-type="picture-card"
|
||||
@@ -9,7 +10,6 @@
|
||||
:limit="limit"
|
||||
:on-error="handleUploadError"
|
||||
:on-exceed="handleExceed"
|
||||
ref="imageUpload"
|
||||
:before-remove="handleDelete"
|
||||
:show-file-list="true"
|
||||
:headers="headers"
|
||||
@@ -17,10 +17,15 @@
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:class="{ hide: fileList.length >= limit }"
|
||||
>
|
||||
<el-icon class="avatar-uploader-icon"><plus /></el-icon>
|
||||
<el-icon class="avatar-uploader-icon">
|
||||
<plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
<!-- 上传提示 -->
|
||||
<div class="el-upload__tip" v-if="showTip">
|
||||
<div
|
||||
v-if="showTip"
|
||||
class="el-upload__tip"
|
||||
>
|
||||
请上传
|
||||
<template v-if="fileSize">
|
||||
大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>
|
||||
@@ -40,7 +45,7 @@
|
||||
<img
|
||||
:src="dialogImageUrl"
|
||||
style="display: block; max-width: 100%; margin: 0 auto"
|
||||
/>
|
||||
>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<div v-if="$slots.header" class="page-header">
|
||||
<div
|
||||
v-if="$slots.header"
|
||||
class="page-header"
|
||||
>
|
||||
<slot name="header" />
|
||||
</div>
|
||||
<div class="page-content">
|
||||
<slot />
|
||||
</div>
|
||||
<div v-if="$slots.footer" class="page-footer">
|
||||
<div
|
||||
v-if="$slots.footer"
|
||||
class="page-footer"
|
||||
>
|
||||
<slot name="footer" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,20 +1,51 @@
|
||||
<template>
|
||||
<el-drawer v-model="noticeVisible" title="公告/通知" direction="rtl" size="400px" destroy-on-close>
|
||||
<el-empty v-if="noticeList.length === 0" description="暂无公告/通知" />
|
||||
<div v-else class="notice-list">
|
||||
<div v-for="item in noticeList" :key="item.noticeId" class="notice-item" :class="{ 'is-read': isRead(item.noticeId), 'unread': !isRead(item.noticeId) }" @click="viewDetail(item)">
|
||||
<el-drawer
|
||||
v-model="noticeVisible"
|
||||
title="公告/通知"
|
||||
direction="rtl"
|
||||
size="400px"
|
||||
destroy-on-close
|
||||
>
|
||||
<el-empty
|
||||
v-if="noticeList.length === 0"
|
||||
description="暂无公告/通知"
|
||||
/>
|
||||
<div
|
||||
v-else
|
||||
class="notice-list"
|
||||
>
|
||||
<div
|
||||
v-for="item in noticeList"
|
||||
:key="item.noticeId"
|
||||
class="notice-item"
|
||||
:class="{ 'is-read': isRead(item.noticeId), 'unread': !isRead(item.noticeId) }"
|
||||
@click="viewDetail(item)"
|
||||
>
|
||||
<div class="notice-title">
|
||||
<span v-if="!isRead(item.noticeId)" class="unread-dot"></span>
|
||||
<span
|
||||
v-if="!isRead(item.noticeId)"
|
||||
class="unread-dot"
|
||||
/>
|
||||
{{ item.noticeTitle }}
|
||||
</div>
|
||||
<div class="notice-info">
|
||||
<span class="notice-type">
|
||||
<el-tag :type="getNoticeTypeTagType(item.noticeType)" size="small">
|
||||
<el-tag
|
||||
:type="getNoticeTypeTagType(item.noticeType)"
|
||||
size="small"
|
||||
>
|
||||
{{ getNoticeTypeText(item.noticeType) }}
|
||||
</el-tag>
|
||||
</span>
|
||||
<span class="notice-priority" v-if="item.priority">
|
||||
<el-tag :type="getPriorityTagType(item.priority)" size="small" effect="plain">
|
||||
<span
|
||||
v-if="item.priority"
|
||||
class="notice-priority"
|
||||
>
|
||||
<el-tag
|
||||
:type="getPriorityTagType(item.priority)"
|
||||
size="small"
|
||||
effect="plain"
|
||||
>
|
||||
{{ getPriorityText(item.priority) }}
|
||||
</el-tag>
|
||||
</span>
|
||||
@@ -24,23 +55,41 @@
|
||||
</div>
|
||||
|
||||
<!-- 公告/通知详情对话框 -->
|
||||
<el-dialog v-model="detailVisible" :title="currentNotice.noticeTitle" width="800px" append-to-body>
|
||||
<el-dialog
|
||||
v-model="detailVisible"
|
||||
:title="currentNotice.noticeTitle"
|
||||
width="800px"
|
||||
append-to-body
|
||||
>
|
||||
<div class="notice-detail">
|
||||
<div class="detail-header">
|
||||
<div class="detail-type">
|
||||
<el-tag :type="getNoticeTypeTagType(currentNotice.noticeType)" size="small">
|
||||
<el-tag
|
||||
:type="getNoticeTypeTagType(currentNotice.noticeType)"
|
||||
size="small"
|
||||
>
|
||||
{{ getNoticeTypeText(currentNotice.noticeType) }}
|
||||
</el-tag>
|
||||
<el-tag :type="getPriorityTagType(currentNotice.priority)" size="small" effect="plain" style="margin-left: 8px;">
|
||||
<el-tag
|
||||
:type="getPriorityTagType(currentNotice.priority)"
|
||||
size="small"
|
||||
effect="plain"
|
||||
style="margin-left: 8px;"
|
||||
>
|
||||
{{ getPriorityText(currentNotice.priority) }}
|
||||
</el-tag>
|
||||
</div>
|
||||
<span class="detail-time">{{ parseTime(currentNotice.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
|
||||
</div>
|
||||
<div class="detail-content" v-html="currentNotice.noticeContent"></div>
|
||||
<div
|
||||
class="detail-content"
|
||||
v-html="currentNotice.noticeContent"
|
||||
/>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="detailVisible = false">关闭</el-button>
|
||||
<el-button @click="detailVisible = false">
|
||||
关闭
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</el-drawer>
|
||||
|
||||
@@ -13,7 +13,12 @@
|
||||
<div class="notice-list">
|
||||
<div class="notice-list-header">
|
||||
<span class="notice-list-title">公告列表</span>
|
||||
<el-button text type="primary" @click="markAllAsRead" v-if="unreadCount > 0">
|
||||
<el-button
|
||||
v-if="unreadCount > 0"
|
||||
text
|
||||
type="primary"
|
||||
@click="markAllAsRead"
|
||||
>
|
||||
全部标记为已读
|
||||
</el-button>
|
||||
</div>
|
||||
@@ -26,7 +31,10 @@
|
||||
@click="handleSelectNotice(notice)"
|
||||
>
|
||||
<div class="notice-item-left">
|
||||
<el-icon class="notice-type-icon" :class="getNoticeTypeClass(notice.noticeType)">
|
||||
<el-icon
|
||||
class="notice-type-icon"
|
||||
:class="getNoticeTypeClass(notice.noticeType)"
|
||||
>
|
||||
<component :is="getNoticeTypeIcon(notice.noticeType)" />
|
||||
</el-icon>
|
||||
<div class="notice-item-content">
|
||||
@@ -39,7 +47,14 @@
|
||||
{{ getPriorityText(notice.priority) }}
|
||||
</el-tag>
|
||||
<span class="notice-title-text">{{ notice.noticeTitle }}</span>
|
||||
<el-tag v-if="!notice.isRead" type="danger" size="small" effect="dark">未读</el-tag>
|
||||
<el-tag
|
||||
v-if="!notice.isRead"
|
||||
type="danger"
|
||||
size="small"
|
||||
effect="dark"
|
||||
>
|
||||
未读
|
||||
</el-tag>
|
||||
</div>
|
||||
<div class="notice-meta">
|
||||
<span class="notice-date">{{ formatDate(notice.createTime) }}</span>
|
||||
@@ -47,45 +62,77 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-icon class="arrow-icon" v-if="activeNoticeId === notice.noticeId">
|
||||
<el-icon
|
||||
v-if="activeNoticeId === notice.noticeId"
|
||||
class="arrow-icon"
|
||||
>
|
||||
<ArrowRight />
|
||||
</el-icon>
|
||||
</div>
|
||||
|
||||
<!-- 空状态 -->
|
||||
<div v-if="noticeList.length === 0" class="empty-state">
|
||||
<el-empty description="暂无公告" :image-size="100" />
|
||||
<div
|
||||
v-if="noticeList.length === 0"
|
||||
class="empty-state"
|
||||
>
|
||||
<el-empty
|
||||
description="暂无公告"
|
||||
:image-size="100"
|
||||
/>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
|
||||
<!-- 公告详情 -->
|
||||
<div class="notice-detail" v-if="activeNotice">
|
||||
<div
|
||||
v-if="activeNotice"
|
||||
class="notice-detail"
|
||||
>
|
||||
<div class="notice-detail-header">
|
||||
<h3 class="notice-detail-title">{{ activeNotice.noticeTitle }}</h3>
|
||||
<h3 class="notice-detail-title">
|
||||
{{ activeNotice.noticeTitle }}
|
||||
</h3>
|
||||
<div class="notice-detail-meta">
|
||||
<el-tag :type="getPriorityTagType(activeNotice.priority)" size="small" effect="dark">
|
||||
<el-tag
|
||||
:type="getPriorityTagType(activeNotice.priority)"
|
||||
size="small"
|
||||
effect="dark"
|
||||
>
|
||||
{{ getPriorityText(activeNotice.priority) }}
|
||||
</el-tag>
|
||||
<el-tag :type="getNoticeTypeTagType(activeNotice.noticeType)" size="small">
|
||||
<el-tag
|
||||
:type="getNoticeTypeTagType(activeNotice.noticeType)"
|
||||
size="small"
|
||||
>
|
||||
{{ getNoticeTypeText(activeNotice.noticeType) }}
|
||||
</el-tag>
|
||||
<span class="notice-detail-date">{{ formatFullDate(activeNotice.createTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<el-divider />
|
||||
<div class="notice-detail-body" v-html="activeNotice.noticeContent"></div>
|
||||
<div
|
||||
class="notice-detail-body"
|
||||
v-html="activeNotice.noticeContent"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 未选择状态 -->
|
||||
<div v-else class="no-selection">
|
||||
<el-empty description="请选择公告查看详情" :image-size="120" />
|
||||
<div
|
||||
v-else
|
||||
class="no-selection"
|
||||
>
|
||||
<el-empty
|
||||
description="请选择公告查看详情"
|
||||
:image-size="120"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="handleClose">关闭</el-button>
|
||||
<el-button @click="handleClose">
|
||||
关闭
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
@@ -21,7 +21,10 @@
|
||||
@click="handleSelectNotice(notice)"
|
||||
>
|
||||
<div class="notice-item-left">
|
||||
<el-icon class="notice-type-icon" :class="getNoticeTypeClass(notice.noticeType)">
|
||||
<el-icon
|
||||
class="notice-type-icon"
|
||||
:class="getNoticeTypeClass(notice.noticeType)"
|
||||
>
|
||||
<component :is="getNoticeTypeIcon(notice.noticeType)" />
|
||||
</el-icon>
|
||||
<div class="notice-item-content">
|
||||
@@ -34,7 +37,14 @@
|
||||
{{ getPriorityText(notice.priority) }}
|
||||
</el-tag>
|
||||
<span class="notice-title-text">{{ notice.noticeTitle }}</span>
|
||||
<el-tag v-if="!notice.isRead" type="danger" size="small" effect="dark">未读</el-tag>
|
||||
<el-tag
|
||||
v-if="!notice.isRead"
|
||||
type="danger"
|
||||
size="small"
|
||||
effect="dark"
|
||||
>
|
||||
未读
|
||||
</el-tag>
|
||||
</div>
|
||||
<div class="notice-meta">
|
||||
<span class="notice-date">{{ formatDate(notice.createTime) }}</span>
|
||||
@@ -42,7 +52,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-icon class="arrow-icon" v-if="activeNoticeId === notice.noticeId">
|
||||
<el-icon
|
||||
v-if="activeNoticeId === notice.noticeId"
|
||||
class="arrow-icon"
|
||||
>
|
||||
<ArrowRight />
|
||||
</el-icon>
|
||||
</div>
|
||||
@@ -50,35 +63,63 @@
|
||||
</div>
|
||||
|
||||
<!-- 公告详情 -->
|
||||
<div class="notice-detail" v-if="activeNotice">
|
||||
<div
|
||||
v-if="activeNotice"
|
||||
class="notice-detail"
|
||||
>
|
||||
<div class="notice-detail-header">
|
||||
<h3 class="notice-detail-title">{{ activeNotice.noticeTitle }}</h3>
|
||||
<h3 class="notice-detail-title">
|
||||
{{ activeNotice.noticeTitle }}
|
||||
</h3>
|
||||
<div class="notice-detail-meta">
|
||||
<el-tag :type="getPriorityTagType(activeNotice.priority)" size="small" effect="dark">
|
||||
<el-tag
|
||||
:type="getPriorityTagType(activeNotice.priority)"
|
||||
size="small"
|
||||
effect="dark"
|
||||
>
|
||||
{{ getPriorityText(activeNotice.priority) }}
|
||||
</el-tag>
|
||||
<el-tag :type="getNoticeTypeTagType(activeNotice.noticeType)" size="small">
|
||||
<el-tag
|
||||
:type="getNoticeTypeTagType(activeNotice.noticeType)"
|
||||
size="small"
|
||||
>
|
||||
{{ getNoticeTypeText(activeNotice.noticeType) }}
|
||||
</el-tag>
|
||||
<span class="notice-detail-date">{{ formatDate(activeNotice.createTime) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<el-divider />
|
||||
<div class="notice-detail-body" v-html="activeNotice.noticeContent"></div>
|
||||
<div
|
||||
class="notice-detail-body"
|
||||
v-html="activeNotice.noticeContent"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 空状态 -->
|
||||
<div v-else class="empty-state">
|
||||
<el-empty description="暂无公告" :image-size="120" />
|
||||
<div
|
||||
v-else
|
||||
class="empty-state"
|
||||
>
|
||||
<el-empty
|
||||
description="暂无公告"
|
||||
:image-size="120"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="markAllAsRead" v-if="unreadCount > 0" type="info">
|
||||
<el-button
|
||||
v-if="unreadCount > 0"
|
||||
type="info"
|
||||
@click="markAllAsRead"
|
||||
>
|
||||
全部标记为已读
|
||||
</el-button>
|
||||
<el-button type="primary" @click="handleClose">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleClose"
|
||||
>
|
||||
{{ hasUnread ? '稍后再看' : '知道了' }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div>
|
||||
<svg-icon icon-class="question" @click="goto" />
|
||||
<svg-icon
|
||||
icon-class="question"
|
||||
@click="goto"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="药品追溯码"
|
||||
v-model="props.openDialog"
|
||||
title="药品追溯码"
|
||||
width="842"
|
||||
append-to-body
|
||||
destroy-on-close
|
||||
@@ -15,13 +15,15 @@
|
||||
>
|
||||
<div>
|
||||
<div style="font-size: 16px">
|
||||
<div style="margin-bottom: 15px">药品名称: {{ props.ypName }}</div>
|
||||
<div style="margin-bottom: 15px">
|
||||
药品名称: {{ props.ypName }}
|
||||
</div>
|
||||
扫描追溯码
|
||||
<el-input
|
||||
ref="traceNoTempRef"
|
||||
v-model="traceNoTemp"
|
||||
type="textarea"
|
||||
:rows="1"
|
||||
v-model="traceNoTemp"
|
||||
style="width: 180px; margin-right: 20px"
|
||||
@input="throttledGetList(traceNoTemp)"
|
||||
/>
|
||||
@@ -31,8 +33,22 @@
|
||||
style="width: 180px; margin-right: 20px"
|
||||
@keyup.enter="handelTraceNo(traceNoInput)"
|
||||
/>
|
||||
<el-button type="primary" plain icon="CircleClose" @click="handleReturn"> 撤回 </el-button>
|
||||
<el-button type="danger" plain icon="CircleClose" @click="handleClear"> 清除 </el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="CircleClose"
|
||||
@click="handleReturn"
|
||||
>
|
||||
撤回
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="CircleClose"
|
||||
@click="handleClear"
|
||||
>
|
||||
清除
|
||||
</el-button>
|
||||
</div>
|
||||
<!-- <el-input
|
||||
ref="inputRef"
|
||||
@@ -69,11 +85,10 @@
|
||||
<span style="margin-right: 6px">
|
||||
[{{ index + 1 }}]
|
||||
<template v-if="index < 9"> </template>
|
||||
<template v-else></template>
|
||||
<template v-else />
|
||||
{{ item }}
|
||||
</span>
|
||||
<div
|
||||
@click="removeTraceNo(index)"
|
||||
style="
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -84,8 +99,12 @@
|
||||
border-radius: 50%;
|
||||
cursor: pointer;
|
||||
"
|
||||
@click="removeTraceNo(index)"
|
||||
>
|
||||
<el-icon size="10" color="white">
|
||||
<el-icon
|
||||
size="10"
|
||||
color="white"
|
||||
>
|
||||
<Close />
|
||||
</el-icon>
|
||||
</div>
|
||||
@@ -98,8 +117,15 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submit">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submit"
|
||||
>
|
||||
确 定
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
@@ -6,7 +6,11 @@
|
||||
trigger="manual"
|
||||
:width="width"
|
||||
>
|
||||
<slot name="popover-content" :row="row" :index="index">
|
||||
<slot
|
||||
name="popover-content"
|
||||
:row="row"
|
||||
:index="index"
|
||||
>
|
||||
<div>列表内容</div>
|
||||
</slot>
|
||||
<template #reference>
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
<template>
|
||||
<div :class="{ 'hidden': hidden }" class="pagination-container">
|
||||
<div
|
||||
:class="{ 'hidden': hidden }"
|
||||
class="pagination-container"
|
||||
>
|
||||
<el-pagination
|
||||
:background="background"
|
||||
v-model:current-page="currentPage"
|
||||
v-model:page-size="pageSize"
|
||||
:background="background"
|
||||
:layout="layout"
|
||||
:page-sizes="pageSizes"
|
||||
:pager-count="pagerCount"
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<template >
|
||||
<template>
|
||||
<router-view />
|
||||
</template>
|
||||
|
||||
@@ -1,21 +1,69 @@
|
||||
<template>
|
||||
<div class="top-right-btn" :style="style">
|
||||
<div
|
||||
class="top-right-btn"
|
||||
:style="style"
|
||||
>
|
||||
<el-row>
|
||||
<el-tooltip class="item" effect="dark" :content="showSearch ? '隐藏搜索' : '显示搜索'" placement="top" v-if="search">
|
||||
<el-button circle icon="Search" @click="toggleSearch()" />
|
||||
<el-tooltip
|
||||
v-if="search"
|
||||
class="item"
|
||||
effect="dark"
|
||||
:content="showSearch ? '隐藏搜索' : '显示搜索'"
|
||||
placement="top"
|
||||
>
|
||||
<el-button
|
||||
circle
|
||||
icon="Search"
|
||||
@click="toggleSearch()"
|
||||
/>
|
||||
</el-tooltip>
|
||||
<el-tooltip class="item" effect="dark" content="刷新" placement="top">
|
||||
<el-button circle icon="Refresh" @click="refresh()" />
|
||||
<el-tooltip
|
||||
class="item"
|
||||
effect="dark"
|
||||
content="刷新"
|
||||
placement="top"
|
||||
>
|
||||
<el-button
|
||||
circle
|
||||
icon="Refresh"
|
||||
@click="refresh()"
|
||||
/>
|
||||
</el-tooltip>
|
||||
<el-tooltip class="item" effect="dark" content="显隐列" placement="top" v-if="columns">
|
||||
<el-button circle icon="Menu" @click="showColumn()" v-if="showColumnsType == 'transfer'"/>
|
||||
<el-dropdown trigger="click" :hide-on-click="false" style="padding-left: 12px" v-if="showColumnsType == 'checkbox'">
|
||||
<el-button circle icon="Menu" />
|
||||
<el-tooltip
|
||||
v-if="columns"
|
||||
class="item"
|
||||
effect="dark"
|
||||
content="显隐列"
|
||||
placement="top"
|
||||
>
|
||||
<el-button
|
||||
v-if="showColumnsType == 'transfer'"
|
||||
circle
|
||||
icon="Menu"
|
||||
@click="showColumn()"
|
||||
/>
|
||||
<el-dropdown
|
||||
v-if="showColumnsType == 'checkbox'"
|
||||
trigger="click"
|
||||
:hide-on-click="false"
|
||||
style="padding-left: 12px"
|
||||
>
|
||||
<el-button
|
||||
circle
|
||||
icon="Menu"
|
||||
/>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<template v-for="item in columns" :key="item.key">
|
||||
<template
|
||||
v-for="item in columns"
|
||||
:key="item.key"
|
||||
>
|
||||
<el-dropdown-item>
|
||||
<el-checkbox :checked="item.visible" @change="checkboxChange($event, item.label)" :label="item.label" />
|
||||
<el-checkbox
|
||||
:checked="item.visible"
|
||||
:label="item.label"
|
||||
@change="checkboxChange($event, item.label)"
|
||||
/>
|
||||
</el-dropdown-item>
|
||||
</template>
|
||||
</el-dropdown-menu>
|
||||
@@ -23,13 +71,17 @@
|
||||
</el-dropdown>
|
||||
</el-tooltip>
|
||||
</el-row>
|
||||
<el-dialog :title="title" v-model="open" append-to-body>
|
||||
<el-dialog
|
||||
v-model="open"
|
||||
:title="title"
|
||||
append-to-body
|
||||
>
|
||||
<el-transfer
|
||||
:titles="['显示', '隐藏']"
|
||||
v-model="value"
|
||||
:titles="['显示', '隐藏']"
|
||||
:data="columns"
|
||||
@change="dataChange"
|
||||
></el-transfer>
|
||||
/>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div>
|
||||
<svg-icon :icon-class="isFullscreen ? 'exit-fullscreen' : 'fullscreen'" @click="toggle" />
|
||||
<svg-icon
|
||||
:icon-class="isFullscreen ? 'exit-fullscreen' : 'fullscreen'"
|
||||
@click="toggle"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dropdown trigger="click" @command="handleSetSize">
|
||||
<el-dropdown
|
||||
trigger="click"
|
||||
@command="handleSetSize"
|
||||
>
|
||||
<div class="size-icon--style">
|
||||
<svg-icon class-name="size-icon" icon-class="size" />
|
||||
<svg-icon
|
||||
class-name="size-icon"
|
||||
icon-class="size"
|
||||
/>
|
||||
</div>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item v-for="item of sizeOptions" :key="item.value" :disabled="size === item.value" :command="item.value">
|
||||
<el-dropdown-item
|
||||
v-for="item of sizeOptions"
|
||||
:key="item.value"
|
||||
:disabled="size === item.value"
|
||||
:command="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
<template>
|
||||
<svg :class="svgClass" aria-hidden="true">
|
||||
<use :xlink:href="iconName" :fill="color" />
|
||||
<svg
|
||||
:class="svgClass"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<use
|
||||
:xlink:href="iconName"
|
||||
:fill="color"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,8 +1,22 @@
|
||||
<template>
|
||||
<div class="table-section" v-loading="loading">
|
||||
<EditableTable ref="editableTableRef" v-bind="$attrs" class="editable-table">
|
||||
<template v-for="(_, slotName) in $slots" :key="slotName" #[slotName]="slotProps">
|
||||
<slot :name="slotName" v-bind="slotProps" />
|
||||
<div
|
||||
v-loading="loading"
|
||||
class="table-section"
|
||||
>
|
||||
<EditableTable
|
||||
ref="editableTableRef"
|
||||
v-bind="$attrs"
|
||||
class="editable-table"
|
||||
>
|
||||
<template
|
||||
v-for="(_, slotName) in $slots"
|
||||
:key="slotName"
|
||||
#[slotName]="slotProps"
|
||||
>
|
||||
<slot
|
||||
:name="slotName"
|
||||
v-bind="slotProps"
|
||||
/>
|
||||
</template>
|
||||
</EditableTable>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,18 @@
|
||||
<template>
|
||||
<div class="form-section">
|
||||
<FormLayout ref="formLayoutRef" v-bind="$attrs">
|
||||
<template v-for="(_, slotName) in $slots" :key="slotName" #[slotName]="slotProps">
|
||||
<slot :name="slotName" v-bind="slotProps" />
|
||||
<FormLayout
|
||||
ref="formLayoutRef"
|
||||
v-bind="$attrs"
|
||||
>
|
||||
<template
|
||||
v-for="(_, slotName) in $slots"
|
||||
:key="slotName"
|
||||
#[slotName]="slotProps"
|
||||
>
|
||||
<slot
|
||||
:name="slotName"
|
||||
v-bind="slotProps"
|
||||
/>
|
||||
</template>
|
||||
</FormLayout>
|
||||
</div>
|
||||
|
||||
@@ -8,7 +8,12 @@
|
||||
@blur="handleBlur"
|
||||
@change="handleChange"
|
||||
>
|
||||
<template v-if="suffix" #suffix>{{ suffix }}</template>
|
||||
<template
|
||||
v-if="suffix"
|
||||
#suffix
|
||||
>
|
||||
{{ suffix }}
|
||||
</template>
|
||||
</el-input>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -5,7 +5,10 @@
|
||||
<slot />
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="$slots.footer" #footer>
|
||||
<template
|
||||
v-if="$slots.footer"
|
||||
#footer
|
||||
>
|
||||
<slot name="footer" />
|
||||
</template>
|
||||
</Layout>
|
||||
|
||||
@@ -2,20 +2,28 @@
|
||||
<el-menu
|
||||
:default-active="activeMenu"
|
||||
mode="horizontal"
|
||||
@select="handleSelect"
|
||||
:ellipsis="false"
|
||||
@select="handleSelect"
|
||||
>
|
||||
<template v-for="(item, index) in topMenus">
|
||||
<!-- 处理有子菜单的情况 -->
|
||||
<template v-if="item.children && item.children.length > 0 && index < visibleNumber">
|
||||
<el-sub-menu :style="{'--theme': theme}" :index="item.path" :key="index">
|
||||
<el-sub-menu
|
||||
:key="index"
|
||||
:style="{'--theme': theme}"
|
||||
:index="item.path"
|
||||
>
|
||||
<template #title>
|
||||
<svg-icon
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"/>
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"
|
||||
/>
|
||||
{{ item.meta.title }}
|
||||
</template>
|
||||
<template v-for="(child, childIndex) in item.children" :key="childIndex">
|
||||
<template
|
||||
v-for="(child, childIndex) in item.children"
|
||||
:key="childIndex"
|
||||
>
|
||||
<el-menu-item :index="item.path + '/' + (child.path || '')">
|
||||
{{ child.meta.title }}
|
||||
</el-menu-item>
|
||||
@@ -24,29 +32,47 @@
|
||||
</template>
|
||||
<!-- 处理无子菜单的情况 -->
|
||||
<template v-else-if="index < visibleNumber">
|
||||
<el-menu-item :style="{'--theme': theme}" :index="item.path" :key="index">
|
||||
<el-menu-item
|
||||
:key="index"
|
||||
:style="{'--theme': theme}"
|
||||
:index="item.path"
|
||||
>
|
||||
<svg-icon
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"/>
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"
|
||||
/>
|
||||
{{ item.meta.title }}
|
||||
</el-menu-item>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<!-- 顶部菜单超出数量折叠 -->
|
||||
<el-sub-menu :style="{'--theme': theme}" index="more" v-if="topMenus.length > visibleNumber">
|
||||
<template #title>更多菜单</template>
|
||||
<template v-for="(item, index) in topMenus" :key="index">
|
||||
<el-sub-menu
|
||||
v-if="topMenus.length > visibleNumber"
|
||||
:style="{'--theme': theme}"
|
||||
index="more"
|
||||
>
|
||||
<template #title>
|
||||
更多菜单
|
||||
</template>
|
||||
<template
|
||||
v-for="(item, index) in topMenus"
|
||||
:key="index"
|
||||
>
|
||||
<!-- 处理有子菜单的情况 -->
|
||||
<template v-if="item.children && item.children.length > 0 && index >= visibleNumber">
|
||||
<el-sub-menu :index="item.path">
|
||||
<template #title>
|
||||
<svg-icon
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"/>
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"
|
||||
/>
|
||||
{{ item.meta.title }}
|
||||
</template>
|
||||
<template v-for="(child, childIndex) in item.children" :key="childIndex">
|
||||
<template
|
||||
v-for="(child, childIndex) in item.children"
|
||||
:key="childIndex"
|
||||
>
|
||||
<el-menu-item :index="item.path + '/' + (child.path || '')">
|
||||
{{ child.meta.title }}
|
||||
</el-menu-item>
|
||||
@@ -57,8 +83,9 @@
|
||||
<template v-else-if="index >= visibleNumber">
|
||||
<el-menu-item :index="item.path">
|
||||
<svg-icon
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"/>
|
||||
v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
|
||||
:icon-class="item.meta.icon"
|
||||
/>
|
||||
{{ item.meta.title }}
|
||||
</el-menu-item>
|
||||
</template>
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
<template>
|
||||
<div class="el-tree-select">
|
||||
<el-select
|
||||
style="width: 100%"
|
||||
v-model="valueId"
|
||||
ref="treeSelect"
|
||||
v-model="valueId"
|
||||
style="width: 100%"
|
||||
:filterable="true"
|
||||
:clearable="true"
|
||||
@clear="clearHandle"
|
||||
:filter-method="selectFilterData"
|
||||
:placeholder="placeholder"
|
||||
@clear="clearHandle"
|
||||
>
|
||||
<el-option :value="valueId" :label="valueTitle">
|
||||
<el-option
|
||||
:value="valueId"
|
||||
:label="valueTitle"
|
||||
>
|
||||
<el-tree
|
||||
id="tree-option"
|
||||
ref="selectTree"
|
||||
@@ -22,7 +25,7 @@
|
||||
:default-expanded-keys="defaultExpandedKey"
|
||||
:filter-node-method="filterNode"
|
||||
@node-click="handleNodeClick"
|
||||
></el-tree>
|
||||
/>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
<template>
|
||||
<div v-loading="loading" :style="'height:' + height">
|
||||
<div
|
||||
v-loading="loading"
|
||||
:style="'height:' + height"
|
||||
>
|
||||
<iframe
|
||||
:src="url"
|
||||
frameborder="no"
|
||||
style="width: 100%; height: 100%"
|
||||
scrolling="auto" />
|
||||
scrolling="auto"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -4,7 +4,11 @@
|
||||
* @Description:
|
||||
-->
|
||||
<template>
|
||||
<div class="ball-tag" v-show="tagId" :style="{ backgroundColor: _tag?.color }">
|
||||
<div
|
||||
v-show="tagId"
|
||||
class="ball-tag"
|
||||
:style="{ backgroundColor: _tag?.color }"
|
||||
>
|
||||
{{ _tag?.name }}
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user