lugang 4 tahun lalu
induk
melakukan
51d3dfb24a

+ 5 - 0
package-lock.json

@@ -12213,6 +12213,11 @@
       "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
       "dev": true
     },
+    "vue-i18n": {
+      "version": "8.21.0",
+      "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.21.0.tgz",
+      "integrity": "sha512-pKBq6Kg5hNacFHMFgPbpYsFlDIMRu4Ew/tpvTWns14CZoCxt7B3tmSNdrLruGMMivnJu1rhhRqsQqT6YwHkuQQ=="
+    },
     "vue-loader": {
       "version": "15.9.3",
       "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.3.tgz",

+ 1 - 0
package.json

@@ -20,6 +20,7 @@
     "js-cookies": "^1.0.4",
     "vue": "^2.6.10",
     "vue-cropper": "^0.5.2",
+    "vue-i18n": "^8.21.0",
     "vue-router": "^3.1.3",
     "vuex": "^3.1.2",
     "wangeditor": "^3.1.1"

TEMPAT SAMPAH
public/img/logo2.png


TEMPAT SAMPAH
public/img/logo3.png


+ 3 - 0
src/App.vue

@@ -61,4 +61,7 @@ export default {
     }
   }
 }
+video {
+  max-height: 50vh;
+}
 </style>

File diff ditekan karena terlalu besar
+ 5 - 0
src/common/addr.js


+ 4 - 0
src/common/api/axios.js

@@ -50,6 +50,10 @@ service.interceptors.request.use(
       // console.log(config)
       config.responseType = 'blob'
     }
+    if (config.url === '/addr/all_addr') {
+      config.baseURL = process.env.VUE_APP_API
+    }
+    console.log(config)
 
     config.headers['Authorization'] = localStorage.getItem('token')
     api = config.url

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

@@ -1,7 +1,7 @@
 <template>
 <div class="vNavCom">
     <div class="logo">
-        <img src="../../../public/img/logo1.png" alt="">
+        <img src="../../../public/img/logo2.png" alt="">
     </div>
     <el-menu background-color="#fff" @select="handleSelect" text-color="#8D9498" unique-opened active-text-color="#fff">
         <el-submenu v-for="(item,index) in route||filterOne" :key="index" :index="`${index}`">

+ 9 - 0
src/components/vTable/vTable.vue

@@ -140,6 +140,15 @@ export default {
 
 <style lang="scss" scoped>
 @import './vTable.scss';
+// ::v-deep .el-checkbox__inner {
+//   width: 17px;
+//   height: 17px;
+// }
+// ::v-deep .el-checkbox {
+//   display: flex;
+//   justify-content: center;
+//   align-items: center;
+// }
 </style><style lang="scss">
 .el-table .error-row {
     background: rgba($color: red, $alpha: 0.3);

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

@@ -62,7 +62,7 @@ export default {
       this.editor.customConfig.uploadImgServer = this.$url + '/admin/upload/uploadImg' // 配置服务器端地址
       this.editor.customConfig.uploadImgHeaders = {} // 自定义 header
       this.editor.customConfig.uploadFileName = 'file' // 后端接受上传文件的参数名
-      this.editor.customConfig.uploadImgMaxSize = 10 * 1024 * 1024 // 将图片大小限制为 10M
+      this.editor.customConfig.uploadImgMaxSize = 5 * 1024 * 1024 // 将图片大小限制为 10M
       this.editor.customConfig.uploadImgMaxLength = 20 // 限制一次最多上传 20 张图片
       this.editor.customConfig.uploadImgTimeout = 3 * 60 * 1000 // 设置超时时间
 

+ 8 - 0
src/lang/en.js

@@ -0,0 +1,8 @@
+
+let company = {
+  title: 'insert'
+}
+
+export default {
+  company
+}

+ 66 - 0
src/lang/zh.js

@@ -0,0 +1,66 @@
+
+let title = {
+  companyName: '公司名称',
+  companyAddress: '公司地址',
+  sendingMailbox: '发件邮箱',
+  emailPassword: '邮箱密码',
+  mailboxType: '邮箱类型',
+  companyProfile: '公司简介',
+  formName: '表单名称',
+  description: '说明'
+}
+
+let button = {
+  confirmTheChanges: '确认修改',
+  selectAll: '全选',
+  cancel: '取 消',
+  generateForm: '生成表单',
+  addTo: '添加',
+  view: '查看',
+  edit: '编辑',
+  delete: '删除',
+  clickUpload: '点击上传'
+}
+
+let field = {
+  numbering: '编号',
+  formName: '表单名称',
+  description: '说明'
+}
+
+let info = {
+  singleLineInputBox: '单行输入框',
+  multiLineInputBox: '多行输入框',
+  dropDownSelectionBox: '下拉选择框',
+  male: '男',
+  female: '女',
+  juniorCollege: '大专',
+  undergraduate: '本科',
+  masterSDegree: '硕士',
+  phD: '博士',
+  other: '其他',
+  prompt: '提示',
+  determine: '确定',
+  cancel: '取消'
+}
+
+let message = {
+  pleaseEnter: '请输入',
+  pleaseChoose: '请选择',
+  pleaseUpload: '请上传',
+  successfullyModified: '修改成功',
+  undeleted: '已取消删除',
+  selectTheRequiredFormItem: '选择需要的表单项',
+  selectedFormItem: '已选择的表单项',
+  formMessage: '勾选需要的表单选项,点击生成表单即可',
+  longFormMessage: '勾选需要的表单选项,点击生成表单即可',
+  confirmMessage: '此操作将永久删除该数据, 是否继续'
+}
+
+export default {
+  title,
+  button,
+  info,
+  field,
+  message
+}

+ 28 - 0
src/main.js

@@ -23,6 +23,12 @@ import vPager from './components/vPager/vPager'
 import vAbove from './components/vAbove/vAbove'
 import vBread from './components/vBread/vBread'
 import cookiesDeploy from './common/utils/cookiesDeploy'
+import VueI18n from 'vue-i18n'
+import enLocale from 'element-ui/lib/locale/lang/en'
+import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
+
+import en from '@/lang/en'
+import zh from '@/lang/zh'
 
 import './common/sass/common.scss'
 import './common/font/iconfont.css'
@@ -30,6 +36,27 @@ import './common/font/iconfont.css'
 
 import 'babel-polyfill'
 import cssVars from 'css-vars-ponyfill'
+
+Vue.use(VueI18n)
+const i18n = new VueI18n({
+  locale: localStorage.getItem('inter') || 'zh',
+  messages: {
+    en: {
+      ...en,
+      ...enLocale
+    },
+    zh: {
+      ...zh,
+      ...zhLocale
+    }
+  }
+})
+Vue.use(ElementUI, {
+  i18n: (key, value) => i18n.t(key, value)
+})
+Vue.prototype.$th = (key1, key) => {
+  return i18n.t(key1 ? key1 + key : key)
+}
 cssVars({})
 
 Vue.use(ElementUI)
@@ -72,5 +99,6 @@ window.alert = function (str) {
 export default new Vue({
   router,
   store,
+  i18n,
   render: h => h(App)
 }).$mount('#app')

+ 15 - 11
src/views/candidateManage/candidateAll.vue

@@ -11,7 +11,7 @@
     <v-input :btn="btn" :list="list" @search="search" @exports="exports"></v-input>
     <v-table :table="table" :tableList="tableList" :sortType="true" :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>
+    <!-- <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">
@@ -38,6 +38,9 @@
             <el-form-item label="联系电话" prop="delivererPhone">
                 <el-input placeholder="请输入联系电话" v-model="form.delivererPhone"></el-input>
             </el-form-item>
+            <el-form-item label="邮箱地址" prop="delivererMail">
+                <el-input placeholder="请输入邮箱地址" v-model="form.delivererMail"></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">
@@ -54,7 +57,6 @@
 </template>
 
 <script>
-import resume from './resume'
 export default {
   data () {
     let validator = (rule, value, callback) => {
@@ -93,6 +95,11 @@ export default {
           validator,
           trigger: 'change'
         }],
+        delivererMail: [{
+          required: true,
+          message: '请输入邮箱',
+          trigger: 'change'
+        }],
         delivererSex: [{
           required: true,
           message: '请选择性别',
@@ -254,20 +261,17 @@ export default {
         handle: [{
           title: '修改信息',
           method: 'update',
-          type: 'info'
-        },
-        {
-          title: '查看简历',
-          method: 'details',
-          type: 'info'
+          type: 'warning'
         }
+        // {
+        //   title: '查看简历',
+        //   method: 'details',
+        //   type: 'info'
+        // }
         ]
       }
     }
   },
-  components: {
-    resume
-  },
   mounted () {
     this.queryData()
     this.queryDownList()

+ 55 - 32
src/views/candidateManage/candidateList.vue

@@ -38,7 +38,7 @@
             </el-form-item>
         </el-form>
     </el-dialog>
-    <el-dialog :visible.sync="visible" width="600px" :before-close="closeDia" :close-on-click-modal="false">
+    <el-dialog :visible.sync="dialogVisible" width="600px" :before-close="closeDia" :close-on-click-modal="false">
         <div class="title" slot="title">{{info.delivererName}}的面试视频</div>
         <div class="content">
             <div class="video">
@@ -76,6 +76,9 @@
             <el-form-item label="联系电话" prop="delivererPhone">
                 <el-input placeholder="请输入联系电话" v-model="uform.delivererPhone"></el-input>
             </el-form-item>
+            <el-form-item label="邮箱地址" prop="delivererMail">
+                <el-input placeholder="请输入邮箱地址" v-model="uform.delivererMail"></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">
@@ -88,10 +91,12 @@
             </el-form-item>
         </el-form>
     </el-dialog>
+    <resume :dialogFormVisible="visibleTwo" :close="closeTwo" :info="infoTwo" :searchForm="searchForm" :queryData="queryData"></resume>
 </div>
 </template>
 
 <script>
+import resume from './resume'
 export default {
   data () {
     let validator = (rule, value, callback) => {
@@ -108,6 +113,7 @@ export default {
       dialogFormVisible: false,
       dialogVisible: false,
       visible: false,
+      visibleTwo: false,
       tableList: [],
       page: 1,
       isCollapse: 0,
@@ -121,6 +127,7 @@ export default {
       uform: {},
       email: '',
       info: {},
+      infoTwo: {},
       vedioUrl: '',
       rules: {
         templateId: [{
@@ -145,6 +152,11 @@ export default {
           validator,
           trigger: 'change'
         }],
+        delivererMail: [{
+          required: true,
+          message: '请输入邮箱',
+          trigger: 'change'
+        }],
         delivererSex: [{
           required: true,
           message: '请选择性别',
@@ -337,15 +349,15 @@ export default {
         ],
         width: 500,
         handle: [{
-          title: '查看简历',
+          title: '查看',
           method: 'details',
           type: 'info'
         },
-        {
-          title: '查看视频',
-          method: 'openDia',
-          type: 'info'
-        },
+        // {
+        //   title: '查看视频',
+        //   method: 'openDia',
+        //   type: 'info'
+        // },
         {
           title: '通过',
           method: 'through',
@@ -364,7 +376,7 @@ export default {
         {
           title: '修改信息',
           method: 'update',
-          type: 'info'
+          type: 'warning'
         }
         ]
       },
@@ -491,15 +503,15 @@ export default {
         ],
         width: 420,
         handle: [{
-          title: '查看简历',
+          title: '查看',
           method: 'details',
           type: 'info'
         },
-        {
-          title: '查看视频',
-          method: 'openDia',
-          type: 'info'
-        },
+        // {
+        //   title: '查看视频',
+        //   method: 'openDia',
+        //   type: 'info'
+        // },
         {
           title: '通过',
           method: 'through',
@@ -519,6 +531,9 @@ export default {
       }
     }
   },
+  components: {
+    resume
+  },
   mounted () {
     this.queryDownList()
     this.queryEmail()
@@ -579,10 +594,12 @@ export default {
       this.queryData(form)
     },
     details (row) {
-      row.filePath ? window.open(this.$img + row.filePath) : this.$message({
-        type: 'info',
-        message: '无此人简历'
-      })
+      // row.filePath ? window.open(this.$img + row.filePath) : this.$message({
+      //   type: 'info',
+      //   message: '无此人简历'
+      // })
+      this.openTwo()
+      this.infoTwo = row
     },
     launch () {
       let a
@@ -791,6 +808,12 @@ export default {
     openVisible () {
       this.visible = true
     },
+    openTwo () {
+      this.visibleTwo = true
+    },
+    closeTwo () {
+      this.visibleTwo = false
+    },
     closeVisible () {
       this.visible = false
       this.uform = {}
@@ -805,15 +828,15 @@ export default {
       this.queryData(this.searchForm)
       this.isCollapse === 1
         ? this.$set(this.table, 'handle', [{
-          title: '查看简历',
+          title: '查看',
           method: 'details',
           type: 'info'
         },
-        {
-          title: '查看视频',
-          method: 'openDia',
-          type: 'info'
-        },
+        // {
+        //   title: '查看视频',
+        //   method: 'openDia',
+        //   type: 'info'
+        // },
         {
           title: '通知成功',
           method: 'notice',
@@ -822,20 +845,20 @@ export default {
         {
           title: '修改信息',
           method: 'update',
-          type: 'info'
+          type: 'warning'
         }
         ])
         : this.isCollapse === 0 && this.$set(this.table, 'handle',
           [{
-            title: '查看简历',
+            title: '查看',
             method: 'details',
             type: 'info'
           },
-          {
-            title: '查看视频',
-            method: 'openDia',
-            type: 'info'
-          },
+          // {
+          //   title: '查看视频',
+          //   method: 'openDia',
+          //   type: 'info'
+          // },
           {
             title: '通过',
             method: 'through',
@@ -854,7 +877,7 @@ export default {
           {
             title: '修改信息',
             method: 'update',
-            type: 'info'
+            type: 'warning'
           }
           ]
         )

+ 6 - 6
src/views/candidateManage/mailManage.vue

@@ -19,8 +19,8 @@
             <el-form-item label="邮箱类型" prop="cmpMailType">
                 <el-radio-group v-model="form51.cmpMailType">
                     <el-radio :label="0">阿里</el-radio>
-                    <el-radio :label="1">网易</el-radio>
-                    <el-radio :label="2">QQ</el-radio>
+                    <!-- <el-radio :label="1">网易</el-radio>
+                    <el-radio :label="2">QQ</el-radio> -->
                 </el-radio-group>
             </el-form-item>
             <el-form-item class="button-grounp">
@@ -37,8 +37,8 @@
             <el-form-item label="邮箱类型" prop="cmpMailType">
                 <el-radio-group v-model="formzl.cmpMailType">
                     <el-radio :label="0">阿里</el-radio>
-                    <el-radio :label="1">网易</el-radio>
-                    <el-radio :label="2">QQ</el-radio>
+                    <!-- <el-radio :label="1">网易</el-radio>
+                    <el-radio :label="2">QQ</el-radio> -->
                 </el-radio-group>
             </el-form-item>
             <el-form-item class="button-grounp">
@@ -55,8 +55,8 @@
             <el-form-item label="邮箱类型" prop="cmpMailType">
                 <el-radio-group v-model="form58.cmpMailType">
                     <el-radio :label="0">阿里</el-radio>
-                    <el-radio :label="1">网易</el-radio>
-                    <el-radio :label="2">QQ</el-radio>
+                    <!-- <el-radio :label="1">网易</el-radio>
+                    <el-radio :label="2">QQ</el-radio> -->
                 </el-radio-group>
             </el-form-item>
             <el-form-item class="button-grounp">

+ 10 - 2
src/views/candidateManage/resumeList.vue

@@ -65,6 +65,9 @@
             <el-form-item label="联系电话" prop="delivererPhone">
                 <el-input placeholder="请输入联系电话" v-model="uform.delivererPhone"></el-input>
             </el-form-item>
+            <el-form-item label="邮箱地址" prop="delivererMail">
+                <el-input placeholder="请输入邮箱地址" v-model="uform.delivererMail"></el-input>
+            </el-form-item>
             <el-form-item>
                 <el-button @click="closeDia">取 消</el-button>
                 <el-button type="primary" @click="submit">修改信息</el-button>
@@ -124,6 +127,11 @@ export default {
           validator,
           trigger: 'change'
         }],
+        delivererMail: [{
+          required: true,
+          message: '请输入邮箱',
+          trigger: 'change'
+        }],
         delivererSex: [{
           required: true,
           message: '请选择性别',
@@ -366,7 +374,7 @@ export default {
         {
           title: '修改信息',
           method: 'update',
-          type: 'info'
+          type: 'warning'
         }
         ]
       }
@@ -704,7 +712,7 @@ export default {
         {
           title: '修改信息',
           method: 'update',
-          type: 'update'
+          type: 'warning'
         }
         ]
           : this.isCollapse === 1 ? [{

+ 46 - 10
src/views/candidateManage/statistics.vue

@@ -29,7 +29,7 @@
             <div ref="mychart2" :style="{width: '100%', height: '600px', marginTop: '30px'}"></div>
         </div>
     </el-card>
-    <el-table :data="resumeTable" border style="width: 100%">
+    <el-table :data="resumeTable" border style="width: 95%;margin: 0 auto">
         <el-table-column prop="name" label="渠道名称">
         </el-table-column>
         <el-table-column prop="0" label="已收到简历">
@@ -37,12 +37,12 @@
                 <span>{{scope.row[0] || 0}}</span>
             </template>
         </el-table-column>
-        <el-table-column prop="1" label="已通过建立">
+        <el-table-column prop="1" label="已通过简历">
             <template slot-scope="scope">
                 <span>{{scope.row[1] || 0}}</span>
             </template>
         </el-table-column>
-        <el-table-column prop="2" label="已淘汰建立">
+        <el-table-column prop="2" label="已淘汰简历">
             <template slot-scope="scope">
                 <span>{{scope.row[2] || 0}}</span>
             </template>
@@ -54,10 +54,23 @@
         </el-table-column>
     </el-table>
     <div class="title">简历状态统计</div>
+    <el-table :data="tableData" border style="width: 95%;margin: 0 auto">
+        <el-table-column prop="positionApplied" label="职位">
+        </el-table-column>
+        <el-table-column prop="job" label="51job">
+        </el-table-column>
+        <el-table-column prop="zhilian" label="智联">
+        </el-table-column>
+        <el-table-column prop="tongcheng" label="58同城">
+        </el-table-column>
+        <el-table-column prop="platform" label="平台">
+        </el-table-column>
+    </el-table>
+    <div class="title">简历投递职位统计</div>
     <el-card class="box-card">
         <div ref="mychart3" :style="{width: '100%', height: '600px', marginTop: '30px'}"></div>
     </el-card>
-    <el-table :data="interviewTable" border style="width: 100%">
+    <el-table :data="interviewTable" border style="width: 95%;margin: 0 auto">
         <el-table-column prop="name" label="渠道名称">
         </el-table-column>
         <el-table-column prop="0" label="已收到简历">
@@ -65,12 +78,12 @@
                 <span>{{scope.row[0] || 0}}</span>
             </template>
         </el-table-column>
-        <el-table-column prop="1" label="已通过建立">
+        <el-table-column prop="1" label="已通过简历">
             <template slot-scope="scope">
                 <span>{{scope.row[1] || 0}}</span>
             </template>
         </el-table-column>
-        <el-table-column prop="2" label="已淘汰建立">
+        <el-table-column prop="2" label="已淘汰简历">
             <template slot-scope="scope">
                 <span>{{scope.row[2] || 0}}</span>
             </template>
@@ -82,6 +95,19 @@
         </el-table-column>
     </el-table>
     <div class="title">面试状态统计</div>
+    <el-table :data="tableList" border style="width: 95%;margin: 0 auto">
+        <el-table-column prop="positionApplied" label="职位">
+        </el-table-column>
+        <el-table-column prop="job" label="51job">
+        </el-table-column>
+        <el-table-column prop="zhilian" label="智联">
+        </el-table-column>
+        <el-table-column prop="tongcheng" label="58同城">
+        </el-table-column>
+        <el-table-column prop="platform" label="平台">
+        </el-table-column>
+    </el-table>
+    <div class="title">面试者意向职位统计</div>
 </div>
 </template>
 
@@ -102,14 +128,16 @@ export default {
       resumeTable: [],
       interviewList: [],
       interviewTable: [],
-      tableData: []
+      tableData: [],
+      tableList: []
     }
   },
   mounted () {
     this.queryData()
     this.queryData2()
     this.queryData3()
-    this.getPositionTotal()
+    this.countResumeTotal()
+    this.countInterviewTotal()
   },
   methods: {
     queryData () {
@@ -170,14 +198,22 @@ export default {
           this.initChart3()
         })
     },
-    getPositionTotal () {
+    countResumeTotal () {
       this.$api
-        .post('/chart/getPositionTotal', {
+        .post('/chart/countResumeTotal', {
           reqdata: {}
         }).then(res => {
           this.tableData = res.list
         })
     },
+    countInterviewTotal () {
+      this.$api
+        .post('/chart/countInterviewTotal', {
+          reqdata: {}
+        }).then(res => {
+          this.tableList = res.list
+        })
+    },
     initChart () {
       let myChart = echarts.init(this.$refs.mychart1)
       myChart.setOption({

+ 42 - 22
src/views/companyManage/basicInfo.vue

@@ -10,30 +10,30 @@
 <div class="basicInfo">
     <el-card class="box-card">
         <el-form ref="form" :model="form" label-width="140px" :rules="rules" label-position="left">
-            <el-form-item label="公司名称" prop="companyName">
+            <el-form-item :label="$t('title.companyName')" prop="companyName">
                 <el-input disabled v-model.trim="form.companyName"></el-input>
             </el-form-item>
-            <el-form-item label="公司地址">
+            <el-form-item :label="$t('title.companyAddress')">
                 <el-input v-model.trim="form.companyAddress"></el-input>
             </el-form-item>
-            <el-form-item label="发件邮箱" prop="cmpMailAccount">
+            <el-form-item :label="$t('title.sendingMailbox')" prop="cmpMailAccount">
                 <el-input v-model.trim="form.cmpMailAccount"></el-input>
             </el-form-item>
-            <el-form-item label="密码" prop="cmpMailPassword">
+            <el-form-item :label="$t('title.emailPassword')" prop="cmpMailPassword">
                 <el-input v-model.trim="form.cmpMailPassword" show-password></el-input>
             </el-form-item>
-            <el-form-item label="邮箱类型">
+            <el-form-item :label="$t('title.mailboxType')">
                 <el-radio-group v-model="form.cmpMailType">
                     <el-radio :label="0">阿里</el-radio>
-                    <el-radio :label="1">网易</el-radio>
-                    <el-radio :label="2">QQ</el-radio>
+                    <!-- <el-radio :label="1">网易</el-radio>
+                    <el-radio :label="2">QQ</el-radio> -->
                 </el-radio-group>
             </el-form-item>
-            <el-form-item label="公司简介">
+            <el-form-item :label="$t('title.companyProfile')">
                 <editor-bar class="editor" v-model.trim="form.companyIntroduce"></editor-bar>
             </el-form-item>
             <el-form-item v-if="show" class="button-grounp">
-                <el-button type="primary" @click="determine">确认修改</el-button>
+                <el-button type="primary" @click="determine">{{$t('button.confirmTheChanges')}}</el-button>
             </el-form-item>
         </el-form>
     </el-card>
@@ -54,17 +54,17 @@ export default {
       rules: {
         companyAddress: [{
           required: true,
-          message: '请输入公司名称',
+          message: this.$t('message.pleaseEnter') + this.$t('title.companyName'),
           trigger: 'blur'
         }],
         cmpMailAccount: [{
           required: true,
-          message: '请输入邮箱账号',
+          message: this.$t('message.pleaseEnter') + this.$t('title.sendingMailbox'),
           trigger: 'blur'
         }],
         cmpMailPassword: [{
           required: true,
-          message: '请输入邮箱密码',
+          message: this.$t('message.pleaseEnter') + this.$t('title.emailPassword'),
           trigger: 'blur'
         }]
       }
@@ -96,8 +96,8 @@ export default {
           reqdata
         })
         .then((res) => {
-          this.form = Object.assign({}, this.form, res.object)
           this.info = res.object
+          this.form = Object.assign({}, this.form, res.object)
           this.form.emailId = res.object.id
         })
     },
@@ -126,30 +126,50 @@ export default {
             })
             .then((res) => {
               this.$message({
-                message: '修改成功!',
+                message: this.$t('message.successfullyModified') + '!',
                 type: 'success'
               })
               this.getDetails()
+              this.queryEmail()
             })
         })
     }
   },
   watch: {
-    'form.companyAddress' (newValue) {
-      this.show = this.info.companyAddress !== newValue
+    'form.companyAddress' (val) {
+      this.show = this.info.companyAddress !== val
       console.log(this.info.companyAddress)
     },
-    'form.cmpMailAccount' (newValue) {
+    'form.cmpMailAccount' (val) {
       console.log(this.show)
-      this.show = this.email.cmpMailAccount !== newValue
+      this.show = this.email.cmpMailAccount !== val
     },
-    'form.cmpMailPassword' (newValue) {
+    'form.cmpMailPassword' (val) {
       console.log(this.show)
-      this.show = this.email.cmpMailPassword !== newValue
+      this.show = this.email.cmpMailPassword !== val
     },
-    'form.cmpMailType' (newValue) {
+    'form.cmpMailType' (val) {
       console.log(this.show)
-      this.show = this.email.cmpMailType !== newValue
+      this.show = this.email.cmpMailType !== val
+    },
+    'form.companyIntroduce' (val) {
+      console.log(this.show)
+      this.show = this.info.companyIntroduce !== val
+    },
+    'email.cmpMailAccount' (val) {
+      this.show = this.form.cmpMailAccount !== val
+    },
+    'email.cmpMailPassword' (val) {
+      this.show = this.form.cmpMailPassword !== val
+    },
+    'email.cmpMailType' (val) {
+      this.show = this.form.cmpMailType !== val
+    },
+    'info.companyAddress' (val) {
+      this.show = this.form.companyAddress !== val
+    },
+    'info.companyIntroduce' (val) {
+      this.show = this.form.companyIntroduce !== val
     }
   }
 }

+ 84 - 29
src/views/companyManage/formManage.vue

@@ -13,54 +13,79 @@
     <v-pager @page="callPage" :total="totalrecords"></v-pager>
     <el-dialog :visible.sync="dialogFormVisible" width="650px" :before-close="close" :close-on-click-modal="false">
         <el-form :model="form" ref="form" label-width="140px" :rules="state!==2 ? rules : {}" label-position="left">
-            <el-form-item label="表单名称" prop="formName">
-                <el-input v-if="state!==2" v-model="form.formName" placeholder="请输入表单名称" autocomplete="off"></el-input>
+            <el-form-item :label="$t('title.formName')" prop="formName">
+                <el-input v-if="state!==2" v-model="form.formName" :placeholder="$t('message.pleaseEnter') + $t('title.formName')" autocomplete="off"></el-input>
                 <div v-else>{{form.formName}}</div>
             </el-form-item>
-            <el-form-item label="说明" prop="formIntroduce">
-                <el-input v-if="state!==2" type="textarea" :rows="4" resize="none" placeholder="请输入说明" v-model="form.formIntroduce"></el-input>
+            <el-form-item :label="$t('title.description')" prop="formIntroduce">
+                <el-input v-if="state!==2" type="textarea" :rows="4" resize="none" :placeholder="$t('message.pleaseEnter') + $t('title.description')" v-model="form.formIntroduce"></el-input>
                 <div v-else>{{form.formIntroduce}}</div>
             </el-form-item>
-            <el-form-item :label="state!==2?'选择需要的表单项':'已选择的表单项'" prop="checkList">
-                <div v-if="state!==2">勾选需要的表单选项,点击生成表单即可</div>
-                <el-checkbox-group v-if="state!==2" v-model="form.checkList">
+            <el-form-item :label="state!==2?$t('message.selectTheRequiredFormItem'):$t('message.selectedFormItem')" prop="checkList">
+                <div v-if="state!==2">{{$t('message.longFormMessage')}}</div>
+                <el-checkbox v-if="state!==2" :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">{{$t('button.selectAll')}}</el-checkbox>
+                <div v-if="state!==2" style="margin: 15px 0;"></div>
+                <el-checkbox-group v-if="state!==2" v-model="form.checkList" @change="handleCheckedCitiesChange">
                     <div v-for="item in formConfigList" :key="item.id">
-                        <el-checkbox :label="item.id">{{item.configName + ' ' + (item.type === 0 ? '单行输入框' : item.type === 1 ? '多行输入框' : '下拉选择框')}}</el-checkbox>
+                        <el-checkbox :label="item.id">{{item.configName + ' ' + (item.type === 0 ? $t('info.singleLineInputBox') : item.type === 1 ? $t('info.multiLineInputBox') : $t('info.dropDownSelectionBox'))}}</el-checkbox>
                     </div>
                 </el-checkbox-group>
                 <div v-else>
                     <div v-for="item in formConfigList.filter(i => form.checkList.includes(i.id))" :key="item.id">
                         <div>{{item.configName}}</div>
-                        <el-input class="p10" disabled v-if="item.type === 0" :placeholder="'请输入' + item.configName"></el-input>
-                        <el-input class="p10" disabled v-else-if="item.type === 1" type="textarea" :rows="4" resize="none" :placeholder="'请输入' + item.configName"></el-input>
-                        <el-select class="p10" disabled v-else :placeholder="'请选择' + item.configName"></el-select>
+                        <el-input class="p10" v-if="item.type === 0" v-model="info[item.fieldName]" :placeholder="$t('message.pleaseEnter') + item.configName"></el-input>
+                        <el-input class="p10" v-else-if="item.type === 1" v-model="info[item.fieldName]" type="textarea" :rows="4" resize="none" :placeholder="$t('message.pleaseEnter') + item.configName"></el-input>
+                        <el-select class="p10" v-else-if="item.type === 2" v-model="info[item.fieldName]" :placeholder="$t('message.pleaseChoose') + item.configName">
+                          <el-option label="男" value="男"></el-option>
+                          <el-option label="女" value="女"></el-option>
+                        </el-select>
+                        <el-date-picker class="p10" v-else-if="item.type === 3" v-model="info[item.fieldName]" type="date" :placeholder="$t('message.pleaseChoose') + item.configName"></el-date-picker>
+                        <el-cascader class="p10" v-else-if="item.type === 4" :props="{value: 'name',  label: 'name'}" v-model="info[item.fieldName]" :options="options" :placeholder="$t('message.pleaseChoose') + item.configName"></el-cascader>
+                        <el-cascader class="p10" v-else-if="item.type === 5" :props="{value: 'name',  label: 'name'}" v-model="info[item.fieldName]" :options="city" :placeholder="$t('message.pleaseChoose') + item.configName"></el-cascader>
+                        <!-- <el-button class="p10" v-else-if="item.type === 8" type="success" v-model="info[item.fieldName]">{{$t('message.pleaseUpload') + item.configName}}</el-button> -->
+                        <el-upload
+                          class="upload-demo"
+                          action=""
+                          v-else-if="item.type === 8"
+                          :before-upload="()=>false"
+                          multiple
+                          :limit="3">
+                          <el-button size="small" type="primary">{{$t('button.clickUpload')}}</el-button>
+                        </el-upload>
+                        <el-select class="p10" v-else-if="item.type === 9" v-model="info[item.fieldName]" :placeholder="$t('message.pleaseChoose') + item.configName">
+                          <el-option v-for="item in educationList" :key="item.name" :label="item.name" :value="item.name"></el-option>
+                        </el-select>
                     </div>
                 </div>
             </el-form-item>
         </el-form>
         <div slot="footer" class="dialog-footer">
-            <el-button @click="close">取 消</el-button>
-            <el-button type="primary" v-if="state!==2" @click="determine">生成表单</el-button>
+            <el-button @click="close">{{$t('button.cancel')}}</el-button>
+            <el-button type="primary" v-if="state!==2" @click="determine">{{$t('button.generateForm')}}</el-button>
         </div>
     </el-dialog>
 </div>
 </template>
 
 <script>
+import addr from '../../common/addr'
 export default {
   data () {
     let validcodeName = (rule, value, callback) => {
       if (!value.length) {
-        callback(new Error('请选择需要的表单项'))
+        callback(new Error(this.$t('message.selectTheRequiredFormItem')))
       } else {
         callback()
       }
     }
     return {
       tableList: [],
+      educationList: [{ name: this.$t('button.juniorCollege') }, { name: this.$t('button.undergraduate') }, { name: this.$t('button.masterSDegree') }, { name: this.$t('button.phD') }, { name: this.$t('button.other') }],
       dialogFormVisible: false,
       page: 1,
       state: 0,
+      checkAll: false,
+      isIndeterminate: true,
       form: {
         formName: '',
         formIntroduce: '',
@@ -72,12 +97,12 @@ export default {
       rules: {
         formName: [{
           required: true,
-          message: '请选择活动区域',
+          message: this.$t('message.pleaseEnter') + this.$t('title.formName'),
           trigger: 'blur'
         }],
         formIntroduce: [{
           required: true,
-          message: '请选择活动区域',
+          message: this.$t('message.pleaseEnter') + this.$t('title.description'),
           trigger: 'blur'
         }],
         checkList: [{
@@ -85,38 +110,40 @@ export default {
           trigger: 'blur'
         }]
       },
+      options: addr.addr,
+      info: {},
       list: [],
       btn: [{
-        name: '添加',
+        name: this.$t('button.addTo'),
         type: 'success',
         method: 'add'
       }],
       table: {
         column: [{
-          label: '编号',
+          label: this.$t('field.numbering'),
           props: 'id'
         },
         {
-          label: '表单名称',
+          label: this.$t('field.formName'),
           props: 'formName'
         },
         {
-          label: '说明',
+          label: this.$t('field.description'),
           props: 'formIntroduce'
         }
         ],
         handle: [{
-          title: '查看',
+          title: this.$t('button.view'),
           method: 'details',
           type: 'info'
         },
         {
-          title: '编辑',
+          title: this.$t('button.edit'),
           method: 'editor',
           type: 'warning'
         },
         {
-          title: '删除',
+          title: this.$t('button.delete'),
           method: 'del',
           type: 'danger'
         }
@@ -124,7 +151,20 @@ export default {
       }
     }
   },
+  computed: {
+    city () {
+      let options = JSON.parse(JSON.stringify(this.options))
+      return options.map(item => {
+        item.children = item.children.map(item => {
+          delete item.children
+          return item
+        })
+        return item
+      })
+    }
+  },
   created () {
+    console.log(this.options)
     this.queryData()
     this.queryFormConfigList()
   },
@@ -146,7 +186,7 @@ export default {
       this.$api
         .post('/formConfig/queryFormConfigList', {
           reqdata: {},
-          rows: 20
+          rows: 50
         })
         .then((res) => {
           this.formConfigList = res.list
@@ -180,9 +220,9 @@ export default {
       this.state = 1
     },
     del (row) {
-      this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
+      this.$confirm(this.$t('message.confirmMessage') + '?', this.$t('info.prompt'), {
+        confirmButtonText: this.$t('info.determine'),
+        cancelButtonText: this.$t('info.cancel'),
         type: 'warning'
       }).then(() => {
         let reqdata = {
@@ -194,7 +234,7 @@ export default {
           })
           .then((res) => {
             this.$message({
-              message: '删除成功',
+              message: this.$t('message.successfullyModified') + '!',
               type: 'success'
             })
             this.queryData()
@@ -202,11 +242,12 @@ export default {
       }).catch(() => {
         this.$message({
           type: 'info',
-          message: '已取消删除'
+          message: this.$t('message.undeleted') + '!'
         })
       })
     },
     determine () {
+      console.log(this.form)
       let a
       this.$refs['form'].validate((valid) => {
         a = valid
@@ -239,10 +280,20 @@ export default {
         formIntroduce: '',
         checkList: []
       }
+      this.info = {}
     },
     callPage (val) {
       this.page = val
       this.queryData()
+    },
+    handleCheckAllChange (val) {
+      this.$set(this.form, 'checkList', val ? this.formConfigList.map(item => item.id) : [])
+      this.isIndeterminate = false
+    },
+    handleCheckedCitiesChange (value) {
+      let checkedCount = value.length
+      this.$set(this.$data, 'checkAll', checkedCount === this.formConfigList.length)
+      this.isIndeterminate = checkedCount > 0 && checkedCount < this.formConfigList.length
     }
   },
   watch: {
@@ -252,6 +303,10 @@ export default {
           this.$refs['form'].resetFields()
         }
       }
+    },
+    'form.checkList' (val) {
+      this.$set(this.$data, 'checkAll', val.length === this.formConfigList.length)
+      this.isIndeterminate = !!val.length && val.length !== this.formConfigList.length
     }
   }
 }

+ 5 - 0
src/views/companyManage/passwordSettings.vue

@@ -31,6 +31,11 @@
 export default {
   data () {
     let update = () => {
+      let a
+      this.$refs['form'].validate((valid) => {
+        a = valid
+      })
+      if (!a) return
       let reqdata = {
         companyName: localStorage.getItem('companyName'),
         oldPassword: this.form.oldPassword,

+ 7 - 2
src/views/companyManage/positionInfo.vue

@@ -86,7 +86,8 @@ export default {
         },
         {
           label: '职位描述',
-          props: 'positionIntroduce'
+          props: 'positionIntroduceX',
+          width: 700
         },
         {
           label: '职位状态',
@@ -94,6 +95,7 @@ export default {
           options: ['有效', '禁用']
         }
         ],
+        width: 300,
         handle: [{
           title: '查看',
           method: 'details',
@@ -127,7 +129,10 @@ export default {
         })
         .then((res) => {
           this.totalrecords = res.totalrecords
-          this.tableList = res.list
+          this.tableList = res.list.map(item => {
+            item.positionIntroduceX = item.positionIntroduce.length > 100 ? item.positionIntroduce.slice(0, 100) + '...' : item.positionIntroduce
+            return item
+          })
         })
     },
     add () {

+ 2 - 2
src/views/companyManage/procedureManage.vue

@@ -39,7 +39,7 @@
                     </div>
                     <video width="100%" v-if="item.videoIdList && item.videoIdList.length" :src="downList.some(i => i.id === item.videoIdList[item.active]) ? $img + downList.find(i => i.id === item.videoIdList[item.active]).videoPath : ''" controls></video>
                     <div class="flex">
-                        <div v-for="(i, j) in item.videoIdList" :key="i" class="active" @click="updateActive(item, index, j)" :class="item.active === j ? 'is-active' : ''">{{downList.some(k => k.id === i) ? downList.find(k => k.id === i).videoName : '无数据'}}</div>
+                        <div v-for="(i, j) in item.videoIdList" :key="i" class="active" @click="updateActive(item, index, j)" :class="item.active === j ? 'is-active' : ''">{{downList.some(k => k.id === i) ? downList.find(k => k.id === i).videoName : '(已删除)'}}</div>
                     </div>
                 </div>
             </el-form-item>
@@ -342,7 +342,7 @@ export default {
     .active {
         cursor: pointer;
         color: rgb(42, 117, 216);
-        margin: 5px;
+        margin: 5px 10px;
     }
 
     .is-active {

+ 68 - 12
src/views/companyManage/templateManage.vue

@@ -14,31 +14,34 @@
     <el-dialog :visible.sync="dialogFormVisible" :before-close="close" width="650px" :close-on-click-modal="false">
         <el-form :model="form" ref="form" label-width="140px" :rules="rule" label-position="left">
             <el-form-item label="邀约岗位" prop="templateName">
-                <el-input v-if="state !== 2" v-model="form.templateName" placeholder="请输入邀约岗位" autocomplete="off"></el-input>
+                <el-autocomplete v-if="state !== 2" v-model="form.templateName" :fetch-suggestions="querySearch" placeholder="请输入邀约岗位" @select="handleSelect"></el-autocomplete>
                 <div v-else>{{form.templateName}}</div>
             </el-form-item>
-            <el-form-item label="邮件内容" prop="templateIntroduce">
-                <el-input v-if="state !== 2" type="textarea" :rows="4" resize="none" placeholder="请输入邮件内容" v-model="form.templateIntroduce"></el-input>
-                <div v-else>{{form.templateIntroduce}}</div>
-            </el-form-item>
             <el-form-item label="关联场景" prop="sceneId">
                 <el-select v-if="state !== 2" filterable clearable v-model="form.sceneId" placeholder="请选择关联场景">
                     <el-option v-for="item in downList0" :key="item.id" :label="item.sceneName" :value="item.id"></el-option>
                 </el-select>
                 <div v-else>{{this.downList0.some(i => i.id === form.sceneId) ? this.downList0.find(i => i.id === form.sceneId).sceneName : ''}}</div>
             </el-form-item>
-            <el-form-item label="关联岗位" prop="processId">
+            <el-form-item v-if="!form.sceneId||form.sceneId === 1" label="邮件内容" prop="templateIntroduce">
+                <el-input v-if="state !== 2" type="textarea" :rows="4" resize="none" placeholder="请输入邮件内容" v-model="form.templateIntroduce"></el-input>
+                <div v-else>{{form.templateIntroduce}}</div>
+            </el-form-item>
+            <el-form-item v-if="!form.sceneId||form.sceneId !== 2" label="关联岗位" prop="processId">
                 <el-select v-if="state !== 2" filterable clearable v-model="form.processId" placeholder="请选择关联岗位">
                     <el-option v-for="item in downList1" :key="item.id" :label="item.processName" :value="item.id"></el-option>
                 </el-select>
                 <div v-else>{{this.downList1.some(i => i.id === form.processId) ? this.downList1.find(i => i.id === form.processId).processName : ''}}</div>
             </el-form-item>
-            <el-form-item label="关联表单" prop="formId">
+            <el-form-item v-if="!form.sceneId||form.sceneId !== 1" label="关联表单" prop="formId">
                 <el-select v-if="state !== 2" filterable clearable v-model="form.formId" placeholder="请选择关联表单">
                     <el-option v-for="item in downList2" :key="item.id" :label="item.formName" :value="item.id"></el-option>
                 </el-select>
                 <div v-else>{{this.downList2.some(i => i.id === form.formId) ? this.downList2.find(i => i.id === form.formId).formName : ''}}</div>
             </el-form-item>
+            <el-form-item label="" label-width="0">
+              <el-link type="primary" @click="help">使用帮助</el-link>
+            </el-form-item>
         </el-form>
         <div slot="footer" class="dialog-footer">
             <el-button @click="close">取 消</el-button>
@@ -76,6 +79,15 @@
 <script>
 export default {
   data () {
+    let validator = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('请输入邀约岗位!'))
+      } else if (this.restaurants.map(item => item.value).filter(item => item !== this.form.name).includes(value)) {
+        callback(new Error('该名称已被使用!'))
+      } else {
+        callback()
+      }
+    }
     return {
       tableList: [],
       page: 1,
@@ -90,10 +102,26 @@ export default {
       downList0: [],
       downList1: [],
       downList2: [],
+      restaurants: [],
       rule: {
         templateName: [{
           required: true,
-          message: '请输入模板名称',
+          validator,
+          trigger: 'change'
+        }],
+        sceneId: [{
+          required: true,
+          message: '请选择关联场景',
+          trigger: 'blur'
+        }],
+        processId: [{
+          required: true,
+          message: '请选择关联岗位',
+          trigger: 'blur'
+        }],
+        formId: [{
+          required: true,
+          message: '请选择关联表单',
           trigger: 'blur'
         }],
         templateIntroduce: [{
@@ -205,6 +233,17 @@ export default {
     this.queryDownList()
   },
   methods: {
+    querySearch (queryString, cb) {
+      var restaurants = this.restaurants
+      var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants
+      // 调用 callback 返回建议列表的数据
+      cb(results)
+    },
+    createFilter (queryString) {
+      return (restaurant) => {
+        return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0)
+      }
+    },
     queryData (form = {}) {
       let page = this.page
       let reqdata = form
@@ -219,9 +258,10 @@ export default {
             item.sceneName = this.downList0.some(i => i.id === item.sceneId) ? this.downList0.find(i => i.id === item.sceneId).sceneName : ''
             item.processName = this.downList1.some(i => i.id === item.processId) ? this.downList1.find(i => i.id === item.processId).processName : ''
             item.formName = this.downList2.some(i => i.id === item.formId) ? this.downList2.find(i => i.id === item.formId).formName : ''
-            item.type = !(item.processId && item.sceneId)
+            item.type = !(item.sceneId > 1)
             return item
           })
+          this.restaurants = res.list.map(item => ({ value: item.templateName }))
         })
     },
     queryDownList () {
@@ -260,6 +300,7 @@ export default {
           this.form.sceneId = this.form.sceneId || null
           this.form.processId = this.form.processId || null
           this.form.formId = this.form.formId || null
+          this.form.name = res.object.templateName
         })
     },
     details (row) {
@@ -302,7 +343,8 @@ export default {
       let url = this.state
         ? '/template/updateTemplate'
         : '/template/saveTemplate'
-      let reqdata = this.form
+      let { id, templateName, sceneId, processId, formId, templateIntroduce, companyId } = this.form
+      let reqdata = sceneId === 1 ? { id, templateName, sceneId, companyId, templateIntroduce, processId } : sceneId === 2 ? { id, templateName, sceneId, companyId, formId } : { id, templateName, sceneId, companyId, processId, formId }
       this.$api
         .post(url, {
           reqdata
@@ -377,19 +419,33 @@ export default {
         type: 'error'
       })
     },
+    help () {
+      this.$alert('暂无使用帮助', '使用帮助', {
+        confirmButtonText: '确定',
+        callback: action => {
+        }
+      })
+    },
+    handleSelect (val) {
+      console.log(val)
+    },
     open () {
       this.dialogFormVisible = true
     },
     close () {
       this.dialogFormVisible = false
-      this.form = {}
+      this.$nextTick(() => {
+        this.form = {}
+      })
     },
     openDia () {
       this.dialogVisible = true
     },
     closeDia () {
       this.dialogVisible = false
-      this.codeForm = {}
+      this.$nextTick(() => {
+        this.codeForm = {}
+      })
     },
     callPage (val) {
       this.page = val

+ 22 - 6
src/views/companyManage/videoManage.vue

@@ -7,7 +7,7 @@
  * @LastEditTime: 2020-08-11 15:45:22
 -->
 <template>
-<div class="indexPage">
+<div class="videoManage">
     <v-input :btn="btn" :list="list" @add="add"></v-input>
     <v-table :table="table" :tableList="tableList" :sortType="true" :queryData="queryData" @details="details" @editor="editor" @del="del"></v-table>
     <v-pager @page="callPage" :total="totalrecords"></v-pager>
@@ -20,8 +20,8 @@
             <el-form-item prop="videoPath">
                 <el-upload class="upload-demo" drag v-if="state!==2" :headers="{Authorization:token}" :action="$url+'/admin/upload/uploadVideo'" accept=".MP4,.mp4" :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload" multiple>
                     <video v-if="form.videoPath" width="500" :src="$img+form.videoPath" class="avatar"></video>
-                    <i class="el-icon-upload"></i>
-                    <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em>,限mp4格式</div>
+                    <i v-if="!form.videoPath" class="el-icon-upload"></i>
+                    <div v-if="!form.videoPath" class="el-upload__text">将文件拖到此处,或<em>点击上传</em>,限mp4格式</div>
                     <!-- <div class="el-upload__tip" slot="tip"></div> -->
                 </el-upload>
                 <video v-else width="400" controls :src="$img+form.videoPath" class="avatar"></video>
@@ -71,8 +71,8 @@ export default {
       }],
       table: {
         column: [{
-          label: '号',
-          props: 'id'
+          label: '号',
+          props: 'serialNumber'
         },
         {
           label: '视频名称',
@@ -112,7 +112,10 @@ export default {
         })
         .then((res) => {
           this.totalrecords = res.totalrecords
-          this.tableList = res.list
+          this.tableList = res.list.map((item, index) => {
+            item.serialNumber = index + 1
+            return item
+          })
         })
     },
     add () {
@@ -223,4 +226,17 @@ export default {
     width: 100%;
     display: block;
 }
+::v-deep .el-upload-dragger {
+  overflow: visible!important;
+  width: 400px;
+  height:300px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-direction: column;
+}
+video{
+  height: 100%;
+}
+
 </style>

+ 4 - 1
src/views/login.vue

@@ -10,7 +10,10 @@
     <div class="login">
         <!-- login-title -->
         <div class="login-title">
-            <el-button type="text" style="margin-right: 33px" class="select-btn">优创面试后台管理</el-button>
+            <!-- <el-button type="text" style="margin-right: 33px" class="select-btn">优创面试后台管理</el-button> -->
+          <div class="logo">
+              <img src="../../public/img/logo3.png" style="width: 350px;padding:10px 0;display: bolck" alt="">
+          </div>
         </div>
         <!-- pwd -->
         <div class="pwd-login">