|
@@ -4,170 +4,186 @@
|
|
|
<div class="common-dialog-content">
|
|
|
<el-row :gutter="24">
|
|
|
<el-col :span="24">
|
|
|
- <div class="information-approval1">
|
|
|
- <el-row :gutter="24">
|
|
|
- <el-col :span="17">
|
|
|
- <div class="common-dialog-title-box">
|
|
|
- <h4 class="common-dialog-title">发送统计</h4>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6" style="text-align: right">
|
|
|
- <el-text class="common-btn-text-primary" @click="showSendDetails">发送明细</el-text>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <!-- 添加分割线 -->
|
|
|
- <div style="border-top: 1px solid #dcdfe6; margin-top: -25px"></div>
|
|
|
- <div class="common-dialog-box">
|
|
|
- <div class="send-statistics">
|
|
|
- <el-row :gutter="24">
|
|
|
- <el-col :span="8">
|
|
|
- <p>选择人数 {{ formData.user_count }}</p>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <p>成功 {{ formData.user_ok_count }} | 失败 {{ formData.user_err_count }} | 发送中 {{ formData.user_sending_count }}</p>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <p>反馈 {{ formData.feedback_count }} | 未反馈 {{ formData.unresponsive_count }}</p>
|
|
|
+<!-- <div class="information-approval1" style="background-color: #ffffff; margin-bottom: 20px;">-->
|
|
|
+ <el-card style="margin-bottom: 20px;height: 120px">
|
|
|
+ <template #header>
|
|
|
+ <div style="display: flex; justify-content: space-between">
|
|
|
+ <div class="info-box-title" style="margin-bottom: 10px">发送统计</div>
|
|
|
+ <el-col :span="6" style="text-align: right">
|
|
|
+ <el-text class="common-btn-text-primary" @click="showSendDetails">发送明细</el-text>
|
|
|
</el-col>
|
|
|
- </el-row>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="common-dialog-box" style="margin-top: -10px;margin-left: 8px">
|
|
|
+ <div class="send-statistics">
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <div style="display: flex;margin-right: 100px">
|
|
|
+ <p>选择人数 </p>
|
|
|
+ <div class="statistic-info">{{ formData.user_count }}</div>
|
|
|
+ </div>
|
|
|
+ <div style="display: flex;margin-right: 100px">
|
|
|
+ <p>成功 </p>
|
|
|
+ <div class="statistic-info">{{ formData.user_ok_count }}</div>
|
|
|
+ <p>  |  失败 </p>
|
|
|
+ <div class="statistic-info">{{ formData.user_err_count }}</div>
|
|
|
+ <p>  |  发送中 </p>
|
|
|
+ <div class="statistic-info">{{ formData.user_sending_count }}</div>
|
|
|
+ </div>
|
|
|
+ <div style="display: flex;margin-right: 100px">
|
|
|
+ <p>反馈 </p>
|
|
|
+ <div class="statistic-info">{{ formData.feedback_count }}</div>
|
|
|
+ <p>  |  未反馈 </p>
|
|
|
+ <div class="statistic-info">{{ formData.unresponsive_count }}</div>
|
|
|
+ </div>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ </el-card>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <div class="information-approval">
|
|
|
- <div class="common-dialog-title-box">
|
|
|
- <h3 class="common-dialog-title">信息详情</h3>
|
|
|
- </div>
|
|
|
- <div class="common-dialog-box">
|
|
|
- <el-form ref="form" :model="formData" :rules="rules" label-width="120px">
|
|
|
- <h4>信息内容</h4>
|
|
|
- <div class="box1">
|
|
|
- <el-form-item label="标题:" prop="title">
|
|
|
- <el-input v-model="formData.title" disabled placeholder="请输入标题" style="width: 468px !important" />
|
|
|
- </el-form-item>
|
|
|
+ <el-card>
|
|
|
+ <div>
|
|
|
+ <div class="common-dialog-title-box">
|
|
|
+ <h3 class="info-box-title">信息详情</h3>
|
|
|
+ </div>
|
|
|
+ <div class="common-dialog-box">
|
|
|
+ <div class="approval-process">
|
|
|
+ <el-form ref="form" :model="formData" :rules="rules" label-width="120px">
|
|
|
+ <div class="box1" style="margin-top: -20px">
|
|
|
+ <h4 class="common-dialog-title">信息内容</h4>
|
|
|
+ <el-form-item label="标题:" prop="title">
|
|
|
+ <el-input v-model="formData.title" disabled placeholder="请输入标题" style="width: 368px !important" />
|
|
|
+ </el-form-item>
|
|
|
|
|
|
- <el-form-item label="信息类型:" prop="info_type">
|
|
|
- <el-select v-model="formData.info_type" disabled placeholder="请选择类型" style="width: 468px !important">
|
|
|
- <el-option v-for="option in opt_info_type" :key="option.value" :label="option.text" :value="option.value"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
+ <el-form-item label="信息类型:" prop="info_type">
|
|
|
+ <el-select v-model="formData.info_type" disabled placeholder="请选择类型" style="width: 368px !important">
|
|
|
+ <el-option v-for="option in opt_info_type" :key="option.value" :label="option.text" :value="option.value"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
|
|
|
- <el-form-item label="发布单位:" prop="publish_group">
|
|
|
- <el-input v-model="formData.publish_group" disabled placeholder="请输入发布单位" style="width: 468px !important" />
|
|
|
- </el-form-item>
|
|
|
+ <el-form-item label="发布单位:" prop="publish_group">
|
|
|
+ <el-input v-model="formData.publish_group" disabled placeholder="请输入发布单位" style="width: 368px !important" />
|
|
|
+ </el-form-item>
|
|
|
|
|
|
- <el-form-item label="信息模板:" prop="template_type">
|
|
|
- <el-radio-group v-model="formData.template_type" disabled>
|
|
|
- <el-radio value="0">预设模板</el-radio>
|
|
|
- <el-radio value="1">自定义模板</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
+ <el-form-item label="信息模板:" prop="template_type">
|
|
|
+ <el-radio-group v-model="formData.template_type" disabled>
|
|
|
+ <el-radio value="0">预设模板</el-radio>
|
|
|
+ <el-radio value="1">自定义模板</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
|
|
|
- <el-form-item v-if="formData.template_type === '0'" label="预设模板:" prop="template_type">
|
|
|
- <el-select v-model="formData.template_id" disabled placeholder="请选择预设模板" style="width: 300px !important">
|
|
|
- <el-option v-for="option in presetTemplates" :key="option.value" :label="option.label" :value="option.value"></el-option>
|
|
|
- </el-select>
|
|
|
- <el-text class="common-btn-text-primary" @click="showTemplateExample">样例</el-text>
|
|
|
- </el-form-item>
|
|
|
+ <el-form-item v-if="formData.template_type === '0'" label="预设模板:" prop="template_type">
|
|
|
+ <el-select v-model="formData.template_id" disabled placeholder="请选择预设模板" style="width: 368px !important">
|
|
|
+ <el-option v-for="option in presetTemplates" :key="option.value" :label="option.label" :value="option.value"></el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-text class="common-btn-text-primary" @click="showTemplateExample">样例</el-text>
|
|
|
+ </el-form-item>
|
|
|
|
|
|
- <el-form-item v-if="formData.template_type === '1'" prop="template_url">
|
|
|
- <el-input v-model="formData.template_url" placeholder="请输入自定义详情页面链接地址" style="width: 468px !important" />
|
|
|
- </el-form-item>
|
|
|
+ <el-form-item v-if="formData.template_type === '1'" prop="template_url">
|
|
|
+ <el-input v-model="formData.template_url" placeholder="请输入自定义详情页面链接地址" style="width: 368px !important" />
|
|
|
+ </el-form-item>
|
|
|
|
|
|
- <el-form-item label="信息内容:" prop="content">
|
|
|
- <el-input
|
|
|
- v-model="formData.content"
|
|
|
- :rows="6"
|
|
|
- type="textarea"
|
|
|
- disabled
|
|
|
- placeholder="请输入信息内容"
|
|
|
- style="width: 468px !important"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
+ <el-form-item label="信息内容:" prop="content">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.content"
|
|
|
+ :rows="6"
|
|
|
+ type="textarea"
|
|
|
+ disabled
|
|
|
+ placeholder="请输入信息内容"
|
|
|
+ style="width: 368px !important"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
|
|
|
- <el-form-item label="查看附件:">
|
|
|
- <div>
|
|
|
- <div v-for="(file, index) in formData.attachs" :key="index" @click="viewFile(file)" style="color: #2C81FF;text-decoration: underline;cursor:pointer">
|
|
|
- {{ index+1 }}、{{ file.name }}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
+ <el-form-item label="查看附件:">
|
|
|
+ <div>
|
|
|
+ <div v-for="(file, index) in formData.attachs" :key="index" @click="viewFile(file)" style="color: #2C81FF;text-decoration: underline;cursor:pointer">
|
|
|
+ {{ index+1 }}、{{ file.name }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
|
|
|
- </div>
|
|
|
- <h4>推送配置</h4>
|
|
|
- <div class="box1">
|
|
|
+ </div >
|
|
|
|
|
|
- <el-form-item label="发布名单:" prop="releaseList" style="width: 468px !important"
|
|
|
- ><span class="highlight-text">已选择{{ formData.user_count }}人</span>
|
|
|
- </el-form-item>
|
|
|
- <el-row :gutter="18">
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="发布时间:" prop="publish_time">
|
|
|
- <el-button disabled type="default" @click="publishNow">立即发布</el-button>
|
|
|
+ <div class="box1">
|
|
|
+ <h4 class="common-dialog-title">推送配置</h4>
|
|
|
+ <el-form-item label="发布名单:" prop="releaseList" style="width: 468px !important"
|
|
|
+ ><span class="highlight-text">已选择{{ formData.user_count }}人</span>
|
|
|
</el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="10">
|
|
|
- <el-form-item label="定时发布:" prop="publish_time">
|
|
|
- <el-date-picker v-model="formData.publish_time" type="datetime" disabled placeholder="选择发布时间" style="width: 400px;"></el-date-picker>
|
|
|
+ <el-row :gutter="18">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="发布时间:" prop="publish_time">
|
|
|
+ <el-button disabled type="default" @click="publishNow">立即发布</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="13">
|
|
|
+ <el-form-item label="定时发布:" prop="publish_time">
|
|
|
+ <el-date-picker v-model="formData.publish_time" type="datetime" disabled placeholder="选择发布时间" style="width: 400px;"></el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-form-item label="消息反馈方式:" prop="response_type" style="width: 488px !important">
|
|
|
+ <el-select v-model="displayFeedbackText" disabled placeholder="请选择消息反馈方式"> </el-select>
|
|
|
</el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-form-item label="消息反馈方式:" prop="response_type" style="width: 468px !important">
|
|
|
- <el-select v-model="displayFeedbackText" disabled placeholder="请选择消息反馈方式"> </el-select>
|
|
|
- </el-form-item>
|
|
|
|
|
|
- </div>
|
|
|
- <h4 class="common-dialog-title">审核配置</h4>
|
|
|
- <div class="box1">
|
|
|
- <el-form-item label="审核材料:" prop="examine_attachs">
|
|
|
- <div>
|
|
|
- <div v-for="(file, index) in formData.examine_attachs" :key="index" @click="viewFile(file)" style="color: #2C81FF;text-decoration: underline;cursor:pointer">
|
|
|
- {{ index+1 }}、{{ file.name }}
|
|
|
- </div>
|
|
|
</div>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="审核人:" prop="examine_by">
|
|
|
- <el-input v-model="formData.examine_user" disabled placeholder="请输入审核人姓名" style="width: 368px !important" />
|
|
|
- </el-form-item>
|
|
|
+
|
|
|
+ <div class="box1">
|
|
|
+ <h4 class="common-dialog-title">审核配置</h4>
|
|
|
+ <el-form-item label="审核材料:" prop="examine_attachs">
|
|
|
+ <div>
|
|
|
+ <div v-for="(file, index) in formData.examine_attachs" :key="index" @click="viewFile(file)" style="color: #2C81FF;text-decoration: underline;cursor:pointer">
|
|
|
+ {{ index+1 }}、{{ file.name }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="审核人:" prop="examine_by">
|
|
|
+ <el-input v-model="formData.examine_user" disabled placeholder="请输入审核人姓名" style="width: 368px !important" />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ </el-form>
|
|
|
</div>
|
|
|
- </el-form>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <div class="information-approval">
|
|
|
- <div class="common-dialog-title-box">
|
|
|
- <h3 class="common-dialog-title">信息审批</h3>
|
|
|
- </div>
|
|
|
- <div class="common-dialog-box">
|
|
|
- <div class="approval-process">
|
|
|
- <div class="box1">
|
|
|
- <h4>审批流程</h4>
|
|
|
- <div>
|
|
|
- <p v-if="processingTime">已用时:{{ formData.process_time }}</p>
|
|
|
- </div>
|
|
|
- <el-timeline style="width: 100%;">
|
|
|
- <template v-for="(item, index) in formData.examines" :key="index">
|
|
|
- <el-timeline-item placement="top">
|
|
|
- <el-card style="margin-top:-10px;">
|
|
|
- <h4>{{ item.examine_type }}</h4>
|
|
|
- <p v-if="item.nick_name">
|
|
|
- 处理人:<span>{{ item.nick_name }}</span
|
|
|
+ <el-card style="height: 1148px">
|
|
|
+ <div>
|
|
|
+ <div class="common-dialog-title-box">
|
|
|
+ <h3 class="info-box-title">信息审批</h3>
|
|
|
+ </div>
|
|
|
+ <div class="common-dialog-box">
|
|
|
+ <div class="approval-process">
|
|
|
+ <div class="box1" style="margin-top: -20px">
|
|
|
+ <h4 class="common-dialog-title">审批流程</h4>
|
|
|
+ <div>
|
|
|
+ <p v-if="processingTime" style="margin-left: 20px">已用时:{{ formData.process_time }}</p>
|
|
|
+ </div>
|
|
|
+ <el-timeline style="width: 500px;">
|
|
|
+ <template v-for="(item, index) in formData.examines" :key="index">
|
|
|
+ <el-timeline-item placement="top" :color="getResultClass(item.examine_sub_type)">
|
|
|
+ <div style="margin-top: -20px">
|
|
|
+ <h4 style="font-weight: bold">{{ item.examine_type }}</h4>
|
|
|
+ <p v-if="item.nick_name">
|
|
|
+ 处理人:<span>{{ item.nick_name }}</span
|
|
|
> 时间:{{ item.examine_time }}
|
|
|
- </p>
|
|
|
- <p v-if="item.examine_sub_type">处理结果:{{ item.examine_sub_type }}</p>
|
|
|
- <p v-if="item.content">具体意见:{{ item.content }}</p>
|
|
|
- </el-card>
|
|
|
- </el-timeline-item>
|
|
|
- </template>
|
|
|
- </el-timeline>
|
|
|
+ </p>
|
|
|
+ <p v-if="item.examine_sub_type">处理结果:{{ item.examine_sub_type }}</p>
|
|
|
+ <p v-if="item.content">具体意见:{{ item.content }}</p>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </el-timeline-item>
|
|
|
+ </template>
|
|
|
+ </el-timeline>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<div class="common-dialog-footer">
|
|
@@ -290,6 +306,23 @@ const fetchInformation = async () => {
|
|
|
console.error('Failed to fetch information:', error);
|
|
|
}
|
|
|
};
|
|
|
+const getResultClass = (examineSubType) => {
|
|
|
+ switch (examineSubType) {
|
|
|
+ case '审批通过':
|
|
|
+ return '#38ce7b';
|
|
|
+ case '提交':
|
|
|
+ return '#38ce7b';
|
|
|
+ case '审批不通过':
|
|
|
+ return '#ff0000';
|
|
|
+ case '重新提交':
|
|
|
+ return '#84928a';
|
|
|
+ case '待审核':
|
|
|
+ return '#84928a';
|
|
|
+ default:
|
|
|
+ return ''; // 不添加任何类
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// 在组件挂载时调用 fetchInformation
|
|
|
onMounted(() => {
|
|
|
getTemplateList({}).then((res) => {
|
|
@@ -318,6 +351,7 @@ onMounted(() => {
|
|
|
.common-dialog-title {
|
|
|
font-size: 1.2rem;
|
|
|
color: #333;
|
|
|
+ font-weight: bold;
|
|
|
}
|
|
|
|
|
|
.box1 {
|
|
@@ -337,6 +371,7 @@ onMounted(() => {
|
|
|
padding: 1rem;
|
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
|
border-radius: 8px;
|
|
|
+ background-color: #ffffff;
|
|
|
}
|
|
|
.information-approval1 {
|
|
|
width: 100%;
|
|
@@ -363,4 +398,12 @@ onMounted(() => {
|
|
|
gap: 10px; /* 按钮之间的间距 */
|
|
|
margin-top: 50px;
|
|
|
}
|
|
|
+.info-box-title {
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
+.statistic-info {
|
|
|
+ color: #4876b9;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
</style>
|