Browse Source

Merge branch 'master' of http://git.cc-lotus.info/smart-jobs/web-student

lrf402788946 5 năm trước cách đây
mục cha
commit
ed1203e52d

+ 22 - 0
src/store.js

@@ -32,6 +32,10 @@ const api = {
   //待办事项
   notice: `${process.env.NODE_ENV === 'development' ? '/napi' : '/api/msg'}/message`,
   noticeDelete: `${process.env.NODE_ENV === 'development' ? '/napi' : '/api/msg'}/message/{id}`,
+  // 站点管理
+  siteQuery: '/api/cms/site/query',
+  siteFetch: '/api/cms/site/config',
+  siteContent: '/api/cms/site/content',
 };
 export default new Vuex.Store({
   state: {
@@ -244,6 +248,24 @@ export default new Vuex.Store({
       }
       return result;
     },
+    // 站点管理
+    async siteOperation({ state }, { type, data }) {
+      let result;
+      if (type === 'list') {
+        let { site, column } = data;
+        result = await this.$axios.$get(api.siteQuery, { column: column });
+      }
+      if (type === 'search') {
+        let { site } = data;
+        //_tenant
+        let content = await this.$axios.$get(api.siteContent, {});
+        result = await this.$axios.$get(api.siteFetch, {});
+        if (content.data && `${content.errcode}` === '0') {
+          result.data.content = content && content.data ? content.data : '';
+        }
+      }
+      return result;
+    },
   },
 });
 

+ 15 - 3
src/views/home/index.vue

@@ -7,7 +7,7 @@
           <el-col class="topLeftTxt">
             <ul>
               <li>
-                <span class="number number_s">3</span>
+                <span class="number number_s">{{ totalSelf }}</span>
                 <p>我的投递</p>
               </li>
               <li>
@@ -138,13 +138,17 @@ export default {
     tableDataSign: [],
     tableDataWhe: [],
     noticeList: [],
+    totalSelf: 0,
   }),
   created() {
     this.getNoticeList();
+    this.searchNumber();
+  },
+  computed: {
+    ...mapState(['user']),
   },
-  computed: {},
   methods: {
-    ...mapActions(['noticeOperation']),
+    ...mapActions(['noticeOperation', 'lettersOperation']),
     async getNoticeList() {
       let result = await this.noticeOperation({ type: 'list', data: { userid: this.user.id, type: 3 } });
       if (`${result.errcode}` === '0') {
@@ -158,6 +162,14 @@ export default {
         this.getNoticeList();
       }
     },
+    async searchNumber() {
+      let result = await this.lettersOperation({ type: 'list', data: { studname: this.user.xm } });
+      if (`${result.errcode}` === '0') {
+        this.$set(this, `totalSelf`, result.total);
+      } else {
+        this.$message.error(result.errmsg ? result.errmsg : 'error');
+      }
+    },
   },
 };
 </script>

+ 33 - 7
src/views/login/login.vue

@@ -5,11 +5,7 @@
         <el-row :span="24">
           <el-col :span="24" class="top">
             <div class="w_1200">
-              <el-col :span="22"><img style="width: 290px; height: 66px" :src="url"/></el-col>
-              <el-col :span="2">
-                <el-col :span="6"><img style="width: 25px; height: 25px" :src="pic"/></el-col>
-                <el-col :span="18"><el-link type="primary">咨询帮助</el-link></el-col>
-              </el-col>
+              <p>{{ siteTitle }}</p>
             </div>
           </el-col>
           <div class="w_1200">
@@ -61,7 +57,7 @@
                     <!-- <el-col :span="19" style="padding: 8px 0;"><el-checkbox v-model="checked">记住登陆账号</el-checkbox></el-col> -->
                     <el-col :span="24"><el-button type="success" class="login" @click="toSubmit">登录</el-button></el-col>
                   </el-col>
-                  <el-col><el-link type="primary" class="login_tips" :underline="false">忘记登陆密码?</el-link></el-col>
+                  <!-- <el-col><el-link type="primary" class="login_tips" :underline="false">忘记登陆密码?</el-link></el-col> -->
                 </el-row>
               </el-col>
               <el-col :span="8" class="mainRight" v-else>
@@ -109,14 +105,17 @@ export default {
       passwd: [{ required: true, message: '请输入密码', trigger: 'blur' }],
     },
     verifyForm: {},
+    site: {},
+    siteTitle: '',
   }),
   created() {
     this.initQrcode();
     this.enterListen();
+    this.getSite();
   },
   computed: {},
   methods: {
-    ...mapActions(['studLogin', 'createConnection', 'getWxtoken', 'verifyOperation']),
+    ...mapActions(['studLogin', 'createConnection', 'getWxtoken', 'verifyOperation', 'siteOperation']),
     toSubmit() {
       this.$refs.form.validate(valid => {
         if (valid) {
@@ -173,6 +172,22 @@ export default {
         }
       };
     },
+    //获取站点信息
+    async getSite() {
+      let site = sessionStorage.getItem('site');
+      if (!site) {
+        let result = await this.siteOperation({ type: 'search', data: {} });
+        if (`${result.errcode}` === `0`) {
+          sessionStorage.setItem('site', JSON.stringify(result.data));
+          this.$set(this, `site`, result.data);
+          console.log(this.site);
+          this.$set(this, `siteTitle`, this.site.name);
+        }
+      } else {
+        this.$set(this, `site`, JSON.parse(site));
+        this.$set(this, `siteTitle`, this.site.name);
+      }
+    },
   },
 };
 </script>
@@ -188,6 +203,14 @@ export default {
   opacity: 0.9;
   border-top: 4px solid #44b569;
 }
+.top p {
+  font-size: 27px;
+  padding: 0;
+  margin: 0;
+  height: 70px;
+  line-height: 70px;
+  font-family: cursive;
+}
 .mainLeft {
   padding: 15% 0;
 }
@@ -227,4 +250,7 @@ export default {
   font-size: 13px;
   color: #808080;
 }
+/deep/.login {
+  width: 100%;
+}
 </style>

+ 46 - 41
src/views/want/info/context/jobinfo.vue

@@ -10,7 +10,6 @@
               <el-option label="全职" :value="0"></el-option>
               <el-option label="实习" :value="1"></el-option>
             </el-select>
-            <!-- <el-date-picker v-model="value1" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker> -->
           </el-col>
           <el-col :span="4" class="search_center">企业名称:</el-col>
           <el-col :span="8" class="search_center">
@@ -24,44 +23,25 @@
     </el-row>
     <el-card class="box-card" shadow="never" style="margin-top: 2rem">
       <el-row>
-        <el-table :data="list" style="width: 100%" :show-header="false">
-          <el-table-column align="left">
-            <template v-slot="scope">
-              <el-row type="flex" align="middle" justify="center">
-                <el-col :span="3">
-                  <div class="demo-basic--circle">
-                    <div><el-avatar shape="square" :size="80" :src="squareUrl"></el-avatar></div>
-                  </div>
-                </el-col>
-                <el-col :span="21">
-                  <el-row type="flex" align="middle" justify="center">
-                    <el-col :span="18">
-                      <el-link type="primary" @click="turnDetail(scope.row.id)">{{ scope.row.title }}</el-link>
-                    </el-col>
-                    <el-col :span="6">
-                      <span style="color: #F56C6C;">{{ scope.row.date }}</span>
-                    </el-col>
-                  </el-row>
-                  <el-row type="flex" align="bottom" justify="center">
-                    <el-col :span="8"> &nbsp; </el-col>
-                    <el-col :span="10"> &nbsp; </el-col>
-                    <el-col :span="8"> &nbsp; </el-col>
-                  </el-row>
-                  <el-row type="flex" align="bottom" justify="center">
-                    <el-col :span="8"> &nbsp; </el-col>
-                    <el-col :span="10">
-                      &nbsp;
-                    </el-col>
-                    <!-- <el-col :span="6">
-                      <i class="el-icon-view" style="padding-right: 0.3rem"></i>
-                      <span style="font-size: 0.9rem; color: #999999;">{{ scope.row.view }} </span>
-                    </el-col> -->
-                  </el-row>
-                </el-col>
-              </el-row>
-            </template>
-          </el-table-column>
-        </el-table>
+        <el-col class="list" :span="24" v-for="(item, index) in list" :key="index">
+          <el-col :span="3" class="image">
+            <el-image style="width:80px;height:80px;" :src="item.logo_url"></el-image>
+          </el-col>
+          <el-col :span="20" class="info">
+            <el-col :span="24" class="title">
+              <el-link @click="turnDetail(item.id)">{{ item.title }}</el-link>
+            </el-col>
+            <el-col :span="24" class="type">
+              <p>招聘类型:{{ item.is_practice === 0 ? '全职' : '实习' }}</p>
+            </el-col>
+            <el-col :span="24" class="schname">
+              <p>主办方:{{ item.schname }}</p>
+            </el-col>
+            <el-col :span="24" class="corpname">
+              <p>参会企业:{{ item.corpname }}</p>
+            </el-col>
+          </el-col>
+        </el-col>
       </el-row>
     </el-card>
     <el-row class="row_pagination">
@@ -91,7 +71,7 @@ export default {
   },
   computed: {},
   methods: {
-    ...mapActions(['jobinfoOperation']),
+    ...mapActions(['jobinfoOperation', 'corpOperation']),
     async search(page) {
       let skip = 0;
       if (page) {
@@ -99,8 +79,12 @@ export default {
       }
       let result = await this.jobinfoOperation({ type: 'list', data: { skip: skip, limit: this.$limit, ...this.searchInfo } });
       if (`${result.errcode}` === '0') {
-        this.$set(this, `list`, result.data);
+        for (const val of result.data) {
+          let { identity } = await this.corpOperation({ type: 'search', data: { corpid: val.corpid } });
+          val.logo_url = identity.logo_url;
+        }
         this.$set(this, `totalRow`, result.total);
+        this.$set(this, `list`, result.data);
       } else {
         this.$message.error(result.errmsg ? result.errmsg : 'error');
       }
@@ -113,6 +97,10 @@ export default {
 </script>
 
 <style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
 .row_pagination {
   text-align: right;
   margin-top: 1rem;
@@ -120,4 +108,21 @@ export default {
 .search_center {
   text-align: center;
 }
+.list {
+  padding: 12px 0;
+  border-bottom: 1px solid #ccc;
+}
+.list:hover {
+  background-color: #cccccc3f;
+}
+.image {
+  text-align: center;
+}
+/deep/.info .title .el-link {
+  font-size: 20px;
+  color: #409eff;
+}
+.info p {
+  font-size: 14px;
+}
 </style>

+ 48 - 21
src/views/want/resume/index.vue

@@ -23,7 +23,7 @@
                   </el-select>
                 </form-item>
                 <form-item label="期望职业">
-                  <el-input v-model="expect.job" placeholder="请选择期望职业"></el-input>
+                  <el-input v-model="expect.job" placeholder="请选择期望职业" onkeyup="value=value.replace(/[^\w()()\u4E00-\u9FA5]/g, '')"></el-input>
                 </form-item>
                 <form-item label="职位分类">
                   <el-select v-model="expect.category" :multiple="true" :filterable="true" placeholder="请选择期望职业" style="width: 100%">
@@ -68,7 +68,9 @@
                 </form-item>
               </el-row>
               <el-row>
-                <form-item label="姓名"> <el-input v-model="info.info.xm" placeholder="请输入姓名" readonly></el-input></form-item>
+                <form-item label="姓名">
+                  <el-input v-model="info.info.xm" placeholder="请输入姓名" readonly></el-input>
+                </form-item>
                 <form-item label="性别">
                   <el-radio-group v-model="info.info.xb" disabled>
                     <el-radio v-for="(item, index) in xbList" :key="index" :label="item.name"></el-radio>
@@ -85,11 +87,21 @@
                     <el-option v-for="(item, index) in xlList" :key="index" :label="item.name" :value="item.name"> </el-option>
                   </el-select>
                 </form-item>
-                <form-item label="学校"> <el-input v-model="info.info.yx" placeholder="请输入院校" readonly></el-input></form-item>
-                <form-item label="所学专业"> <el-input v-model="info.info.zy" placeholder="请输入所学专业" readonly></el-input></form-item>
-                <form-item label="生源地"> <el-input v-model="info.info.syszd" placeholder="请输入学生生源地" readonly></el-input></form-item>
-                <form-item label="手机号"> <el-input v-model="contact.mobile" placeholder="请输入手机号"></el-input></form-item>
-                <form-item label="邮箱"> <el-input v-model="contact.email" placeholder="请输入邮箱"></el-input></form-item>
+                <form-item label="学校">
+                  <el-input v-model="info.info.yx" placeholder="请输入院校" readonly></el-input>
+                </form-item>
+                <form-item label="所学专业">
+                  <el-input v-model="info.info.zy" placeholder="请输入所学专业" readonly></el-input>
+                </form-item>
+                <form-item label="生源地">
+                  <el-input v-model="info.info.syszd" placeholder="请输入学生生源地" readonly></el-input>
+                </form-item>
+                <form-item label="手机号">
+                  <el-input v-model="contact.mobile" placeholder="请输入手机号" :maxlength="11" onkeyup="this.value=this.value.replace(/\D/g,'')"></el-input>
+                </form-item>
+                <form-item label="邮箱">
+                  <el-input v-model="contact.email" placeholder="请输入邮箱" onkeyup="value=value.replace(/[^\w\@\.]/g, '')"></el-input>
+                </form-item>
               </el-row>
             </el-card>
             <el-card class="box-card" shadow="never" style="margin-top: 2rem">
@@ -99,7 +111,9 @@
                 </el-row>
               </template>
               <el-row>
-                <form-item label="一句话描述"> <el-input v-model="info.profile" placeholder="请输入一句话描述"></el-input></form-item>
+                <form-item label="一句话描述">
+                  <el-input v-model="info.profile" placeholder="请输入一句话描述"></el-input>
+                </form-item>
                 <form-item>
                   <template #title>
                     <el-col :span="24">专业技能</el-col>
@@ -118,7 +132,9 @@
               <template #header>
                 <el-row type="flex" align="middle">
                   <el-col :span="21">教育经历</el-col>
-                  <el-col :span="3"><el-button type="success" size="mini" icon="el-icon-plus" @click="educationsDialog = true">新增</el-button></el-col>
+                  <el-col :span="3">
+                    <el-button type="success" size="mini" icon="el-icon-plus" @click="educationsDialog = true">新增 </el-button>
+                  </el-col>
                 </el-row>
               </template>
               <el-row>
@@ -144,7 +160,9 @@
               <template #header>
                 <el-row type="flex" align="middle">
                   <el-col :span="21">工作或项目经历</el-col>
-                  <el-col :span="3"><el-button type="success" size="mini" icon="el-icon-plus" @click="worksDialog = true">新增</el-button></el-col>
+                  <el-col :span="3">
+                    <el-button type="success" size="mini" icon="el-icon-plus" @click="worksDialog = true">新增</el-button>
+                  </el-col>
                 </el-row>
               </template>
               <el-row>
@@ -188,11 +206,11 @@
             <el-card class="box-card" shadow="never" style="margin-top: 2rem">
               <template #header>
                 <el-row type="flex" align="middle">
-                  <el-col :span="21">能力介绍<span style="font-weight: 700; font-size: 0.75rem;">(如您的作品,成绩单,证书等证明材料)</span></el-col>
+                  <el-col :span="21">能力介绍<span style="font-weight: 700; font-size: 0.75rem;">(如您的作品,成绩单,证书等证明材料)</span> </el-col>
                 </el-row>
               </template>
               <el-row>
-                <el-col :span="24">
+                <el-col :span="12">
                   <upload-file
                     :url="`/files/stud/resume_${user.id}abilities/upload`"
                     desc="只能上传不超过2MB文件"
@@ -213,7 +231,7 @@
                 </el-row>
               </template>
               <el-row>
-                <el-col :span="24">
+                <el-col :span="12">
                   <upload-file
                     :url="`/files/stud/resume_${user.id}shows/upload`"
                     desc="只能上传不超过2MB文件"
@@ -230,11 +248,11 @@
             <el-card class="box-card" shadow="never" style="margin-top: 2rem">
               <template #header>
                 <el-row type="flex" align="middle">
-                  <el-col :span="21">简历附件<span style="font-weight: 700; font-size: 0.75rem;">(可上传pdf、word文档或图片文件)</span></el-col>
+                  <el-col :span="21">简历附件<span style="font-weight: 700; font-size: 0.75rem;">(可上传pdf、word文档或图片文件)</span> </el-col>
                 </el-row>
               </template>
               <el-row>
-                <el-col :span="24">
+                <el-col :span="12">
                   <upload-file
                     :url="`/files/stud/resume_${user.id}attachments/upload`"
                     desc="只能上传不超过2MB文件"
@@ -260,16 +278,16 @@
     <el-dialog title="教育经历" center :visible.sync="educationsDialog">
       <el-form :model="educationsForm" label-position="left" label-width="auto" ref="educationsForm" :rules="eduRules">
         <el-form-item label="院校" prop="yx">
-          <el-input v-model="educationsForm.yx" placeholder="请输入院校"></el-input>
+          <el-input v-model="educationsForm.yx" placeholder="请输入院校" onkeyup="value=value.replace(/[^\w()()\u4E00-\u9FA5]/g, '')"></el-input>
         </el-form-item>
         <el-form-item label="院系/分院" prop="fy">
-          <el-input v-model="educationsForm.fy" placeholder="请输入院系/分院"></el-input>
+          <el-input v-model="educationsForm.fy" placeholder="请输入院系/分院" onkeyup="value=value.replace(/[^\w()()\u4E00-\u9FA5]/g, '')"></el-input>
         </el-form-item>
         <el-form-item label="专业" prop="zy">
-          <el-input v-model="educationsForm.zy" placeholder="请输入专业"></el-input>
+          <el-input v-model="educationsForm.zy" placeholder="请输入专业" onkeyup="value=value.replace(/[^\w()()\u4E00-\u9FA5]/g, '')"></el-input>
         </el-form-item>
         <el-form-item label="学历" prop="xl">
-          <el-input v-model="educationsForm.xl" placeholder="请输入学历"></el-input>
+          <el-input v-model="educationsForm.xl" placeholder="请输入学历" onkeyup="value=value.replace(/[^\w()()\u4E00-\u9FA5]/g, '')"></el-input>
         </el-form-item>
         <el-form-item label="入学时间" prop="rxsj">
           <el-date-picker
@@ -302,10 +320,10 @@
     <el-dialog title="工作经历" center :visible.sync="worksDialog">
       <el-form :model="worksForm" label-position="left" label-width="auto" ref="worksForm" :rules="worksRules">
         <el-form-item label="公司名/项目名" prop="corpname">
-          <el-input v-model="worksForm.corpname" placeholder="请输入公司名/项目名"></el-input>
+          <el-input v-model="worksForm.corpname" placeholder="请输入公司名/项目名" onkeyup="value=value.replace(/[^\w()()\u4E00-\u9FA5]/g, '')"></el-input>
         </el-form-item>
         <el-form-item label="职位/角色" prop="position">
-          <el-input v-model="worksForm.position" placeholder="请输入职位/角色"></el-input>
+          <el-input v-model="worksForm.position" placeholder="请输入职位/角色" onkeyup="value=value.replace(/[^\w()()\u4E00-\u9FA5]/g, '')"></el-input>
         </el-form-item>
         <el-form-item label="工作描述" prop="desc">
           <el-input v-model="worksForm.desc" type="textarea" autosize placeholder="请输入工作描述"></el-input>
@@ -680,4 +698,13 @@ export default {
 .rowStyle {
   border-bottom: 1px dashed;
 }
+/deep/.el-dialog__headerbtn {
+  top: 20px;
+  right: 20%;
+}
+/deep/.el-dialog__headerbtn .el-dialog__close {
+  color: #333;
+  font-size: 30px;
+  font-weight: bold;
+}
 </style>