diff --git a/src/permission.js b/src/permission.js
index 1841aea..6bfb0f6 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -16,7 +16,7 @@ NProgress.configure({
   showSpinner: false
 });
 
-const whiteList = ['/login', '/auth-redirect', '/bind', '/register', '/question'];
+const whiteList = ['/login', '/auth-redirect', '/bind', '/register', '/question', '/clue/feedback'];
 
 router.beforeEach((to, from, next) => {
   NProgress.start();
diff --git a/src/router/index.js b/src/router/index.js
index df2777f..beb6e9f 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -53,6 +53,11 @@ export const constantRoutes = [{
   component: () => import('@/views/question'),
   hidden: true
 },
+{
+  path: '/clue/feedback',
+  component: () => import('@/views/zs/feedback/first'),
+  hidden: true
+},
 {
   path: '/404',
   component: () => import('@/views/error/404'),
diff --git a/src/views/question/index.vue b/src/views/question/index.vue
index 1f423fb..2b141e9 100644
--- a/src/views/question/index.vue
+++ b/src/views/question/index.vue
@@ -81,7 +81,7 @@ export default {
   components: {
     QuestionForm, QuestionAddForm
   },
-  data() {
+  data () {
     return {
       // 遮罩层
       loading: false,
@@ -98,12 +98,12 @@ export default {
       dialogAddVisible: false
     };
   },
-  created() {
+  created () {
     // this.getList();
   },
   methods: {
     /** 查询文件列表 */
-    getList() {
+    getList () {
       this.loading = true;
       searchQuestion(this.queryParams).then(response => {
         this.tableList = response.data;
@@ -113,7 +113,7 @@ export default {
     },
 
     /** 搜索按钮操作 */
-    handleQuery() {
+    handleQuery () {
       if (this.queryParams.question) {
         this.getList();
       } else {
@@ -121,17 +121,17 @@ export default {
       }
     },
     /** 重置按钮操作 */
-    resetQuery() {
+    resetQuery () {
       this.queryParams.question = '';
       this.handleQuery();
     },
-    handleEdit(item) {
+    handleEdit (item) {
       this.dialogVisible = true;
       this.$nextTick(() => {
         this.$refs.dialogForm.init(item);
       });
     },
-    handleAdd(item) {
+    handleAdd (item) {
       this.dialogAddVisible = true;
       this.$nextTick(() => {
         this.$refs.dialogAddForm.init(item);
diff --git a/src/views/zs/clue/components/DistributeFormDialog copy.vue b/src/views/zs/clue/components/DistributeFormDialog copy.vue
new file mode 100644
index 0000000..095c588
--- /dev/null
+++ b/src/views/zs/clue/components/DistributeFormDialog copy.vue	
@@ -0,0 +1,116 @@
+<template>
+  <el-dialog title="分发" :close-on-click-modal="false" append-to-body :visible.sync="visible" width="600px" @close="closeDialog">
+    <el-form ref="dialogForm" :model="dialogForm" :rules="rules" label-width="110px">
+      <el-row>
+        <el-col :span="24">
+          <el-form-item label="场地" prop="newPlaceList">
+            <span v-if="oldForm.placeNames">{{oldForm.placeNames}}</span>
+
+            <el-select v-model="dialogForm.newPlaceList" filterable multiple placeholder="请选择" clearable style="width: 100%;">
+              <el-option v-for="dict in placeOptions" :key="dict.placeId" :label="dict.name" :value="dict.placeId" />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button plain @click="(visible = false)">取消</el-button>
+      <el-button v-jclick type="primary" :disabled="!canSubmit" @click="dialogFormSubmit()">确定</el-button>
+    </span>
+  </el-dialog>
+</template>
+  <script>
+import { getCluePlaceList, saveCluePlace } from '@/api/zs/clue';
+import { getAllPlaces } from '@/api/sch/place';
+
+export default {
+  name: 'DistributeFormDialog',
+
+  data() {
+    return {
+      visible: false,
+      canSubmit: true,
+      dialogForm: {},
+      oldForm: {},
+      rules: {
+        newPlaceList: {
+          required: true,
+          message: '场地不能为空不能为空',
+          trigger: 'blur'
+        }
+      },
+      placeOptions: []
+    };
+  },
+  methods: {
+    init(info = undefined) {
+      this.getPlaces()
+      this.visible = true;
+      this.$nextTick(() => {
+        this.resetDialogForm();
+        this.$refs['dialogForm'].resetFields();
+        if (info) {
+
+          this.dialogForm.clueId = info;
+          //查询该线索的分发情况
+          this.getDistributePlaces(info);
+        }
+      });
+    },
+    resetDialogForm() {
+      this.dialogForm = {
+        oldPlaceList: [],
+        newPlaceList: [],
+        placeIdList: [],
+        clueId: undefined
+      };
+      this.oldForm = {}
+    },
+    closeDialog() {
+      this.$emit('update:dialog.batchUpdateVisible', false);
+    },
+    getDistributePlaces(clueId) {
+      getCluePlaceList({ clueId: clueId }).then(resp => {
+        if (resp.code == 200) {
+          this.oldForm = resp.data
+          this.dialogForm.oldPlaceList = this.oldForm.placeIdList;
+          if (this.oldForm.placeIdList && this.oldForm.placeIdList) {
+            this.placeOptions = this.placeOptions.filter(item => this.oldForm.placeIdList.indexOf(item.placeId) == -1)
+          }
+        }
+
+      })
+    },
+    // 表单提交
+    dialogFormSubmit() {
+      this.$refs.dialogForm.validate((valid) => {
+        if (valid) {
+          this.canSubmit = false;
+          this.dialogForm.placeIdList = this.dialogForm.oldPlaceList.concat(this.dialogForm.newPlaceList)
+          // 校验完成,调接口
+          saveCluePlace(this.dialogForm)
+            .then((resp) => {
+              this.canSubmit = true;
+              if (resp.code == 200) {
+                this.$message.success('分发成功');
+                this.$emit('refreshDataList');
+                this.visible = false;
+              }
+            })
+            .catch(() => {
+              this.canSubmit = true;
+            });
+        }
+      });
+    },
+    getPlaces() {
+      getAllPlaces({ status: '0' }).then((resp) => {
+        this.placeOptions = resp.data;
+
+      });
+    },
+  }
+};
+  </script>
+  
+  
\ No newline at end of file
diff --git a/src/views/zs/clue/components/DistributeFormDialog.vue b/src/views/zs/clue/components/DistributeFormDialog.vue
index 095c588..61781b4 100644
--- a/src/views/zs/clue/components/DistributeFormDialog.vue
+++ b/src/views/zs/clue/components/DistributeFormDialog.vue
@@ -3,14 +3,19 @@
     <el-form ref="dialogForm" :model="dialogForm" :rules="rules" label-width="110px">
       <el-row>
         <el-col :span="24">
-          <el-form-item label="场地" prop="newPlaceList">
-            <span v-if="oldForm.placeNames">{{oldForm.placeNames}}</span>
-
-            <el-select v-model="dialogForm.newPlaceList" filterable multiple placeholder="请选择" clearable style="width: 100%;">
+          <el-form-item label="场地" prop="placeId">
+            <el-select v-model="dialogForm.placeId" filterable placeholder="请选择" clearable style="width: 100%;">
               <el-option v-for="dict in placeOptions" :key="dict.placeId" :label="dict.name" :value="dict.placeId" />
             </el-select>
           </el-form-item>
         </el-col>
+        <el-col :span="24">
+          <el-form-item label="教练" prop="coachId">
+            <el-select v-model="dialogForm.coachId" filterable placeholder="请选择" clearable style="width: 100%;">
+              <el-option v-for="dict in coachOptions" :key="dict.coachId" :label="dict.coachName" :value="dict.coachId" />
+            </el-select>
+          </el-form-item>
+        </el-col>
       </el-row>
     </el-form>
     <span slot="footer" class="dialog-footer">
@@ -19,74 +24,68 @@
     </span>
   </el-dialog>
 </template>
-  <script>
+<script>
 import { getCluePlaceList, saveCluePlace } from '@/api/zs/clue';
 import { getAllPlaces } from '@/api/sch/place';
 
 export default {
   name: 'DistributeFormDialog',
 
-  data() {
+  data () {
     return {
       visible: false,
       canSubmit: true,
       dialogForm: {},
       oldForm: {},
       rules: {
-        newPlaceList: {
-          required: true,
-          message: '场地不能为空不能为空',
-          trigger: 'blur'
-        }
+        placeId: { required: true, message: '场地不能为空', trigger: 'blur, change' },
+        coachId: { required: true, message: '教练不能为空', trigger: 'blur, change' }
       },
       placeOptions: []
     };
   },
   methods: {
-    init(info = undefined) {
-      this.getPlaces()
+    init (info = undefined) {
+      this.getPlaces();
       this.visible = true;
       this.$nextTick(() => {
         this.resetDialogForm();
         this.$refs['dialogForm'].resetFields();
         if (info) {
-
           this.dialogForm.clueId = info;
-          //查询该线索的分发情况
+          // 查询该线索的分发情况
           this.getDistributePlaces(info);
         }
       });
     },
-    resetDialogForm() {
+    resetDialogForm () {
       this.dialogForm = {
-        oldPlaceList: [],
-        newPlaceList: [],
-        placeIdList: [],
-        clueId: undefined
+        placeId: undefined,
+        clueId: undefined,
+        coachId: undefined
       };
-      this.oldForm = {}
+      this.oldForm = {};
     },
-    closeDialog() {
+    closeDialog () {
       this.$emit('update:dialog.batchUpdateVisible', false);
     },
-    getDistributePlaces(clueId) {
+    getDistributePlaces (clueId) {
       getCluePlaceList({ clueId: clueId }).then(resp => {
         if (resp.code == 200) {
-          this.oldForm = resp.data
+          this.oldForm = resp.data;
           this.dialogForm.oldPlaceList = this.oldForm.placeIdList;
           if (this.oldForm.placeIdList && this.oldForm.placeIdList) {
-            this.placeOptions = this.placeOptions.filter(item => this.oldForm.placeIdList.indexOf(item.placeId) == -1)
+            this.placeOptions = this.placeOptions.filter(item => this.oldForm.placeIdList.indexOf(item.placeId) == -1);
           }
         }
-
-      })
+      });
     },
     // 表单提交
-    dialogFormSubmit() {
+    dialogFormSubmit () {
       this.$refs.dialogForm.validate((valid) => {
         if (valid) {
           this.canSubmit = false;
-          this.dialogForm.placeIdList = this.dialogForm.oldPlaceList.concat(this.dialogForm.newPlaceList)
+          this.dialogForm.placeIdList = this.dialogForm.oldPlaceList.concat(this.dialogForm.newPlaceList);
           // 校验完成,调接口
           saveCluePlace(this.dialogForm)
             .then((resp) => {
@@ -103,14 +102,12 @@ export default {
         }
       });
     },
-    getPlaces() {
+    getPlaces () {
       getAllPlaces({ status: '0' }).then((resp) => {
         this.placeOptions = resp.data;
-
       });
-    },
+    }
   }
 };
-  </script>
-  
-  
\ No newline at end of file
+</script>
+
diff --git a/src/views/zs/feedback/first.vue b/src/views/zs/feedback/first.vue
new file mode 100644
index 0000000..439d47b
--- /dev/null
+++ b/src/views/zs/feedback/first.vue
@@ -0,0 +1,180 @@
+<template>
+  <div class="app-container" style="width:90%;margin:auto;">
+    <!-- 添加或修改线索反馈对话框 -->
+    <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+      <el-form-item label="学员姓名" prop="clueId">
+        <el-input v-model="form.clueId" placeholder="请输入线索id" />
+      </el-form-item>
+      <el-form-item label="联系方式" prop="clueId">
+        <el-input v-model="form.clueId" placeholder="请输入线索id" />
+      </el-form-item>
+      <el-form-item label="教练id" prop="coachId">
+        <el-input v-model="form.coachId" placeholder="请输入教练id" />
+      </el-form-item>
+      <el-form-item label="是否联系" prop="isContact">
+        <el-input v-model="form.isContact" placeholder="请输入是否联系" />
+      </el-form-item>
+      <el-form-item label="到场时间" prop="arrivalTime">
+        <el-date-picker v-model="form.arrivalTime" clearable type="date" value-format="yyyy-MM-dd" placeholder="请选择到场时间" />
+      </el-form-item>
+      <el-form-item label="备注" prop="remark">
+        <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+      </el-form-item>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="submitForm">确 定</el-button>
+      <el-button @click="cancel">取 消</el-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import { addFeedback, updateFeedback } from '@/api/zs/feedback';
+
+export default {
+  name: 'First',
+  data () {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 线索反馈表格数据
+      feedbackList: [],
+      // 弹出层标题
+      title: '',
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        clueId: null,
+        feedbackType: null,
+        coachId: null,
+        content: null,
+        feedbackTime: null,
+        isContact: null,
+        arrivalTime: null,
+        arrivalStatus: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created () {
+    this.getList();
+  },
+  methods: {
+    /** 查询线索反馈列表 */
+    getList () {
+      this.loading = true;
+      listFeedback(this.queryParams).then(response => {
+        this.feedbackList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel () {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset () {
+      this.form = {
+        feedbackId: null,
+        clueId: null,
+        feedbackType: null,
+        coachId: null,
+        content: null,
+        feedbackTime: null,
+        isContact: null,
+        arrivalTime: null,
+        arrivalStatus: 0,
+        remark: null
+      };
+      this.resetForm('form');
+    },
+    /** 搜索按钮操作 */
+    handleQuery () {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery () {
+      this.resetForm('queryForm');
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange (selection) {
+      this.ids = selection.map(item => item.feedbackId);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd () {
+      this.reset();
+      this.open = true;
+      this.title = '添加线索反馈';
+    },
+    /** 修改按钮操作 */
+    handleUpdate (row) {
+      this.reset();
+      const feedbackId = row.feedbackId || this.ids;
+      getFeedback(feedbackId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = '修改线索反馈';
+      });
+    },
+    /** 提交按钮 */
+    submitForm () {
+      this.$refs['form'].validate(valid => {
+        if (valid) {
+          if (this.form.feedbackId != null) {
+            updateFeedback(this.form).then(response => {
+              this.$modal.msgSuccess('修改成功');
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addFeedback(this.form).then(response => {
+              this.$modal.msgSuccess('新增成功');
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete (row) {
+      const feedbackIds = row.feedbackId || this.ids;
+      this.$modal.confirm('是否确认删除线索反馈编号为"' + feedbackIds + '"的数据项?').then(function () {
+        return delFeedback(feedbackIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess('删除成功');
+      }).catch(() => { });
+    },
+    /** 导出按钮操作 */
+    handleExport () {
+      this.download('system/feedback/export', {
+        ...this.queryParams
+      }, `feedback_${new Date().getTime()}.xlsx`);
+    }
+  }
+};
+</script>
diff --git a/src/views/zs/feedback/index.vue b/src/views/zs/feedback/index.vue
index 4a9c813..4086e65 100644
--- a/src/views/zs/feedback/index.vue
+++ b/src/views/zs/feedback/index.vue
@@ -48,7 +48,7 @@
       <el-table-column label="反馈时间" align="center" prop="feedbackTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.feedbackTime, '{y}-{m}-{d}') }}</span>
-        </template>
+        </template>00000000000000000000000
       </el-table-column>
       <el-table-column label="是否联系" align="center" prop="isContact" />
       <el-table-column label="到场时间" align="center" prop="arrivalTime" width="180">