xtz 4 years ago
parent
commit
5cd4c60aac

+ 1 - 1
public/index.html

@@ -13,7 +13,7 @@
     <meta name="referrer" content="no-referrer" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
-    <link rel="icon" href="<%= BASE_URL %>static/logo.ico">
+    <link rel="icon" href="<%= BASE_URL %>static/logo.png">
     <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+SC:100,300,400,500,600,700,900">
     <script src = "https://cdn.jsdelivr.net/npm/proxy-polyfill@0.3.0/proxy.min.js"></script>
     <title>上海梵天软件</title>

BIN
public/static/logo.png


+ 1 - 1
src/common/api/axios.js

@@ -17,7 +17,7 @@ const allowList = [ // 文件请求路径数组
 ]
 
 const service = axios.create({
-  baseURL: process.env.VUE_APP_API,
+  baseURL: process.env.VUE_APP_API + '/admin',
   // baseURL: 'http://47.100.59.52:7785',
   timeout: 90000
 })

+ 1 - 1
src/common/sass/currency.scss

@@ -1,6 +1,6 @@
 $tint-color: rgb(251,251,251);
 $desc-color: #B3C4E0;
-$dark-color: #4ddcf5;
+$dark-color: #1D2088;
 $gray-color: rgb(242,243,245);
 $theme-color: rgb(141,144,249);
 /* 改变主题色变量 */

+ 2 - 2
src/components/vAbove/vAbove.scss

@@ -2,9 +2,9 @@ $above-height:65px;
 .vAboveCom{
 
   position: fixed;
+  left:210px;
   z-index:100;
-  width: 100%;
-  left: 0;
+  width: calc(100% - 210px);
   box-shadow: 1px 1px 12px rgb(244,244,244);
   background-color:#fff;
   height:$above-height;

+ 0 - 1
src/components/vNav/vNav.scss

@@ -7,7 +7,6 @@
  */ 
 .vNavCom{
   position: fixed;
-  top: 65px;
   height:100%;
   z-index:101;
   .el-menu{

+ 1 - 1
src/components/vNav/vNav.vue

@@ -5,7 +5,7 @@
       上海梵天软件
     </div>
     <el-menu
-      background-color="#4ddcf5"
+      background-color="#1D2088"
       @select="handleSelect"
       text-color="#F1F1F1"
       unique-opened

+ 161 - 20
src/views/candidateManage/candidateAll.vue

@@ -16,9 +16,74 @@
       :queryData="queryData"
       :form="searchForm"
       @details="details"
+      @update="update"
     ></v-table>
     <v-pager @page="callPage" :total="totalrecords"></v-pager>
     <resume :dialogFormVisible="dialogFormVisible" :close="close" :info="info" :searchForm="searchForm" :queryData="queryData"></resume>
+    <el-dialog
+      :visible.sync="dialogVisible"
+      width="600px"
+      :before-close="closeDia"
+      :close-on-click-modal="false"
+      >
+      <el-form :model="form" ref="uform" label-width="140px" :rules="rules" label-position="right">
+        <el-form-item label="姓名" prop="delivererName">
+          <el-input placeholder="请输入姓名" v-model="form.delivererName"></el-input>
+        </el-form-item>
+        <el-form-item label="性别" prop="delivererSex">
+          <el-select
+          v-model="form.delivererSex"
+          class="select"
+          placeholder="请选择性别">
+            <el-option
+            v-for="item in [{ value: 0, label: '女' }, { value: 1, label: '男' }]"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="简历投递职位" prop="positionApplied">
+          <el-input placeholder="请输入投递职位" v-model="form.positionApplied"></el-input>
+        </el-form-item>
+        <el-form-item label="工作年限" prop="delivererWorkExp">
+          <el-input placeholder="请输入工作年限" v-model="form.delivererWorkExp"></el-input>
+        </el-form-item>
+        <el-form-item label="学历" prop="delivererEducation">
+          <el-select
+          class="select"
+          v-model="form.delivererEducation"
+          placeholder="请选择学历">
+            <el-option
+            v-for="item in ['大专', '本科', '研究生', '博士', '其他']"
+            :key="item"
+            :label="item"
+            :value="item">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="联系电话" prop="delivererPhone">
+          <el-input placeholder="请输入联系电话" v-model="form.delivererPhone"></el-input>
+        </el-form-item>
+        <el-form-item label="面试应聘职位" prop="desiredPositionId">
+          <el-select
+          class="select"
+          v-model="form.desiredPositionId"
+          placeholder="请选择应聘职位">
+            <el-option
+            v-for="item in positionList"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="closeDia">取消</el-button>
+          <el-button type="primary" @click="submit">立即发出</el-button>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
   </div>
 </template>
 
@@ -26,14 +91,50 @@
 import resume from './resume'
 export default {
   data () {
+    let validator = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('请输入手机号'))
+      } else {
+        if (!(/^1[3456789]\d{9}$/.test(value))) {
+          callback(new Error('请输入正确的手机格式'))
+        }
+        callback()
+      }
+    }
     return {
       tableList: [],
       dialogFormVisible: false,
+      dialogVisible: false,
       page: 1,
       totalrecords: 0,
       pickList: [],
       downList1: [],
       searchForm: {},
+      form: {},
+      rules: {
+        delivererEducation: [
+          { required: true, message: '请选择学历', trigger: 'change' }
+        ],
+        delivererName: [
+          { required: true, message: '请输入姓名', trigger: 'change' }
+        ],
+        delivererPhone: [
+          { required: true, validator, trigger: 'change' }
+        ],
+        delivererSex: [
+          { required: true, message: '请选择性别', trigger: 'change' }
+        ],
+        delivererWorkExp: [
+          { required: true, message: '请填写工作经验', trigger: 'change' }
+        ],
+        desiredPositionId: [
+          { required: true, message: '请选择应聘职位', trigger: 'change' }
+        ],
+        positionApplied: [
+          { required: true, message: '请填写投递职位', trigger: 'change' }
+        ]
+      },
+      positionList: [],
       info: {},
       list: [
         {
@@ -80,22 +181,26 @@ export default {
           },
           {
             label: '姓名',
-            props: 'delivererName'
+            props: 'delivererName',
+            width: 60
           },
           {
             label: '性别',
             props: 'delivererSex',
-            options: ['女', '男']
+            options: ['女', '男'],
+            width: 60
           },
           {
             label: '简历来源',
             props: 'resumeFrom',
-            options: ['51job', '智联招聘', '58同城', '平台']
+            options: ['51job', '智联招聘', '58同城', '平台'],
+            width: 80
           },
           {
             label: '招聘类型',
             props: 'recruitType',
-            options: ['社招', '校招', '直接校招']
+            options: ['社招', '校招', '直接校招'],
+            width: 80
           },
           {
             label: '简历投递职位',
@@ -140,10 +245,15 @@ export default {
             options: ['未读', '已通过', '已淘汰']
           }
         ],
-        fixed: true,
-        width: 100,
+        // fixed: true,
+        width: 200,
         handle: [
           {
+            title: '修改简历',
+            method: 'update',
+            type: 'info'
+          },
+          {
             title: '查看简历',
             method: 'details',
             type: 'info'
@@ -157,7 +267,7 @@ export default {
   },
   mounted () {
     this.queryData()
-    // this.queryDownList()
+    this.queryDownList()
   },
   methods: {
     queryData (form = {}) {
@@ -178,22 +288,46 @@ export default {
           })
         })
     },
-    // queryDownList () {
-    //   this.$api
-    //     .post('/position/queryPositionList', {
-    //       reqdata: {}
-    //     })
-    //     .then((res) => {
-    //       this.list[4].options = res.list.map((item) => ({
-    //         value: item.id,
-    //         label: item.positionName
-    //       }))
-    //       this.downList1 = res.list
-    //     })
-    // },
+    queryDownList () {
+      this.$api
+        .post('/position/queryPositionList', {
+          reqdata: {}
+        })
+        .then((res) => {
+          this.positionList = res.list.map((item) => ({
+            value: item.id,
+            label: item.positionName
+          }))
+          this.downList1 = res.list
+        })
+    },
     search (form) {
       this.queryData(form)
     },
+    update ({ id }) {
+      this.openDia()
+      this.form.id = id
+    },
+    submit () {
+      let a
+      this.$refs['uform'].validate((valid) => {
+        a = valid
+      })
+      if (!a) return
+      let reqdata = this.form
+      this.$api
+        .post('/resumeInfo/updateResumeInfo', {
+          reqdata
+        })
+        .then((res) => {
+          this.$message({
+            message: '修改成功!',
+            type: 'success'
+          })
+          this.closeDia()
+          this.queryData()
+        })
+    },
     details (row) {
       this.open()
       this.info = row
@@ -207,6 +341,13 @@ export default {
           console.log(res)
         })
     },
+    openDia () {
+      this.dialogVisible = true
+    },
+    closeDia () {
+      this.dialogVisible = true
+      this.form = {}
+    },
     open () {
       this.dialogFormVisible = true
     },

+ 133 - 11
src/views/candidateManage/candidateList.vue

@@ -81,7 +81,7 @@
       </el-form>
     </el-dialog>
     <el-dialog
-      :visible.sync="dialogVisible"
+      :visible.sync="visible"
       width="600px"
       :before-close="closeDia"
        :close-on-click-modal="false"
@@ -107,15 +107,90 @@
             <div v-else class="prompt">暂无视频</div>
         </div>
     </el-dialog>
+    <el-dialog
+      :visible.sync="visible"
+      width="600px"
+      :before-close="closeVisible"
+      :close-on-click-modal="false"
+      >
+      <el-form :model="uform" ref="form" label-width="140px" :rules="rule" label-position="right">
+        <el-form-item label="姓名" prop="delivererName">
+          <el-input placeholder="请输入姓名" v-model="uform.delivererName"></el-input>
+        </el-form-item>
+        <el-form-item label="性别" prop="delivererSex">
+          <el-select
+          v-model="uform.delivererSex"
+          class="select"
+          placeholder="请选择性别">
+            <el-option
+            v-for="item in [{ value: 0, label: '女' }, { value: 1, label: '男' }]"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="简历投递职位" prop="positionApplied">
+          <el-input placeholder="请输入投递职位" v-model="uform.positionApplied"></el-input>
+        </el-form-item>
+        <el-form-item label="工作年限" prop="delivererWorkExp">
+          <el-input placeholder="请输入工作年限" v-model="uform.delivererWorkExp"></el-input>
+        </el-form-item>
+        <el-form-item label="学历" prop="delivererEducation">
+          <el-select
+          class="select"
+          v-model="uform.delivererEducation"
+          placeholder="请选择学历">
+            <el-option
+            v-for="item in ['大专', '本科', '研究生', '博士', '其他']"
+            :key="item"
+            :label="item"
+            :value="item">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="联系电话" prop="delivererPhone">
+          <el-input placeholder="请输入联系电话" v-model="uform.delivererPhone"></el-input>
+        </el-form-item>
+        <el-form-item label="面试应聘职位" prop="desiredPositionId">
+          <el-select
+          class="select"
+          v-model="uform.desiredPositionId"
+          placeholder="请选择应聘职位">
+            <el-option
+            v-for="item in positionList"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="closeVisible">取消</el-button>
+          <el-button type="primary" @click="submit">立即发出</el-button>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 export default {
   data () {
+    let validator = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('请输入手机号'))
+      } else {
+        if (!(/^1[3456789]\d{9}$/.test(value))) {
+          callback(new Error('请输入正确的手机格式'))
+        }
+        callback()
+      }
+    }
     return {
       dialogFormVisible: false,
       dialogVisible: false,
+      visible: false,
       tableList: [],
       page: 1,
       isCollapse: 0,
@@ -125,6 +200,7 @@ export default {
       downList: [],
       searchForm: {},
       form: {},
+      uform: {},
       info: {},
       vedioUrl: '',
       rules: {
@@ -132,6 +208,29 @@ export default {
           { required: true, message: '请选择群发模板', trigger: 'blur' }
         ]
       },
+      rule: {
+        delivererEducation: [
+          { required: true, message: '请选择学历', trigger: 'change' }
+        ],
+        delivererName: [
+          { required: true, message: '请输入姓名', trigger: 'change' }
+        ],
+        delivererPhone: [
+          { required: true, validator, trigger: 'change' }
+        ],
+        delivererSex: [
+          { required: true, message: '请选择性别', trigger: 'change' }
+        ],
+        delivererWorkExp: [
+          { required: true, message: '请填写工作经验', trigger: 'change' }
+        ],
+        desiredPositionId: [
+          { required: true, message: '请选择应聘职位', trigger: 'change' }
+        ],
+        positionApplied: [
+          { required: true, message: '请填写投递职位', trigger: 'change' }
+        ]
+      },
       list: [
         {
           placeholder: '请输入关键字查询',
@@ -497,15 +596,7 @@ export default {
       this.queryData(form)
     },
     details (row) {
-      // this.$api
-      //   .post('/resumeInfo/queryResumeInfoDetail', {
-      //     reqdata: {
-      //       id
-      //     }
-      //   })
-      //   .then((res) => {
       row.filePath ? window.open(this.$img + row.filePath) : this.$message({ type: 'info', message: '无此人简历' })
-      // })
     },
     launch () {
       let a
@@ -634,7 +725,31 @@ export default {
     },
     detActive (index) {
       this.$set(this.info, 'active', index)
-      this.vedioUrl = this.info.answerVideoList[this.info.active || 0].answerVideoPath
+      this.vedioUrl = this.info.answerVideoList[this.info.active || 0] ? this.info.answerVideoList[this.info.active || 0].answerVideoPath : ''
+    },
+    update ({ id }) {
+      this.openVisible()
+      this.uform.id = id
+    },
+    submit () {
+      let a
+      this.$refs['uform'].validate((valid) => {
+        a = valid
+      })
+      if (!a) return
+      let reqdata = this.uform
+      this.$api
+        .post('/resumeInfo/updateResumeInfo', {
+          reqdata
+        })
+        .then((res) => {
+          this.$message({
+            message: '修改成功!',
+            type: 'success'
+          })
+          this.closeVisible()
+          this.queryData(this.searchForm)
+        })
     },
     open () {
       this.dialogFormVisible = true
@@ -650,9 +765,16 @@ export default {
     openDia (row) {
       this.info = row
       this.info.active = 0
-      this.vedioUrl = this.info.answerVideoList[this.info.active].answerVideoPath
+      this.vedioUrl = this.info.answerVideoList[this.info.active || 0] ? this.info.answerVideoList[this.info.active || 0].answerVideoPath : ''
       this.dialogVisible = true
     },
+    openVisible () {
+      this.visible = true
+    },
+    closeVisible () {
+      this.visible = false
+      this.uform = {}
+    },
     callPage (val) {
       this.page = val
       this.queryData(this.searchForm)

+ 118 - 0
src/views/candidateManage/resumeList.vue

@@ -40,6 +40,7 @@
       @undetermined="undetermined"
       @toVedio="toVedio"
       @selection-change="selection"
+      @update="update"
       id="id"
     ></v-table>
     <v-pager @page="callPage" :total="totalrecords"></v-pager>
@@ -80,15 +81,77 @@
         </el-form-item>
       </el-form>
     </el-dialog>
+    <el-dialog
+      :visible.sync="dialogVisible"
+      width="600px"
+      :before-close="closeDia"
+      :close-on-click-modal="false"
+      >
+      <el-form :model="uform" ref="form" label-width="140px" :rules="rule" label-position="right">
+        <el-form-item label="姓名" prop="delivererName">
+          <el-input placeholder="请输入姓名" v-model="uform.delivererName"></el-input>
+        </el-form-item>
+        <el-form-item label="性别" prop="delivererSex">
+          <el-select
+          v-model="uform.delivererSex"
+          class="select"
+          placeholder="请选择性别">
+            <el-option
+            v-for="item in [{ value: 0, label: '女' }, { value: 1, label: '男' }]"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="简历投递职位" prop="positionApplied">
+          <el-input placeholder="请输入投递职位" v-model="uform.positionApplied"></el-input>
+        </el-form-item>
+        <el-form-item label="工作年限" prop="delivererWorkExp">
+          <el-input placeholder="请输入工作年限" v-model="uform.delivererWorkExp"></el-input>
+        </el-form-item>
+        <el-form-item label="学历" prop="delivererEducation">
+          <el-select
+          class="select"
+          v-model="uform.delivererEducation"
+          placeholder="请选择学历">
+            <el-option
+            v-for="item in ['大专', '本科', '研究生', '博士', '其他']"
+            :key="item"
+            :label="item"
+            :value="item">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="联系电话" prop="delivererPhone">
+          <el-input placeholder="请输入联系电话" v-model="uform.delivererPhone"></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="closeDia">取消</el-button>
+          <el-button type="primary" @click="submit">立即发出</el-button>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 export default {
   data () {
+    let validator = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('请输入手机号'))
+      } else {
+        if (!(/^1[3456789]\d{9}$/.test(value))) {
+          callback(new Error('请输入正确的手机格式'))
+        }
+        callback()
+      }
+    }
     return {
       tableList: [],
       dialogFormVisible: false,
+      dialogVisible: false,
       page: 1,
       isCollapse: 0,
       totalrecords: 0,
@@ -96,12 +159,36 @@ export default {
       copyPickList: [],
       downList: [],
       form: {},
+      uform: {},
       searchForm: {},
       rules: {
         templateId: [
           { required: true, message: '请选择群发模板', trigger: 'blur' }
         ]
       },
+      rule: {
+        delivererEducation: [
+          { required: true, message: '请选择学历', trigger: 'change' }
+        ],
+        delivererName: [
+          { required: true, message: '请输入姓名', trigger: 'change' }
+        ],
+        delivererPhone: [
+          { required: true, validator, trigger: 'change' }
+        ],
+        delivererSex: [
+          { required: true, message: '请选择性别', trigger: 'change' }
+        ],
+        delivererWorkExp: [
+          { required: true, message: '请填写工作经验', trigger: 'change' }
+        ],
+        desiredPositionId: [
+          { required: true, message: '请选择应聘职位', trigger: 'change' }
+        ],
+        positionApplied: [
+          { required: true, message: '请填写投递职位', trigger: 'change' }
+        ]
+      },
       list: [
         {
           placeholder: '请输入关键字查询',
@@ -498,6 +585,37 @@ export default {
     selection (val) {
       this.$set(this.$data, 'pickList', val)
     },
+    update ({ id }) {
+      this.openDia()
+      this.uform.id = id
+    },
+    submit () {
+      let a
+      this.$refs['uform'].validate((valid) => {
+        a = valid
+      })
+      if (!a) return
+      let reqdata = this.uform
+      this.$api
+        .post('/resumeInfo/updateResumeInfo', {
+          reqdata
+        })
+        .then((res) => {
+          this.$message({
+            message: '修改成功!',
+            type: 'success'
+          })
+          this.closeDia()
+          this.queryData(this.searchForm)
+        })
+    },
+    openDia () {
+      this.dialogVisible = true
+    },
+    closeDia () {
+      this.dialogVisible = true
+      this.uform = {}
+    },
     open () {
       this.dialogFormVisible = true
     },