lk 5 years ago
parent
commit
289ee856c1

+ 5 - 0
pages/main/index/jobs.vue

@@ -8,6 +8,7 @@
       <div class="count-item" @click="goPublishCompanies()">发布企业:{{auditData.countCompanies}}</div>
        <div class="count-item" @click="goChatUsers()">聊天数据>></div>
       <div class="count-item">当前统计数量:{{auditData.total}}</div>
+      <div class="count-item" @click="goBehalfPost()">邀请代发岗位:0</div>
     </div>
     <el-form :inline="true">
       <el-form-item label="岗位状态">
@@ -209,6 +210,10 @@ export default {
     goChatUsers()
     {
       window.location.href='/main/chat_users';
+    },
+    goBehalfPost()
+    {
+      // window.location.href='/main/jobs_behalf_post';
     }
   }
 };

+ 396 - 0
pages/main/index/jobs_behalf_post.vue

@@ -0,0 +1,396 @@
+<template>
+  <div>
+    <div class="count-list" v-if="auditData">
+      <div class="count-item">全部:0</div>
+      <div class="count-item">开放中:0</div>
+      <div class="count-item">累计新增下载量:0</div>
+      <div>
+        <el-button size="small" @click="onAdd">新建岗位</el-button>
+      </div>
+    </div>
+    <div>
+      <el-table :data="auditData" @row-click="clickRow" border style="width: 100%">
+        <el-table-column prop="id" label="岗位ID" width="70"></el-table-column>
+        <el-table-column prop="occupationName" label="职位类型"></el-table-column>
+        <el-table-column prop="workTypeName" label="工作方式"></el-table-column>
+        <el-table-column label="工作周期">
+          <template slot-scope="scope">
+            <span>{{scope.row.month}}个月</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="驻场地区">
+          <template slot-scope="scope">
+            <span>{{scope.row.cityName || '-'}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="salaryName" label="薪酬范围"></el-table-column>
+        <el-table-column label="公司名称">
+          <template slot-scope="scope">
+            <span>{{scope.row.companyInfo && scope.row.companyInfo.shortName ? scope.row.companyInfo.shortName : (scope.row.companyInfo && scope.row.companyInfo.name ? scope.row.companyInfo.name : '')}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createdAt" label="发布时间">
+          <template slot-scope="scope">
+            <span>{{formatDate(scope.row.createdAt,'Y-m-d H:i')}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="statusName" label="当前状态"></el-table-column>
+        <el-table-column prop="countApplied" label="投递人数"></el-table-column>
+        <el-table-column prop="recuitResult" label="是否激活">
+          <template slot-scope="scope">
+            <span v-if="scope.row.isActivation == 1">是</span>
+            <span v-else>否</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="recuitResult" label="是否退订">
+          <template slot-scope="scope">
+            <span v-if="scope.row.isUnsubscribe == 1">是</span>
+            <span v-else>否</span>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+
+    <div>
+      <el-pagination
+        class="order-footer"
+        background
+        layout="total, prev, pager, next"
+        :page-size="20"
+        :total="total"
+        @current-change="handleCurrentChange"
+      />
+    </div>
+    <el-dialog title="新建岗位" :visible.sync="agencyPost" :closeOnClickModal="false" :closeOnPressEscape="false">
+      <el-form :model="agencyPostForm" :rules="rules" ref="agencyPostForm" label-width="100px" class="demo-ruleForm">
+        <el-form-item label="目标邮箱" prop="email">
+          <el-input v-model="agencyPostForm.email"></el-input>
+        </el-form-item>
+        <el-form-item label="企业名称" prop="name">
+          <el-input v-model="agencyPostForm.name"></el-input>
+        </el-form-item>
+        <el-form-item label="工作方式">
+          <el-radio-group v-model="agencyPostForm.workType">
+            <el-radio :label="1">兼职</el-radio>
+            <el-radio :label="2">驻场</el-radio>
+            <el-radio :label="3">全职</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="工作地点" v-show="agencyPostForm.workType != 1">
+          <el-cascader
+            v-model="agencyPostForm.provIdcity"
+            :options="areas"
+            @change="cityChange"></el-cascader>
+        </el-form-item>
+        <el-form-item label="职位类型">
+          <el-cascader
+            v-model="agencyPostForm.positionType"
+            :options="positionType"
+            @change="positionChange"></el-cascader>
+        </el-form-item>
+        <el-form-item label="薪资范围">
+          <el-row :gutter="20">
+            <el-col :span="10">
+              <el-select v-model="agencyPostForm.minSalary" placeholder="请选择">
+                <el-option
+                  v-for="item in minSalary"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-col>
+            <el-col :span="10" :offset="2">
+              <el-select v-model="agencyPostForm.maxSalary" placeholder="请选择">
+                <el-option
+                  v-for="item in maxSalary"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-col>
+          </el-row>
+        </el-form-item>
+        <el-form-item label="工作周期">
+          <el-row :gutter="20">
+            <el-col :span="10">
+              <el-select v-model="agencyPostForm.minSalary" placeholder="请选择">
+                <el-option
+                  v-for="item in minSalary"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-col>
+            <el-col :span="10" :offset="2">
+              <el-select v-model="agencyPostForm.maxSalary" placeholder="请选择">
+                <el-option
+                  v-for="item in maxSalary"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-col>
+          </el-row>
+        </el-form-item>
+        <el-form-item label="技能要求">
+          <el-cascader
+            v-model="agencyPostForm.provIdcity"
+            :options="areas"
+            @change="cityChange"></el-cascader>
+        </el-form-item>
+        <el-form-item label="经验要求">
+          <el-radio-group v-model="agencyPostForm.workType">
+            <el-radio :label="0">不限</el-radio>
+            <el-radio :label="1">兼职</el-radio>
+            <el-radio :label="2">驻场</el-radio>
+            <el-radio :label="3">全职</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="工作说明">
+          <el-input type="textarea" v-model="agencyPostForm.description"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="agencyPost = false">取 消</el-button>
+        <el-button type="primary" @click="editAu">确认发布</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        page: 1,
+        total: 0,
+        auditData: [],
+        agencyPost: false,
+        agencyPostForm: {
+          workType: 2
+        },
+        rules: {
+          email: [
+            {required: true, message: '请输入目标邮箱', trigger: 'blur'},
+            {type: 'email', message: '邮箱格式不正确', trigger: 'blur'}
+          ],
+          name: [
+            {required: true, message: '请输入企业名称', trigger: 'blur'},
+            {min: 3, max: 50, message: '长度在 3 到 50  个字符', trigger: 'blur'}
+          ],
+        },
+        minSalary:[
+          {
+            value: '选项1',
+            label: '黄金糕'
+          }
+        ],
+        maxSalary:[
+          {
+            value: '选项1',
+            label: '黄金糕'
+          }
+        ],
+
+        //配置
+        options: [],
+        areas: [],    //工作地点
+        positionType: []   //职位类型
+      };
+    },
+    mounted() {
+      this.getAuditList();
+      this.getOptions();
+
+    },
+    methods: {
+      formatDate(time, format = '') {
+        if (time === "0") {
+          return "--";
+        }
+        let now = new Date(time * 1000);
+        let year = now.getFullYear();
+        let month = now.getMonth() + 1;
+        let date = now.getDate();
+        let hour = now.getHours();
+        let minute = now.getMinutes();
+        let second = now.getSeconds();
+        if (hour < 10) {
+          hour = "0" + hour;
+        }
+        if (minute < 10) {
+          minute = "0" + minute;
+        }
+        if (second < 10) {
+          second = "0" + second;
+        }
+        return (format == '' ?
+            year +
+            "-" +
+            month +
+            "-" +
+            date +
+            " " +
+            hour +
+            ":" +
+            minute +
+            ":" +
+            second
+            :
+            year +
+            "-" +
+            month +
+            "-" +
+            date +
+            " " +
+            hour +
+            ":" +
+            minute
+        );
+      },
+      async getOptions() {
+        let res = await this.$post("/api/recruit/getOptions");
+        if (res && res.status === 1) {
+          this.options = res.data || [];
+          this.getAreas();
+          this.getPositionType();
+        }
+      },
+      getAreas() {
+        let provinces = this.options.provinces;
+        let cities = this.options.cities;
+        let data = [];
+        let id, dd, c;
+        for (let i = 0; i < provinces.length; i++) {
+          id = provinces[i].id;
+          let arr = {
+            value: id,
+            label: provinces[i].name,
+            children: (function () {
+              c = 0;
+              dd = [];
+              for (let j = 0; j < cities.length; j++) {
+                if (cities[j].prov_id == id) {
+                  let arr1 = {
+                    value: cities[j].id,
+                    label: cities[j].name
+                  };
+                  dd[c] = arr1;
+                  c++;
+                }
+              }
+              return dd;
+            })()
+          };
+          data[i] = arr;
+        }
+        this.areas = data;
+      },
+      getPositionType() {
+        let positionType = this.options.direction;
+        let arr = [];
+        for (let i = 0; i < positionType.length; i++) {
+          let d = {
+            value: positionType[i].occupation_id,
+            label: positionType[i].occupation_name,
+            children: (function () {
+              if (positionType[i].children.length > 0) {
+                let a = [];
+                for (let j = 0; j < positionType[i].children.length; j++) {
+                  a[j] = {
+                    value: positionType[i].children[j].direction_id,
+                    label: positionType[i].children[j].direction_name,
+                  }
+                }
+                return a;
+              }
+            })()
+          };
+          arr[i] = d;
+        }
+        this.positionType = arr;
+      },
+      cityChange(value) {
+        alert(value);
+      },
+      positionChange(value) {
+        alert(value);
+      },
+      async getAuditList() {
+        const page = this.page;
+        const data = {
+          page
+        };
+        let res = await this.$post("/api/admin/recruit/getAuditAgencyPostList", data);
+        if (res && res.status === 1) {
+          this.auditData = res.data.list || [];
+          this.total = res.data.total * 1;
+        }
+      },
+      async handleApproveClick(recruitId) {
+        const action = "approve";
+        const data = {
+          recruitId,
+          action
+        };
+        let res = await this.$post("/api/admin/recruit/audit", data);
+        if (res && res.status === 1) {
+          console.log(res);
+          this.$message({
+            message: res.info,
+            type: "success"
+          });
+          this.getAuditList();
+        }
+      },
+
+      handleCurrentChange(val) {
+        this.page = val;
+        this.getAuditList();
+      },
+      clickRow(row) {
+        const id = row.id;
+        this.$router.push({
+          path: "/main/job",
+          query: {
+            id
+          }
+        });
+      },
+      onAdd() {
+        this.agencyPost = true;
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .count-list {
+    padding-bottom: 10px;
+    display: flex;
+    align-items: center;
+  }
+
+  .count-item {
+    margin-right: 20px;
+    font-size: 16px;
+  }
+
+  .content {
+    white-space: nowrap;
+    overflow-x: scroll;
+    height: calc(100% - 150px);
+  }
+
+  .btn {
+    width: 80px;
+  }
+
+  .order-footer {
+    margin-top: 10px;
+  }
+</style>

+ 17 - 4
pages/main/index/jobs_publish_company.vue

@@ -7,16 +7,29 @@
       <el-table :data="publishCompanies.list" border>
         <el-table-column :className="`clickable`" prop="companyInfo.name" label="企业名称" width="400">
           <template slot-scope="scope">
-            <span @click="goCompany(scope.row)">{{scope.row.companyInfo.name}}</span>
+            <span @click="goRooterUser(scope.row)">{{scope.row.companyInfo.name}}</span>
           </template>
         </el-table-column>
-        <el-table-column :className="`clickable`" prop="userInfo.nickname" label="昵称" width="160">
+        <el-table-column prop="isNewUser" label="是否新用户" width="120">
           <template slot-scope="scope">
-            <span @click="goRooterUser(scope.row)">{{scope.row.userInfo.nickname}}</span>
+            <span v-if="scope.row.userInfo.isNewUser">是</span>
+            <span v-else>否</span>
           </template>
         </el-table-column>
         <el-table-column prop="total" label="发布岗位总数" width="160"></el-table-column>
         <el-table-column prop="totalOpen" label="开放中" width="120"></el-table-column>
+        <el-table-column prop="totalOpen" label="企业会员" width="120">
+          <template slot-scope="scope">
+            <span v-if="scope.row.userInfo.isVip">是</span>
+            <span v-else>否</span>
+          </template>
+        </el-table-column>
+        <el-table-column  label="企业认证" width="120">
+          <template slot-scope="scope">
+            <span v-if="scope.row.companyInfo.status == '2'">是</span>
+            <span v-else>否</span>
+          </template>
+        </el-table-column>
       </el-table>
     </div>
     <el-pagination
@@ -65,7 +78,7 @@ export default {
         this.$store.state.domainConfig.siteUrl + `/company/${row.uid}`
       );
     },
-    goRooterUser() {
+    goRooterUser(row) {
       window.open(
         this.$store.state.domainConfig.siteUrl + `/rooter/user/${row.uid}`
       );