Browse Source

添加导入

lex 1 year ago
parent
commit
8d6fe2bcb9

+ 179 - 177
src/api/systemManage.js

@@ -1,423 +1,425 @@
-import request from '@/utils/request'
-import request2 from '@/utils/request2'
-import qs from 'qs'
-let api = '/api-web'
+import request from "@/utils/request";
+import request2 from "@/utils/request2";
+import qs from "qs";
+let api = "/api-web";
 
 // 新增合作单位(教学点)
-export function cooperationOrganAdd (data) {
+export function cooperationOrganAdd(data) {
   return request({
-    url: api + '/cooperationOrgan/add',
-    method: 'post',
+    url: api + "/cooperationOrgan/add",
+    method: "post",
     data,
     headers: {
-      'Content-Type': 'application/json',
-    },
-  })
+      "Content-Type": "application/json"
+    }
+  });
 }
 
 // 修改合作单位(教学点)
 //     data: qs.stringify(data),    data: qs.stringify(data),
-export function cooperationOrganUpdate (data) {
+export function cooperationOrganUpdate(data) {
   return request({
-    url: api + '/cooperationOrgan/update',
-    method: 'put',
+    url: api + "/cooperationOrgan/update",
+    method: "put",
     data,
     headers: {
-      'Content-Type': 'application/json',
-    },
-  })
+      "Content-Type": "application/json"
+    }
+  });
 }
 
 // 删除合作单位(教学点)
-export function cooperationOrganDel (data) {
+export function cooperationOrganDel(data) {
   return request({
     url: api + `/cooperationOrgan/del/${data}`,
-    method: 'post'
-  })
+    method: "post"
+  });
 }
 
 // 分页查询合作单位(教学点)列表
-export function queryPage (data) {
+export function queryPage(data) {
   return request({
-    url: api + '/cooperationOrgan/queryPage',
-    method: 'get',
+    url: api + "/cooperationOrgan/queryPage",
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 根据机构编号获取合作单位(教学点)列表
-export function queryByOrganId (data) {
+export function queryByOrganId(data) {
   return request({
-    url: api + '/cooperationOrgan/queryByOrganId',
-    method: 'get',
+    url: api + "/cooperationOrgan/queryByOrganId",
+    method: "get",
     params: data,
-    hideLoading:true
-  })
+    hideLoading: true
+  });
 }
 
 // 根据合作单位获取乐团
 
-export function getMusicGroup (data) {
+export function getMusicGroup(data) {
   return request({
-    url: api + '/musicGroup/findByCooperationId',
-    method: 'get',
+    url: api + "/musicGroup/findByCooperationId",
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 分页查询教学点
-export function schoolQueryPage (data) {
+export function schoolQueryPage(data) {
   return request({
-    url: api + '/school/queryPage',
-    method: 'get',
+    url: api + "/school/queryPage",
+    method: "get",
     params: data
-  })
+  });
 }
 // 新增教学点
-export function schoolAdd (data) {
+export function schoolAdd(data) {
   return request({
-    url: api + '/school/add',
-    method: 'post',
+    url: api + "/school/add",
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 // 修改教学点
-export function schoolUpdate (data) {
+export function schoolUpdate(data) {
   return request({
-    url: api + '/school/update',
-    method: 'post',
+    url: api + "/school/update",
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 // 修改教学点
-export function schoolDel (data) {
+export function schoolDel(data) {
   return request({
     url: api + `/school/del/${data.id}`,
-    method: 'post'
-  })
+    method: "post"
+  });
 }
 
 // 根据部门获取下面的员工
-export function queryEmployByOrganId (data) {
+export function queryEmployByOrganId(data) {
   return request({
     url: api + `/employee/queryEmployByOrganId`,
-    method: 'get',
+    method: "get",
     params: data
-  })
+  });
 }
 
-export function getPlatEmploy (data) {
+export function getPlatEmploy(data) {
   return request({
     url: api + `/employee/queryPlatformEmploy`,
-    method: 'get',
+    method: "get",
     params: data
-  })
+  });
 }
 // 新增员工
-export function employeeAdd (data) {
+export function employeeAdd(data) {
   return request({
     url: api + `/employee/add`,
-    method: 'post',
+    method: "post",
     data: data
-  })
+  });
 }
 // 修改员工
-export function employeeUpdate (data) {
+export function employeeUpdate(data) {
   return request({
     url: api + `/employee/update`,
-    method: 'post',
+    method: "post",
     data: data
-  })
+  });
 }
 
 // 获取用户角色列表
-export function getUserRole (data) {
+export function getUserRole(data) {
   return request({
     url: `/api-auth/role/queryPage`,
-    method: 'get',
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 获取部门
-export function getDepts (data) {
+export function getDepts(data) {
   return request({
     url: `/api-oa/api/v1/depts`,
-    method: 'get',
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 获取岗位
-export function getPosts (data) {
+export function getPosts(data) {
   return request({
     url: `/api-oa/api/v1/posts`,
-    method: 'get',
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 员工操作
-export function employeeOperate (data) {
+export function employeeOperate(data) {
   return request({
-    url: api + '/employee/employeeOperate',
-    method: 'post',
+    url: api + "/employee/employeeOperate",
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 
 // 分页查询角色列表
-export function roleQueryPage (data) {
+export function roleQueryPage(data) {
   return request({
     url: `/api-auth/role/queryPage`,
-    method: 'get',
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 根据角色编号查询拥有的菜单列表
-export function roleGetMenus (data) {
+export function roleGetMenus(data) {
   return request({
     url: `/api-auth/role/getMenus`,
-    method: 'get',
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 根据权限id查询角色
-export function getRoleInfo (data) {
+export function getRoleInfo(data) {
   return request({
     url: `/api-auth/role/${data.id}`,
-    method: 'get'
-  })
+    method: "get"
+  });
 }
 
 // 修改角色
-export function roleUpdate (data) {
+export function roleUpdate(data) {
   return request({
     url: `/api-auth/role/update`,
-    method: 'post',
+    method: "post",
     data: data
-  })
+  });
 }
 
 // 添加角色
-export function roleAdd (data) {
+export function roleAdd(data) {
   return request({
     url: `/api-auth/role/add`,
-    method: 'post',
+    method: "post",
     data: data
-  })
+  });
 }
 
 // 查询规则列表
-export function courseScheduleRewards (data) {
+export function courseScheduleRewards(data) {
   return request({
     url: api + `/courseScheduleRewards/queryPage`,
-    method: 'get',
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 单查询
-export function courseScheduleRewardsQuery (data) {
+export function courseScheduleRewardsQuery(data) {
   return request({
     url: api + `/courseScheduleRewards/query`,
-    method: 'get',
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 添加
-export function courseScheduleRewardsAdd (data) {
+export function courseScheduleRewardsAdd(data) {
   return request({
     url: api + `/courseScheduleRewards/add`,
-    method: 'post',
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 
 // 修改
-export function courseScheduleRewardsUpdate (data) {
+export function courseScheduleRewardsUpdate(data) {
   return request({
     url: api + `/courseScheduleRewards/update`,
-    method: 'post',
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 
 // 分页查询热词列表
-export function hotWordLabelManage (data) {
+export function hotWordLabelManage(data) {
   return request({
     url: api + `/hotWordLabelManage/queryPage`,
-    method: 'get',
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 新增热词标签
-export function hotWordLabelManageAdd (data) {
+export function hotWordLabelManageAdd(data) {
   return request({
     url: api + `/hotWordLabelManage/add`,
-    method: 'post',
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 
 // 修改热词标签
-export function hotWordLabelManageUpdate (data) {
+export function hotWordLabelManageUpdate(data) {
   return request({
     url: api + `/hotWordLabelManage/update`,
-    method: 'post',
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 
 // 删除热词标签
-export function hotWordLabelManageDel (data) {
+export function hotWordLabelManageDel(data) {
   return request({
     url: api + `/hotWordLabelManage/del/${data}`,
-    method: 'post'
-  })
+    method: "post"
+  });
 }
 
 // 根据机构编号获取学校列表
-export function getSchool (data) {
+export function getSchool(data) {
   return request({
     url: api + `/school/queryByOrganId`,
-    method: 'get',
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 分页查询支付配置列表
-export function paymentConfigQueryPage (data) {
+export function paymentConfigQueryPage(data) {
   return request({
-    url: api + '/paymentConfig/queryPage',
-    method: 'get',
+    url: api + "/paymentConfig/queryPage",
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 根据支付配置编号查询支付配置
-export function paymentConfigGet (data) {
+export function paymentConfigGet(data) {
   return request({
-    url: api + '/paymentConfig/get/' + data.id,
-    method: 'get',
-  })
+    url: api + "/paymentConfig/get/" + data.id,
+    method: "get"
+  });
 }
 
 // 新增支付配置
-export function paymentConfigAdd (data) {
+export function paymentConfigAdd(data) {
   return request({
-    url: api + '/paymentConfig/add',
-    method: 'post',
+    url: api + "/paymentConfig/add",
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 
 // 修改支付配置
-export function paymentConfigUpdate (data) {
+export function paymentConfigUpdate(data) {
   return request({
-    url: api + '/paymentConfig/update',
-    method: 'post',
+    url: api + "/paymentConfig/update",
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 
 // 删除支付配置
-export function paymentConfigDel (data) {
+export function paymentConfigDel(data) {
   return request({
-    url: api + '/paymentConfig/del/' + data.id,
-    method: 'post'
-  })
+    url: api + "/paymentConfig/del/" + data.id,
+    method: "post"
+  });
 }
 
 // 根据分部查询老师
-export function findTeacherByOrganId (data) {
+export function findTeacherByOrganId(data) {
   return request({
-    url: api + '/teacher/findTeacherByOrganId',
-    method: 'get',
+    url: api + "/teacher/findTeacherByOrganId",
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 获取版本控制列表
-export function appVersionInfo (data) {
+export function appVersionInfo(data) {
   return request({
-    url: api + '/appVersionInfo/list',
-    method: 'get',
+    url: api + "/appVersionInfo/list",
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 新增版本管理
-export function addAppVersionInfo (data) {
+export function addAppVersionInfo(data) {
   return request({
-    url: api + '/appVersionInfo/add',
-    method: 'post',
+    url: api + "/appVersionInfo/add",
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 
 // 修改版本管理
-export function resetAppVersionInfo (data) {
+export function resetAppVersionInfo(data) {
   return request({
-    url: api + '/appVersionInfo/update',
-    method: 'post',
+    url: api + "/appVersionInfo/update",
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 
 // 判断该用户是否是乐团主管关联的学生乐团 employee/hasCourseGroupRelation
-export function hasCourseGroupRelation (data) {
+export function hasCourseGroupRelation(data) {
   return request({
-    url: api + '/employee/hasCourseGroupRelation',
-    method: 'post',
+    url: api + "/employee/hasCourseGroupRelation",
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 
 // 乐团主管转移课程
 
-export function updateEducationTeacherId (data) {
+export function updateEducationTeacherId(data) {
   return request({
-    url: api + '/employee/updateEducationTeacherId',
-    method: 'post',
+    url: api + "/employee/updateEducationTeacherId",
+    method: "post",
     data: qs.stringify(data)
-  })
+  });
 }
 
 // 获取员工所在分部列表(管理员查看所有的分部)
 export function queryEmployeeOrganByUser(data) {
   return request({
-    url: api + '/organization/queryEmployeeOrganByUser',
-    method: 'get',
+    url: api + "/organization/queryEmployeeOrganByUser",
+    method: "get",
     params: data
-  })
+  });
 }
 
 // request2
-export const getPosition = data => request2({
-  url:api +  '/position/findAll',
-  params:data,
-  method: 'get',
-  requestType: 'form'
-})
+export const getPosition = data =>
+  request2({
+    url: api + "/position/findAll",
+    params: data,
+    method: "get",
+    requestType: "form"
+  });
 
 // 修改员工
-export const simpleUpdate = data => request2({
-  url: api +  '/employee/simpleUpdate',
-  method: 'post',
-  data
-})
+export const simpleUpdate = data =>
+  request2({
+    url: api + "/employee/simpleUpdate",
+    method: "post",
+    data
+  });
 
 // 重置密码
 export const resetPassword = data => {
   return request2({
-    url: '/api-web/employee/resetPassword',
-    method: 'post',
+    url: "/api-web/employee/resetPassword",
+    method: "post",
     data,
-    requestType:'form'
-  })
-}
+    requestType: "form"
+  });
+};

+ 4 - 2
src/constant/index.js

@@ -84,7 +84,8 @@ export const userPaymentType = {
   ADD_COURSE: "临时加课",
   MUSIC_APPLY: "乐团报名",
   MUSIC_RENEW: "乐团续费",
-  SPAN_GROUP_CLASS_ADJUST: "跨团合班"
+  SPAN_GROUP_CLASS_ADJUST: "跨团合班",
+  GOODS_PURCHASE: "商品采购"
 };
 
 export const payStatus = {
@@ -116,7 +117,8 @@ export const auditPaymentType = {
   ADD_COURSE: "临时加课",
   MUSIC_APPLY: "乐团报名",
   MUSIC_RENEW: "乐团续费",
-  SPAN_GROUP_CLASS_ADJUST: "合班缴费"
+  SPAN_GROUP_CLASS_ADJUST: "合班缴费",
+  GOODS_PURCHASE: "商品采购"
 };
 
 export const orderServerType = {

+ 72 - 23
src/views/auditList/musicGroup.vue

@@ -17,7 +17,7 @@
             v-model.trim="searchForm.search"
             clearable
             @keyup.enter.native="
-              (e) => {
+              e => {
                 e.target.blur();
                 $refs.searchForm.save();
                 search();
@@ -93,7 +93,10 @@
         <el-form-item>
           <el-button @click="search" type="primary">搜索</el-button>
           <el-button @click="reset" type="danger">重置</el-button>
-          <auth auths="musicGroupPaymentCalender/batchAuditing" style="margin-left: 10px">
+          <auth
+            auths="musicGroupPaymentCalender/batchAuditing"
+            style="margin-left: 10px"
+          >
             <el-button
               @click="typesStatus = true"
               :disabled="!selList.length > 0"
@@ -120,7 +123,12 @@
               <copy-text>{{ scope.row.organName }}</copy-text>
             </template>
           </el-table-column>
-          <el-table-column align="left" width="200px" prop="musicGroupName" label="乐团">
+          <el-table-column
+            align="left"
+            width="200px"
+            prop="musicGroupName"
+            label="乐团"
+          >
             <template slot-scope="scope">
               <div>
                 <Tooltip :content="scope.row.musicGroupName" />
@@ -146,7 +154,12 @@
               </div>
             </template>
           </el-table-column>
-          <el-table-column align="left" prop="paymentType" label="类型" width="150px">
+          <el-table-column
+            align="left"
+            prop="paymentType"
+            label="类型"
+            width="150px"
+          >
             <template slot-scope="scope">
               <div>
                 <p>申请类型: {{ scope.row.paymentType | auditPaymentType }}</p>
@@ -166,7 +179,11 @@
             prop="addCourseTotalTime"
             label="加课总时长(分钟)"
           ></el-table-column> -->
-          <el-table-column align="left" prop="originalTotalAmount" label="价格(元)">
+          <el-table-column
+            align="left"
+            prop="originalTotalAmount"
+            label="价格(元)"
+          >
             <template slot-scope="scope">
               <div>
                 <p>总原价:{{ scope.row.originalTotalAmount }}</p>
@@ -181,32 +198,56 @@
               <overflow-text width="80px" :text="scope.row.memo" />
             </template>
           </el-table-column>
-          <el-table-column align="left" prop="auditMemo" width="100px" label="审核意见">
+          <el-table-column
+            align="left"
+            prop="auditMemo"
+            width="100px"
+            label="审核意见"
+          >
             <template slot-scope="scope">
               <overflow-text width="80px" :text="scope.row.auditMemo" />
             </template>
           </el-table-column>
-          <el-table-column align="left" prop="operatorName" label="申请人" width="150px">
+          <el-table-column
+            align="left"
+            prop="operatorName"
+            label="申请人"
+            width="150px"
+          >
             <template slot-scope="scope">
               <div>
-                <p>{{ scope.row.operatorName ? scope.row.operatorName : "--" }}</p>
+                <p>
+                  {{ scope.row.operatorName ? scope.row.operatorName : "--" }}
+                </p>
                 <p>{{ scope.row.createTime | dateForMinFormat }}</p>
               </div>
             </template>
           </el-table-column>
-          <el-table-column align="left" prop="operatorName" label="审核人" width="150px">
+          <el-table-column
+            align="left"
+            prop="operatorName"
+            label="审核人"
+            width="150px"
+          >
             <template slot-scope="scope">
               <div>
                 <p>{{ scope.row.auditName ? scope.row.auditName : "--" }}</p>
                 <p>
                   {{
-                    scope.row.auditTime ? scope.row.auditTime : "--" | dateForMinFormat
+                    scope.row.auditTime
+                      ? scope.row.auditTime
+                      : "--" | dateForMinFormat
                   }}
                 </p>
               </div>
             </template>
           </el-table-column>
-          <el-table-column align="left" prop="status" label="状态" width="100px">
+          <el-table-column
+            align="left"
+            prop="status"
+            label="状态"
+            width="100px"
+          >
             <template slot-scope="scope">
               <div>
                 {{ scope.row.status | auditType }}
@@ -230,7 +271,9 @@
                 type="text"
                 v-if="
                   scope.row.status == 'AUDITING' &&
-                  $helpers.permission('musicGroupPaymentCalender/auditListDetail/update')
+                    $helpers.permission(
+                      'musicGroupPaymentCalender/auditListDetail/update'
+                    )
                 "
               >
                 审核
@@ -240,7 +283,9 @@
                 type="text"
                 v-if="
                   scope.row.status != 'AUDITING' &&
-                  $helpers.permission('musicGroupPaymentCalender/getDetail/look')
+                    $helpers.permission(
+                      'musicGroupPaymentCalender/getDetail/look'
+                    )
                 "
               >
                 查看
@@ -272,7 +317,11 @@
       :visible.sync="typesStatus"
       v-if="typesStatus"
     >
-      <audit :selList="selList" @close="typesStatus = false" @submited="submited" />
+      <audit
+        :selList="selList"
+        @close="typesStatus = false"
+        @submited="submited"
+      />
     </el-dialog>
   </div>
 </template>
@@ -291,7 +340,7 @@ const initSearch = {
   paymentType: null,
   status: "AUDITING",
   organId: null,
-  audit: null,
+  audit: null
 };
 export default {
   components: { pagination, Tooltip, review, audit },
@@ -311,10 +360,10 @@ export default {
         limit: 10, // 限制显示条数
         page: 1, // 当前页
         total: 0, // 总条数
-        page_size: [10, 20, 40, 50], // 选择限制显示条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
       },
       detail: null,
-      typeStatus: false,
+      typeStatus: false
     };
   },
   mounted() {
@@ -343,9 +392,9 @@ export default {
       let params = {
         page: this.pageInfo.page,
         rows: this.pageInfo.limit,
-        ...this.searchForm,
+        ...this.searchForm
       };
-      getAuditList(params).then((res) => {
+      getAuditList(params).then(res => {
         let result = res.data;
         if (res.code == 200) {
           this.tableList = result.rows;
@@ -368,7 +417,7 @@ export default {
         id: row.id,
         musicGroupId: row.musicGroupId,
         status: row.status,
-        batchNo: row.batchNo,
+        batchNo: row.batchNo
       };
       this.typeStatus = true;
     },
@@ -379,15 +428,15 @@ export default {
     close() {
       this.typeStatus = false;
       this.getList();
-    },
+    }
   },
   watch: {
     typeStatus(val) {
       if (!val) {
         this.detail = null;
       }
-    },
-  },
+    }
+  }
 };
 </script>
 <style lang="scss" scoped>

+ 4 - 0
src/views/businessManager/shopManager/model/subShopGoods.vue

@@ -257,6 +257,10 @@ export default {
           this.clearCom();
         }
       }
+    },
+    clearCom() {
+      // this.selectList = [];
+      // this.$refs.multipleSelection.clearSelection();
     }
   }
 };

+ 68 - 37
src/views/businessManager/shopManager/shopList.vue

@@ -36,20 +36,7 @@
                  :on-success="handleSuccess">
         <el-button >商品导出</el-button>
       </el-upload> -->
-      <!-- <el-button
-        v-permission="'export/goods'"
-        type="primary"
-        style="margin-bottom: 20px"
-        @click="exportShopList"
-        >商品导出</el-button
-      > -->
-      <!-- <el-button
-        type="primary"
-        style="margin-bottom: 20px"
-        @click="onDownload"
-        v-permission="'import/downloadTemplate'"
-        >下载模板</el-button
-      > -->
+
       <el-button
         type="primary"
         style="margin-bottom: 20px"
@@ -57,6 +44,31 @@
         @click="onShopComAdd"
         >添加组合商品</el-button
       >
+      <el-button type="primary" style="margin-bottom: 20px" @click="onDownload"
+        >下载组合商品模板</el-button
+      >
+      <!-- <el-button
+        type="primary"
+        style="margin-bottom: 20px"
+        @click="exportShopList"
+        >组合商品导入</el-button
+      > -->
+      <el-upload
+        v-permission="'import/goodsV2'"
+        style="display: inline-block; margin-left: 10px"
+        action="/api-web/import/goodsV2"
+        :show-file-list="false"
+        :before-upload="beforeUpload"
+        accept=".xlsx,.xls"
+        :headers="headers"
+        :on-error="handleError"
+        :on-success="handleSuccess"
+      >
+        <el-button type="primary" style="margin-bottom: 20px">
+          组合商品导入
+        </el-button>
+      </el-upload>
+
       <!-- 搜索类型 -->
       <save-form
         :inline="true"
@@ -733,6 +745,30 @@ export default {
       this.addDisabled = false;
       this.routeShopStatus = true;
     },
+    beforeUpload(file) {
+      load.startLoading();
+    },
+    handleSuccess(response, file, fileList) {
+      // 导入商品
+      load.endLoading();
+      if (response.code == 200) {
+        this.$message.success(response.msg || "导入成功");
+      } else if (response.code == 0) {
+        let str = this.fomatStr(response.msg);
+        this.$alert(str, "导入结果", {
+          confirmButtonText: "确定",
+          dangerouslyUseHTMLString: true,
+          callback: action => {}
+        });
+      } else {
+        this.$message.error("导入失败" || response.msg);
+        // 下载错误链接
+        window.location.href = response.msg;
+      }
+    },
+    handleError(err, file, fileList) {
+      load.endLoading();
+    },
     // onOrganChange(val) {
     //   if (val && val.length > 0) {
     //     // 获取所有商品
@@ -791,29 +827,24 @@ export default {
     // handleError(err, file, fileList) {
     //   load.endLoading();
     // },
-    // onDownload() {
-    //   // 下载模板
-    //   // // 报表导出
-    //   Export(this, {
-    //     url: "/api-web/import/downloadTemplate",
-    //     params: {
-    //       templateType: "GOODS"
-    //     },
-    //     fileName: "商品导入模板.xls"
-    //   });
-    // },
-    // exportShopList() {
-    //   Export(
-    //     this,
-    //     {
-    //       url: "/api-web/export/goods",
-    //       params: qs.stringify(cleanDeep(this.searchForm)),
-    //       fileName: "商品导出.xls",
-    //       method: "post"
-    //     },
-    //     "确定导出商品"
-    //   );
-    // },
+    onDownload() {
+      window.location.href =
+        "https://oss.dayaedu.com/template/%E7%BB%84%E5%90%88%E5%95%86%E5%93%81%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx";
+      // 下载模板
+      // // 报表导出
+    },
+    exportShopList() {
+      Export(
+        this,
+        {
+          url: "/api-web/export/goods",
+          params: qs.stringify(cleanDeep(this.searchForm)),
+          fileName: "组合商品导入.xls",
+          method: "post"
+        },
+        "确定导入组合商品"
+      );
+    },
     onFormClose(formName) {
       // 关闭弹窗重置验证
       // this.$refs[formName].resetFields();

+ 7 - 0
src/views/resetTeaming/api.js

@@ -172,3 +172,10 @@ export const cloudPayCheck = data =>
     hideLoading: true,
     params: data
   });
+
+export const api_goodsQuery = data =>
+  request2({
+    url: "/api-web/goods/queryPage",
+    method: "get",
+    params: data
+  });

File diff suppressed because it is too large
+ 105 - 984
src/views/resetTeaming/components/goodsPayInfo.vue


+ 277 - 0
src/views/resetTeaming/goodsModal/addShopGoods.vue

@@ -0,0 +1,277 @@
+<!--  -->
+<template>
+  <div>
+    <save-form
+      :inline="true"
+      class="searchForm"
+      ref="searchForm"
+      @submit="onSearch"
+      @reset="onReset"
+      :model="searchForm"
+      save-key="payGoodsInfo-shopGoods"
+    >
+      <el-form-item prop="keyword">
+        <el-input
+          v-model.trim="searchForm.keyword"
+          clearable
+          placeholder="商品名称"
+        ></el-input>
+      </el-form-item>
+      <el-form-item prop="productSn">
+        <el-input
+          v-model.trim="searchForm.productSn"
+          clearable
+          placeholder="商品货号"
+        ></el-input>
+      </el-form-item>
+      <el-form-item prop="productCategoryId">
+        <el-select
+          v-model.trim="searchForm.productCategoryId"
+          clearable
+          placeholder="商品分类"
+        >
+          <el-option
+            v-for="item in categoryList"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="brandId">
+        <el-select
+          v-model.trim="searchForm.brandId"
+          clearable
+          placeholder="商品品牌"
+        >
+          <el-option
+            v-for="(item, index) in goodsBrand"
+            :key="index"
+            :label="item.label"
+            :value="item.value"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="danger" native-type="submit">搜索</el-button>
+        <el-button type="primary" native-type="reset">重置</el-button>
+      </el-form-item>
+    </save-form>
+    <div class="tableWrap">
+      <el-table
+        :data="tableList"
+        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+        @selection-change="handleSelectionChange"
+        @select="onTableSelect"
+        ref="multipleSelection"
+      >
+        <el-table-column
+          type="selection"
+          width="55"
+          :selectable="onSelectable"
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          prop="name"
+          label="商品名称"
+          width="200px"
+        >
+          <template slot-scope="scope">
+            <tooltip :content="scope.row.name" />
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="sn" label="商品货号">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="goodsCategoryName"
+          label="商品分类"
+        >
+        </el-table-column>
+        <el-table-column align="center" prop="brandName" label="商品品牌">
+        </el-table-column>
+        <el-table-column align="center" prop="discountPrice" label="销售价格">
+          <template slot-scope="scope">
+            {{ scope.row.discountPrice | moneyFormat }}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="organCostPrice" label="成本">
+          <template slot-scope="scope">
+            {{ scope.row.organCostPrice | moneyFormat }}
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        sync
+        save-key="payGoodsInfo-shopGoods"
+        :total.sync="pageInfo.total"
+        :page.sync="pageInfo.page"
+        :limit.sync="pageInfo.limit"
+        :page-sizes="pageInfo.page_size"
+        @pagination="getList"
+      />
+    </div>
+    <div class="dialog-footer">
+      <el-button @click="onClose()">取 消</el-button>
+      <el-button type="primary" @click="onSubmit()">确 定</el-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import { api_goodsQuery } from "../api";
+import pagination from "@/components/Pagination/index";
+export default {
+  props: [
+    "disabledIds",
+    "categoryList",
+    "goodsBrand",
+    "courseViewType",
+    "organId"
+  ],
+  components: {
+    pagination
+  },
+  data() {
+    return {
+      pageInfo: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
+      },
+      searchForm: {
+        keyword: null,
+        productSn: null,
+        publishStatus: null,
+        productCategoryId: null,
+        brandId: null,
+        status: 1,
+        courseFeeShowOrganId: null,
+        memberFeeShowOrganId: null,
+        freeFeeShowOrganId: null
+      },
+      tableList: [],
+      isNewPage: false,
+      selectList: []
+    };
+  },
+  mounted() {
+    if (this.courseViewType == 0) {
+      this.searchForm.courseFeeShowOrganId = this.organId;
+    } else if (this.courseViewType == 2) {
+      this.searchForm.memberFeeShowOrganId = this.organId;
+    } else if (this.courseViewType == 3) {
+      this.searchForm.freeFeeShowOrganId = this.organId;
+    }
+
+    this.getList();
+  },
+  methods: {
+    getList() {
+      let params = Object.assign({}, this.searchForm);
+      params.rows = this.pageInfo.limit;
+      params.page = this.pageInfo.page;
+      api_goodsQuery(params).then(res => {
+        if (res.code == 200 && res.data) {
+          this.tableList = res.data.rows;
+          this.pageInfo.total = res.data.total;
+
+          let idList = this.selectList.map(group => {
+            return group.id;
+          });
+          this.isNewPage = true;
+          this.$nextTick(() => {
+            this.tableList.forEach(course => {
+              if (idList.indexOf(course.id) != -1) {
+                this.$refs.multipleSelection.toggleRowSelection(course, true);
+              }
+            });
+            this.isNewPage = false;
+          });
+        }
+      });
+    },
+    onSearch() {
+      this.pageInfo.page = 1;
+      this.getList();
+    },
+    onReset() {
+      // 重置
+      this.$refs.searchForm.resetFields();
+      this.getList();
+    },
+    onClose() {
+      this.$listeners.close();
+    },
+    onSubmit() {
+      // debugger;
+      this.$listeners.confirm(this.selectList);
+      this.onClose();
+    },
+    onSelectable(row) {
+      return !this.disabledIds.includes(row.id);
+    },
+    handleSelectionChange(arr) {
+      if (arr.length > 0) {
+        // 有可能加 有可能减
+        this.selectList = this.selectList.concat(arr);
+        // 去重
+        this.selectList = this.$helpers.lodash.uniqBy(this.selectList, "id");
+      }
+      // else if(){}
+      else {
+        if (this.isNewPage) return;
+        // 有2种 1是新页
+        // 2是点击反选
+        let idList = this.selectList.map(course => {
+          return course.id;
+        });
+        this.$nextTick(() => {
+          let tableIdList = [];
+          this.tableList.forEach(course => {
+            tableIdList.push(course.id);
+            if (idList.indexOf(course.id) != -1) {
+              this.$refs.tableList.toggleRowSelection(course, false);
+              // 删除这个元素
+            }
+          });
+          this.selectList = this.$helpers.lodash.remove(
+            this.selectList,
+            function(item) {
+              return tableIdList.indexOf(item.id) == -1;
+            }
+          );
+          if (this.selectList.length <= 0) {
+            this.clearCom();
+          }
+        });
+      }
+    },
+    onTableSelect(rows, row) {
+      let idList = this.selectList.map(course => {
+        return course.id;
+      });
+      if (idList.indexOf(row.id) != -1) {
+        this.selectList.splice(idList.indexOf(row.id), 1);
+        if (this.selectList.length <= 0) {
+          this.clearCom();
+        }
+      }
+    },
+    clearCom() {
+      // this.selectList = [];
+      // this.$refs.multipleSelection.clearSelection();
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.dialog-footer {
+  padding-top: 20px;
+  width: 100%;
+  text-align: center;
+}
+</style>

+ 273 - 0
src/views/resetTeaming/goodsModal/payAddressInfo.vue

@@ -0,0 +1,273 @@
+<template>
+  <div class="teamCourseList">
+    <p class="coreTitle">
+      收货信息
+    </p>
+    <div class="infoWrap">
+      <div>
+        <el-form-item
+          class="vertical"
+          label="收货人"
+          prop="calenderAddress.name"
+          :rules="[
+            {
+              required: true,
+              message: '请输入备注',
+              trigger: 'blur'
+            }
+          ]"
+        >
+          <template slot="label">
+            <p style="position: relative">
+              <span style="color: #f56c6c; margin-right: 4px">*</span>
+              收货人
+            </p>
+          </template>
+          <el-input
+            type="text"
+            placeholder="请输入收货人姓名"
+            v-model="form.calenderAddress.name"
+            :maxlength="12"
+          ></el-input>
+        </el-form-item>
+        <el-form-item
+          class="vertical"
+          label="手机号"
+          prop="calenderAddress.phone"
+          :rules="[
+            { required: true, message: '请输入收货人手机号' },
+            {
+              pattern: /^1[3456789]\d{9}$/,
+              message: '请输入正确的手机号',
+              trigger: 'blur'
+            }
+          ]"
+        >
+          <template slot="label">
+            <p style="position: relative">
+              <span style="color: #f56c6c; margin-right: 4px">*</span>
+              手机号
+            </p>
+          </template>
+          <el-input
+            type="text"
+            placeholder="请输入收货人手机号"
+            v-model="form.calenderAddress.phone"
+            :maxlength="11"
+          ></el-input>
+        </el-form-item>
+      </div>
+      <el-row>
+        <el-col>
+          <el-form-item label="所在城市" required>
+            <template slot="label">
+              <p style="position: relative">
+                <span style="color: #f56c6c; margin-right: 4px">*</span>
+                所在城市
+              </p>
+            </template>
+            <div class="provinceWrap">
+              <el-form-item
+                prop="calenderAddress.province"
+                :rules="[
+                  { required: true, message: '请选择省', trigger: 'change' }
+                ]"
+                style="margin: 0;"
+              >
+                <el-select
+                  v-model.trim="form.calenderAddress.province"
+                  filterable
+                  placeholder="请选择省"
+                  clearable
+                  style="width: 148px !important; margin-right: 5px"
+                  @change="onChangeProvince"
+                >
+                  <el-option
+                    v-for="item in provinceList"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item
+                prop="calenderAddress.city"
+                :rules="[
+                  { required: true, message: '请选择市', trigger: 'change' }
+                ]"
+                style="margin: 0;"
+              >
+                <el-select
+                  v-model.trim="form.calenderAddress.city"
+                  filterable
+                  :disabled="!form.calenderAddress.province"
+                  style="width: 148px !important; margin-right: 5px"
+                  placeholder="请选择市"
+                  @change="onChangeCity"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in cityList"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item
+                prop="calenderAddress.region"
+                :rules="[
+                  { required: true, message: '请选择地区', trigger: 'change' }
+                ]"
+                style="margin: 0;"
+              >
+                <el-select
+                  v-model.trim="form.calenderAddress.region"
+                  filterable
+                  :disabled="!form.calenderAddress.city"
+                  style="width: 148px !important"
+                  placeholder="请选择地区"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in countyList"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </div>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col class="memoWrap">
+          <el-form-item
+            class="memoWrapItem"
+            prop="calenderAddress.address"
+            label="详细地址"
+            :rules="[
+              {
+                required: true,
+                message: '请输入详细地址',
+                trigger: 'blur'
+              }
+            ]"
+            ref="memo"
+          >
+            <template slot="label">
+              <p style="position: relative">
+                <span style="color: #f56c6c; margin-right: 4px">*</span>
+                详细地址
+              </p>
+            </template>
+            <el-input
+              style="width: 100%"
+              :rows="3"
+              v-model="form.calenderAddress.address"
+              type="textarea"
+              maxlength="50"
+              show-word-limit
+            ></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </div>
+  </div>
+</template>
+<script>
+import { areaQueryChild, getParentArea } from "@/api/specialSetting";
+// import { courseType, boolOptions } from "@/constant";
+export default {
+  props: ["form"],
+  data() {
+    return {
+      charges: [],
+      clearable: false,
+      isDisabled: false,
+      // boolOptionsOptions: [],
+      // courseType,
+      provinceList: [],
+      cityList: [],
+      countyList: []
+    };
+  },
+  async mounted() {
+    await this.getAreaList();
+  },
+  methods: {
+    checkType() {
+      this.$emit("checkType");
+    },
+    onChangeProvince(val) {
+      this.form.city = null;
+      this.form.region = null;
+      this.getAreaList(val + "", "");
+    },
+    onChangeCity(val) {
+      this.form.region = null;
+      this.getAreaList(val + "", "region");
+    },
+    getAreaList(parentId, type, callback) {
+      parentId = parentId ? parentId : 0;
+      areaQueryChild({ parentId: parentId }).then(res => {
+        if (res.code == 200 && res.data) {
+          let tempData = [];
+          res.data.forEach(item => {
+            tempData.push({
+              label: item.name,
+              value: item.id + ""
+            });
+          });
+          if (parentId) {
+            if (type == "region") {
+              this.countyList = tempData;
+            } else {
+              this.cityList = tempData;
+            }
+          } else {
+            this.provinceList = tempData;
+          }
+
+          if (callback && typeof callback == "function") {
+            callback();
+          }
+        }
+      });
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+@import "~@/views/resetTeaming/modals/pay.scss";
+::v-deep .infoWrap {
+  padding: 10px 10px 25px;
+  .el-form-item__label {
+    display: block !important;
+    text-align: left;
+    padding-left: 10px;
+  }
+  .vertical {
+    margin-top: 0px !important;
+  }
+  .el-input-number {
+    width: 180px;
+    .el-input__inner {
+      text-align: left;
+    }
+  }
+}
+.memoWrap {
+  // width: calc(100% - 860px);
+  width: 860px;
+  .memoWrapItem {
+    display: block;
+    margin: 0;
+    ::v-deep .el-form-item__content {
+      display: inline-block;
+      width: calc(100% - 140px);
+    }
+  }
+}
+</style>

+ 179 - 0
src/views/resetTeaming/goodsModal/payBackMoney.vue

@@ -0,0 +1,179 @@
+<template>
+  <div class="teamCourseList">
+    <p class="coreTitle">回款设置</p>
+    <div class="infoWrap">
+      <el-form-item
+        label="责任人"
+        prop="responsiblePerson"
+        :rules="[
+          { required: true, message: '请选择责任人', trigger: 'change' }
+        ]"
+      >
+        <template slot="label">
+          <p style="position: relative">
+            <span style="color: #f56c6c; margin-right: 4px">*</span>
+            责任人
+          </p>
+        </template>
+        <el-select
+          placeholder="请选择责任人"
+          v-model="form.responsiblePerson"
+          clearable
+          filterable
+        >
+          <el-option
+            v-for="(item, index) in educationList"
+            :key="index"
+            :label="item.realName"
+            :value="item.id"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <div class="payList">
+        <div
+          class="payRow"
+          v-for="(item, index) in form.musicGroupCalenderRefundPeriods"
+          :key="index"
+        >
+          <p class="subTitle">回款周期{{ index + 1 }}</p>
+          <el-form-item
+            label="回款金额"
+            :prop="'musicGroupCalenderRefundPeriods.' + index + '.refundAmount'"
+            :rules="[
+              { required: true, message: '请输入回款金额', trigger: 'blur' }
+            ]"
+            ><template slot="label">
+              <p style="position: relative">
+                <span style="color: #f56c6c; margin-right: 4px">*</span>
+                回款金额
+              </p>
+            </template>
+            <el-input
+              v-model.trim="item.refundAmount"
+              type="number"
+              autocomplete="off"
+              placeholder="请输入回款金额"
+            >
+              <i slot="suffix" class="el-input__icon" style="padding-right: 5px"
+                >元</i
+              >
+            </el-input>
+          </el-form-item>
+
+          <el-form-item
+            label="回款时间"
+            :prop="'musicGroupCalenderRefundPeriods.' + index + '.refundDate'"
+            :rules="[
+              {
+                required: true,
+                trigger: 'blur',
+                message: '请选择回款金额'
+              }
+            ]"
+          >
+            <template slot="label">
+              <p style="position: relative">
+                <span style="color: #f56c6c; margin-right: 4px">*</span>
+                回款时间
+              </p>
+            </template>
+            <el-date-picker
+              v-model="item.refundDate"
+              type="date"
+              placeholder="回款时间"
+              format="yyyy-MM-dd"
+              value-format="yyyy-MM-dd"
+            >
+            </el-date-picker>
+          </el-form-item>
+
+          <i
+            class="el-icon-delete delete"
+            v-if="!(form.musicGroupCalenderRefundPeriods.length <= 1)"
+            @click="deteleRow(item, index)"
+          ></i>
+        </div>
+        <el-row>
+          <el-button class="addBackBtn" @click="addBack">+添加</el-button>
+        </el-row>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+// import { getToken, getTenantId } from "@/utils/auth";
+// import { courseType, boolOptions } from "@/constant";
+export default {
+  props: ["form", "educationList"],
+  data() {
+    return {
+      charges: [],
+      clearable: false,
+      isDisabled: false
+    };
+  },
+  methods: {
+    deteleRow(item, index) {
+      this.form.musicGroupCalenderRefundPeriods.splice(index, 1);
+    },
+    addBack() {
+      this.form.musicGroupCalenderRefundPeriods.push({
+        refundDate: "",
+        refundAmount: ""
+      });
+    }
+  },
+  computed: {}
+};
+</script>
+<style lang="scss" scoped>
+@import "~@/views/resetTeaming/modals/pay.scss";
+::v-deep .infoWrap {
+  padding: 0 20px 20px;
+  .el-form-item {
+    margin: 0 0 20px;
+  }
+  .el-form-item__label {
+    display: block !important;
+    text-align: left;
+    padding-left: 10px;
+  }
+  .el-input-number {
+    width: 180px;
+    .el-input__inner {
+      text-align: left;
+    }
+  }
+}
+.memoWrap {
+  // width: calc(100% - 860px);
+  width: 860px;
+  .memoWrapItem {
+    display: block;
+    ::v-deep .el-form-item__content {
+      display: inline-block;
+      width: calc(100% - 140px);
+    }
+  }
+}
+.subTitle {
+  margin: 10px 0;
+  padding-left: 10px;
+  font-size: 15px;
+  font-weight: bold;
+  color: #606266;
+}
+.addBackBtn {
+  width: 440px;
+}
+.payRow {
+  position: relative;
+}
+.delete {
+  position: relative;
+  top: 45px;
+  margin-left: 10px;
+  cursor: pointer;
+}
+</style>

+ 189 - 0
src/views/resetTeaming/goodsModal/payFeeInfo.vue

@@ -0,0 +1,189 @@
+<template>
+  <div class="teamCourseList">
+    <p class="coreTitle">
+      费用信息
+    </p>
+    <div class="infoWrap">
+      <div>
+        <el-form-item
+          class="vertical"
+          label="总金额"
+          prop="isShowMusicInsuranceForPay"
+        >
+          <el-input-number
+            :value="allTotal"
+            :controls="false"
+            :min="0"
+            :precision="2"
+            :disabled="true"
+            type="number"
+          >
+          </el-input-number>
+        </el-form-item>
+        <el-form-item
+          class="vertical"
+          label="优惠金额"
+          prop="isShowMusicInsuranceForPay"
+        >
+          <el-input-number
+            v-model="form.calenderFeeJson.discountTotal"
+            :controls="false"
+            :min="0"
+            :max="allTotal"
+            :precision="2"
+            type="number"
+          >
+          </el-input-number>
+        </el-form-item>
+        <el-form-item
+          class="vertical"
+          label="付款金额"
+          prop="currentTotalAmount"
+        >
+          <el-input-number
+            v-model="form.currentTotalAmount"
+            :controls="false"
+            :min="0"
+            :precision="2"
+            :disabled="true"
+          >
+          </el-input-number>
+        </el-form-item>
+      </div>
+      <el-row>
+        <el-form-item
+          label="上传合同"
+          prop="contractUrl"
+          :rules="[
+            {
+              required: true,
+              message: '请上传合同',
+              trigger: 'change'
+            }
+          ]"
+        >
+          <template slot="label">
+            <p style="position: relative">
+              <span style="color: #f56c6c; margin-right: 4px">*</span>
+              上传合同
+            </p>
+          </template>
+          <singe-file-upload
+            tips="仅支持上传pdf格式文件"
+            buttonText="上传合同"
+            accept=".pdf"
+            v-model="form.contractUrl"
+            bucket_name="contracts"
+            @success="checkType"
+          />
+        </el-form-item>
+      </el-row>
+      <el-row>
+        <el-col class="memoWrap">
+          <el-form-item
+            class="memoWrapItem"
+            prop="memo"
+            :rules="[
+              {
+                required: true,
+                message: '请输入备注',
+                trigger: 'blur'
+              }
+            ]"
+            ref="memo"
+          >
+            <template slot="label">
+              <p style="position: relative">
+                <span style="color: #f56c6c; margin-right: 4px">*</span>
+                备注
+                <el-tooltip placement="top" popper-class="mTooltip">
+                  <div slot="content">本次缴费的内容描述</div>
+                  <i
+                    class="el-icon-question"
+                    style="
+                      font-size: 18px;
+                      color: #f56c6c;
+                      position: relative;
+                      top: 2px;
+                    "
+                  ></i>
+                </el-tooltip>
+              </p>
+            </template>
+
+            <el-input
+              style="width: 100%"
+              :rows="3"
+              v-model="form.memo"
+              type="textarea"
+              maxlength="50"
+              show-word-limit
+            ></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </div>
+  </div>
+</template>
+<script>
+import { courseType, boolOptions } from "@/constant";
+export default {
+  props: ["form"],
+  data() {
+    return {
+      charges: [],
+      clearable: false,
+      isDisabled: false,
+      boolOptionsOptions: [],
+      courseType
+    };
+  },
+  methods: {
+    checkType() {
+      this.$emit("checkType");
+    }
+  },
+  computed: {
+    allTotal() {
+      let num = 0;
+      this.form.calenderGoodsList.forEach(item => {
+        num += item.totalPrice;
+      });
+      this.$emit("setAllTotal", num);
+      return num;
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+@import "~@/views/resetTeaming/modals/pay.scss";
+::v-deep .infoWrap {
+  padding: 10px 10px 25px;
+  .el-form-item__label {
+    display: block !important;
+    text-align: left;
+    padding-left: 10px;
+  }
+  .vertical {
+    margin-top: 0px !important;
+  }
+  .el-input-number {
+    width: 180px;
+    .el-input__inner {
+      text-align: left;
+    }
+  }
+}
+.memoWrap {
+  // width: calc(100% - 860px);
+  width: 860px;
+  .memoWrapItem {
+    display: block;
+    margin: 0;
+    ::v-deep .el-form-item__content {
+      display: inline-block;
+      width: calc(100% - 140px);
+    }
+  }
+}
+</style>

+ 232 - 0
src/views/resetTeaming/goodsModal/payGoodsInfo.vue

@@ -0,0 +1,232 @@
+<template>
+  <div class="teamCourseList">
+    <p class="coreTitle" style="margin-top: 0">商品采购</p>
+
+    <div style="padding: 10px 20px">
+      <el-table
+        class="courseTable"
+        :data="form.calenderGoodsList"
+        style="width: 100% !important; background: #f9f9f9;"
+        :header-cell-style="{ background: '#F9F9F9', color: '#444' }"
+      >
+        <el-table-column width="170px" label="商品名称">
+          <template slot-scope="scope">
+            <tooltip :content="scope.row.goodsName" />
+          </template>
+        </el-table-column>
+        <el-table-column width="170px" label="商品货号" prop="goodsSn">
+        </el-table-column>
+        <el-table-column width="170px" label="采购价格" prop="singlePrice">
+          <template slot-scope="scope">
+            {{ scope.row.singlePrice | moneyFormat }}
+          </template>
+        </el-table-column>
+        <el-table-column width="170px" label="采购数量">
+          <template slot-scope="scope">
+            <el-form-item
+              :prop="'calenderGoodsList.' + scope.$index + '.num'"
+              :rules="{
+                required: true,
+                message: '请输入采购数量',
+                trigger: 'change'
+              }"
+            >
+              <el-input-number
+                style="width: 90% !important"
+                class="number-input"
+                v-model="form.calenderGoodsList[scope.$index].num"
+                :controls="false"
+                :precision="0"
+                :min="0"
+                placeholder="请输入采购数量"
+                @change="onChangeNum(scope.$index)"
+              />
+            </el-form-item>
+          </template>
+        </el-table-column>
+        <el-table-column width="170px" label="总价格" prop="totalPrice">
+          <template slot-scope="scope">
+            {{ scope.row.totalPrice | moneyFormat }}
+          </template>
+        </el-table-column>
+        <el-table-column width="170px" label="操作">
+          <template slot-scope="scope">
+            <el-button type="text" @click.prevent="removeGoodsList(scope.row)"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-button
+        icon="el-icon-circle-plus-outline"
+        plain
+        type="info"
+        style="width: 100%;margin: 10px 0 10px;"
+        @click="addGoodsList"
+        >添加商品</el-button
+      >
+    </div>
+
+    <el-dialog
+      title="添加商品"
+      :visible.sync="recordStatus"
+      :close-on-click-modal="false"
+      width="1200px"
+      append-to-body
+      v-if="recordStatus"
+    >
+      <addShopGoods
+        :courseViewType="courseViewType"
+        :organId="organId"
+        :disabledIds="disabledIds"
+        @close="recordStatus = false"
+        @confirm="onConfirm"
+        :categoryList="categoryList"
+        :goodsBrand="goodsBrand"
+      />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  api_queryGoodsCategoryList,
+  api_queryGoodsBrandList
+} from "@/api/businessManager";
+import addShopGoods from "./addShopGoods";
+export default {
+  components: {
+    addShopGoods
+  },
+  props: ["form", "courseViewType", "organId"],
+  data() {
+    return {
+      disabledIds: [],
+      recordStatus: false,
+      categoryList: [],
+      goodsBrand: []
+    };
+  },
+  mounted() {
+    this.getCategory();
+    this.getGoodsBrand();
+  },
+  methods: {
+    removeGoodsList(item) {
+      const index = this.form.calenderGoodsList.indexOf(item);
+      if (index !== -1) {
+        this.form.calenderGoodsList.splice(index, 1);
+      }
+    },
+    onChangeNum(index) {
+      const form = this.form.calenderGoodsList[index];
+      this.form.calenderGoodsList[index].totalPrice =
+        Number(form.singlePrice) * Number(form.num);
+    },
+    /** 商品分类 */
+    async getCategory() {
+      let params = {
+        // delFlag: 0,
+        rows: 9999
+      };
+      try {
+        const { data } = await api_queryGoodsCategoryList(params);
+        console.log(data, "data");
+        const result = data || [];
+        let tempArray = [];
+        result.forEach(row => {
+          tempArray.push({
+            label: row.name,
+            value: row.id
+          });
+        });
+        this.categoryList = tempArray;
+      } catch {}
+    },
+    /** 商品品牌 */
+    async getGoodsBrand() {
+      try {
+        const { data } = await api_queryGoodsBrandList({ rows: 999 });
+
+        const result = data || [];
+        let tempArray = [];
+        result.forEach(row => {
+          tempArray.push({
+            label: row.name,
+            value: row.id
+          });
+        });
+        this.goodsBrand = tempArray;
+      } catch {}
+    },
+    async addGoodsList() {
+      // 添加商品
+      const ids = [];
+      this.form.calenderGoodsList.forEach(goods => {
+        ids.push(goods.id);
+      });
+      this.disabledIds = ids;
+      this.recordStatus = true;
+    },
+    onConfirm(list) {
+      const goodsList = [];
+      console.log(list, this.form.calenderGoodsList, "list");
+      (list || []).forEach(item => {
+        const index = this.form.calenderGoodsList.findIndex(
+          goods => goods.id == item.id
+        );
+        if (index == -1) {
+          goodsList.push({
+            id: item.id,
+            goodsName: item.name,
+            goodsId: item.id,
+            goodsSn: item.sn,
+            num: 0,
+            singlePrice: item.discountPrice,
+            totalPrice: 0
+          });
+        }
+      });
+      this.form.calenderGoodsList.push(...goodsList);
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+@import "~@/views/resetTeaming/modals/pay.scss";
+::v-deep .infoWrap {
+  padding: 10px;
+  .el-form-item__label {
+    display: block !important;
+    text-align: left;
+    padding-left: 10px;
+  }
+  .vertical {
+    margin-top: 0px !important;
+  }
+  .el-input-number {
+    width: 180px;
+    .el-input__inner {
+      text-align: left;
+    }
+  }
+}
+.number-input {
+  ::v-deep .el-input__inner {
+    text-align: left;
+  }
+
+  width: 100%;
+}
+.memoWrap {
+  width: 860px;
+  .memoWrapItem {
+    display: block;
+    ::v-deep .el-form-item__content {
+      display: inline-block;
+      width: calc(100% - 140px);
+    }
+  }
+}
+</style>

+ 29 - 15
src/views/resetTeaming/index.vue

@@ -8,7 +8,11 @@
             <p v-if="teamid" class="page-headers-id">({{ teamid }})</p>
 
             <span class="musicGroupStatus"
-              ><img :src="stepImgs[team_status]" alt="" v-if="stepImgs[team_status]" />
+              ><img
+                :src="stepImgs[team_status]"
+                alt=""
+                v-if="stepImgs[team_status]"
+              />
               {{ musicGroupType[team_status] }}</span
             >
           </div>
@@ -27,8 +31,8 @@
           class="line"
           v-if="
             permission('/musicArchices') &&
-            team_status == 'PROGRESS' &&
-            permission('recharge/findAll')
+              team_status == 'PROGRESS' &&
+              permission('recharge/findAll')
           "
         ></i>
         <span
@@ -83,9 +87,19 @@
       </el-popover> -->
 
       <!-- navMenu    -->
-      <tab-router v-model="activeIndex" type="card" ref="tab" :before-leave="checkGoTo">
+      <tab-router
+        v-model="activeIndex"
+        type="card"
+        ref="tab"
+        :before-leave="checkGoTo"
+      >
         <!--  @tab-click="handleClick" -->
-        <el-tab-pane label="基本信息" lazy v-if="permission('/teamBaseInfo')" name="1">
+        <el-tab-pane
+          label="基本信息"
+          lazy
+          v-if="permission('/teamBaseInfo')"
+          name="1"
+        >
           <!--  v-if="activeIndex == 'teamBaseInfo'" -->
           <teamBaseInfo
             ref="teamBaseInfo"
@@ -161,7 +175,7 @@
 
         <el-tab-pane
           lazy
-          label="乐器清单"
+          label="收货地址"
           name="10"
           :disabled="!teamid"
           v-if="permission('/teamMusicList')"
@@ -280,7 +294,7 @@ export default {
     musicArchives,
     forecastNameList,
     giveMemberList,
-    convertList,
+    convertList
   },
   name: "resetTeaming",
   data() {
@@ -317,8 +331,8 @@ export default {
         FEE_AUDIT_FAILED: require("./images/6.png"),
         APPLY: require("./images/4.png"),
         PAY: require("./images/12.png"),
-        PREPARE: require("./images/11.png"),
-      },
+        PREPARE: require("./images/11.png")
+      }
     };
   },
   created() {
@@ -359,7 +373,7 @@ export default {
       this.teamid = this.$route.query.id;
       this.team_status = this.$route.query.team_status;
       if (this.$route.query.tabrouter != 1 && this.teamid) {
-        getTeamBaseInfo({ musicGroupId: this.teamid }).then((res) => {
+        getTeamBaseInfo({ musicGroupId: this.teamid }).then(res => {
           if (res.code == 200) {
             this.getBaseInfo(res.data);
           }
@@ -386,8 +400,8 @@ export default {
         this.$router.push({
           query: merge(this.$route.query, {
             ...this.$route.query,
-            team_status: this.musicGroupInfo.status,
-          }),
+            team_status: this.musicGroupInfo.status
+          })
         });
         this.team_status = this.$route.query.team_status;
         // console.log(this.musicGroupInfo.status);
@@ -440,9 +454,9 @@ export default {
       console.log("跳转");
       this.$router.push({
         path: "/business/musicArchices",
-        query: { ...this.$route.query },
+        query: { ...this.$route.query }
       });
-    },
+    }
   },
   watch: {
     //  async activeIndex(val){
@@ -450,7 +464,7 @@ export default {
     //       await this.$refs.teamBaseInfo.setStore();
     //     }
     //   }
-  },
+  }
 };
 </script>
 <style lang="scss" scoped>

+ 23 - 24
src/views/resetTeaming/modals/paySchoolInfo.vue

@@ -67,7 +67,7 @@
                 :rules="{
                   required: true,
                   message: '请选择课程类型',
-                  trigger: 'change',
+                  trigger: 'change'
                 }"
               >
                 <el-select
@@ -100,8 +100,8 @@
                   {
                     required: true,
                     message: '老师人数',
-                    trigger: 'blur',
-                  },
+                    trigger: 'blur'
+                  }
                 ]"
               >
                 <el-input-number
@@ -132,7 +132,7 @@
                 :rules="{
                   required: true,
                   message: '请输入课时数',
-                  trigger: 'blur',
+                  trigger: 'blur'
                 }"
               >
                 <!-- $listeners.moneyChange -->
@@ -160,7 +160,7 @@
                 :rules="{
                   required: true,
                   message: '单课时售价(元)',
-                  trigger: 'blur',
+                  trigger: 'blur'
                 }"
               >
                 <el-input-number
@@ -232,8 +232,8 @@
             {
               required: true,
               message: '请选择缴费时间',
-              trigger: 'blur',
-            },
+              trigger: 'blur'
+            }
           ]"
           ref="paymentDate"
         >
@@ -276,8 +276,8 @@
             {
               required: true,
               message: '请上传合同',
-              trigger: 'change',
-            },
+              trigger: 'change'
+            }
           ]"
         >
           <template slot="label">
@@ -306,8 +306,8 @@
               {
                 required: true,
                 message: '请输入备注',
-                trigger: 'blur',
-              },
+                trigger: 'blur'
+              }
             ]"
             ref="memo"
           >
@@ -341,7 +341,6 @@
           </el-form-item>
         </el-col>
       </el-row>
-
     </div>
   </div>
 </template>
@@ -355,7 +354,7 @@ export default {
     "teamCourse",
     "member",
     "teamActive",
-    "leBao",
+    "leBao"
   ],
   data() {
     return {
@@ -363,39 +362,39 @@ export default {
       clearable: false,
       isDisabled: false,
       boolOptionsOptions: [],
-      courseType,
+      courseType
     };
   },
   methods: {
-    checkType(){
-      console.log('来了')
-      this.$emit('checkType')
+    checkType() {
+      console.log("来了");
+      this.$emit("checkType");
     }
   },
   computed: {
     allTotal() {
-      console.log(this.form.calenderFeeJson.sutdentNumber)
+      console.log(this.form.calenderFeeJson.sutdentNumber);
       let num = 0;
       if (this.form.calenderFeeType == "STUDENT") {
         if (this.teamCourse) {
-          this.form.eclass.forEach((element) => {
+          this.form.eclass.forEach(element => {
             num += element.courseCurrentPrice;
           });
         }
         if (this.member) {
-          this.form.memberList.forEach((element) => {
+          this.form.memberList.forEach(element => {
             num += element.actualAmount * element.num;
           });
         }
         if (this.teamActive) {
-          this.form.activeList.forEach((element) => {
+          this.form.activeList.forEach(element => {
             num += element.actualAmount * 1;
           });
         }
 
         num *= this.form.calenderFeeJson.sutdentNumber;
       } else {
-        this.form.teacherFeeList.forEach((element) => {
+        this.form.teacherFeeList.forEach(element => {
           num +=
             element.courseCurrentPrice *
             element.courseNumber *
@@ -404,8 +403,8 @@ export default {
       }
       this.$emit("setAllTotal", num);
       return num;
-    },
-  },
+    }
+  }
 };
 </script>
 <style lang="scss" scoped>

+ 102 - 43
src/views/resetTeaming/modals/review-detail.vue

@@ -40,23 +40,38 @@
       <descriptions-item label="订单类型:">{{
         calender.payUserType | payUserTypeFormat
       }}</descriptions-item>
-      <descriptions-item label="学生人数:" v-if="calenderFeeJson&&calenderFeeJson.sutdentNumber&&calender.calenderFeeType=='STUDENT'">{{
-        calenderFeeJson.sutdentNumber
-      }}</descriptions-item>
-      <descriptions-item label="缴费总金额:" v-if="calenderFeeJson&&calenderFeeJson.allTotal">{{
-        numeral(calenderFeeJson.allTotal).format("0,0")
-      }}</descriptions-item>
-      <descriptions-item label="优惠金额:" v-if="calenderFeeJson&&calenderFeeJson.discountTotal">{{
-        numeral(calenderFeeJson.discountTotal).format("0,0")
-      }}</descriptions-item>
+      <descriptions-item
+        label="学生人数:"
+        v-if="
+          calenderFeeJson &&
+            calenderFeeJson.sutdentNumber &&
+            calender.calenderFeeType == 'STUDENT'
+        "
+        >{{ calenderFeeJson.sutdentNumber }}</descriptions-item
+      >
+      <descriptions-item
+        label="缴费总金额:"
+        v-if="calenderFeeJson && calenderFeeJson.allTotal"
+        >{{
+          numeral(calenderFeeJson.allTotal).format("0,0")
+        }}</descriptions-item
+      >
+      <descriptions-item
+        label="优惠金额:"
+        v-if="calenderFeeJson && calenderFeeJson.discountTotal"
+        >{{
+          numeral(calenderFeeJson.discountTotal).format("0,0")
+        }}</descriptions-item
+      >
       <descriptions-item label="实缴金额">{{
         numeral(calender.currentTotalAmount).format("0,0")
       }}</descriptions-item>
 
-
-      <descriptions-item label="缴费单号:" v-if="calender.payUserType == 'SCHOOL'">{{
-        calender.id
-      }}</descriptions-item>
+      <descriptions-item
+        label="缴费单号:"
+        v-if="calender.payUserType == 'SCHOOL'"
+        >{{ calender.id }}</descriptions-item
+      >
       <descriptions-item
         :span="3"
         v-if="calender.payUserType !== 'SCHOOL'"
@@ -95,7 +110,7 @@
     <el-table
       :data="course"
       stripe
-      v-if="course&&course.length"
+      v-if="course && course.length"
       style="width: 100%; margin-top: 10px"
       :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
     >
@@ -206,7 +221,7 @@
           scope.row.optionalFlag ? "是" : "否"
         }}</template>
       </el-table-column>
-          <el-table-column prop="autoActivationFlag" label="自动激活" width="100px">
+      <el-table-column prop="autoActivationFlag" label="自动激活" width="100px">
         <template slot-scope="scope">{{
           scope.row.autoActivationFlag ? "是" : "否"
         }}</template>
@@ -282,7 +297,7 @@
       :closable="false"
       class="alert"
       type="info"
-      v-if="activity&&activity.length > 0"
+      v-if="activity && activity.length > 0"
     >
     </el-alert>
     <el-table
@@ -325,60 +340,103 @@
       :closable="false"
       class="alert"
       type="info"
-      v-if="calenderFeeJson&&calenderFeeJson.teacherFeeList&&calender.calenderFeeType=='TEACHER'"
+      v-if="
+        calenderFeeJson &&
+          calenderFeeJson.teacherFeeList &&
+          calender.calenderFeeType == 'TEACHER'
+      "
     >
     </el-alert>
     <el-table
       :data="calenderFeeJson.teacherFeeList"
       stripe
-      v-if="calenderFeeJson&&calenderFeeJson.teacherFeeList&&calender.calenderFeeType=='TEACHER'"
+      v-if="
+        calenderFeeJson &&
+          calenderFeeJson.teacherFeeList &&
+          calender.calenderFeeType == 'TEACHER'
+      "
       style="width: 100%; margin-top: 10px"
       :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
     >
-    <el-table-column prop="courseType" label="课程类型">
+      <el-table-column prop="courseType" label="课程类型">
         <template slot-scope="scope">
           {{ scope.row.courseType | courseTypeFormat }}
         </template>
       </el-table-column>
-      <el-table-column prop="teacherNumber" label="老师人数" >
-
-      </el-table-column>
-      <el-table-column prop="courseNumber" label="课程数">
-      </el-table-column>
+      <el-table-column prop="teacherNumber" label="老师人数"> </el-table-column>
+      <el-table-column prop="courseNumber" label="课程数"> </el-table-column>
       <el-table-column prop="courseCurrentPrice" label="单课时售价(元)">
       </el-table-column>
     </el-table>
+
+    <el-table
+      :data="goods"
+      stripe
+      v-if="goods && goods.length > 0"
+      style="width: 100%; margin-top: 10px"
+      :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+    >
+      <el-table-column prop="goodsName" label="商品名称">
+        <template slot-scope="scope">
+          {{ scope.row.goodsName }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="goodsSn" label="商品货号"> </el-table-column>
+      <el-table-column prop="singlePrice" label="采购价格"> </el-table-column>
+      <el-table-column prop="num" label="采购数量"> </el-table-column>
+      <el-table-column prop="totalPrice" label="总价格"> </el-table-column>
+    </el-table>
+
+    <!-- <descriptions
+      :column="3"
+      v-if="course && course.length > 0 && course[0].name"
+    >
+      <descriptions-item :span="2" label="总金额:" v-if="course[0].name">{{
+        course[0].name
+      }}</descriptions-item>
+      <descriptions-item :span="2" label="优惠金额:" v-if="course[0].name">{{
+        course[0].name
+      }}</descriptions-item>
+      <descriptions-item :span="2" label="付款金额:" v-if="course[0].name">{{
+        course[0].name
+      }}</descriptions-item>
+    </descriptions> -->
+
     <el-alert
       title="缴费周期"
       :closable="false"
       class="alert"
       type="info"
-      v-if="calenderRefundPeriods&&calenderRefundPeriods.length > 0"
+      v-if="calenderRefundPeriods && calenderRefundPeriods.length > 0"
     >
     </el-alert>
 
     <el-table
       :data="calenderRefundPeriods"
       stripe
-      v-if="calenderRefundPeriods&&calenderRefundPeriods.length > 0"
+      v-if="calenderRefundPeriods && calenderRefundPeriods.length > 0"
       style="width: 100%; margin-top: 10px"
       :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
     >
-      <el-table-column prop="refundAmount" label="回款金额" >
-      </el-table-column>
-      <el-table-column prop="refundDate" label="回款状态" >
+      <el-table-column prop="refundAmount" label="回款金额"> </el-table-column>
+      <el-table-column prop="refundDate" label="回款状态">
         <template slot-scope="scope">
-
-          <div v-if="calender.status == 'NO'||calender.status == 'OPEN'||calender.status == 'OVER'||calender.status == 'PAID'">
-            {{scope.row.refundFlag?'已回款':'回款中'}}
+          <div
+            v-if="
+              calender.status == 'NO' ||
+                calender.status == 'OPEN' ||
+                calender.status == 'OVER' ||
+                calender.status == 'PAID'
+            "
+          >
+            {{ scope.row.refundFlag ? "已回款" : "回款中" }}
           </div>
           <div v-else>
             --
           </div>
         </template>
       </el-table-column>
-      <el-table-column prop="refundDate" label="回款时间" >
-      </el-table-column>
+      <el-table-column prop="refundDate" label="回款时间"> </el-table-column>
     </el-table>
 
     <!-- 会员信息 -->
@@ -418,12 +476,13 @@ const initData = {
   musicGroupPaymentCalenderStudentDetails: [],
   course: [],
   member: [],
+  goods: [],
   repair: {},
   musicMerger: [],
   studentNum: 0,
   phone: "",
   username: "",
-  calenderRefundPeriods:[]
+  calenderRefundPeriods: []
 };
 export default {
   components: { Item },
@@ -431,7 +490,7 @@ export default {
   data() {
     return {
       payVisible: false,
-      ...initData,
+      ...initData
     };
   },
   computed: {
@@ -449,12 +508,12 @@ export default {
       }
       return "";
     },
-    calenderFeeJson(){
+    calenderFeeJson() {
       const calenderFee = this.calender?.calenderFeeJson;
-      if(calenderFee){
-        return JSON.parse(calenderFee)
+      if (calenderFee) {
+        return JSON.parse(calenderFee);
       }
-      return null
+      return null;
     }
   },
   mounted() {
@@ -466,7 +525,7 @@ export default {
       try {
         const res = await musicGroupPaymentCalenderView({
           id: this.detail.id,
-          musicGroupId: this.detail.musicGroupId,
+          musicGroupId: this.detail.musicGroupId
         });
         for (const key in initData) {
           if (initData.hasOwnProperty(key)) {
@@ -474,8 +533,8 @@ export default {
           }
         }
       } catch (error) {}
-    },
-  },
+    }
+  }
 };
 </script>
 <style lang="less" scoped>

+ 1 - 1
src/views/teamBuild/signupList.vue

@@ -2507,7 +2507,7 @@ export default {
 }
 
 .sigup-container {
-  margin-left: 12px;
+  margin-left: 0;
 
   .topWrap {
     padding: 18px 58px 18px 0;

+ 14 - 21
src/views/teamDetail/teamDetailedList.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="teamDetailedList">
-    <el-tabs v-model="activeName">
+    <!-- <el-tabs v-model="activeName">
       <el-tab-pane label="已发清单" name="waitTeamList" v-permission="'musicGroupDeliveryRecord/queryPage'">
         <endTeamList v-if="activeName=='waitTeamList'" />
       </el-tab-pane>
@@ -11,20 +11,21 @@
         <eidtTeamAddr v-if="activeName=='eidtTeamAddr'"/>
       </el-tab-pane>
 
-    </el-tabs>
+    </el-tabs> -->
+    <eidtTeamAddr />
   </div>
 </template>
 <script>
-import waitTeamList from './teamListComponent/waitTeamList.vue'
-import endTeamList from './teamListComponent/endTeamList.vue'
-import eidtTeamAddr from './teamListComponent/eidtTeamAddr.vue'
+import waitTeamList from "./teamListComponent/waitTeamList.vue";
+import endTeamList from "./teamListComponent/endTeamList.vue";
+import eidtTeamAddr from "./teamListComponent/eidtTeamAddr.vue";
 export default {
   data() {
     return {
-      activeName:'waitTeamList'
+      activeName: "waitTeamList"
     };
   },
-  components:{
+  components: {
     waitTeamList,
     endTeamList,
     eidtTeamAddr
@@ -34,25 +35,17 @@ export default {
       this.activeName = obj;
     });
   },
-  beforeDestroy(){
-    this.$bus.$off("changeAddrTab", obj => {
-
-    });
-  },
-  activated() {
-
-  },
-  computed: {
-
-  },
-  methods: {
-
+  beforeDestroy() {
+    this.$bus.$off("changeAddrTab", obj => {});
   },
+  activated() {},
+  computed: {},
+  methods: {}
 };
 </script>
 
 <style lang="scss" scoped>
 .teamDetailedList {
-  padding: 0 20px;
+  // padding: 0 20px;
 }
 </style>

Some files were not shown because too many files changed in this diff