Procházet zdrojové kódy

Merge remote-tracking branch 'origin/develop' into develop

Sun Xinyuan před 1 rokem
rodič
revize
a403d6c344

+ 29 - 23
src/views/consult/components/FollowUp.vue

@@ -90,29 +90,21 @@
             show-word-limit
             type="textarea" />
         </el-form-item>
-        <el-form-item label="进展描述" prop="progress">
-          <el-input v-model="form.progress" maxlength="500" resize="none" :rows="4" show-word-limit type="textarea" />
-        </el-form-item>
-        <el-form-item label="下一步计划" prop="nextPlan">
-          <el-input v-model="form.nextPlan" maxlength="500" resize="none" :rows="4" show-word-limit type="textarea" />
-        </el-form-item>
         <el-row :gutter="20">
           <el-col :span="12">
-            <el-form-item label="客户信息" prop="custName">
-              <el-input v-model="form.custName" readonly suffix-icon="el-icon-search" @focus="handleSelectCustomer" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="是否创建项目" prop="isBig">
-              <el-select v-model="createProj" placeholder="请选择" style="width: 100%" @change="changeIsProject">
-                <el-option label="是" :value="true" />
-                <el-option label="否" :value="false" />
+            <el-form-item label="跟进沟通情况" prop="followCommunicateCase">
+              <el-select
+                v-model="form.followCommunicateCase"
+                placeholder="请选择"
+                style="width: 100%"
+                @change="changeIsProject">
+                <el-option label="信息有效,可继续跟进,转C类订单" value="10" />
+                <el-option label="信息有效,可转为储备用户" value="20" />
+                <el-option label="信息无效,不再跟进" value="30" />
               </el-select>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col v-if="createProj" :span="12">
+          <el-col v-if="form.followCommunicateCase == '10' || form.followCommunicateCase == '20'" :span="12">
             <el-form-item label="关联项目" prop="nboName">
               <el-input
                 v-model="form.nboName"
@@ -123,6 +115,12 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-form-item label="进展描述" prop="progress">
+          <el-input v-model="form.progress" maxlength="500" resize="none" :rows="4" show-word-limit type="textarea" />
+        </el-form-item>
+        <el-form-item label="下一步计划" prop="nextPlan">
+          <el-input v-model="form.nextPlan" maxlength="500" resize="none" :rows="4" show-word-limit type="textarea" />
+        </el-form-item>
       </el-form>
       <span slot="footer">
         <el-button type="primary" @click="consultEdit">保存</el-button>
@@ -152,7 +150,6 @@
       return {
         title: '',
         visible: false,
-        createProj: false,
         areaEditDisable: true,
         provinceOptions: [],
         currentProvince: [],
@@ -176,9 +173,15 @@
           custId: 0, // 客户ID
           custName: '', // 客户
           nboId: 0, // 关联项目
-          nboName: '', // 项目名称
+          nboName: '', // 项目名称,
+          followCommunicateCase: '', // 10、信息有效,可继续跟进,转C类订单;20、信息有效,可转为储备用户;30、信息无效,不再跟进。
+        },
+        rules: {
+          followCommunicateCase: [{ required: true, trigger: ['blur', 'change'], message: '请选择跟进沟通情况' }],
+          nboName: [{ required: true, trigger: ['blur', 'change'], message: '请选择项目' }],
+          progress: [{ required: true, trigger: ['blur', 'change'], message: '不能为空' }],
+          nextPlan: [{ required: true, trigger: ['blur', 'change'], message: '不能为空' }],
         },
-        rules: {},
       }
     },
     mounted() {
@@ -190,7 +193,6 @@
     },
     methods: {
       async init(id) {
-        this.createProj = false
         this.visible = true
         if (!id) {
           this.title = '新建跟进记录'
@@ -209,7 +211,10 @@
             if (err) return
             this.$message.success(res.msg)
             this.visible = false
-            this.$emit('consultSave', this.createProj)
+            this.$emit(
+              'consultSave',
+              this.form.followCommunicateCase == '10' || this.form.followCommunicateCase == '20'
+            )
           }
         })
       },
@@ -268,6 +273,7 @@
           custName: '', // 客户
           nboId: 0, // 关联项目
           nboName: '', // 项目名称
+          followCommunicateCase: '', // 10、信息有效,可继续跟进,转C类订单;20、信息有效,可转为储备用户;30、信息无效,不再跟进。
         }
         this.$refs['form'].resetFields()
       },

+ 9 - 1
src/views/consult/detail.vue

@@ -73,8 +73,11 @@
               <el-descriptions-item label="内容" :span="24">
                 {{ details.content }}
               </el-descriptions-item>
-              <el-descriptions-item label="客户">
+              <!-- <el-descriptions-item label="客户">
                 {{ details.custName }}
+              </el-descriptions-item> -->
+              <el-descriptions-item label="跟进沟通情况">
+                {{ caseMap[details.followCommunicateCase] }}
               </el-descriptions-item>
               <el-descriptions-item label="项目">
                 {{ details.nboName }}
@@ -105,6 +108,11 @@
         id: undefined,
         details: {},
         activeName: 'details',
+        caseMap: {
+          10: '信息有效,可继续跟进,转C类订单',
+          20: '信息有效,可转为储备用户',
+          30: '信息无效,不再跟进',
+        },
       }
     },
     computed: {

+ 15 - 0
src/views/consult/index.vue

@@ -58,6 +58,9 @@
           <span v-else-if="item.prop === 'state'">
             {{ row[item.prop] == '20' ? '已跟进' : '未跟进' }}
           </span>
+          <span v-else-if="item.prop === 'followCommunicateCase'">
+            {{ caseMap[row[item.prop]] }}
+          </span>
           <span v-else>{{ row[item.prop] }}</span>
         </template>
       </el-table-column>
@@ -106,6 +109,11 @@
     },
     data() {
       return {
+        caseMap: {
+          10: '信息有效,可继续跟进,转C类订单',
+          20: '信息有效,可转为储备用户',
+          30: '信息无效,不再跟进',
+        },
         height: this.$baseTableHeight(2),
         listLoading: false,
         layout: 'total, sizes, prev, pager, next, jumper',
@@ -190,6 +198,13 @@
             sortable: false,
             disableCheck: false,
           },
+          {
+            label: '跟进沟通情况',
+            width: '120px',
+            prop: 'followCommunicateCase',
+            sortable: false,
+            disableCheck: false,
+          },
         ],
       }
     },

+ 26 - 21
src/views/work/train/sale/components/Edit.vue

@@ -27,30 +27,26 @@
           </el-form-item>
         </el-col>
         <el-col :span="24">
-          <el-form-item label="培训日期" prop="trainingDate">
+          <el-form-item label="期望培训日期" prop="expectTrainDate">
             <el-date-picker
-              v-model="form.trainingDate"
-              placeholder="选择培训日期"
+              v-model="form.expectTrainDate"
+              placeholder="选择期望培训日期"
               style="width: 100%"
               type="date"
               value-format="yyyy-MM-dd" />
           </el-form-item>
         </el-col>
         <el-col :span="24">
-          <el-form-item label="具体时间" prop="specificTime">
-            <el-date-picker
-              v-model="form.specificStartTime"
-              placeholder="开始时间"
-              style="width: 45%"
-              type="datetime"
-              value-format="yyyy-MM-dd HH:ss:mm" />
-            -
-            <el-date-picker
-              v-model="form.specificEndTime"
-              placeholder="结束时间"
-              style="width: 45%"
-              type="datetime"
-              value-format="yyyy-MM-dd HH:ss:mm" />
+          <el-form-item label="期望时间" prop="expectTime">
+            <el-time-picker
+              v-model="form.expectTime"
+              end-placeholder="结束时间"
+              format="HH:mm"
+              is-range
+              placeholder="选择时间范围"
+              range-separator="至"
+              start-placeholder="开始时间"
+              style="width: 100%" />
           </el-form-item>
         </el-col>
         <el-col :span="24">
@@ -100,19 +96,21 @@
           mainProduct: undefined,
           mainCustomer: undefined,
           trainees: undefined,
-          trainingDate: undefined,
-          specificStartTime: undefined,
-          specificEndTime: undefined,
+          expectTrainDate: undefined,
+          expectStartTime: undefined,
+          expectEndTime: undefined,
           trainTitle: undefined,
           instructorRequire: undefined,
           focusPoint: undefined,
+          expectTime: [new Date(2016, 9, 10, 0, 0), new Date(2016, 9, 10, 23, 59)],
         },
         rules: {
           distributorName: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
           mainProduct: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
           mainCustomer: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
           trainees: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
-          trainingDate: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
+          expectTrainDate: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
+          expectTime: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
           trainTitle: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
           instructorRequire: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
           focusPoint: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
@@ -134,6 +132,9 @@
           this.title = '编辑'
           this.dialogTyte = 'edit'
           this.form = Object.assign({}, row)
+          let time = []
+          time.push(new Date(this.form.expectStartTime), new Date(this.form.expectEndTime))
+          this.form.expectTime = time
         }
         this.dialogFormVisible = true
       },
@@ -157,6 +158,10 @@
       save() {
         this.$refs['form'].validate(async (valid) => {
           if (valid) {
+            let start = this.form.expectTime[0].setHours(this.form.expectTime[0].getHours() + 8)
+            let end = this.form.expectTime[1].setHours(this.form.expectTime[1].getHours() + 8)
+            this.form.expectStartTime = new Date(start)
+            this.form.expectEndTime = new Date(end)
             if (this.dialogTyte === 'add') {
               const { msg } = await Api.doAdd(this.form)
               this.loading = false

+ 34 - 27
src/views/work/train/sale/components/details.vue

@@ -3,35 +3,34 @@
     <el-dialog :title="title" :visible.sync="dialogFormVisible" @close="close">
       <el-form ref="form" :model="form" style="margin-top: -24px">
         <el-row :gutter="20" style="margin: 0px">
-          <el-col :span="12">
+          <el-col :span="24">
             <el-form-item label="渠道名称:" style="margin: 0px">
               {{ form.distributorName }}
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="24">
             <el-form-item label="主营产品:" style="margin: 0px">
               {{ form.mainProduct }}
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="24">
             <el-form-item label="主要客户:" style="margin: 0px">
               {{ form.mainCustomer }}
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="24">
             <el-form-item label="参训人员:" style="margin: 0px">
               {{ form.trainees }}
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="培训日期:" style="margin: 0px">
-              {{ parseTime(form.trainingDate, '{y}-{m}-{d}') }}
+            <el-form-item label="期望培训日期:" style="margin: 0px">
+              {{ parseTime(form.expectTrainDate, '{y}-{m}-{d}') }}
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="具体时间:" style="margin: 0px">
-              {{ parseTime(form.specificStartTime, '{y}-{m}-{d}') }} 至
-              {{ parseTime(form.specificEndTime, '{y}-{m}-{d}') }}
+            <el-form-item label="期望时间:" style="margin: 0px">
+              {{ parseTime(form.expectStartTime, '{h}:{i}') }} - {{ parseTime(form.expectEndTime, '{h}:{i}') }}
             </el-form-item>
           </el-col>
           <el-col :span="24">
@@ -39,7 +38,7 @@
               {{ form.trainTitle }}
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="24">
             <el-form-item label="讲师要求:" style="margin: 0px">
               {{ form.instructorRequire }}
             </el-form-item>
@@ -49,12 +48,27 @@
               {{ form.focusPoint }}
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item v-if="form.trainInstructor != ''" label="培训讲师:" style="margin: 0px">
+              {{ form.trainInstructor }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item v-if="form.trainDate != ''" label="培训日期:" style="margin: 0px">
+              {{ parseTime(form.trainDate, '{y}-{m}-{d}') }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item v-if="form.specificStartTime != ''" label="培训时间:" style="margin: 0px">
+              {{ parseTime(form.specificStartTime, '{h}:{i}') }} - {{ parseTime(form.specificEndTime, '{h}:{i}') }}
+            </el-form-item>
+          </el-col>
           <el-col :span="24">
             <el-table ref="productTable" :data="list" style="width: 100%; margin-top: 10px">
-              <el-table-column label="讲解时长" prop="explainDuration" />
-              <el-table-column label="提问记录" prop="questionRecord" />
-              <el-table-column label="培训效果总结" prop="trainingSummary" />
-              <el-table-column label="下一步工作计划" prop="nextStep" />
+              <el-table-column label="讲解时长" prop="explainDuration" show-overflow-tooltip />
+              <el-table-column label="提问记录" prop="questionRecord" show-overflow-tooltip />
+              <el-table-column label="培训效果总结" prop="trainSummary" show-overflow-tooltip />
+              <el-table-column label="下一步工作计划" prop="nextStep" show-overflow-tooltip />
             </el-table>
           </el-col>
         </el-row>
@@ -83,7 +97,11 @@
           mainProduct: undefined,
           mainCustomer: undefined,
           trainees: undefined,
-          trainingDate: undefined,
+          expectTrainDate: undefined,
+          expectStartTime: undefined,
+          expectEndTime: undefined,
+          trainInstructor: undefined,
+          trainDate: undefined,
           specificStartTime: undefined,
           specificEndTime: undefined,
           trainTitle: undefined,
@@ -101,18 +119,7 @@
         this.id = row.id
         this.theProgress = row
         this.title = '详情'
-        this.form = {
-          distributorName: row.distributorName,
-          mainProduct: row.mainProduct,
-          mainCustomer: row.mainCustomer,
-          trainees: row.trainees,
-          trainingDate: row.trainingDate,
-          specificStartTime: row.specificStartTime,
-          specificEndTime: row.specificEndTime,
-          trainTitle: row.trainTitle,
-          instructorRequire: row.instructorRequire,
-          focusPoint: row.focusPoint,
-        }
+        this.form = row
         this.getOrderDetails()
         this.dialogFormVisible = true
       },

+ 15 - 6
src/views/work/train/sale/components/finish.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog title="总结" :visible.sync="dialogFormVisible" @close="close">
+  <el-dialog title="反馈" :visible.sync="dialogFormVisible" @close="close">
     <el-form ref="form" :model="form" :rules="rules">
       <el-row :gutter="20">
         <el-col :span="24">
@@ -13,8 +13,8 @@
           </el-form-item>
         </el-col>
         <el-col :span="24">
-          <el-form-item label="培训效果总结" prop="trainingSummary">
-            <el-input v-model="form.trainingSummary" :rows="2" type="textarea" />
+          <el-form-item label="培训效果总结" prop="trainSummary">
+            <el-input v-model="form.trainSummary" :rows="2" type="textarea" />
           </el-form-item>
         </el-col>
         <el-col :span="24">
@@ -40,12 +40,15 @@
       return {
         form: {
           orderId: undefined,
-          finishRemark: undefined,
+          explainDuration: undefined,
+          questionRecord: undefined,
+          trainSummary: undefined,
+          nextStep: undefined,
         },
         rules: {
           explainDuration: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
           questionRecord: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
-          trainingSummary: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
+          trainSummary: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
           nextStep: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
         },
         dialogFormVisible: false,
@@ -54,7 +57,13 @@
     mounted() {},
     methods: {
       showEdit(row) {
-        this.form.applyId = row.id
+        this.form = {
+          applyId: row.id,
+          explainDuration: undefined,
+          questionRecord: undefined,
+          trainSummary: undefined,
+          nextStep: undefined,
+        }
         this.dialogFormVisible = true
       },
       close() {

+ 136 - 0
src/views/work/train/sale/components/sure.vue

@@ -0,0 +1,136 @@
+<template>
+  <el-dialog append-to-body :title="title" :visible.sync="dialogFormVisible" @close="close('form')">
+    <el-form ref="form" label-width="120px" :model="form" :rules="rules">
+      <el-row :gutter="20">
+        <el-col :span="24">
+          <el-form-item label="培训讲师" prop="trainInstructor">
+            <el-input v-model="form.trainInstructor" :rows="2" type="textarea" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="培训日期" prop="trainDate">
+            <el-date-picker
+              v-model="form.trainDate"
+              placeholder="选择培训日期"
+              style="width: 100%"
+              type="date"
+              value-format="yyyy-MM-dd" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="期望时间" prop="specificTime">
+            <el-time-picker
+              v-model="form.specificTime"
+              end-placeholder="结束时间"
+              format="HH:mm"
+              is-range
+              placeholder="选择时间范围"
+              range-separator="至"
+              start-placeholder="开始时间"
+              style="width: 100%" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <template #footer>
+      <el-button @click="close('form')">取 消</el-button>
+      <el-button :loading="loading" type="primary" @click="save">确 定</el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script>
+  import Api from '@/api/work/trainSale'
+
+  export default {
+    name: 'WorkOrderEdit',
+    props: {
+      businessInfo: {
+        type: Object,
+        default: () => {},
+      },
+    },
+    data() {
+      return {
+        loading: false,
+        form: {
+          trainInstructor: undefined,
+          trainDate: undefined,
+          specificStartTime: undefined,
+          specificEndTime: undefined,
+          specificTime: [new Date(2016, 9, 10, 0, 0), new Date(2016, 9, 10, 23, 59)],
+        },
+        rules: {
+          trainInstructor: [{ required: true, message: '不能为空', trigger: ['blur'] }],
+          trainDate: [{ required: true, message: '不能为空', trigger: ['change'] }],
+          specificTime: [{ required: true, message: '不能为空', trigger: ['change'] }],
+        },
+        title: '',
+        dialogTyte: '',
+        dialogFormVisible: false,
+        dingtalkForm: undefined,
+      }
+    },
+    mounted() {},
+    methods: {
+      showEdit(row) {
+        this.loading = false
+        if (!row) {
+          this.title = '添加'
+          this.dialogTyte = 'add'
+        } else {
+          this.title = '确认'
+          this.dialogTyte = 'edit'
+          this.form = Object.assign({}, row)
+          this.form.trainInstructor = row.instructorRequire
+          this.form.trainDate = row.expectTrainDate
+          this.form.specificTime = [new Date(row.expectStartTime), new Date(row.expectEndTime)]
+        }
+        this.dialogFormVisible = true
+      },
+      close(formName) {
+        this.$refs[formName].resetFields()
+        this.form = this.$options.data().form
+        if (this.dingtalkForm && this.dingtalkForm.items) {
+          this.dingtalkForm.items.splice(0, this.dingtalkForm.items.length)
+        }
+        this.dialogFormVisible = false
+      },
+      handleSelectDistributor() {
+        this.$refs.selectDistributor.open()
+      },
+      selectDistributor(val) {
+        if (val && val.length > 0) {
+          this.form.distributorId = val[0].id
+          this.form.distributorName = val.map((item) => item.distName).join()
+        }
+      },
+      save() {
+        this.$refs['form'].validate(async (valid) => {
+          if (valid) {
+            let start = this.form.specificTime[0].setHours(this.form.specificTime[0].getHours() + 8)
+            let end = this.form.specificTime[1].setHours(this.form.specificTime[1].getHours() + 8)
+            this.form.specificStartTime = new Date(start)
+            this.form.specificEndTime = new Date(end)
+            if (this.dialogTyte === 'add') {
+              const { msg } = await Api.doAdd(this.form)
+              this.loading = false
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+              this.$emit('fetch-data')
+              this.close('form')
+            } else if (this.dialogTyte === 'edit') {
+              this.form.applyType = '20'
+              const { msg } = await Api.doEdit(this.form)
+              this.loading = false
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+              this.$emit('fetch-data')
+              this.close('form')
+            }
+          } else {
+            return false
+          }
+        })
+      },
+    },
+  }
+</script>

+ 79 - 18
src/views/work/train/sale/index.vue

@@ -12,7 +12,7 @@
     <vab-query-form>
       <vab-query-form-left-panel :span="12">
         <el-button
-          v-permissions="['work:order:add']"
+          v-permissions="['work:sale:add']"
           icon="el-icon-plus"
           size="mini"
           type="primary"
@@ -40,21 +40,51 @@
         :sortable="item.sortable"
         :width="item.width">
         <template #default="{ row }">
-          <span v-if="item.prop === 'trainingDate'">
-            {{ parseTime(row.trainingDate, '{y}-{m}-{d}') }}
+          <el-button
+            v-if="item.prop === 'distributorName'"
+            style="font-size: 14px"
+            type="text"
+            @click="handleDetail(row)">
+            {{ row.distributorName }}
+          </el-button>
+          <span v-else-if="item.prop === 'expectTrainDate'">
+            {{ parseTime(row.expectTrainDate, '{y}-{m}-{d}') }}
           </span>
-          <span v-else-if="item.prop === 'specificTime'">
-            {{ parseTime(row.specificStartTime, '{y}-{m}-{d} {h}:{m}:{s}') }} -
-            {{ parseTime(row.specificEndTime, '{y}-{m}-{d} {h}:{m}:{s}') }}
+          <span v-else-if="item.prop === 'expectTime'">
+            {{ parseTime(row.expectStartTime, '{h}:{i}') }} -
+            {{ parseTime(row.expectEndTime, '{h}:{i}') }}
+          </span>
+          <span v-else-if="item.prop === 'trainDate' && row.trainDate != ''">
+            {{ parseTime(row.trainDate, '{y}-{m}-{d}') }}
+          </span>
+          <span v-else-if="item.prop === 'specificTime' && row.specificStartTime != ''">
+            {{ parseTime(row.specificStartTime, '{h}:{i}') }} -
+            {{ parseTime(row.specificEndTime, '{h}:{i}') }}
+          </span>
+          <span v-else-if="item.prop === 'applyType'">
+            <el-tag v-if="row.applyType == '10'">已提交</el-tag>
+            <el-tag v-else-if="row.applyType == '20'" type="warning">已确认</el-tag>
+            <el-tag v-else-if="row.applyType == '30'" type="success">总结完成</el-tag>
           </span>
           <span v-else>{{ row[item.prop] }}</span>
         </template>
       </el-table-column>
       <el-table-column align="center" fixed="right" label="操作" width="120">
         <template #default="{ row }">
-          <el-button type="text" @click="handleDetail(row)">查看</el-button>
-          <el-button type="text" @click="createOrder(row, 'edit')">编辑</el-button>
-          <el-button v-if="row.assess == 'yes'" type="text" @click="handleFinish(row)">总结</el-button>
+          <el-button
+            v-if="row.applyType == '10'"
+            v-permissions="['work:sale:edit']"
+            type="text"
+            @click="sureOrder(row, 'edit')">
+            确认
+          </el-button>
+          <el-button
+            v-if="row.applyType == '20'"
+            v-permissions="['work:sale:sure']"
+            type="text"
+            @click="handleFinish(row)">
+            反馈
+          </el-button>
         </template>
       </el-table-column>
       <template #empty>
@@ -74,6 +104,8 @@
     <finish ref="finish" @fetch-data="restFetchData" />
     <!-- 创建工单 -->
     <order-edit ref="order-edit" @fetch-data="restFetchData" />
+    <!-- 确认 -->
+    <Sure ref="sure" @fetch-data="restFetchData" />
     <!-- 详情 -->
     <Details ref="details" />
   </div>
@@ -86,16 +118,18 @@
   import { mapGetters } from 'vuex'
   import orderEdit from '@/views/work/train/sale/components/Edit'
   import Details from '@/views/work/train/sale/components/details'
+  import Sure from '@/views/work/train/sale/components/sure'
 
   export default {
     name: 'WorkOrder',
-    components: { Finish, Details, orderEdit },
+    components: { Finish, Details, orderEdit, Sure },
     data() {
       return {
         activeName: 'first',
         layout: 'total, sizes, prev, pager, next, jumper',
         queryForm: {
           distributorId: 0,
+          createdBy: 0,
           mainProduct: '',
           pageNum: 1,
           pageSize: 10,
@@ -122,18 +156,18 @@
           },
           {
             label: '参训人员',
-            width: '100px',
+            width: '200px',
             prop: 'trainees',
           },
           {
-            label: '培训日期',
-            width: '100px',
-            prop: 'trainingDate',
+            label: '期望培训日期',
+            width: '120px',
+            prop: 'expectTrainDate',
           },
           {
-            label: '具体时间',
-            width: '300px',
-            prop: 'specificTime',
+            label: '期望时间',
+            width: '120px',
+            prop: 'expectTime',
           },
           {
             label: '培训主题',
@@ -142,7 +176,7 @@
           },
           {
             label: '讲师要求',
-            width: '120px',
+            width: '200px',
             prop: 'instructorRequire',
           },
           {
@@ -150,6 +184,26 @@
             width: '280px',
             prop: 'focusPoint',
           },
+          {
+            label: '培训讲师',
+            width: '200px',
+            prop: 'trainInstructor',
+          },
+          {
+            label: '培训日期',
+            width: '120px',
+            prop: 'trainDate',
+          },
+          {
+            label: '培训时间',
+            width: '120px',
+            prop: 'specificTime',
+          },
+          {
+            label: '申请状态',
+            width: '120px',
+            prop: 'applyType',
+          },
         ],
         deliveryStatusOptions: [],
         productLineOptions: [],
@@ -158,6 +212,7 @@
     computed: {
       ...mapGetters({
         userId: 'user/id',
+        roleKeys: 'user/roleKeys',
       }),
     },
     activated() {
@@ -171,12 +226,18 @@
       createOrder(val, type) {
         this.$refs['order-edit'].showEdit(val, type)
       },
+      sureOrder(val, type) {
+        this.$refs['sure'].showEdit(val, type)
+      },
       restFetchData() {
         this.queryForm.pageNum = 1
         this.fetchData()
       },
       async fetchData() {
         this.listLoading = true
+        if (this.roleKeys.includes('SalesEngineer')) {
+          this.queryForm.createdBy = this.userId
+        }
         const params = { ...this.queryForm }
         const [err, res] = await to(Api.getList({ ...params }))
         this.listLoading = false