Browse Source

信息发布申请

lizhouming 7 tháng trước cách đây
mục cha
commit
43820964de

+ 21 - 0
src/api/informationissue/informationissue.ts

@@ -22,3 +22,24 @@ export function getInformationView(params) {
     params: params
   });
 }
+// 新增信息申请
+export function getInformationAdd(data) {
+  return request({
+    url: '/api/info_publish/back/create',
+    method: 'post',
+    data: {
+      title: data.title,
+      publish_group: data.publish_group,
+      template_id: data.template_id,
+      content: data.content,
+      response_type: data.response_type,
+      publish_time: data.publish_time,
+      examine_by: data.examine_by,
+      publish_channel: data.publish_channel,
+      user_count: data.user_count,
+      users: data.users,
+      attachs: data.attachs,
+      examine_attachs: data.examine_attachs
+    }
+  });
+}

+ 57 - 17
src/views/informationissue/informationApplication.vue

@@ -62,14 +62,14 @@
               <el-text class="common-btn-text-primary" @click="showReleaseList">查看详情</el-text>
             </el-form-item>
             <el-row :gutter="18">
-              <el-col :span="6">
-                <el-form-item label="发布时间:" prop="releaseTime">
-                  <el-button type="text" @click="publishNow">立即发布</el-button>
-                </el-form-item>
-              </el-col>
               <el-col :span="12">
-                <el-form-item label="定时发布:" prop="timing">
-                  <el-date-picker v-model="formData.timing" type="datetime" placeholder="选择发布时间"></el-date-picker>
+                <el-form-item label="发布时间:" prop="releaseTime">
+                  <el-radio-group v-model="formData.releaseType">
+                    <el-radio :label="'now'" @change="publishNow">立即发布</el-radio>
+                    <el-radio :label="'schedule'">定时发布</el-radio>
+                  </el-radio-group>
+                  <div v-if="formData.releaseType === 'now'">发布时间:{{ formattedCurrentTime }}</div>
+                  <el-date-picker v-else v-model="formData.releaseTime" type="datetime" placeholder="选择发布时间" />
                 </el-form-item>
               </el-col>
             </el-row>
@@ -108,7 +108,6 @@
         </el-form>
         <div class="common-dialog-footer">
           <el-button @click="$emit('close')">返回</el-button>
-          <el-button @click="submitForm">编辑</el-button>
           <el-button type="primary" @click="submitForm">提交</el-button>
         </div>
       </div>
@@ -119,22 +118,42 @@
 <script setup lang="ts">
 import { ref } from 'vue';
 import { ElMessage } from 'element-plus';
+import { getInformationAdd } from '@/api/informationissue/informationissue';
 
 const formData = ref({
   title: '',
   publishUnit: '',
   templateType: '',
-  messageContent: '',
+  content: '',
+  presetTemplate: '',
+  customPageUrl: '',
   releaseList: 0,
-  releaseTime: '',
+  releaseType: 'now', // 默认选择立即发布
+  releaseTime: '', // 存储定时发布的时间
   feedbackWay: '',
-  auditor: '',
+  examineBy: '',
   timing: '',
-  materials: ''
+  materials: '',
+  attachs: [],
+  examineAttachs: []
 });
 
 const files = ref([]);
 const auditMaterials = ref([]);
+const formattedCurrentTime = ref(formatTime(new Date().toISOString()));
+const formatTime = (isoString) => {
+  const date = new Date(isoString);
+  const year = date.getFullYear();
+  const month = String(date.getMonth() + 1).padStart(2, '0');
+  const day = String(date.getDate()).padStart(2, '0');
+  const hours = String(date.getHours()).padStart(2, '0');
+  const minutes = String(date.getMinutes()).padStart(2, '0');
+  const seconds = String(date.getSeconds()).padStart(2, '0');
+  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+};
+const publishNow = () => {
+  formData.value.releaseTime = new Date().toISOString(); // 设置当前时间为发布时间
+};
 
 const rules = {
   title: [{ required: true, message: '请填写标题', trigger: 'blur' }],
@@ -142,7 +161,7 @@ const rules = {
   releaseList: [{ required: true, message: '请选择发布名单', trigger: 'change' }],
   timing: [{ required: true, message: '请选择发布时间', trigger: 'change' }],
   feedbackWay: [{ required: true, message: '请选择消息反馈方式', trigger: 'change' }],
-  auditor: [{ required: true, message: '请填写审核人', trigger: 'blur' }]
+  examineBy: [{ required: true, message: '请填写审核人', trigger: 'blur' }]
 };
 
 const feedbackOptions = [
@@ -186,12 +205,33 @@ const handleSuccess = (response, file, fileList) => {
 const showReleaseList = () => {
   ElMessage.info('点击了查看发布名单');
 };
-const publishNow = () => {
-  ElMessage.info('点击了立即发布');
-};
 const submitForm = () => {
   if (validateFormData()) {
-    ElMessage.success('表单提交成功');
+    // 构建要提交的数据对象
+    const submitData = {
+      title: formData.value.title,
+      publish_group: formData.value.publishUnit,
+      template_id: formData.value.templateType === '0' ? parseInt(selectedPresetTemplate.value) : null,
+      content: formData.value.messageContent,
+      response_type: formData.value.feedbackWay,
+      publish_time: formData.value.releaseType === 'now' ? new Date().toISOString() : formData.value.releaseTime,
+      examine_by: formData.value.auditor, // 假设审核人姓名字段是 'auditor'
+      publish_channel: '', // 确保这个字段有适当的值
+      user_count: formData.value.releaseList,
+      users: [], // 确保这个字段有适当的值
+      attachs: files.value.map((file) => ({ file_name: file.name })),
+      examine_attachs: auditMaterials.value.map((file) => ({ file_name: file.name }))
+    };
+
+    // 调用 API 提交数据
+    getInformationAdd(submitData)
+      .then(() => {
+        ElMessage.success('信息发布申请已提交');
+        // 处理响应,可能需要清空表单或进行其他操作
+      })
+      .catch((error) => {
+        ElMessage.error('提交失败: ' + error.message);
+      });
   }
 };