Browse Source

feat: 新闻中心页面及接口联调

mnisting 6 months ago
parent
commit
f29432d594

+ 53 - 0
src/api/newsManage/index.js

@@ -0,0 +1,53 @@
+import request from "@/utils/request";
+
+// 获取列表 /business/officialAccount/list
+export const getList = (query) => {
+  return request({
+    url: "/business/officialAccount/list",
+    method: "get",
+    params: query,
+  });
+};
+
+// 获取详情 /business/officialAccount/{hireInfoId}
+export const getDetail = (hireInfoId) => {
+  return request({
+    url: `/business/officialAccount/${hireInfoId}`,
+    method: "get",
+  });
+};
+
+// 新增 /business/officialAccount/add
+export const addNews = (data) => {
+  return request({
+    url: "/business/officialAccount/add",
+    method: "post",
+    data,
+  });
+};
+
+// 修改 /business/officialAccount/edit
+export const editNews = (data) => {
+  return request({
+    url: "/business/officialAccount/edit",
+    method: "put",
+    data,
+  });
+};
+
+// 修改招聘信息状态 /business/officialAccount/updateStatus
+export const editNewsStatus = (query) => {
+  return request({
+    url: "/business/officialAccount/updateStatus",
+    method: "put",
+    params: query,
+  });
+};
+
+// 删除 /business/officialAccount/{officialAccountId}
+export const delNews = (officialAccountId) => {
+  return request({
+    url: `/business/officialAccount/${officialAccountId}`,
+    method: "delete",
+  });
+};

+ 0 - 258
src/views/newsManage/components/addJob.vue

@@ -1,258 +0,0 @@
-<template>
-  <div v-loading="loading">
-    <el-form
-      ref="form"
-      :rules="formRules"
-      :model="formData"
-      class="form"
-      label-width="100px"
-    >
-      <el-row :gutter="10">
-        <el-col :span="12">
-          <el-form-item label="职位名称" prop="jobName">
-            <el-input
-              v-model="formData.jobName"
-              maxlength="100"
-              placeholder="请输入职位名称"
-              clearable
-            ></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="工作地点" prop="jobLocation">
-            <el-input
-              v-model="formData.jobLocation"
-              maxlength="100"
-              placeholder="请输入工作地点"
-              clearable
-            ></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="薪资" prop="salary">
-            <el-input
-              v-model="formData.salary"
-              maxlength="100"
-              placeholder="请输入薪资"
-              clearable
-            ></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="资历" prop="seniority">
-            <el-input
-              v-model="formData.seniority"
-              maxlength="100"
-              placeholder="请输入资历"
-              clearable
-            ></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="福利" prop="benefit">
-            <el-select
-              style="width: 100%"
-              v-model="formData.benefit"
-              placeholder="请选择福利"
-              multiple
-              clearable
-            >
-              <el-option
-                v-for="dict in benefitOptions"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.label"
-              />
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="招聘状态" prop="status">
-            <el-select
-              style="width: 100%"
-              v-model="formData.status"
-              placeholder="请选择招聘状态"
-              clearable
-            >
-              <!-- <el-option
-              v-for="dict in dict.type.sys_job_group"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            /> -->
-              <el-option
-                v-for="dict in statusOptions"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-              />
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="24">
-          <el-form-item label="岗位要求" prop="jobRequire">
-            <el-input
-              v-model="formData.jobRequire"
-              type="textarea"
-              :rows="4"
-              placeholder="请输入岗位要求"
-            ></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="24">
-          <el-form-item label="工作职责" prop="jobDuty">
-            <el-input
-              v-model="formData.jobDuty"
-              type="textarea"
-              :rows="4"
-              placeholder="请输入工作职责"
-            ></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="24">
-          <el-form-item label="备注">
-            <el-input
-              v-model="formData.remark"
-              type="textarea"
-              placeholder="请输入备注"
-            ></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="24" style="text-align: right">
-          <el-button type="primary" @click="handleConfirm">确 定</el-button>
-          <el-button @click="handleCancel">取 消</el-button>
-        </el-col>
-      </el-row>
-    </el-form>
-  </div>
-</template>
-
-<script>
-export default {
-  dicts: [],
-  props: {
-    infoData: {
-      type: Object,
-      default: () => {},
-    },
-    loading: {
-      type: Boolean,
-      default: false,
-    },
-  },
-  data() {
-    return {
-      formData: {
-        jobName: "",
-        jobLocation: "",
-        salary: "",
-        seniority: "",
-        jobRequire: "",
-        jobDuty: "",
-        benefit: [],
-        status: "",
-        remark: "",
-      },
-      benefitOptions: [
-        { value: "1", label: "六险一金" },
-        { value: "2", label: "双休" },
-        { value: "3", label: "年终奖" },
-        { value: "4", label: "调薪" },
-        { value: "5", label: "带薪年假" },
-        { value: "6", label: "节日礼品" },
-        { value: "7", label: "体检" },
-        { value: "8", label: "下午茶" },
-        { value: "9", label: "团建活动" },
-      ],
-      statusOptions: [
-        { value: "0", label: "招聘中" },
-        { value: "1", label: "招聘结束" },
-      ],
-      formRules: {
-        jobName: [
-          { required: true, message: "请输入职位名称", trigger: "blur" },
-        ],
-        jobLocation: [
-          { required: true, message: "请输入工作地点", trigger: "blur" },
-        ],
-        salary: [{ required: true, message: "请输入薪资", trigger: "blur" }],
-        seniority: [{ required: true, message: "请输入资历", trigger: "blur" }],
-        // benefit: [
-        //   {
-        //     type: "array",
-        //     required: true,
-        //     message: "请至少选择一个福利",
-        //     trigger: "change",
-        //   },
-        // ],
-        benefit: [{ required: true, message: "请选择福利", trigger: "change" }],
-        status: [
-          { required: true, message: "请选择招聘状态", trigger: "change" },
-        ],
-        jobRequire: [
-          { required: true, message: "请填写岗位要求", trigger: "blur" },
-        ],
-        jobDuty: [
-          { required: true, message: "请填写工作职责", trigger: "blur" },
-        ],
-      },
-    };
-  },
-  watch: {
-    infoData: {
-      handler(newVal) {
-        if (newVal) {
-          this.formData = {
-            hireInfoId: newVal.hireInfoId || "",
-            jobName: newVal.jobName || "",
-            jobLocation: newVal.jobLocation || "",
-            salary: newVal.salary || "",
-            seniority: newVal.seniority || "",
-            jobRequire: newVal.jobRequire || "",
-            jobDuty: newVal.jobDuty || "",
-            benefit: newVal.benefit ? newVal.benefit.split(",") : [],
-            status: newVal.status || "",
-            remark: newVal.remark || "",
-          };
-          this.$nextTick(() => {
-            this.$refs.form && this.$refs.form.clearValidate();
-          });
-        }
-      },
-      immediate: true,
-    },
-  },
-  created() {},
-  methods: {
-    handleConfirm() {
-      let benefit = this.formData.benefit.join();
-      let obj = {
-        ...this.formData,
-        benefit,
-      };
-      this.$refs["form"].validate((valid) => {
-        if (valid) {
-          this.$emit("save", obj);
-        } else {
-          this.$message.warning("表单校验不通过,请检查");
-        }
-      });
-    },
-    handleCancel() {
-      this.formData = {
-        jobName: "",
-        jobLocation: "",
-        salary: "",
-        seniority: "",
-        jobRequire: "",
-        jobDuty: "",
-        benefit: [],
-        status: "",
-        remark: "",
-      };
-      this.$refs.form.clearValidate();
-      this.$emit("cancel");
-    },
-  },
-};
-</script>

+ 234 - 0
src/views/newsManage/components/addNews.vue

@@ -0,0 +1,234 @@
+<template>
+  <div v-loading="loading">
+    <el-form
+      ref="form"
+      :rules="formRules"
+      :model="formData"
+      class="form"
+      label-width="100px"
+    >
+      <el-row :gutter="10">
+        <el-col :span="12">
+          <el-form-item label="标题" prop="title">
+            <el-input
+              v-model="formData.title"
+              placeholder="请输入标题"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作者" prop="author">
+            <el-input
+              v-model="formData.author"
+              placeholder="请输入作者"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="封面" prop="thumbUrl">
+            <el-input
+              v-model="formData.thumbUrl"
+              placeholder="请输入封面图片地址"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="是否显示封面" prop="showCoverPic">
+            <!-- @change="handleShow" -->
+            <el-switch
+              v-model="formData.showCoverPic"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              active-value="1"
+              inactive-value="0"
+            >
+            </el-switch>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="跳转地址" prop="url">
+            <el-input
+              v-model="formData.url"
+              placeholder="请输入跳转地址"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="发布时间" prop="publishTime">
+            <!-- value-format="yyyy-MM-dd HH:mm:ss" -->
+            <el-date-picker
+              style="width: 100%"
+              v-model="formData.publishTime"
+              type="datetime"
+              placeholder="请选择发布时间"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="类别" prop="publishType">
+            <el-select
+              style="width: 100%"
+              v-model="formData.publishType"
+              placeholder="请选择类别"
+              clearable
+            >
+              <el-option
+                v-for="dict in typeOptions"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="状态" prop="status">
+            <el-select
+              style="width: 100%"
+              v-model="formData.status"
+              placeholder="请选择状态"
+              clearable
+            >
+              <el-option
+                v-for="dict in statusOptions"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="摘要" prop="digest">
+            <el-input
+              v-model="formData.digest"
+              type="textarea"
+              :rows="4"
+              placeholder="请输入摘要"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24" style="text-align: right">
+          <el-button type="primary" @click="handleConfirm">确 定</el-button>
+          <el-button @click="handleCancel">取 消</el-button>
+        </el-col>
+      </el-row>
+    </el-form>
+  </div>
+</template>
+
+<script>
+export default {
+  dicts: [],
+  props: {
+    infoData: {
+      type: Object,
+      default: () => {},
+    },
+    loading: {
+      type: Boolean,
+      default: false,
+    },
+  },
+  data() {
+    return {
+      formData: {
+        title: "",
+        author: "",
+        thumbUrl: "",
+        showCoverPic: "1",
+        url: "",
+        publishTime: "",
+        digest: "",
+        status: "",
+        publishType: "",
+      },
+      typeOptions: [
+        { value: "1", label: "公司喜讯" },
+        { value: "2", label: "公司动态" },
+        { value: "3", label: "行业动态" },
+      ],
+      statusOptions: [
+        { value: "0", label: "有效" },
+        { value: "1", label: "无效" },
+      ],
+      formRules: {
+        title: [{ required: true, message: "请输入标题", trigger: "blur" }],
+        author: [{ required: true, message: "请输入作者", trigger: "blur" }],
+        url: [
+          { required: true, message: "请输入文章跳转地址", trigger: "blur" },
+        ],
+        publishTime: [
+          { required: true, message: "请选择发布时间", trigger: "change" },
+        ],
+        type: [{ required: true, message: "请选择类别", trigger: "change" }],
+        publishType: [
+          { required: true, message: "请选择类别", trigger: "change" },
+        ],
+        status: [{ required: true, message: "请选择状态", trigger: "change" }],
+        digest: [{ required: true, message: "请输入摘要", trigger: "blur" }],
+      },
+    };
+  },
+  watch: {
+    infoData: {
+      handler(newVal) {
+        if (newVal) {
+          this.formData = {
+            officialAccountId: newVal.officialAccountId || "",
+            title: newVal.title || "",
+            author: newVal.author || "",
+            thumbUrl: newVal.thumbUrl || "",
+            showCoverPic: newVal.showCoverPic || "1",
+            url: newVal.url || "",
+            publishTime: newVal.publishTime || "",
+            digest: newVal.digest || "",
+            status: newVal.status || "",
+            publishType: newVal.publishType || "",
+          };
+          this.$nextTick(() => {
+            this.$refs.form && this.$refs.form.clearValidate();
+          });
+        }
+      },
+      immediate: true,
+    },
+  },
+  created() {},
+  methods: {
+    // 是否展示封面
+    // handleShow(val) {
+    //   this.formData.showCoverPic = val;
+    // },
+    handleConfirm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.$emit("save", this.formData);
+        } else {
+          this.$message.warning("表单校验不通过,请检查");
+        }
+      });
+    },
+    handleCancel() {
+      this.formData = {
+        title: "",
+        author: "",
+        thumbUrl: "",
+        showCoverPic: "1",
+        url: "",
+        publishTime: "",
+        digest: "",
+        status: "",
+        publishType: "",
+      };
+      this.$refs.form.clearValidate();
+      this.$emit("cancel");
+    },
+  },
+};
+</script>

+ 52 - 86
src/views/newsManage/index.vue

@@ -10,41 +10,15 @@
       v-show="showSearch"
       @submit.native.prevent
     >
-      <el-form-item label="职位名称">
+      <el-form-item label="标题">
         <el-input
-          v-model="queryParams.jobName"
-          placeholder="请输入职位名称"
+          v-model="queryParams.title"
+          placeholder="请输入标题"
           clearable
           style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <!-- <el-form-item label="状态" prop="status">
-        <el-select
-          v-model="queryParams.status"
-          placeholder="角色状态"
-          clearable
-          style="width: 240px"
-        >
-          <el-option
-            v-for="dict in dict.type.sys_normal_disable"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item> -->
-      <!-- <el-form-item label="创建时间">
-        <el-date-picker
-          v-model="dateRange"
-          style="width: 240px"
-          value-format="yyyy-MM-dd"
-          type="daterange"
-          range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-        ></el-date-picker>
-      </el-form-item> -->
       <el-form-item>
         <el-button
           type="primary"
@@ -70,53 +44,40 @@
           >新增</el-button
         >
       </el-col>
-      <!-- <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="selectRows.length !== 1"
-          @click="handleUpdate"
-          >编辑</el-button
-        >
-      </el-col> -->
-      <!-- <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="!selectRows.length"
-          @click="handleDelete"
-          >删除</el-button
-        >
-      </el-col> -->
       <right-toolbar
         :showSearch.sync="showSearch"
         @queryTable="getList"
       ></right-toolbar>
     </el-row>
 
-    <!-- @selection-change="handleSelectionChange" -->
     <el-table v-loading="loading" :data="tableData">
-      <!-- <el-table-column type="selection" width="55" align="center" /> -->
-      <el-table-column label="职位编号" prop="hireInfoId" width="120" />
       <el-table-column
-        label="职位名称"
-        prop="jobName"
+        label="编号"
+        prop="officialAccountId"
+        width="120"
+        align="center"
+      />
+      <el-table-column
+        label="标题"
+        prop="title"
+        align="center"
         :show-overflow-tooltip="true"
         width="150"
       />
       <el-table-column
-        label="工作地点"
-        prop="jobLocation"
+        label="作者"
+        prop="author"
+        align="center"
         :show-overflow-tooltip="true"
         width="150"
       />
-      <el-table-column label="薪资" prop="salary" />
-      <el-table-column label="资历" prop="seniority" />
-      <el-table-column label="福利" prop="benefit" />
+      <el-table-column label="跳转地址" prop="url" align="center" />
+      <el-table-column
+        label="类别"
+        prop="publishType"
+        align="center"
+        :formatter="typeFormatter"
+      />
 
       <el-table-column label="状态" align="center">
         <template slot-scope="scope">
@@ -132,9 +93,9 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="创建时间"
+        label="发布时间"
         align="center"
-        prop="createTime"
+        prop="publishTime"
         width="180"
       >
         <template slot-scope="scope">
@@ -175,12 +136,12 @@
 
     <!-- 新增编辑弹窗 width="500px"-->
     <el-dialog :title="title" :visible.sync="dlgVisible" append-to-body>
-      <addJob
+      <addNewsDlg
         :loading="dlgLoading"
         :infoData="infoData"
         @save="handleSave"
         @cancel="handleCancel"
-      ></addJob>
+      ></addNewsDlg>
     </el-dialog>
   </div>
 </template>
@@ -189,17 +150,17 @@
 import {
   getList,
   getDetail,
-  addHireInfo,
-  editHireInfo,
-  editHireInfoStatus,
-  delHireInfo,
-} from "@/api/recruitInfoManage";
+  addNews,
+  editNews,
+  editNewsStatus,
+  delNews,
+} from "@/api/newsManage";
 
-import addJob from "./components/addJob.vue";
+import addNewsDlg from "./components/addNews.vue";
 
 export default {
   name: "RecruitInfoManage",
-  components: { addJob },
+  components: { addNewsDlg },
   dicts: [],
   data() {
     return {
@@ -211,7 +172,7 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        jobName: "",
+        title: "",
       },
       // 数据量
       total: 0,
@@ -228,12 +189,22 @@ export default {
       title: "",
       infoData: {},
       dlgLoading: false,
+      // 类别
+      typeOptions: [
+        { value: "1", label: "公司喜讯" },
+        { value: "2", label: "公司动态" },
+        { value: "3", label: "行业动态" },
+      ],
     };
   },
   created() {
     this.getList();
   },
   methods: {
+    typeFormatter(row) {
+      let obj = this.typeOptions.find((dict) => dict.value === row.publishType);
+      return obj.label;
+    },
     // 搜索
     handleQuery() {
       this.queryParams.pageNum = 1;
@@ -244,7 +215,7 @@ export default {
       this.queryParams = {
         pageNum: 1,
         pageSize: 10,
-        jobName: "",
+        title: "",
       };
       this.getList();
     },
@@ -269,11 +240,8 @@ export default {
     handleUpdate(row) {
       this.dlgVisible = true;
       this.title = "编辑";
-      const hireInfoId = row.hireInfoId
-        ? row.hireInfoId
-        : this.selectRows[0].hireInfoId;
       this.dlgLoading = true;
-      getDetail(hireInfoId)
+      getDetail(row.officialAccountId)
         .then((res) => {
           console.log(res);
           this.infoData = res.data;
@@ -283,8 +251,8 @@ export default {
     // 确认新增/修改
     handleSave(data) {
       this.dlgLoading = true;
-      if (data.hireInfoId) {
-        editHireInfo(data)
+      if (data.officialAccountId) {
+        editNews(data)
           .then((res) => {
             this.$message.success(res.msg);
             this.handleCancel();
@@ -292,7 +260,7 @@ export default {
           })
           .finally(() => (this.dlgLoading = false));
       } else {
-        addHireInfo(data)
+        addNews(data)
           .then((res) => {
             this.$message.success(res.msg);
             this.handleCancel();
@@ -307,12 +275,10 @@ export default {
     },
     // 删除
     handleDelete(row) {
-      const ids = this.selectRows.map((item) => item.hireInfoId).join();
-      const hireInfoIds = row.hireInfoId || ids;
       this.$modal
         .confirm("是否确认删除数据")
         .then(function () {
-          return delHireInfo(hireInfoIds);
+          return delNews(row.officialAccountId);
         })
         .then((res) => {
           this.getList();
@@ -326,14 +292,14 @@ export default {
     // 修改招聘信息状态
     changeStatus(row) {
       let params = {
-        hireInfoIds: row.hireInfoId,
+        officialAccountIds: row.officialAccountId,
         status: row.status,
       };
       // console.log(params, 1211);
       this.$modal
         .confirm("是否确认修改状态")
         .then(function () {
-          return editHireInfoStatus(params);
+          return editNewsStatus(params);
         })
         .then((res) => {
           this.getList();

+ 0 - 4
src/views/recruitInfoManage/components/addJob.vue

@@ -12,7 +12,6 @@
           <el-form-item label="职位名称" prop="jobName">
             <el-input
               v-model="formData.jobName"
-              maxlength="100"
               placeholder="请输入职位名称"
               clearable
             ></el-input>
@@ -22,7 +21,6 @@
           <el-form-item label="工作地点" prop="jobLocation">
             <el-input
               v-model="formData.jobLocation"
-              maxlength="100"
               placeholder="请输入工作地点"
               clearable
             ></el-input>
@@ -32,7 +30,6 @@
           <el-form-item label="薪资" prop="salary">
             <el-input
               v-model="formData.salary"
-              maxlength="100"
               placeholder="请输入薪资"
               clearable
             ></el-input>
@@ -42,7 +39,6 @@
           <el-form-item label="资历" prop="seniority">
             <el-input
               v-model="formData.seniority"
-              maxlength="100"
               placeholder="请输入资历"
               clearable
             ></el-input>

+ 0 - 5
src/views/userDemandManage/components/detail.vue

@@ -13,7 +13,6 @@
             <el-input
               disabled
               v-model="formData.customerName"
-              maxlength="100"
               clearable
             ></el-input>
           </el-form-item>
@@ -23,7 +22,6 @@
             <el-input
               disabled
               v-model="formData.customerTel"
-              maxlength="100"
               clearable
             ></el-input>
           </el-form-item>
@@ -33,7 +31,6 @@
             <el-input
               disabled
               v-model="formData.customerCompany"
-              maxlength="100"
               clearable
             ></el-input>
           </el-form-item>
@@ -43,7 +40,6 @@
             <el-input
               disabled
               v-model="formData.customerEmail"
-              maxlength="100"
               clearable
             ></el-input>
           </el-form-item>
@@ -53,7 +49,6 @@
             <el-input
               disabled
               v-model="formData.customerPosition"
-              maxlength="100"
               clearable
             ></el-input>
           </el-form-item>