feat: 疗休养优化站内消息发送
This commit is contained in:
+7
-1
@@ -10,6 +10,8 @@ import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.ioc.impl.PropertiesProxy;
|
||||
import org.nutz.lang.Strings;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -24,6 +26,8 @@ public class SmsMessageSendStrategy implements GlobalMessageSendStrategy {
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private SmsService smsService;
|
||||
@Inject
|
||||
private PropertiesProxy conf;
|
||||
|
||||
@Override
|
||||
public GlobalMessageChannel getChannel() {
|
||||
@@ -118,7 +122,9 @@ public class SmsMessageSendStrategy implements GlobalMessageSendStrategy {
|
||||
|
||||
// 限制短信长度(一般短信限制70个字符)
|
||||
String smsContent = sb.toString();
|
||||
if (smsContent.length() > 67) {
|
||||
boolean intelligenceMode = Strings.isNotBlank(conf.get("custom.msg.platform.app-id"))
|
||||
&& conf.getBoolean("msg.platform.IntelligenceMode", false);
|
||||
if (!intelligenceMode && smsContent.length() > 67) {
|
||||
smsContent = smsContent.substring(0, 67) + "...";
|
||||
}
|
||||
|
||||
|
||||
+10
@@ -10,6 +10,8 @@ import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.ioc.impl.PropertiesProxy;
|
||||
import org.nutz.lang.Strings;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -24,12 +26,20 @@ public class WechatMessageSendStrategy implements GlobalMessageSendStrategy {
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private SmsService smsService;
|
||||
@Inject
|
||||
private PropertiesProxy conf;
|
||||
|
||||
@Override
|
||||
public GlobalMessageChannel getChannel() {
|
||||
return GlobalMessageChannel.WECHAT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return !(Strings.isNotBlank(conf.get("custom.msg.platform.app-id"))
|
||||
&& conf.getBoolean("msg.platform.IntelligenceMode", false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportAsync() {
|
||||
return true;
|
||||
|
||||
@@ -34,7 +34,7 @@ sdk:
|
||||
appSecret: a65cec4fb69980bd88258fc8433a3eef
|
||||
redirectUri: /platform/wx/oauth2/callback
|
||||
cas:
|
||||
enable: true
|
||||
enable: false
|
||||
server-url-prefix: https://authserver.zjnu.edu.cn/authserver
|
||||
server-login-url: https://authserver.zjnu.edu.cn/authserver/login
|
||||
qi-wx-server-login-url: https://authserver.zjnu.edu.cn/authserver/login
|
||||
|
||||
@@ -68,7 +68,7 @@ custom:
|
||||
msg:
|
||||
platform:
|
||||
enabled: true
|
||||
IntelligenceMode: false
|
||||
IntelligenceMode: true
|
||||
app-id: 'MSG45363193'
|
||||
app-password: 'OGQxNzVmOTJkZjM5NzJhZDg1MDNiZGM0MDQ5ZTJlNDY'
|
||||
base-url: http://xxt.zjnu.edu.cn
|
||||
|
||||
@@ -46,7 +46,7 @@ Vue.component('more', {
|
||||
}
|
||||
})
|
||||
|
||||
Vue.component('table-tool', {
|
||||
Vue.component('therapy-table-tool', {
|
||||
props: {
|
||||
label: {type: String},
|
||||
app: {}
|
||||
@@ -127,3 +127,4 @@ Vue.component('table-tool', {
|
||||
</el-row>
|
||||
`,
|
||||
})
|
||||
Vue.component('table-tool', Vue.options.components['therapy-table-tool'])
|
||||
|
||||
+1
-1
@@ -71,7 +71,7 @@
|
||||
<div v-if="familyCards" class="therapy-family-list">
|
||||
<div v-for="(item, index) in viewData.companionList" :key="item.id || index" class="therapy-family-card">
|
||||
<div class="therapy-family-title">家属 {{ index + 1 }} · {{ item.userName }}</div>
|
||||
<el-descriptions :column="3" border class="therapy-family-details">
|
||||
<el-descriptions :column="2" border class="therapy-family-details">
|
||||
<el-descriptions-item label="姓名">{{ item.userName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{ item.sex }}</el-descriptions-item>
|
||||
<el-descriptions-item label="关系">{{ item.relation }}</el-descriptions-item>
|
||||
|
||||
+100
-23
@@ -115,11 +115,79 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
.therapy-query-view-dialog .el-dialog__body,
|
||||
.therapy-query-edit-dialog .el-dialog__body {
|
||||
padding: 16px 24px;
|
||||
.therapy-query-view-dialog,
|
||||
.therapy-query-edit-dialog {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
max-width: 1440px;
|
||||
max-height: calc(100vh - 100px);
|
||||
margin-top: 50px !important;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog > .el-dialog__header,
|
||||
.therapy-query-view-dialog > .el-dialog__footer,
|
||||
.therapy-query-edit-dialog > .el-dialog__header,
|
||||
.therapy-query-edit-dialog > .el-dialog__footer {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog > .el-dialog__body,
|
||||
.therapy-query-edit-dialog > .el-dialog__body {
|
||||
min-height: 0;
|
||||
padding: 20px 24px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .panel {
|
||||
margin: 0 0 20px;
|
||||
overflow: hidden;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .panel-heading {
|
||||
padding: 12px 16px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .panel-title {
|
||||
margin: 0;
|
||||
color: #303133;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .panel-body {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .el-descriptions-item__label,
|
||||
.therapy-query-edit-dialog .el-descriptions-item__label {
|
||||
color: #606266;
|
||||
font-weight: 400;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .el-descriptions-item__content,
|
||||
.therapy-query-edit-dialog .el-descriptions-item__content {
|
||||
padding: 12px 16px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.therapy-query-edit-dialog .el-form-item__label {
|
||||
color: #606266;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.therapy-query-edit-dialog .therapy-edit-family > .el-form-item__label {
|
||||
display: block;
|
||||
float: none;
|
||||
width: auto !important;
|
||||
margin-bottom: 12px;
|
||||
text-align: left;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
|
||||
.therapy-query-view-dialog .viewTable .el-descriptions__table {
|
||||
table-layout: fixed;
|
||||
}
|
||||
@@ -135,6 +203,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
}
|
||||
|
||||
.therapy-query-edit-dialog .therapy-edit-family > .el-form-item__content {
|
||||
margin-left: 0 !important;
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
@@ -172,24 +241,32 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
@media (max-width: 1000px) {
|
||||
.therapy-query-view-dialog,
|
||||
.therapy-query-edit-dialog {
|
||||
width: 96% !important;
|
||||
width: 94% !important;
|
||||
}
|
||||
|
||||
.therapy-query-edit-dialog .el-form > .el-row > .el-col {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .therapy-family-list,
|
||||
.therapy-query-edit-dialog .therapy-family-list {
|
||||
overflow-x: auto;
|
||||
.therapy-query-view-dialog .el-descriptions__row,
|
||||
.therapy-query-edit-dialog .therapy-family-details .el-descriptions__row {
|
||||
display: grid;
|
||||
grid-template-columns: 120px minmax(0, 1fr);
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .therapy-family-card,
|
||||
.therapy-query-edit-dialog .therapy-family-card {
|
||||
min-width: 660px;
|
||||
.therapy-query-view-dialog .viewTable .el-descriptions-item__label,
|
||||
.therapy-query-view-dialog .therapy-family-details .el-descriptions-item__label,
|
||||
.therapy-query-edit-dialog .therapy-family-details .el-descriptions-item__label {
|
||||
width: auto;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .el-descriptions-item__content,
|
||||
.therapy-query-edit-dialog .el-descriptions-item__content {
|
||||
min-width: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -959,40 +1036,40 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
width="80%" top="50px">
|
||||
<el-form :model="editFormData" label-width="120px" :rules="rules" ref="editForm" style="margin-right: 40px">
|
||||
<el-row>
|
||||
<el-col span="12">
|
||||
<el-form :model="editFormData" label-width="120px" :rules="rules" ref="editForm">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="loginName" label="工号">
|
||||
<el-input v-model="editFormData.loginName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col span="12">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="userName" label="姓名">
|
||||
<el-input v-model="editFormData.userName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col span="12">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="userName" label="手机号">
|
||||
<el-input v-model="editFormData.mobile" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col span="12">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="userName" label="身份证号">
|
||||
<el-input v-model="editFormData.idCard" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col span="12">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="unionName" label="工会">
|
||||
<el-input v-model="editFormData.unionName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col span="12">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="unitName" label="单位">
|
||||
<el-input v-model="editFormData.unitName" readonly></el-input>
|
||||
</el-form-item>
|
||||
@@ -1004,7 +1081,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<div class="therapy-family-list">
|
||||
<div v-for="(item, index) in editFormData.companionList" :key="item.id || index" class="therapy-family-card">
|
||||
<div class="therapy-family-title">家属 {{ index + 1 }} · {{ item.userName }}</div>
|
||||
<el-descriptions :column="3" border class="therapy-family-details">
|
||||
<el-descriptions :column="2" border class="therapy-family-details">
|
||||
<el-descriptions-item label="姓名">{{ item.userName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{ item.sex }}</el-descriptions-item>
|
||||
<el-descriptions-item label="关系">{{ item.relation }}</el-descriptions-item>
|
||||
@@ -1171,7 +1248,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'enroll-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/Enrollinfo.vue?v=1.0.2'),
|
||||
'enroll-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/Enrollinfo.vue?v=1.0.3'),
|
||||
'line-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/LineInfo.vue')
|
||||
},
|
||||
methods: {
|
||||
|
||||
+65
-38
@@ -27,6 +27,58 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
}
|
||||
|
||||
|
||||
.therapy-statistics-time-dialog {
|
||||
width: calc(100% - 32px) !important;
|
||||
max-width: 960px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.therapy-statistics-time-dialog .el-dialog__header {
|
||||
padding: 20px 24px;
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
}
|
||||
|
||||
.therapy-statistics-time-dialog .el-dialog__body {
|
||||
padding: 24px;
|
||||
max-height: calc(84vh - 150px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.therapy-statistics-time-dialog .statistics-time-fields {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 0 24px;
|
||||
padding: 20px 20px 0;
|
||||
margin-bottom: 16px;
|
||||
border: 1px solid #ebeef5;
|
||||
border-radius: 6px;
|
||||
background: #fafbfc;
|
||||
}
|
||||
|
||||
.therapy-statistics-time-dialog .el-form-item { min-width: 0; margin-bottom: 22px; }
|
||||
.therapy-statistics-time-dialog .el-form-item__label {
|
||||
float: none;
|
||||
display: block;
|
||||
width: auto !important;
|
||||
padding: 0 0 8px;
|
||||
line-height: 22px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.therapy-statistics-time-dialog .el-form-item__content { margin-left: 0 !important; }
|
||||
.therapy-statistics-time-dialog .el-date-editor { width: 100% !important; }
|
||||
.therapy-statistics-time-dialog .el-dialog__footer {
|
||||
padding: 16px 24px;
|
||||
border-top: 1px solid #ebeef5;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.therapy-statistics-time-dialog .statistics-time-fields { grid-template-columns: minmax(0, 1fr); padding: 16px 16px 0; }
|
||||
.therapy-statistics-time-dialog .el-dialog__body { padding: 16px; }
|
||||
}
|
||||
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
@@ -164,7 +216,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="" :app="this" ref="table_tool">
|
||||
<therapy-table-tool label="" :app="this" ref="table_tool">
|
||||
<template #func>
|
||||
<el-button @click="showGiveTimes"
|
||||
size="small"
|
||||
@@ -191,7 +243,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
class="mr10">导出成团线路人员
|
||||
</el-button>-->
|
||||
</template>
|
||||
</table-tool>
|
||||
</therapy-table-tool>
|
||||
<el-table :data="tableData" style="width: 100%"
|
||||
ref="table"
|
||||
row-key="lineUId" @sort-change="pageOrder"
|
||||
@@ -337,69 +389,49 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<el-dialog :append-to-body="true" :close-on-click-modal="false"
|
||||
:visible.sync="setGiveLineTimeDialog"
|
||||
title="统赋出行时间段信息"
|
||||
width="80%">
|
||||
width="80%" custom-class="therapy-statistics-time-dialog" top="8vh">
|
||||
<el-form :model="giveLineTimesData"
|
||||
:rules="giveLineTimesRules"
|
||||
label-width="0"
|
||||
ref="giveLineTimesForm"
|
||||
size="small">
|
||||
<div :key="row.id"
|
||||
class="panel panel-default mt20"
|
||||
style="border: none"
|
||||
v-for="(row, index) in giveLineTimesData.times">
|
||||
<div class="panel-heading"
|
||||
style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none;display: flex;align-items: center;justify-content: space-between">
|
||||
<h3 class="panel-title">出行时间段</h3>
|
||||
</div>
|
||||
<el-row>
|
||||
<el-descriptions border :column="3">
|
||||
<el-descriptions-item label="报名开始时间">
|
||||
<el-form-item :prop="'times.' + index + '.signUpStartTime'" label-width="0">
|
||||
<div :key="row.id || index" class="statistics-time-fields" v-for="(row, index) in giveLineTimesData.times">
|
||||
<el-form-item label="报名开始时间" :prop="'times.' + index + '.signUpStartTime'" label-width="0">
|
||||
<el-date-picker style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="row.signUpStartTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="报名结束时间">
|
||||
<el-form-item :prop="'times.' + index + '.signUpEndTime'" label-width="0">
|
||||
<el-form-item label="报名结束时间" :prop="'times.' + index + '.signUpEndTime'" label-width="0">
|
||||
<el-date-picker style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="row.signUpEndTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="变更截至时间">
|
||||
<el-form-item :prop="'times.' + index + '.changeEndTime'" label-width="0">
|
||||
<el-form-item label="变更截至时间" :prop="'times.' + index + '.changeEndTime'" label-width="0">
|
||||
<el-date-picker style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="row.changeEndTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="出行开始时间">
|
||||
<el-form-item :prop="'times.' + index + '.playStartTime'" label-width="0">
|
||||
<el-form-item label="出行开始时间" :prop="'times.' + index + '.playStartTime'" label-width="0">
|
||||
<el-date-picker style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="row.playStartTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="出行结束时间">
|
||||
<el-form-item :prop="'times.' + index + '.playEndTime'" label-width="0">
|
||||
<el-form-item label="出行结束时间" :prop="'times.' + index + '.playEndTime'" label-width="0">
|
||||
<el-date-picker style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="row.playEndTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="是否开启">
|
||||
<el-form-item :prop="'times.' + index + '.enable'" label-width="0">
|
||||
<el-form-item label="是否开启" :prop="'times.' + index + '.enable'" label-width="0">
|
||||
<el-switch
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
@@ -408,18 +440,13 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
:inactive-value="false">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="调剂报名截止时间">
|
||||
<el-form-item :prop="'times.' + index + '.adjustSignUpEndTime'" label-width="0">
|
||||
<el-form-item label="调剂报名截止时间" :prop="'times.' + index + '.adjustSignUpEndTime'" label-width="0">
|
||||
<el-date-picker style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="row.adjustSignUpEndTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-row>
|
||||
</div>
|
||||
<el-alert closable
|
||||
show-icon
|
||||
@@ -427,10 +454,10 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
title="温馨提醒:变更时间应该大于报名截至时间,小于出行时间。"
|
||||
type="warning"></el-alert>
|
||||
</el-form>
|
||||
<el-row justify="end" type="flex">
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="setGiveLineTimeDialog=false">取消</el-button>
|
||||
<el-button @click="doSetGiveLineTimes" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user