Explorar el Código

运输清单增加关联工单 新增工单 来源单据 多选销售发货数据

jingshuyong hace 11 meses
padre
commit
a21097465c

+ 10 - 2
src/views/saleManage/saleOrder/invoice/components/inventoryTable.vue

@@ -136,6 +136,12 @@
           <el-input v-model="scope.row.batchNo" v-no-chinese></el-input>
         </el-form-item>
       </template>
+      <!-- 生产编码 可编辑 -->
+      <template v-slot:productionCodes="{ row }">
+        <el-form-item>
+          <el-input v-model="row.productionCodes" v-no-chinese></el-input>
+        </el-form-item>
+      </template>
       <template v-slot:blockCount="scope">
         <el-form-item
           :prop="'datasource.' + scope.$index + '.blockCount'"
@@ -360,7 +366,7 @@
   import tabMixins from '@/mixins/tableColumnsMixin';
 
   export default {
-    mixins: [dictMixins, getDynamicsColumns,tabMixins],
+    mixins: [dictMixins, getDynamicsColumns, tabMixins],
     props: {
       orderId: String,
       needProduce: [String, Number],
@@ -532,7 +538,8 @@
             minWidth: 160,
             prop: 'productionCodes',
             label: '生产编码',
-            align: 'center'
+            align: 'center',
+            slot: 'productionCodes'
           },
           {
             width: 120,
@@ -1098,6 +1105,7 @@
 
       //修改回显
       putTableValue(data) {
+        console.log(data,'data 1+1')
         if (data) {
           this.form.datasource = data;
           data.forEach(async (item, index) => {

+ 270 - 0
src/views/saleManage/saleOrder/invoice/components/relatedWorkOrder/relatedWorkDialog.vue

@@ -0,0 +1,270 @@
+<template>
+  <el-dialog
+    title="选择工单"
+    custom-class="ele-dialog-form long-dialog-form"
+    :visible.sync="associationVisible"
+    :before-close="handleClose"
+    :close-on-click-modal="false"
+    top="5vh"
+    :close-on-press-escape="false"
+    append-to-body
+    width="70%"
+  >
+    <el-card shadow="never">
+      <page-search-table @search="reload"></page-search-table>
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="datasource"
+        row-key="id"
+        height="calc(100vh - 500px)"
+        class="dict-table"
+        :selection.sync="selection"
+      >
+      </ele-pro-table>
+    </el-card>
+
+    <div class="btns" slot="footer">
+      <el-button type="primary" size="small" @click="selected">选择</el-button>
+      <el-button size="small" @click="handleClose">关闭</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+  import { logistictraklistnotePageListAPI } from '@/api/transportManager/shipManage/taskWork';
+  import pageSearchTable from '@/views/transportManager/shipManage/taskWorkManage/pageSearchTable';
+
+  export default {
+    components: {
+      pageSearchTable
+    },
+    //客户管理数据
+    props: {
+      contactData: {
+        type: Object,
+        default: () => {
+          return {};
+        }
+      },
+      saleOrderData: {
+        type: Object,
+        default: () => {
+          return {};
+        }
+      },
+      associationVisible: {
+        type: Boolean,
+        default: false
+      }
+    },
+    data() {
+      return {
+        // visible: false,
+        statusList: [
+          { value: 0, label: '待接收' },
+          { value: 1, label: '执行中' },
+          { value: 2, label: '已完成' }
+        ],
+        columns: [
+          {
+            width: 45,
+            type: 'selection',
+            columnKey: 'selection',
+            align: 'center'
+          },
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'code',
+            label: '工单单号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 150,
+            slot: 'code'
+          },
+          {
+            prop: 'status',
+            label: '状态',
+            align: 'center',
+            slot: 'status',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              return this.statusList[_row.status]?.label;
+            },
+            minWidth: 120
+          },
+          {
+            prop: 'planCode',
+            label: '计划编号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 150,
+            slot: 'planCode'
+          },
+          {
+            prop: 'planName',
+            label: '计划名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120,
+            slot: 'planName'
+          },
+          {
+            prop: 'planTimeStart',
+            label: '预计开始时间',
+            align: 'center',
+            slot: 'planTimeStart',
+            showOverflowTooltip: true,
+            minWidth: 160
+          },
+          {
+            prop: 'planTimeEnd',
+            label: '预计结束时间',
+            align: 'center',
+            slot: 'planTimeEnd',
+            showOverflowTooltip: true,
+            minWidth: 160
+          },
+          {
+            prop: 'realStartTime',
+            label: '开始时间',
+            align: 'center',
+            slot: 'realStartTime',
+            showOverflowTooltip: true,
+            minWidth: 160
+          },
+          {
+            prop: 'realEndTime',
+            label: '完成时间',
+            align: 'center',
+            slot: 'realEntTime',
+            showOverflowTooltip: true,
+            minWidth: 160
+          },
+          {
+            prop: 'responsibleDeptName',
+            label: '负责部门',
+            align: 'center',
+            slot: 'responsibleDeptName',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'responsiblePersonName',
+            label: '负责人',
+            align: 'center',
+            slot: 'responsiblePersonName',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'trakNumber',
+            label: '车牌号',
+            align: 'center',
+            slot: 'trakNumber',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'driverName',
+            label: '司机',
+            align: 'center',
+            slot: 'driverName',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'phone',
+            label: '司机电话',
+            align: 'center',
+            slot: 'phone',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            slot: 'createTime',
+            showOverflowTooltip: true,
+            minWidth: 120
+          }
+        ],
+        selection: []
+      };
+    },
+
+    methods: {
+      /* 表格数据源 */
+      datasource({ page, limit, where, order }) {
+        return logistictraklistnotePageListAPI({
+          pageNum: page,
+          size: limit,
+          ...where
+        });
+      },
+
+      /* 刷新表格 */
+      reload(where) {
+        this.$nextTick(() => {
+          this.$refs.table.reload({ page: 1, where });
+        });
+      },
+      handleNodeClick(data, node) {
+        this.reload({ categoryId: data.id });
+      },
+      handleClose() {
+        this.$emit('update:associationVisible', false);
+        this.selection = [];
+      },
+
+      selected() {
+        if (this.selection.length == 0) {
+          return this.$message.warning('请至少选择一条数据');
+        }
+        this.$emit('associationSelect', this.selection);
+        this.handleClose();
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .tree_col {
+    border: 1px solid #eee;
+    padding: 10px 0;
+    box-sizing: border-box;
+    height: 500px;
+    overflow: auto;
+  }
+
+  .table_col {
+    padding-left: 10px;
+
+    ::v-deep .el-table th.el-table__cell {
+      background: #f2f2f2;
+    }
+  }
+
+  .pagination {
+    text-align: right;
+    padding: 10px 0;
+  }
+
+  .btns {
+    text-align: center;
+    padding: 10px 0;
+  }
+
+  .topsearch {
+    margin-bottom: 15px;
+  }
+</style>

+ 70 - 8
src/views/saleManage/saleOrder/invoice/components/taskInfoTable.vue

@@ -23,6 +23,17 @@
           >
             新增
           </el-button>
+          <!-- 新增需求 -->
+          <el-button
+            v-if="dialogType !== 'view'"
+            size="small"
+            type="primary"
+            icon="el-icon-circle-plus"
+            class="ele-btn-icon"
+            @click="association"
+          >
+            关联工单
+          </el-button>
         </template>
 
         <template v-slot:action="{ row, $index }" v-if="dialogType !== 'view'">
@@ -51,6 +62,7 @@
             }"
           >
             <el-input
+              :disabled="disableInput(row)"
               v-model="row.trakNumber"
               @click.native="handleCar(row, $index)"
             ></el-input>
@@ -69,6 +81,7 @@
             }"
           >
             <el-input
+              :disabled="disableInput(row)"
               v-model="row.driverName"
               @click.native="() => handleDriver(row, $index)"
             ></el-input>
@@ -83,7 +96,10 @@
               trigger: ['blur', 'change']
             }"
           >
-            <el-input v-model="row.phone"></el-input>
+            <el-input
+              :disabled="disableInput(row)"
+              v-model="row.phone"
+            ></el-input>
           </el-form-item>
         </template>
         <template
@@ -98,7 +114,10 @@
               trigger: ['blur', 'change']
             }"
           >
-            <el-input v-model="row.startPlace"></el-input>
+            <el-input
+              :disabled="disableInput(row)"
+              v-model="row.startPlace"
+            ></el-input>
           </el-form-item>
         </template>
         <template
@@ -113,7 +132,10 @@
               trigger: ['blur', 'change']
             }"
           >
-            <el-input v-model="row.endPlace"></el-input>
+            <el-input
+              :disabled="disableInput(row)"
+              v-model="row.endPlace"
+            ></el-input>
           </el-form-item>
         </template>
         <template
@@ -129,6 +151,7 @@
             }"
           >
             <el-date-picker
+              :disabled="disableInput(row)"
               v-model="row.planTimeStart"
               :picker-options="{
                 disabledDate: (time) => {
@@ -160,6 +183,7 @@
             }"
           >
             <el-date-picker
+              :disabled="disableInput(row)"
               v-model="row.planTimeEnd"
               :picker-options="{
                 disabledDate: (time) => {
@@ -180,7 +204,11 @@
         </template>
         <template v-slot:remark="{ row, $index }" v-if="dialogType !== 'view'">
           <el-form-item :prop="'datasource.' + $index + '.remark'">
-            <el-input type="textarea" v-model="row.remark"></el-input>
+            <el-input
+              :disabled="disableInput(row)"
+              type="textarea"
+              v-model="row.remark"
+            ></el-input>
           </el-form-item>
         </template>
         <template v-slot:taskType="{ row, $index }">
@@ -221,6 +249,12 @@
       v-if="selectCarDialogFlag"
       @changeParent="getCarInfo"
     ></select-car-dialog>
+    <!-- 关联工单 -->
+    <relatedWorkDialog
+      v-if="associationVisible"
+      :associationVisible.sync="associationVisible"
+      @associationSelect="associationSelect"
+    />
   </div>
 </template>
 
@@ -229,10 +263,10 @@
   import SelectDriverDialog from '@/views/transportManager/shipManage/dispatchManage/components/selectDriverDialog.vue';
   import SelectCarDialog from '@/views/transportManager/shipManage/dispatchManage/components/selectCarDialog.vue';
   import { getWarehouseOutStock } from '@/api/saleManage/saleorder';
-
+  import relatedWorkDialog from './relatedWorkOrder/relatedWorkDialog.vue';
   export default {
     name: 'relatedInfoTable',
-    components: { SelectCarDialog, SelectDriverDialog },
+    components: { SelectCarDialog, SelectDriverDialog, relatedWorkDialog },
     props: {
       trakNoteList: {
         type: Array,
@@ -250,7 +284,8 @@
         selectCarDialogFlag: false,
         form: {
           datasource: []
-        }
+        },
+        associationVisible: false
       };
     },
     computed: {
@@ -369,6 +404,12 @@
           ? (list = [...list])
           : (list = [...list, ...action]);
         return list;
+      },
+      disableInput() {
+        return (row) => {
+          if (!row.id) return false;
+          return true;
+        };
       }
     },
     mounted() {
@@ -396,7 +437,7 @@
           taskType: '1',
           taskCode: ''
         });
-        this.$emit('setAddress')
+        this.$emit('setAddress');
       },
       setSelectData(val) {
         this.$set(this.form.datasource[this.editIndex], 'taskId', val.id);
@@ -408,6 +449,27 @@
           item.endPlace = endPlace;
         });
       },
+      // 关联工单
+      association() {
+        console.log('关联工单 ----');
+        this.associationVisible = true;
+      },
+      // 关联工单回调
+      associationSelect(list) {
+        // this.form.datasource.push(...list);
+        // 判断如果 不存在已经关联的数据再进行添加
+        let dataObj = {};
+        this.form.datasource.map((item) => {
+          if (item.id) dataObj[item.id] = true;
+        });
+        list.map((el) => {
+          if (!dataObj[el.id]) {
+            this.form.datasource.push(el);
+          }
+        });
+        console.log(dataObj, 'dataObj -----');
+        console.log(list, 'list --- 关联的数据');
+      },
       //删除任务信息数据
       handleDelInfo(index) {
         this.form.datasource.splice(index, 1);

+ 502 - 326
src/views/transportManager/shipManage/taskWorkManage/components/addOrEditDialog.vue

@@ -9,25 +9,22 @@
     :maxable="true"
     :resizable="true"
     width="50%"
-    :before-close="cancel">
+    :before-close="cancel"
+  >
     <el-form ref="form" :rules="rules" :model="form" label-width="120px">
       <headerTitle title="基础信息"></headerTitle>
       <el-row>
         <el-col :span="12">
           <el-form-item label="任务类型" prop="taskType">
-            <DictSelection clearable dictName="派车任务类型" v-model="form.taskType"
-                           :disabled="dialogType==='view'"
-                           @itemChange="(val)=>handleChangeFinLink(val)"></DictSelection>
+            <DictSelection
+              clearable
+              dictName="派车任务类型"
+              v-model="form.taskType"
+              :disabled="dialogType === 'view'"
+              @itemChange="(val) => handleChangeFinLink(val)"
+            ></DictSelection>
           </el-form-item>
         </el-col>
-        <el-col :span="12">
-          <el-form-item label="单据名称" prop="taskCode">
-            <el-input v-model="form.taskCode" @click.native="(val)=>handleSelectData(val)"
-                      clearable></el-input>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row>
         <el-col :span="12">
           <el-row>
             <el-col :span="20">
@@ -35,11 +32,13 @@
                 <el-input v-model="form.trakNumber"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="4" style="display: flex; justify-content: flex-end;">
+            <el-col :span="4" style="display: flex; justify-content: flex-end">
               <el-button type="primary" @click="handleCar">选择</el-button>
             </el-col>
           </el-row>
         </el-col>
+      </el-row>
+      <el-row>
         <el-col :span="12">
           <el-row>
             <el-col :span="20">
@@ -47,15 +46,11 @@
                 <el-input v-model="form.driverName"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="4" style="display: flex; justify-content: flex-end;">
+            <el-col :span="4" style="display: flex; justify-content: flex-end">
               <el-button type="primary" @click="handleDriver">选择</el-button>
             </el-col>
           </el-row>
-
-
         </el-col>
-      </el-row>
-      <el-row>
         <el-col :span="12">
           <el-form-item label="里程" prop="mileage">
             <el-input type="number" :min="0" v-model="form.mileage" clearable>
@@ -63,44 +58,61 @@
             </el-input>
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row>
         <el-col :span="12">
           <el-form-item label="电话" prop="mileage">
-            <el-input v-model="form.phone" clearable>
-            </el-input>
+            <el-input v-model="form.phone" clearable> </el-input>
           </el-form-item>
         </el-col>
-      </el-row>
-      <el-row>
         <el-col :span="12">
           <el-form-item label="计费方式" prop="billingMethod">
-            <el-select v-model="form.billingMethod" placeholder="请选择" style="width: 100%">
-              <el-option v-for="item in billingMethodList" :label="item.label" :value="item.value"></el-option>
+            <el-select
+              v-model="form.billingMethod"
+              placeholder="请选择"
+              style="width: 100%"
+            >
+              <el-option
+                v-for="item in billingMethodList"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
             </el-select>
           </el-form-item>
         </el-col>
-        <el-col :span="12">
-          <el-form-item label="总费用" prop="totalCost">
-            <el-input v-model="form.totalCost" disabled></el-input>
-          </el-form-item>
-        </el-col>
       </el-row>
       <el-row>
-        <el-col :span="12">
-          <el-form-item label="单价" prop="price">
-            <el-input-number :controls="false" style="width: 100%" :min="0" v-model="form.price"
-                             @change="handleGetTotalCost"></el-input-number>
-          </el-form-item>
-        </el-col>
         <el-col :span="12">
           <el-form-item label="数量" prop="quantity">
-            <el-input type="number" :controls="false" style="width: 100%" :min="0" v-model="form.quantity"
-                      @change="handleGetTotalCost">
-              <template v-if="form.billingMethod==1" slot="append">m³</template>
-              <template v-else-if="form.billingMethod==2" slot="append">KG</template>
+            <el-input
+              type="number"
+              :controls="false"
+              style="width: 100%"
+              :min="0"
+              v-model="form.quantity"
+              @change="handleGetTotalCost"
+            >
+              <template v-if="form.billingMethod == 1" slot="append"
+                >m³</template
+              >
+              <template v-else-if="form.billingMethod == 2" slot="append"
+                >KG</template
+              >
               <template v-else slot="append">辆车</template>
             </el-input>
           </el-form-item>
         </el-col>
+        <el-col :span="12">
+          <el-form-item label="单价" prop="price">
+            <el-input-number
+              :controls="false"
+              style="width: 100%"
+              :min="0"
+              v-model="form.price"
+              @change="handleGetTotalCost"
+            ></el-input-number>
+          </el-form-item>
+        </el-col>
       </el-row>
       <el-row>
         <el-col :span="12">
@@ -119,11 +131,19 @@
           <el-form-item label="开始时间" prop="realStartTime">
             <el-date-picker
               v-model="form.realStartTime"
-              :picker-options="{disabledDate:(time)=>{return form.realEndTime&&time.getTime()>new Date(form.realEndTime)}}"
+              :picker-options="{
+                disabledDate: (time) => {
+                  return (
+                    form.realEndTime &&
+                    time.getTime() > new Date(form.realEndTime)
+                  );
+                }
+              }"
               type="datetime"
               style="width: 100%"
               value-format="yyyy-MM-dd HH:mm:ss"
-              placeholder="选择日期时间">
+              placeholder="选择日期时间"
+            >
             </el-date-picker>
           </el-form-item>
         </el-col>
@@ -131,15 +151,30 @@
           <el-form-item label="完成时间" prop="realEndTime">
             <el-date-picker
               v-model="form.realEndTime"
-              :picker-options="{disabledDate:(time)=>{return form.realStartTime&&time.getTime()<new Date(form.realStartTime)}}"
+              :picker-options="{
+                disabledDate: (time) => {
+                  return (
+                    form.realStartTime &&
+                    time.getTime() < new Date(form.realStartTime)
+                  );
+                }
+              }"
               type="datetime"
               style="width: 100%"
               value-format="yyyy-MM-dd HH:mm:ss"
-              placeholder="选择日期时间">
+              placeholder="选择日期时间"
+            >
             </el-date-picker>
           </el-form-item>
         </el-col>
       </el-row>
+      <el-row>
+        <el-col :span="24">
+          <el-form-item label="总费用" prop="totalCost">
+            <el-input v-model="form.totalCost" disabled></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
       <el-row>
         <el-col :span="24">
           <el-form-item label="备注" prop="remark">
@@ -147,324 +182,465 @@
           </el-form-item>
         </el-col>
       </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="单据来源" required>
+            <!-- <el-input
+              v-model="form.taskCode"
+              @click.native="(val) => handleSelectData(val)"
+              clearable
+            ></el-input> -->
+            <el-button type="primary" @click="handleSelectData">选择</el-button>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <ele-pro-table
+          ref="table"
+          :columns="documentList"
+          :datasource="tableList"
+          row-key="id"
+          class="dict-table"
+        >
+        </ele-pro-table>
+      </el-row>
     </el-form>
 
     <div slot="footer">
-      <el-button type="primary" @click="handleSave" v-if="dialogType!='view'">保存</el-button>
+      <el-button type="primary" @click="handleSave" v-if="dialogType != 'view'"
+        >保存</el-button
+      >
       <el-button @click="cancel">返回</el-button>
     </div>
     <!-- 选择司机   -->
-    <select-driver-dialog ref="selectDriverDialogRef" :selectDriverDialogFlag.sync="selectDriverDialogFlag"
-                          v-if="selectDriverDialogFlag" @changeParent="getDriverInfo"></select-driver-dialog>
-    <select-car-dialog ref="selectCarDialogRef" :selectCarDialogFlag.sync="selectCarDialogFlag"
-                       v-if="selectCarDialogFlag" @changeParent="getCarInfo"></select-car-dialog>
+    <select-driver-dialog
+      ref="selectDriverDialogRef"
+      :selectDriverDialogFlag.sync="selectDriverDialogFlag"
+      v-if="selectDriverDialogFlag"
+      @changeParent="getDriverInfo"
+    ></select-driver-dialog>
+    <select-car-dialog
+      ref="selectCarDialogRef"
+      :selectCarDialogFlag.sync="selectCarDialogFlag"
+      v-if="selectCarDialogFlag"
+      @changeParent="getCarInfo"
+    ></select-car-dialog>
     <!--  销售发货单  -->
     <sendListDialog
+      v-if="sendListDialogVisible"
+      :sendListDialogVisible.sync="sendListDialogVisible"
       ref="sendListDialogRef"
       @changeParent="changeOrder"
     ></sendListDialog>
     <!-- 委外发货单   -->
-    <out-source-send-dialog :out-source-send-dialog-flag.sync="outSourceSendDialogFlag" v-if="outSourceSendDialogFlag"
-                            ref="outSourceSendDialogRef"
-                            @changeParent="getOutSourceInfo"></out-source-send-dialog>
+    <out-source-send-dialog
+      :out-source-send-dialog-flag.sync="outSourceSendDialogFlag"
+      v-if="outSourceSendDialogFlag"
+      ref="outSourceSendDialogRef"
+      @changeParent="getOutSourceInfo"
+    ></out-source-send-dialog>
     <!--  采购收货单  -->
     <purchaseReceivingGoodsDialog
       ref="purchaseReceivingGoodsRef"
       @changeParent="getPurchaseReceivingGoodsInfo"
     ></purchaseReceivingGoodsDialog>
     <!--  受托发货单  -->
-    <entrusted-receive-dialog :entrusted-receive-dialog-flag.sync="entrustedReceiveDialogFlag"
-                              v-if="entrustedReceiveDialogFlag"
-                              @changeParent="getEntrustedReceiveInfo"
-                              ref="entrustedReceiveDialogRef"></entrusted-receive-dialog>
+    <entrusted-receive-dialog
+      :entrusted-receive-dialog-flag.sync="entrustedReceiveDialogFlag"
+      v-if="entrustedReceiveDialogFlag"
+      @changeParent="getEntrustedReceiveInfo"
+      ref="entrustedReceiveDialogRef"
+    ></entrusted-receive-dialog>
     <!-- 销售退货   -->
-    <return-order-dialog :returnOrderDialogFlag.sync="returnOrderDialogFlag" v-if="returnOrderDialogFlag"
-                         @changeParent="getSReturnOrderInfo" ref="returnOrderDialogRef">
+    <return-order-dialog
+      :returnOrderDialogFlag.sync="returnOrderDialogFlag"
+      v-if="returnOrderDialogFlag"
+      @changeParent="getSReturnOrderInfo"
+      ref="returnOrderDialogRef"
+    >
     </return-order-dialog>
     <!-- 采购退货   -->
-    <purchase-return-order-dialog :purchaseReturnOrderDialogFlag.sync="purchaseReturnOrderDialogFlag"
-                                  v-if="purchaseReturnOrderDialogFlag"
-                                  @changeParent="getPReturnOrderInfo"
-                                  ref="returnOrderDialogRef"></purchase-return-order-dialog>
+    <purchase-return-order-dialog
+      :purchaseReturnOrderDialogFlag.sync="purchaseReturnOrderDialogFlag"
+      v-if="purchaseReturnOrderDialogFlag"
+      @changeParent="getPReturnOrderInfo"
+      ref="returnOrderDialogRef"
+    ></purchase-return-order-dialog>
   </ele-modal>
 </template>
 
-
 <script>
+  import { logistictraklistnoteSaveAPI } from '@/api/transportManager/shipManage/taskWork';
+  import selectCarDialog from '@/views/transportManager/shipManage/dispatchManage/components/selectCarDialog.vue';
+  import selectDriverDialog from '@/views/transportManager/shipManage/dispatchManage/components/selectDriverDialog.vue';
+  import returnOrderDialog from '@/views/saleManage/saleOrder/customerReturnOrder/returnOrderDialog.vue';
+  import entrustedReceiveDialog from '@/views/saleManage/saleOrder/invoice/components/entrustedReceiveDialog.vue';
+  import outSourceSendDialog from '@/views/purchasingManage/purchaseOrder/invoice/components/outSourceSendDialog.vue';
+  import sendListDialog from '@/views/transportManager/shipManage/taskWorkManage/components/sendListDialog.vue';
+  import purchaseReceivingGoodsDialog from '@/views/purchasingManage/purchaseOrder/returnGoods/components/sendListDialog.vue';
+  import purchaseReturnOrderDialog from '@/views/transportManager/shipManage/dispatchManage/components/purchaseReturnOrderDialog.vue';
 
+  export default {
+    name: 'addOrEditDialog',
+    components: {
+      selectCarDialog,
+      selectDriverDialog,
+      returnOrderDialog,
+      entrustedReceiveDialog,
+      outSourceSendDialog,
+      sendListDialog,
+      purchaseReceivingGoodsDialog,
+      purchaseReturnOrderDialog
+    },
 
-import {logistictraklistnoteSaveAPI} from "@/api/transportManager/shipManage/taskWork";
-import selectCarDialog from "@/views/transportManager/shipManage/dispatchManage/components/selectCarDialog.vue";
-import selectDriverDialog from "@/views/transportManager/shipManage/dispatchManage/components/selectDriverDialog.vue";
-import returnOrderDialog from "@/views/saleManage/saleOrder/customerReturnOrder/returnOrderDialog.vue";
-import entrustedReceiveDialog from "@/views/saleManage/saleOrder/invoice/components/entrustedReceiveDialog.vue";
-import outSourceSendDialog from "@/views/purchasingManage/purchaseOrder/invoice/components/outSourceSendDialog.vue";
-import sendListDialog from "@/views/saleManage/saleOrder/returnGoods/components/sendListDialog.vue";
-import purchaseReceivingGoodsDialog
-  from "@/views/purchasingManage/purchaseOrder/returnGoods/components/sendListDialog.vue";
-import purchaseReturnOrderDialog
-  from "@/views/transportManager/shipManage/dispatchManage/components/purchaseReturnOrderDialog.vue";
-
-export default {
-  name: "addOrEditDialog",
-  components: {
-    selectCarDialog,
-    selectDriverDialog,
-    returnOrderDialog,
-    entrustedReceiveDialog,
-    outSourceSendDialog,
-    sendListDialog,
-    purchaseReceivingGoodsDialog,
-    purchaseReturnOrderDialog,
-  },
-
-  props: {
-    addOrEditDialogFlag: {
-      type: Boolean,
-      default: false
-    }
-  },
-  data() {
-    return {
-      editIndex: undefined,//当前修改数据的下标
-      selectCarDialogFlag: false,
-      selectDriverDialogFlag: false,
-      outSourceSendDialogFlag: false,
-      entrustedReceiveDialogFlag: false,
-      returnOrderDialogFlag: false,
-      purchaseReturnOrderDialogFlag: false,
-      billingMethodList: [
-        {
-          label: '按方计费',
-          value: 1,
-        },
-        {
-          label: '按重量计费',
-          value: 2,
+    props: {
+      addOrEditDialogFlag: {
+        type: Boolean,
+        default: false
+      }
+    },
+    data() {
+      return {
+        editIndex: undefined, //当前修改数据的下标
+        selectCarDialogFlag: false,
+        selectDriverDialogFlag: false,
+        outSourceSendDialogFlag: false,
+        entrustedReceiveDialogFlag: false,
+        returnOrderDialogFlag: false,
+        purchaseReturnOrderDialogFlag: false,
+        billingMethodList: [
+          {
+            label: '按方计费',
+            value: 1
+          },
+          {
+            label: '按重量计费',
+            value: 2
+          },
+          {
+            label: '专车计费',
+            value: 3
+          }
+        ],
+        title: '',
+        form: {
+          // id: '',
+          trakId: '',
+          trakNumber: '',
+          driverId: '',
+          driverName: '',
+          phone: '',
+          taskType: '',
+          // taskCode: '',
+          realStartTime: '',
+          realEndTime: '',
+          startPlace: '',
+          endPlace: '',
+          billingMethod: 1,
+          totalCost: '',
+          price: undefined,
+          quantity: '',
+          remark: '',
+          type: 1
         },
-        {
-          label: '专车计费',
-          value: 3,
+        dialogType: '',
+        rules: {
+          taskType: { required: true, message: '请选择', trigger: 'change' },
+          // taskCode: { required: true, message: '请选择', trigger: 'change' },
+          trakNumber: { required: true, message: '请选择', trigger: 'change' },
+          billingMethod: {
+            required: true,
+            message: '请选择',
+            trigger: 'change'
+          },
+          price: {
+            required: true,
+            message: '请输入',
+            trigger: ['change', 'blur']
+          },
+          quantity: {
+            required: true,
+            message: '请输入',
+            trigger: ['change', 'blur']
+          },
+          driverName: { required: true, message: '请选择', trigger: 'change' }
         },
-      ],
-      title: '',
-      form: {
-        id: '',
-        trakId: '',
-        trakNumber: '',
-        driverId: '',
-        driverName: "",
-        phone: "",
-        taskType: "",
-        taskCode: "",
-        realStartTime: "",
-        realEndTime: "",
-        startPlace: "",
-        endPlace: "",
-        billingMethod: 1,
-        totalCost: "",
-        price: undefined,
-        quantity: "",
-        remark: "",
-        type: 1,
-
+        currentRow: {},
+        sendListDialogVisible: false,
+        tableList: [],
+        documentList: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'code',
+            label: '单据编码',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'orderNo',
+            label: '订单编码',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'contactName',
+            label: '名称',
+            align: 'center',
+            showOverflowTooltip: true
+          }
+        ]
+      };
+    },
+    mounted() {},
+    methods: {
+      //初始化
+      async init(row = {}, type) {
+        this.currentRow = row;
+        this.dialogType = type;
+        this.title = type == 'add' ? '新增' : '修改';
+        this.form.id = this.currentRow.id;
+      },
+      handleGetTotalCost(val) {
+        if (this.form.quantity && this.form.price) {
+          this.form.totalCost =
+            Number(this.form.quantity) * Number(this.form.price);
+        } else {
+          this.form.totalCost = '';
+        }
+      },
+      //选择司机
+      handleDriver(row, index) {
+        this.selectDriverDialogFlag = true;
+      },
+      //选择司机回调
+      getDriverInfo(row) {
+        this.form.driverId = row.driverId;
+        this.form.driverName = row.driverName;
+        this.form.phone = row.phone;
+      },
+      //选择车辆
+      handleCar(row, index) {
+        this.selectCarDialogFlag = true;
+      },
+      //选择车辆回调
+      getCarInfo(row) {
+        this.form.driverId = row.defaultDriverId;
+        this.form.driverName = row.defaultDriver;
+        this.form.phone = row.phone;
+        this.form.trakNumber = row.trakNumber;
+        this.form.trakId = row.id;
+      },
+      cancel() {
+        this.$emit('update:addOrEditDialogFlag', false);
+      },
+      //修改任务类型
+      handleChangeFinLink(val, row, index) {
+        // this.setSelectData({
+        //   id: '',
+        //   code: ''
+        // });
+        this.tableList = [];
+      },
+      setSelectData(val) {
+        // this.$set(this.form, 'taskId', val.id);
+        // this.$set(this.form, 'taskCode', val.code);
+        console.log(val, 'val ++++++++++');
+      },
+      handleSelectData(val, row, index) {
+        // if (val.target.nodeName == 'I') {
+        //   this.form.taskId = '';
+        //   this.form.taskCode = '';
+        //   return;
+        // }
+        if (!this.form.taskType) {
+          this.$message.warning('请先选择任务类型');
+          return;
+        }
+        switch (this.form.taskType) {
+          case '1': //销售发货
+            this.handleOrderBtn(row);
+            break;
+          case '2': //委外发货
+            this.handleOutsourceSend(row);
+            break;
+          case '3': //采购收货
+            this.handlePurchaseReceivingGoods(row);
+            break;
+          case '4': //受托发货
+            this.handleEntrustedReceive(row);
+            break;
+          case '5': //销售退货
+            this.handleSaleReturnOrder(row);
+            break;
+          case '6': //采购退货
+            this.handlePurchaseReturnOrder(row);
+            break;
+        }
+      },
+      //选择发货单
+      handleOrderBtn() {
+        // this.$refs.sendListDialogRef.open();
+        this.sendListDialogVisible = true;
+      },
+      //选择发货单回调 ****
+      changeOrder(params) {
+        // let row = {
+        //   id: params.id,
+        //   code: params.docNo
+        // }
+        // this.setSelectData(row)
+        // this.setSelectData(params);
+        this.tableList = params.map((item) => {
+          return {
+            id: item.id, // id
+            code: item.docNo, // 发货编码
+            orderNo: item.orderNo,
+            contactName: item.contactName
+          };
+        });
+      },
+      //选择采购收货单
+      handlePurchaseReceivingGoods() {
+        this.$refs.purchaseReceivingGoodsRef.open();
+      },
+      //选择采购收货单回调 ****
+      getPurchaseReceivingGoodsInfo(params) {
+        // let row = {
+        //   id: params.id,
+        //   code: params.receiveNo
+        // };
+        // this.setSelectData(row);
+        let row = {
+          id: params.id,
+          code: params.receiveNo,
+          orderNo: params.orderNo,
+          contactName: params.supplierName
+        };
+        this.tableList = [row];
+      },
 
+      //选择委外发货单弹框
+      handleOutsourceSend() {
+        this.outSourceSendDialogFlag = true;
+        this.$nextTick(() => {
+          this.$refs.outSourceSendDialogRef.init();
+        });
       },
-      dialogType: '',
-      rules: {
-        taskType: {required: true, message: '请选择', trigger: 'change'},
-        taskCode: {required: true, message: '请选择', trigger: 'change'},
-        trakNumber: {required: true, message: '请选择', trigger: 'change'},
-        billingMethod: {required: true, message: '请选择', trigger: 'change'},
-        price: {required: true, message: '请输入', trigger: ['change','blur']},
-        quantity: {required: true, message: '请输入', trigger: ['change','blur']},
-        driverName: {required: true, message: '请选择', trigger: 'change'}
+      //选择委外发货单回调
+      getOutSourceInfo(params) {
+        // let row = {
+        //   id: params.id,
+        //   code: params.code
+        // };
+        // this.setSelectData(row);
+        let row = {
+          id: params.id,
+          code: params.code,
+          orderNo: params.orderNo,
+          contactName: params.supplierName
+        };
+        this.tableList = [row];
       },
-      currentRow: {}
-    }
-  },
-  mounted() {
-  },
-  methods: {
-    //初始化
-    async init(row = {}, type) {
-      this.currentRow = row
-      this.dialogType = type
-      this.title = type == 'add' ? "新增" : "修改"
-      this.form.id = this.currentRow.id
-    },
-    handleGetTotalCost(val) {
-      if (this.form.quantity && this.form.price) {
-        this.form.totalCost = Number(this.form.quantity) * Number(this.form.price)
-      } else {
-        this.form.totalCost = ''
-      }
-    },
-    //选择司机
-    handleDriver(row, index) {
-      this.selectDriverDialogFlag = true
-    },
-    //选择司机回调
-    getDriverInfo(row) {
-      this.form.driverId = row.driverId
-      this.form.driverName = row.driverName
-      this.form.phone = row.phone
-    },
-    //选择车辆
-    handleCar(row, index) {
-      this.selectCarDialogFlag = true
-    },
-    //选择车辆回调
-    getCarInfo(row) {
-      this.form.driverId = row.defaultDriverId
-      this.form.driverName = row.defaultDriver
-      this.form.phone = row.phone
-      this.form.trakNumber = row.trakNumber
-      this.form.trakId = row.id
-    },
-    cancel() {
-      this.$emit('update:addOrEditDialogFlag', false)
-    },
-    //修改任务类型
-    handleChangeFinLink(val, row, index) {
-      this.setSelectData({
-        id: '',
-        code: ''
-      })
-    },
-    setSelectData(val) {
-      this.$set(this.form, 'taskId', val.id)
-      this.$set(this.form, 'taskCode', val.code)
-    },
-    handleSelectData(val, row, index) {
-      if (val.target.nodeName == 'I') {
-        this.form.taskId = ''
-        this.form.taskCode = ''
-        return
-      }
-      switch (this.form.taskType) {
-        case '1': //销售发货
-          this.handleOrderBtn(row);
-          break;
-        case '2': //委外发货
-          this.handleOutsourceSend(row);
-          break
-        case '3': //采购收货
-          this.handlePurchaseReceivingGoods(row);
-          break
-        case '4': //受托发货
-          this.handleEntrustedReceive(row);
-          break;
-        case '5': //销售退货
-          this.handleSaleReturnOrder(row);
-          break;
-        case '6': //采购退货
-          this.handlePurchaseReturnOrder(row);
-          break
-      }
-    },
-    //选择发货单
-    handleOrderBtn() {
-      this.$refs.sendListDialogRef.open();
-    },
-    //选择发货单回调
-    changeOrder(params) {
-      let row = {
-        id: params.id,
-        code: params.docNo
-      }
-      this.setSelectData(row)
-    },
-    //选择采购收货单
-    handlePurchaseReceivingGoods() {
-      this.$refs.purchaseReceivingGoodsRef.open();
-    },
-    //选择采购收货单回调
-    getPurchaseReceivingGoodsInfo(params) {
-      let row = {
-        id: params.id,
-        code: params.receiveNo
-      }
-      this.setSelectData(row)
-    },
+      //选择受托收货单弹框
+      handleEntrustedReceive(e) {
+        this.entrustedReceiveDialogFlag = true;
+        this.$nextTick(() => {
+          this.$refs.entrustedReceiveDialogRef.init();
+        });
+      },
+      //获取受托收货单数据回调
+      async getEntrustedReceiveInfo(params) {
+        // let row = {
+        //   id: params.id,
+        //   code: params.code
+        // };
+        // this.setSelectData(row);
+        let row = {
+          id: params.id,
+          code: params.code,
+          orderNo: params.orderNo,
+          contactName: params.contactName
+        };
+        this.tableList = [row];
+      },
+      //选择销售退货单
+      handleSaleReturnOrder() {
+        this.returnOrderDialogFlag = true;
+        // this.$nextTick(() => {
+        //   this.$refs.returnOrderDialogRef.init()
+        // })
+      },
+      //销售退货单回调
+      getSReturnOrderInfo(params) {
+        // let row = {
+        //   id: params.id,
+        //   code: params.returnNo
+        // };
+        // this.setSelectData(row);
+        let row = {
+          id: params.id,
+          code: params.returnNo,
+          orderNo: params.orderNo,
+          contactName: params.contactName
+        };
+        this.tableList = [row];
+      },
+      //选择采购退货单
+      handlePurchaseReturnOrder() {
+        this.purchaseReturnOrderDialogFlag = true;
+      },
+      //采购退货单回调
+      getPReturnOrderInfo(params) {
+        // let row = {
+        //   id: params.id,
+        //   code: params.returnNo
+        // };
+        // this.setSelectData(row);
 
-    //选择委外发货单弹框
-    handleOutsourceSend() {
-      this.outSourceSendDialogFlag = true
-      this.$nextTick(() => {
-        this.$refs.outSourceSendDialogRef.init();
-      })
-    },
-    //选择委外发货单回调
-    getOutSourceInfo(params) {
-      let row = {
-        id: params.id,
-        code: params.code
-      }
-      this.setSelectData(row)
-    },
-    //选择受托收货单弹框
-    handleEntrustedReceive(e) {
-      this.entrustedReceiveDialogFlag = true
-      this.$nextTick(() => {
-        this.$refs.entrustedReceiveDialogRef.init();
-      })
-    },
-    //获取受托收货单数据回调
-    async getEntrustedReceiveInfo(params) {
-      let row = {
-        id: params.id,
-        code: params.code
-      }
-      this.setSelectData(row)
-    },
-    //选择销售退货单
-    handleSaleReturnOrder() {
-      this.returnOrderDialogFlag = true
-      // this.$nextTick(() => {
-      //   this.$refs.returnOrderDialogRef.init()
-      // })
-    },
-    //销售退货单回调
-    getSReturnOrderInfo(params) {
-      let row = {
-        id: params.id,
-        code: params.returnNo
-      }
-      this.setSelectData(row)
-    },
-    //选择采购退货单
-    handlePurchaseReturnOrder() {
-      this.purchaseReturnOrderDialogFlag = true
-    },
-    //采购退货单回调
-    getPReturnOrderInfo(params) {
-      let row = {
-        id: params.id,
-        code: params.returnNo
-      }
-      this.setSelectData(row)
-    },
-    //
-    handleSave() {
-      this.$refs.form.validate(async valid => {
-        if (!valid) return this.$message.warning('有必填项未填,请检查')
-        let params = {
-          ...this.form
+        let row = {
+          id: params.id,
+          code: params.returnNo,
+          orderNo: params.orderNo,
+          contactName: params.contactName
+        };
+        this.tableList = [row];
+      },
+      //
+      handleSave() {
+        if (this.tableList.length == 0) {
+          return this.$message.warning('请选择单据来源数据');
         }
-        await logistictraklistnoteSaveAPI(params)
-        this.$message.success('操作成功')
-        this.$emit('reload')
-        this.cancel()
-      })
-    },
-  }
-}
+        this.$refs.form.validate(async (valid) => {
+          if (!valid) return this.$message.warning('有必填项未填,请检查');
+          let params = {
+            ...this.form
+          };
+          // ***** 新增需求 销售发货可以选择多个 其它的还是一个
+          if (this.form.taskType == 1) {
+            params.orderSendIds = this.tableList.map((item) => item.id);
+          } else {
+            params.taskCode = this.tableList[0].code;
+            params.taskId = this.tableList[0].id;
+          }
+          await logistictraklistnoteSaveAPI(params);
+          this.$message.success('操作成功');
+          this.$emit('reload');
+          this.cancel();
+        });
+      }
+    }
+  };
 </script>
 
-
 <style scoped lang="scss">
-:deep(.el-form-item) {
-  margin-bottom: 20px;
-}
+  :deep(.el-form-item) {
+    margin-bottom: 20px;
+  }
 </style>

+ 252 - 0
src/views/transportManager/shipManage/taskWorkManage/components/sendListDialog.vue

@@ -0,0 +1,252 @@
+<template>
+  <el-dialog
+    title="选择发货单"
+    custom-class="ele-dialog-form long-dialog-form"
+    :visible.sync="sendListDialogVisible"
+    :before-close="handleClose"
+    :close-on-click-modal="false"
+    top="5vh"
+    :close-on-press-escape="false"
+    append-to-body
+    width="70%"
+  >
+    <el-card shadow="never">
+      <searchTable @search="reload"></searchTable>
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="datasource"
+        row-key="id"
+        height="calc(100vh - 500px)"
+        class="dict-table"
+        :selection.sync="selection"
+      >
+      <!--       @select-all="selectAll"
+        @select="selectSingle" -->
+      </ele-pro-table>
+    </el-card>
+
+    <div class="btns" slot="footer">
+      <el-button type="primary" size="small" @click="selected">选择</el-button>
+      <el-button size="small" @click="handleClose">关闭</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+  import { contactTypeTree } from '@/api/saleManage/contact';
+  import searchTable from '@/views/saleManage/saleOrder/invoice/components/searchTable.vue';
+  import { getSendTableList } from '@/api/saleManage/saleordersendrecord';
+  import { reviewStatusEnum } from '@/enum/dict';
+
+  export default {
+    components: {
+      searchTable
+    },
+    //客户管理数据
+    props: {
+      contactData: {
+        type: Object,
+        default: () => {
+          return {};
+        }
+      },
+      saleOrderData: {
+        type: Object,
+        default: () => {
+          return {};
+        }
+      },
+      sendListDialogVisible: {
+        type: Boolean,
+        default: false
+      }
+    },
+    data() {
+      return {
+        // visible: false,
+        columns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            width: 45,
+            type: 'selection',
+            columnKey: 'selection',
+            align: 'center'
+          },
+
+          {
+            prop: 'docNo',
+            label: '发货编码',
+            align: 'center',
+            slot: 'docNo',
+            showOverflowTooltip: true,
+            minWidth: 200
+          },
+          {
+            prop: 'orderNo',
+            label: '订单编码',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 200
+          },
+          {
+            prop: 'contactName',
+            label: '客户名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 180
+          },
+          {
+            prop: 'replied',
+            label: '是否回执',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 200,
+            formatter: (_row, _column, cellValue) => {
+              return _row.replied == 1 ? '是' : '否';
+            }
+          },
+          {
+            prop: 'reviewStatus',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 200,
+            formatter: (_row, _column, cellValue) => {
+              return reviewStatusEnum[_row.reviewStatus].label;
+            }
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 170
+          }
+        ],
+        selection: [],
+        selectionMap: {}
+      };
+    },
+
+    methods: {
+      open() {
+        // this.currentIndex = currentIndex;
+        // if (item && item.id) {
+        //   this.radio = item.id;
+        // }
+        console.log(this.selection, 'selection');
+        // this.visible = true;
+      },
+      // selectSingle(row, val) {
+      //   if (!selectionMap[val.id]) {
+      //     selectionMap[val.id] = true;
+      //   }else{
+      //     delete selectionMap[val.id];
+      //   }
+      // },
+
+      // selectAll(row) {
+      //   // 全选
+      //   if(row.length > 0){
+      //     console.log(this.datasource,'------------')
+      //     return
+      //   }
+      //   // 取消全选
+      //   console.log(row, 'row 全选');
+      // },
+
+      /* 表格数据源 */
+      datasource({ page, limit, where, order }) {
+        if (this.contactData.id) {
+          where['contactId'] = this.contactData.id;
+        }
+        if (this.saleOrderData.id) {
+          where['orderNo'] = this.saleOrderData.orderNo;
+        }
+        
+        return getSendTableList({
+          pageNum: page,
+          size: limit,
+          ...where,
+          reviewStatus: 2
+        });
+      },
+
+      /* 刷新表格 */
+      async reload(where) {
+        where = {
+          ...where,
+          reviewStatus: 2
+        };
+       await this.$refs.table.reload({ pageNum: 1, where: where });
+       console.log('00000000')
+      },
+
+      handleNodeClick(data, node) {
+        this.reload({ categoryId: data.id });
+      },
+      handleClose() {
+        // this.visible = false;
+        // this.current = null;
+        // this.radio = '';
+        this.$emit('update:sendListDialogVisible', false);
+        this.selection = [];
+      },
+
+      selected() {
+        console.log(this.selection, 'selected -----');
+        if (this.selection.length == 0) {
+          return this.$message.warning('请至少选择一条数据');
+        }
+        this.$emit('changeParent', this.selection);
+        this.handleClose();
+        // if (!this.current) {
+        //   return this.$message.warning('请至少选择一条数据');
+        // }
+        // this.$emit('changeParent', this.current, this.currentIndex);
+        // this.handleClose();
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .tree_col {
+    border: 1px solid #eee;
+    padding: 10px 0;
+    box-sizing: border-box;
+    height: 500px;
+    overflow: auto;
+  }
+
+  .table_col {
+    padding-left: 10px;
+
+    ::v-deep .el-table th.el-table__cell {
+      background: #f2f2f2;
+    }
+  }
+
+  .pagination {
+    text-align: right;
+    padding: 10px 0;
+  }
+
+  .btns {
+    text-align: center;
+    padding: 10px 0;
+  }
+
+  .topsearch {
+    margin-bottom: 15px;
+  }
+</style>