徐桐章 il y a 4 ans
Parent
commit
4302f11f6f

+ 1 - 1
public/index.html

@@ -4,7 +4,7 @@
  * @Autor: XuTongZhang
  * @Date: 2020-06-09 15:30:15
  * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-07-28 16:33:21
+ * @LastEditTime: 2020-07-31 11:28:52
 --> 
 <!DOCTYPE html>
 <html lang="en">

+ 12 - 1
src/App.vue

@@ -4,7 +4,7 @@
  * @Autor: XuTongZhang
  * @Date: 2020-06-09 15:30:15
  * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-07-28 15:51:58
+ * @LastEditTime: 2020-07-31 16:08:39
 -->
 <template>
   <div class="appPage">
@@ -50,4 +50,15 @@ export default {
 .view{
   padding-left:210px;
 }
+
+</style>
+
+<style lang="scss">
+.el-dialog__body {
+  .el-form {
+    .el-input__inner, .el-textarea__inner {
+      width: 400px!important;
+    }
+  }
+}
 </style>

+ 2 - 2
src/components/vInput/vInput.vue

@@ -112,14 +112,14 @@ export default {
       delete reqdata.date
       reqdata.beginTime = (this.date && this.date.length) ? this.date[0] : ''
       reqdata.endTime = (this.date && this.date.length) ? this.date[1] : ''
-      this.$emit('search', reqdata, this.sortRule)
+      this.$emit('search', reqdata)
     },
     btnMethods (item) {
       let reqdata = JSON.parse(JSON.stringify(this.form))
       delete reqdata.date
       this.date && this.date.length && (reqdata.beginTime = this.date[0])
       this.date && this.date.length && (reqdata.endTime = this.date[1])
-      this.$emit(item.method, reqdata, this.sortRule)
+      this.$emit(item.method, reqdata)
     }
   }
 }

+ 8 - 5
src/components/vTable/vTable.vue

@@ -14,7 +14,7 @@
       <el-table-column
         v-if="table.selection"
         align="center"
-        fixed
+        :fixed="table.fixed"
         type="selection"
         width="55">
       </el-table-column>
@@ -85,6 +85,7 @@
       <el-table-column
       label="操作"
       v-if="table.handle"
+      :fixed="table.fixed && 'right'"
       :width="table.width"
       align="center">
         <template slot-scope="scope">
@@ -104,6 +105,7 @@
         </template>
       </el-table-column>
     </el-table>
+    {{pickList}}
   </div>
 </template>
 
@@ -138,6 +140,10 @@ export default {
       type: Function,
       default: () => {}
     },
+    pickList: {
+      type: Array,
+      default: () => []
+    },
     form: Object
   },
   data () {
@@ -166,10 +172,7 @@ export default {
           [prop]: order === 'ascending' ? 'ASC' : 'DESC'
         }
         : {}
-      console.log('====================================')
-      console.log(this.form)
-      console.log('====================================')
-      this.queryData(this.form, this.orderItem)
+      this.queryData(this.form)
     }
   }
 }

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

@@ -4,7 +4,7 @@
  * @Autor: XuTongZhang
  * @Date: 2020-07-30 10:17:25
  * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-07-30 11:33:06
+ * @LastEditTime: 2020-07-31 17:01:43
 -->
 <template>
   <div class="indexPage">
@@ -16,9 +16,6 @@
       :queryData="queryData"
       :form="form"
       @details="details"
-      @update="update"
-      @selection-change="selection"
-      id=""
     ></v-table>
     <v-pager @page="callPage" :total="totalrecords"></v-pager>
     <resume :dialogFormVisible="dialogFormVisible" :close="close"></resume>
@@ -31,11 +28,11 @@ export default {
   data () {
     return {
       tableList: [],
-      dialogFormVisible: true,
+      dialogFormVisible: false,
       page: 1,
       totalrecords: 0,
       pickList: [],
-      form: {},
+      info: {},
       list: [
         {
           placeholder: '请输入关键字查询',
@@ -68,14 +65,9 @@ export default {
       ],
       btn: [
         {
-          name: '重置',
-          type: 'success',
-          method: ''
-        },
-        {
           name: '确定',
           type: 'primary',
-          method: ''
+          method: 'search'
         }
       ],
       table: {
@@ -142,10 +134,11 @@ export default {
             props: ''
           }
         ],
+        fixed: true,
         handle: [
           {
             title: '查看简历',
-            method: '',
+            method: 'details',
             type: 'info'
           }
         ]
@@ -159,9 +152,8 @@ export default {
     this.queryData()
   },
   methods: {
-    queryData (form = { conditions: '' }, sort = {}) {
+    queryData (form = {}, sort = {}) {
       let page = this.page
-      this.form = form
       let reqdata = form
       this.$api
         .post('/resumeInfo/queryResumeList', {
@@ -177,64 +169,21 @@ export default {
       this.queryData(form)
     },
     details (row) {
-      this.dialogVisible = true
+      this.open()
       this.querydetail(row.infoId)
     },
-    update (row) {
-      this.type = 1
-      this.querydetail(row.infoId)
-      this.openDiaLog()
-    },
-    querydetail (infoId) {
+    querydetail (id) {
       this.$api
-        .post('/platform/information/platformGetInformation', {
+        .post('', {
           reqdata: {
-            infoId
+            id
           }
         })
         .then((res) => {
           let obj = res.object
-          // obj.createtime = this.$utils.format(res.object.createtime)
           this.info = obj
         })
     },
-    del (row, type = false) {
-      let id = type ? row : [row.infoId]
-      this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      })
-        .then(() => {
-          this.$api
-            .post('/platform/information/platformDeleteInformation', {
-              reqdata: {
-                id
-              }
-            })
-            .then((res) => {
-              this.queryData(this.form)
-              this.$message({
-                type: 'success',
-                message: '删除成功!'
-              })
-            })
-        })
-        .catch(() => {
-          this.$message({
-            type: 'info',
-            message: '已取消删除'
-          })
-        })
-    },
-    delAll () {
-      this.pickList.length
-        ? this.del(this.pickList, true)
-        : this.$message({ type: 'info', message: '请选择需要删除的内容' })
-    },
-    selection (val) {
-      this.pickList = val
-    },
     open () {
       this.dialogFormVisible = true
     },

+ 161 - 44
src/views/candidateManage/resumeList.vue

@@ -4,11 +4,11 @@
  * @Autor: XuTongZhang
  * @Date: 2020-07-30 09:53:19
  * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-07-30 19:08:53
+ * @LastEditTime: 2020-07-31 19:43:48
 -->
 <template>
   <div class="indexPage">
-    <v-input :btn="btn" :list="list" @del="delAll" @search="search"></v-input>
+    <v-input :btn="btn" :list="list" @del="delAll" @notice="noticeAll" @through="throughAll" @eliminate="eliminateAll" @search="search"></v-input>
     <el-radio-group v-model="isCollapse" style="margin-bottom: 20px;">
       <el-radio-button :label="1">未读简历</el-radio-button>
       <el-radio-button :label="2">已通过简历</el-radio-button>
@@ -31,21 +31,69 @@
       id="id"
     ></v-table>
     <v-pager @page="callPage" :total="totalrecords"></v-pager>
+    <el-dialog :visible.sync="dialogFormVisible" width="600px" :before-close="close" :show-close="false">
+      <el-form :model="form" ref="form" label-width="140px" :rules="rules" label-position="left">
+        <el-form-item label-width="0" prop="pickList">
+          <div class="title">通知群发列表</div>
+          <div class="content">
+            <el-tag
+              v-for="(item, index) in pickList"
+              :key="item"
+              closable
+              @close="pickList.splice(index, 1)"
+              type="success">
+              {{tableList.find(i => i.id === item).delivererName}}
+            </el-tag>
+          </div>
+        </el-form-item>
+        <el-form-item label="选择群发模板" prop="templateId">
+          <el-select v-model="form.templateId" placeholder="请选择群发模板">
+            <el-option
+              v-for="item in downList"
+              :key="item.id"
+              :label="item.templateName"
+              :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="群发邮箱">
+          139820930@qq.com
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="launch">立即发出</el-button>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 export default {
   data () {
+    let validcodeName = (rule, value, callback) => {
+      if (!value.length) {
+        callback(new Error('通知对象数不能零'))
+      } else {
+        callback()
+      }
+    }
     return {
       tableList: [],
-      dialogFormVisible: true,
+      dialogFormVisible: false,
       page: 1,
       sortRule: {},
       isCollapse: 1,
       totalrecords: 0,
       pickList: [],
+      downList: [],
       form: {},
+      rules: {
+        pickList: [
+          { required: true, validator: validcodeName, trigger: 'blur' }
+        ],
+        templateId: [{ required: true, message: '请选择群发模板', trigger: 'blur' }]
+      },
       list: [
         {
           placeholder: '请输入关键字查询',
@@ -75,19 +123,29 @@ export default {
       ],
       btn: [
         {
-          name: '重置',
+          name: '确定',
+          type: 'primary',
+          method: 'search'
+        },
+        {
+          name: '通知面试',
           type: 'success',
-          method: ''
+          method: 'notice'
         },
         {
-          name: '确定',
+          name: '标记通过',
           type: 'primary',
-          method: ''
+          method: 'through'
+        },
+        {
+          name: '标题淘汰',
+          type: 'warning',
+          method: 'eliminate'
         },
         {
           name: '删除',
           type: 'danger',
-          method: ''
+          method: 'del'
         }
       ],
       table: {
@@ -95,15 +153,15 @@ export default {
         column: [
           {
             label: '编号',
-            props: ''
+            props: 'id'
           },
           {
             label: '姓名',
-            props: ''
+            props: 'delivererName'
           },
           {
             label: '性别',
-            props: ''
+            props: 'delivererSex'
           },
           {
             label: '简历来源',
@@ -111,15 +169,15 @@ export default {
           },
           {
             label: '简历投递时间',
-            props: ''
+            props: 'createTime'
           },
           {
             label: '简历投递职位',
-            props: ''
+            props: 'positionApplied'
           },
           {
             label: '工作年限',
-            props: ''
+            props: 'delivererWorkExp'
           },
           {
             label: '学历',
@@ -127,10 +185,11 @@ export default {
           },
           {
             label: '联系电话',
-            props: ''
+            props: 'delivererPhone'
           }
         ],
         width: 500,
+        fixed: true,
         handle: [
           {
             title: '查看简历',
@@ -164,15 +223,15 @@ export default {
         column: [
           {
             label: '编号',
-            props: ''
+            props: 'id'
           },
           {
             label: '姓名',
-            props: ''
+            props: 'delivererName'
           },
           {
             label: '性别',
-            props: ''
+            props: 'delivererSex'
           },
           {
             label: '简历来源',
@@ -180,19 +239,19 @@ export default {
           },
           {
             label: '简历投递时间',
-            props: ''
+            props: 'createTime'
           },
           {
             label: '当前状态',
-            props: ''
+            props: 'status'
           },
           {
             label: '简历投递职位',
-            props: ''
+            props: 'positionApplied'
           },
           {
             label: '工作年限',
-            props: ''
+            props: 'delivererWorkExp'
           },
           {
             label: '学历',
@@ -200,10 +259,11 @@ export default {
           },
           {
             label: '联系电话',
-            props: ''
+            props: 'delivererPhone'
           }
         ],
-        width: 500,
+        width: 300,
+        fixed: true,
         handle: [
           {
             title: '查看简历',
@@ -226,6 +286,7 @@ export default {
   },
   mounted () {
     this.queryData()
+    this.queryDownList()
   },
   methods: {
     queryData (form = {}) {
@@ -241,52 +302,98 @@ export default {
           this.tableList = res.list
         })
     },
+    queryDownList () {
+      this.$api
+        .post('/template/queryTemplateList', {
+          reqdata: {}
+        })
+        .then((res) => {
+          this.downList = res.list
+        })
+    },
     search (form, sortRule) {
       this.queryData(form)
     },
-    details (row) {
-      this.open()
-      this.querydetail(row.id)
+    details ({ id }) {
+      // this.open()
+      this.$api
+        .post('/resumeInfo/queryResumeInfoDetail', {
+          reqdata: {
+            id
+          }
+        })
+        .then((res) => {
+          window.open(this.$img + res.object.filePath)
+        })
     },
-    notice (row) {
+    launch () {
+      let reqdata = { id: this.pickList }
+      this.$api
+        .post('/resumeInfo/queryResumeInfoDetail', {
+          reqdata
+        })
+        .then((res) => {
+          window.open(this.$img + res.object.filePath)
+        })
     },
-    through (row) {
+    notice (row, type = false) {
+      let ids = type ? row : [row.id]
       this.$api
-        .post('/platform/information/platformGetInformation', {
+        .post('/resumeInfo/sendInviteMail', {
           reqdata: {
-            id: row.id
+            ids
           }
         })
         .then((res) => {
+          this.$message({
+            message: '通知成功',
+            type: 'success'
+          })
           this.queryData(this.form)
         })
     },
-    eliminate (row) {
+    noticeAll () {
+      this.pickList.length
+        // ? this.notice(this.pickList, true)
+        ? this.open()
+        : this.$message({ type: 'info', message: '请选择需要通知的内容' })
+    },
+    through (row, type = false) {
+      let ids = type ? row : [row.id]
       this.$api
-        .post('/platform/information/platformGetInformation', {
+        .post('', {
           reqdata: {
-            id: row.id
+            ids
           }
         })
         .then((res) => {
           this.queryData(this.form)
         })
     },
-    querydetail (infoId) {
+    throughAll () {
+      this.pickList.length
+        ? this.through(this.pickList, true)
+        : this.$message({ type: 'info', message: '请选择通过的应聘者' })
+    },
+    eliminate (row, type = false) {
+      let ids = type ? row : [row.id]
       this.$api
-        .post('/resumeInfo/queryResumeInfoDetail', {
+        .post('', {
           reqdata: {
-            infoId
+            ids
           }
         })
         .then((res) => {
-          let obj = res.object
-          // obj.createtime = this.$utils.format(res.object.createtime)
-          this.info = obj
+          this.queryData(this.form)
         })
     },
+    eliminateAll () {
+      this.pickList.length
+        ? this.eliminate(this.pickList, true)
+        : this.$message({ type: 'info', message: '请选择被淘汰的应聘者' })
+    },
     del (row, type = false) {
-      let id = type ? row : [row.infoId]
+      let ids = type ? row : [row.id]
       this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
@@ -294,9 +401,9 @@ export default {
       })
         .then(() => {
           this.$api
-            .post('/platform/information/platformDeleteInformation', {
+            .post('/resumeInfo/deleteResumeInfo', {
               reqdata: {
-                id
+                ids
               }
             })
             .then((res) => {
@@ -320,7 +427,7 @@ export default {
         : this.$message({ type: 'info', message: '请选择需要删除的内容' })
     },
     selection (val) {
-      this.pickList = val
+      this.$set(this.$data, 'pickList', val)
     },
     open () {
       this.dialogFormVisible = true
@@ -335,3 +442,13 @@ export default {
   }
 }
 </script>
+
+<style lang="scss" scoped>
+  .title {
+    font-size: 20px;
+    font-weight: bold;
+  }
+  .content {
+    min-height: 30px;
+  }
+</style>

+ 42 - 18
src/views/companyManage/formManage.vue

@@ -4,7 +4,7 @@
  * @Autor: XuTongZhang
  * @Date: 2020-07-28 16:24:44
  * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-07-30 20:36:15
+ * @LastEditTime: 2020-07-31 15:27:56
 -->
 <template>
   <div class="indexPage">
@@ -19,19 +19,21 @@
       @del="del"
     ></v-table>
     <v-pager @page="callPage" :total="totalrecords"></v-pager>
-    <el-dialog :visible.sync="dialogFormVisible" :before-close="close">
-      <el-form :model="form" ref="form" label-width="140px" :rules="rules" label-position="left">
+    <el-dialog :visible.sync="dialogFormVisible" width="650px" :before-close="close">
+      <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-model="form.formName" autocomplete="off"></el-input>
+          <el-input v-if="state!==2" v-model="form.formName" placeholder="请输入表单名称" autocomplete="off"></el-input>
+          <div v-else>{{form.formName}}</div>
         </el-form-item>
         <el-form-item label="说明" prop="formIntroduce">
-          <el-input type="textarea" :rows="4" resize="none" placeholder="请输入内容" v-model="form.formIntroduce"></el-input>
+          <el-input v-if="state!==2" type="textarea" :rows="4" resize="none" placeholder="请输入说明" v-model="form.formIntroduce"></el-input>
+          <div v-else>{{form.formIntroduce}}</div>
         </el-form-item>
         <el-form-item label="选择需要的表单项" prop="checkList">
           勾选需要的表单选项,点击生成表单即可
           <el-checkbox-group v-model="form.checkList">
             <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 :disabled="state===2" :label="item.id">{{item.configName + ' ' + (item.type === 0 ? '单行输入框' : item.type === 1 ? '多行输入框' : '下拉选择框')}}</el-checkbox>
             </div>
           </el-checkbox-group>
         </el-form-item>
@@ -56,7 +58,7 @@ export default {
     }
     return {
       tableList: [],
-      dialogFormVisible: true,
+      dialogFormVisible: false,
       page: 1,
       state: 0,
       form: {
@@ -67,10 +69,10 @@ export default {
       pickList: [],
       rules: {
         formName: [
-          { required: true, message: '请选择活动区域', trigger: 'change' }
+          { required: true, message: '请选择活动区域', trigger: 'blur' }
         ],
         formIntroduce: [
-          { required: true, message: '请选择活动区域', trigger: 'change' }
+          { required: true, message: '请选择活动区域', trigger: 'blur' }
         ],
         checkList: [
           { validator: validcodeName, trigger: 'blur' }
@@ -160,7 +162,7 @@ export default {
         .then((res) => {
           this.open()
           this.form = res.object
-          this.form.checkList = JSON.parse(res.object.formConfig).map(item => item.id)
+          this.$set(this.form, 'checkList', JSON.parse(res.object.formConfig).map(item => item.id))
         })
     },
     details (row) {
@@ -172,14 +174,29 @@ export default {
       this.state = 1
     },
     del (row) {
-      let reqdata = { id: row.id }
-      this.$api
-        .post('/form/deleteForm', {
-          reqdata
-        })
-        .then((res) => {
-          this.queryData()
+      this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        let reqdata = { id: row.id }
+        this.$api
+          .post('/form/deleteForm', {
+            reqdata
+          })
+          .then((res) => {
+            this.$message({
+              message: '删除成功',
+              type: 'success'
+            })
+            this.queryData()
+          })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
         })
+      })
     },
     determine () {
       let a
@@ -208,15 +225,22 @@ export default {
       this.dialogFormVisible = true
     },
     close () {
+      this.dialogFormVisible = false
       this.form = {
         checkList: []
       }
-      this.dialogFormVisible = false
     },
     callPage (val) {
       this.page = val
       this.queryData()
     }
+  },
+  watch: {
+    dialogFormVisible: function (val, oldVla) {
+      if (this.$refs['form'] !== undefined) {
+        this.$refs['form'].resetFields()
+      }
+    }
   }
 }
 </script>

+ 9 - 1
src/views/companyManage/passwordSettings.vue

@@ -4,7 +4,7 @@
  * @Autor: XuTongZhang
  * @Date: 2020-07-28 17:34:44
  * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-07-29 10:13:18
+ * @LastEditTime: 2020-07-31 16:09:08
 -->
 <template>
   <div class="passwordSettings">
@@ -53,3 +53,11 @@ export default {
     justify-content: flex-end;
 }
 </style>
+
+<style lang="scss">
+.passwordSettings {
+    .el-input__inner{
+      width: 400px!important;
+    }
+}
+</style>

+ 10 - 3
src/views/companyManage/positionInfo.vue

@@ -4,7 +4,7 @@
  * @Autor: XuTongZhang
  * @Date: 2020-07-28 17:19:43
  * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-07-30 17:38:01
+ * @LastEditTime: 2020-07-31 15:30:32
 -->
 <template>
   <div class="indexPage">
@@ -22,7 +22,7 @@
     <el-dialog width="600px" :visible.sync="dialogFormVisible" :before-close="close">
       <el-form :model="form" ref="form" label-width="140px" :rules="rules" label-position="left">
         <el-form-item label="职位名称" prop="positionName">
-          <el-input v-model="form.positionName" autocomplete="off"></el-input>
+          <el-input v-model="form.positionName" placeholder="请输入职位名称" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="职位描述" prop="positionIntroduce">
           <el-input
@@ -182,13 +182,20 @@ export default {
       this.dialogFormVisible = true
     },
     close () {
-      this.form = {}
       this.dialogFormVisible = false
+      this.form = {}
     },
     callPage (val) {
       this.page = val
       this.queryData()
     }
+  },
+  watch: {
+    dialogFormVisible: function (val, oldVla) {
+      if (this.$refs['form'] !== undefined) {
+        this.$refs['form'].resetFields()
+      }
+    }
   }
 }
 </script>

+ 18 - 10
src/views/companyManage/procedureManage.vue

@@ -4,7 +4,7 @@
  * @Autor: XuTongZhang
  * @Date: 2020-07-28 16:00:46
  * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-07-30 20:33:59
+ * @LastEditTime: 2020-07-31 15:30:06
 -->
 <template>
   <div class="indexPage">
@@ -19,12 +19,12 @@
       @del="del"
     ></v-table>
     <v-pager @page="callPage" :total="totalrecords"></v-pager>
-    <el-dialog :visible.sync="dialogFormVisible" width="600px" :before-close="close">
+    <el-dialog :visible.sync="dialogFormVisible" width="660px" :before-close="close">
       <el-form :model="form" ref="form" label-width="140px" label-position="left">
         <el-form-item label="流程名称" prop="processName" :rules="{
             required: true, message: '问题不能为空', trigger: 'blur'
           }">
-          <el-input v-model.trim="form.processName" v-if="state!=2" autocomplete="off"></el-input>
+          <el-input v-model.trim="form.processName" placeholder="请输入流程名称" v-if="state!=2" autocomplete="off"></el-input>
           <div v-else>{{form.processName}}</div>
         </el-form-item>
         <el-form-item
@@ -38,7 +38,7 @@
         >
           <div v-if="state!=2">
             <div class="flex">
-              <el-input v-model.trim="item.questionName"></el-input>
+              <el-input v-model.trim="item.questionName" placeholder="请输入面试问题"></el-input>
               <el-button type="danger" @click.prevent="index === 0 || removeDomain(item)">删除</el-button>
             </div>
             <el-select
@@ -60,9 +60,9 @@
             <div>
               {{item.questionName}}
             </div>
-            <video v-if="item.videoIdList && item.videoIdList.length" :src="downList.find(i => i.id === item.videoIdList[0]).videoPath" controls></video>
+            <video v-if="item.videoIdList && item.videoIdList.length" :src="downList.some(i => i.id === item.videoIdList[0]).videoPath ? downList.find(i => i.id === item.videoIdList[0]).videoPath : ''" controls></video>
             <div class="flex">
-               <div v-for="(i, j) in item.videoIdList" :key="j" @click="active = index" class="active===index ? 'is-active' : ''">{{downList.find(k => k.id === i).videoName}}</div>
+               <div v-for="(i, j) in item.videoIdList" :key="j" class="active" @click="active = j" :class="active === j ? 'is-active' : ''">{{downList.some(k => k.id === i).videoName ? downList.find(k => k.id === i).videoName : '无数据'}}</div>
             </div>
           </div>
         </el-form-item>
@@ -185,7 +185,7 @@ export default {
       this.state = 1
     },
     del (row) {
-      this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
+      this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
@@ -247,10 +247,10 @@ export default {
       this.dialogFormVisible = true
     },
     close () {
+      this.dialogFormVisible = false
       this.form = {
         questionList: []
       }
-      this.dialogFormVisible = false
     },
     addDomain () {
       this.form.questionList.push({
@@ -261,6 +261,13 @@ export default {
       this.page = val
       this.queryData()
     }
+  },
+  watch: {
+    dialogFormVisible: function (val, oldVla) {
+      if (this.$refs['form'] !== undefined) {
+        this.$refs['form'].resetFields()
+      }
+    }
   }
 }
 </script>
@@ -274,13 +281,14 @@ export default {
 .flex {
   margin-bottom: 5px;
   display: flex;
-  > div {
+  .active {
     cursor: pointer;
     color: rgb(42, 117, 216);
-    // margin: 10px;
+    margin: 5px;
   }
   .is-active {
     color: #000;
+    font-size: 16px;
   }
 }
 </style>

+ 45 - 26
src/views/companyManage/sceneManage.vue

@@ -4,7 +4,7 @@
  * @Autor: XuTongZhang
  * @Date: 2020-07-28 16:12:21
  * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-07-30 15:24:00
+ * @LastEditTime: 2020-07-31 15:31:14
 -->
 <template>
   <div class="indexPage">
@@ -19,13 +19,15 @@
       @del="del"
     ></v-table>
     <v-pager @page="callPage" :total="totalrecords"></v-pager>
-    <el-dialog :visible.sync="dialogFormVisible" :before-close="close">
-      <el-form :model="form" label-width="140px" label-position="left">
-        <el-form-item label="场景名称">
-          <el-input v-model="form.name" autocomplete="off"></el-input>
+    <el-dialog :visible.sync="dialogFormVisible" width="650px" :before-close="close">
+      <el-form :model="form" ref="form" label-width="140px" :rules="rules" label-position="left">
+        <el-form-item label="场景名称" prop="sceneName">
+          <el-input v-if="state!==2" v-model="form.sceneName" placeholder="请输入场景名称" autocomplete="off"></el-input>
+          <div v-else>{{form.sceneName}}</div>
         </el-form-item>
-        <el-form-item label="场景描述">
-          <el-input type="textarea" :rows="4" resize="none" placeholder="请输入内容" v-model="form.textarea"></el-input>
+        <el-form-item label="场景描述" prop="sceneIntroduce">
+          <el-input v-if="state!==2" type="textarea" :rows="4" resize="none" placeholder="请输入场景描述" v-model="form.sceneIntroduce"></el-input>
+          <div v-else>{{form.sceneIntroduce}}</div>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -47,8 +49,11 @@ export default {
       form: {},
       state: 0,
       pickList: [],
-      list: [
-      ],
+      rules: {
+        sceneName: [{ required: true, message: '请输入场景名称', trigger: 'blur' }],
+        sceneIntroduce: [{ required: true, message: '请输入场景描述', trigger: 'blur' }]
+      },
+      list: [],
       btn: [
         {
           name: '添加',
@@ -60,15 +65,15 @@ export default {
         column: [
           {
             label: '编号',
-            props: ''
+            props: 'id'
           },
           {
             label: '场景名称',
-            props: ''
+            props: 'sceneName'
           },
           {
             label: '场景描述',
-            props: ''
+            props: 'sceneIntroduce'
           }
         ],
         handle: [
@@ -99,7 +104,7 @@ export default {
       let page = this.page
       let reqdata = form
       this.$api
-        .post('/video/queryVideoList', {
+        .post('/scene/querySceneList', {
           reqdata,
           page
         })
@@ -116,26 +121,26 @@ export default {
     getDetails (row) {
       let reqdata = { id: row.id }
       this.$api
-        .post('/video/queryVideoDetail', {
+        .post('/scene/querySceneDetail', {
           reqdata
         })
         .then((res) => {
           this.open()
-          this.info = res.obj
+          this.form = res.object
         })
     },
-    details () {
-      this.getDetails()
-      this.state = 1
-    },
-    editor () {
-      this.getDetails()
+    details (row) {
+      this.getDetails(row)
       this.state = 2
     },
-    del () {
-      let reqdata = {}
+    editor (row) {
+      this.getDetails(row)
+      this.state = 1
+    },
+    del (row) {
+      let reqdata = { id: row.id }
       this.$api
-        .post('', {
+        .post('/scene/deleteScene', {
           reqdata
         })
         .then((res) => {
@@ -143,13 +148,19 @@ export default {
         })
     },
     determine () {
-      let url = this.state ? '/video/updateVideo' : '/video/saveVideo'
-      let reqdata = {}
+      let a
+      this.$refs['form'].validate((valid) => {
+        a = valid
+      })
+      if (!a) return
+      let url = this.state ? '/scene/updateScene' : '/scene/saveScene'
+      let reqdata = this.form
       this.$api
         .post(url, {
           reqdata
         })
         .then((res) => {
+          this.close()
           this.queryData()
         })
     },
@@ -158,11 +169,19 @@ export default {
     },
     close () {
       this.dialogFormVisible = false
+      this.form = {}
     },
     callPage (val) {
       this.page = val
       this.queryData()
     }
+  },
+  watch: {
+    dialogFormVisible: function (val, oldVla) {
+      if (this.$refs['form'] !== undefined) {
+        this.$refs['form'].resetFields()
+      }
+    }
   }
 }
 </script>

+ 97 - 43
src/views/companyManage/templateManage.vue

@@ -4,7 +4,7 @@
  * @Autor: XuTongZhang
  * @Date: 2020-07-28 16:28:13
  * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-07-30 16:11:47
+ * @LastEditTime: 2020-07-31 15:27:25
 -->
 <template>
   <div class="indexPage">
@@ -20,48 +20,54 @@
     ></v-table>
     <v-pager @page="callPage" :total="totalrecords"></v-pager>
     <el-dialog :visible.sync="dialogFormVisible" :before-close="close">
-      <el-form :model="form" label-width="140px" :rules="rules" label-position="left">
-        <el-form-item label="模板名称">
-          <el-input v-model="form.name" autocomplete="off"></el-input>
+      <el-form :model="form" ref="form" label-width="140px" :rules="rules" label-position="left">
+        <el-form-item label="模板名称" prop="templateName">
+          <el-input v-if="state !== 2" v-model="form.templateName" placeholder="请输入模板名称" autocomplete="off"></el-input>
+          <div v-else>{{form.templateName}}</div>
         </el-form-item>
-        <el-form-item label="模板内容">
+        <el-form-item label="模板内容" prop="templateIntroduce">
           <el-input
+            v-if="state !== 2"
             type="textarea"
             :rows="4"
             resize="none"
-            placeholder="请输入内容"
-            v-model="form.textarea"
+            placeholder="请输入模板内容"
+            v-model="form.templateIntroduce"
           ></el-input>
+          <div v-else>{{form.templateIntroduce}}</div>
         </el-form-item>
-        <el-form-item label="关联场景">
-          <el-select v-model="form.value1" placeholder="请选择">
+        <el-form-item label="关联场景" prop="sceneId">
+          <el-select v-if="state !== 2" v-model="form.sceneId" placeholder="请选择关联场景">
             <el-option
-              v-for="item in options1"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
+              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="关联流程">
-          <el-select v-model="form.value2" placeholder="请选择">
+        <el-form-item label="关联流程" prop="processId">
+          <el-select v-if="state !== 2" v-model="form.processId" placeholder="请选择关联流程">
             <el-option
-              v-for="item in options2"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
+              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="关联表单">
-          <el-select v-model="form.value3" placeholder="请选择">
+        <el-form-item label="关联表单" prop="formId">
+          <el-select v-if="state !== 2" v-model="form.formId" placeholder="请选择关联表单">
             <el-option
-              v-for="item in options3"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
+              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>
       <div slot="footer" class="dialog-footer">
@@ -83,10 +89,16 @@ export default {
       state: 0,
       form: {},
       pickList: [],
-      options1: [],
-      options2: [],
-      options3: [],
-      rules: {},
+      downList0: [],
+      downList1: [],
+      downList2: [],
+      rules: {
+        templateName: [{ required: true, message: '请输入模板名称', trigger: 'blur' }],
+        templateIntroduce: [{ required: true, message: '请输入模板内容', trigger: 'blur' }],
+        sceneId: [{ required: true, message: '请选择关联场景', trigger: 'blur' }],
+        processId: [{ required: true, message: '请选择关联流程', trigger: 'blur' }],
+        formId: [{ required: true, message: '请选择关联表单', trigger: 'blur' }]
+      },
       list: [],
       btn: [
         {
@@ -107,17 +119,18 @@ export default {
           },
           {
             label: '关联场景',
-            props: 'sceneId'
+            props: 'sceneName'
           },
           {
             label: '关联流程',
-            props: 'processId'
+            props: 'processName'
           },
           {
             label: '关联表单',
-            props: 'formId'
+            props: 'formName'
           }
         ],
+        width: 400,
         handle: [
           {
             title: '查看',
@@ -125,6 +138,11 @@ export default {
             type: 'info'
           },
           {
+            title: '修改',
+            method: 'editor',
+            type: 'warning'
+          },
+          {
             title: '删除',
             method: 'del',
             type: 'danger'
@@ -139,7 +157,7 @@ export default {
     }
   },
   created () {
-    this.queryData()
+    this.queryDownList()
   },
   methods: {
     queryData (form = {}) {
@@ -152,9 +170,31 @@ export default {
         })
         .then((res) => {
           this.totalrecords = res.totalrecords
-          this.tableList = res.list
+          this.tableList = res.list.map(item => {
+            item.sceneName = this.downList0.find(i => i.id === item.sceneId).sceneName
+            item.processName = this.downList1.find(i => i.id === item.processId).processName
+            item.formName = this.downList2.find(i => i.id === item.formId).formName
+            return item
+          })
         })
     },
+    queryDownList () {
+      let reqdata = {}
+      let num = 0
+      let urlArray = ['/scene/querySceneList', '/process/queryProcessList', '/form/queryFormList']
+      urlArray.forEach((item, index) => {
+        this.$api
+          .post(item, {
+            reqdata
+          })
+          .then((res) => {
+            num++
+            this['downList' + index] = res.list
+            console.log(this['downList' + index])
+            num === 3 && this.queryData()
+          })
+      })
+    },
     add () {
       this.open()
       this.form = {}
@@ -171,16 +211,16 @@ export default {
           this.form = res.object
         })
     },
-    details () {
-      this.getDetails()
-      this.state = 1
-    },
-    editor () {
-      this.getDetails()
+    details (row) {
+      this.getDetails(row)
       this.state = 2
     },
-    del () {
-      let reqdata = {}
+    editor (row) {
+      this.getDetails(row)
+      this.state = 1
+    },
+    del (row) {
+      let reqdata = { id: row.id }
       this.$api
         .post('/template/deleteTemplate', {
           reqdata
@@ -190,15 +230,21 @@ export default {
         })
     },
     determine () {
+      let a
+      this.$refs['form'].validate((valid) => {
+        a = valid
+      })
+      if (!a) return
       let url = this.state
         ? '/template/updateTemplate'
         : '/template/saveTemplate'
-      let reqdata = {}
+      let reqdata = this.form
       this.$api
         .post(url, {
           reqdata
         })
         .then((res) => {
+          this.close()
           this.queryData()
         })
     },
@@ -207,11 +253,19 @@ export default {
     },
     close () {
       this.dialogFormVisible = false
+      this.form = {}
     },
     callPage (val) {
       this.page = val
       this.queryData()
     }
+  },
+  watch: {
+    dialogFormVisible: function (val, oldVla) {
+      if (this.$refs['form'] !== undefined) {
+        this.$refs['form'].resetFields()
+      }
+    }
   }
 }
 </script>

+ 32 - 14
src/views/companyManage/videoManage.vue

@@ -4,7 +4,7 @@
  * @Autor: XuTongZhang
  * @Date: 2020-07-28 16:06:20
  * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-07-30 15:55:17
+ * @LastEditTime: 2020-07-31 15:29:19
 -->
 <template>
   <div class="indexPage">
@@ -19,26 +19,29 @@
       @del="del"
     ></v-table>
     <v-pager @page="callPage" :total="totalrecords"></v-pager>
-    <el-dialog width="750px" :visible.sync="dialogFormVisible" :before-close="close">
-      <el-form :model="form" label-width="140px" label-position="left">
-        <el-form-item label="视频名称">
-          <el-input v-model="form.videoName" autocomplete="off"></el-input>
+    <el-dialog width="650px" :visible.sync="dialogFormVisible" :before-close="close">
+      <el-form :model="form" ref="form" label-width="100px" :rules="state !== 2 ? rules : {}" label-position="left">
+        <el-form-item label="视频名称" prop="videoName">
+          <el-input v-if="state!==2" v-model="form.videoName" placeholder="请输入视频名称" autocomplete="off"></el-input>
+          <div v-else>{{form.videoName}}</div>
         </el-form-item>
-        <el-form-item>
+        <el-form-item prop="videoPath">
           <el-upload
             class="upload-demo"
             drag
+            v-if="state!==2"
             :action="$url+'/upload/uploadVideo'"
             accept=".MP4,.mp4"
             :show-file-list="false"
             :on-success="handleAvatarSuccess"
             :before-upload="beforeAvatarUpload"
             multiple>
-            <video v-if="url" :src="$img+url" class="avatar"></video>
+            <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>
             <!-- <div class="el-upload__tip" slot="tip"></div> -->
           </el-upload>
+          <video v-else width="400" controls :src="$img+form.videoPath" class="avatar"></video>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -61,8 +64,11 @@ export default {
       state: 0,
       url: '',
       pickList: [],
-      list: [
-      ],
+      rules: {
+        videoName: [{ required: true, message: '请输入视频名称', trigger: 'blur' }],
+        videoPath: [{ required: true, message: '请上传视频', trigger: 'blur' }]
+      },
+      list: [],
       btn: [
         {
           name: '添加',
@@ -137,11 +143,11 @@ export default {
     },
     details (row) {
       this.getDetails(row)
-      this.state = 1
+      this.state = 2
     },
     editor (row) {
       this.getDetails(row)
-      this.state = 2
+      this.state = 1
     },
     del (row) {
       let reqdata = { id: row.id }
@@ -154,6 +160,11 @@ export default {
         })
     },
     determine () {
+      let a
+      this.$refs['form'].validate((valid) => {
+        a = valid
+      })
+      if (!a) return
       let url = this.state ? '/video/updateVideo' : '/video/saveVideo'
       let reqdata = this.form
       this.$api
@@ -166,8 +177,8 @@ export default {
         })
     },
     handleAvatarSuccess (res, file) {
-      this.url = res
-      this.form.videoPath = res
+      // this.url = res
+      this.$set(this.form, 'videoPath', res)
     },
     beforeAvatarUpload (file) {
       console.log(file)
@@ -186,13 +197,20 @@ export default {
       this.dialogFormVisible = true
     },
     close () {
-      this.form = {}
       this.dialogFormVisible = false
+      this.form = {}
     },
     callPage (val) {
       this.page = val
       this.queryData()
     }
+  },
+  watch: {
+    dialogFormVisible: function (val, oldVla) {
+      if (this.$refs['form'] !== undefined) {
+        this.$refs['form'].resetFields()
+      }
+    }
   }
 }
 </script>