dct 9 bulan lalu
induk
melakukan
2be7ea6740

+ 4 - 4
src/api/otaticketsale.js

@@ -1,19 +1,19 @@
 import http from '@/utils/request'
 
-// 获取价格码列表
+// 获取产品列表
 export const getOTATicketSaleList = (params) => {
   return http.post('/tenant/otaProduct', { data: params })
 }
-// 添加价格码
+// 添加产品
 export const addOTATicketSale = (params) => {
   return http.post('/tenant/otaProduct/add', { data: params })
 }
-// 删除价格码
+// 删除产品
 export const deleteOTATicketSale = (params) => {
   return http.post('/tenant/otaProduct/delete', { data: params })
 }
 
-// 编辑价格码
+// 编辑产品
 export const updateOTATicketSale = (params) => {
   return http.post('/tenant/otaProduct/update', { data: params })
 }

+ 4 - 0
src/api/systemSetting/role.js

@@ -32,3 +32,7 @@ export function delRole (id) {
 export function getResourceList () {
   return http.post('/tenant/resource')
 }
+
+export function getResourceTreeList () {
+  return http.post('/tenant/resource/treeList')
+}

+ 5 - 5
src/views/goodsCenter/priceList.vue

@@ -154,7 +154,7 @@
         </el-table-column>
         <!-- <el-table-column
           prop="name"
-          label="价格码名称">
+          label="产品名称">
         </el-table-column> -->
         <!-- <el-table-column
           prop="batchConfigName"
@@ -280,7 +280,7 @@
     </div>
 
     <ElDialog
-      :title="dialogType === 'add' ? '创建价格码' : '编辑价格码'"
+      :title="dialogType === 'add' ? '创建产品' : '编辑产品'"
       width="800px"
       v-model="dialogVisible">
       <EditDialog
@@ -395,10 +395,10 @@ export default {
     handleSelectionChange (val) {
       this.multipleSelection = val
     },
-    // 批量删除价格码
+    // 批量删除产品
     batchDelete () {
       if (!this.multipleSelection || !this.multipleSelection.length) {
-        this.$message.error('请先选择批量删除的价格码记录')
+        this.$message.error('请先选择批量删除的产品记录')
         return
       }
       this.$confirm(`将删除这${this.multipleSelection.length}条记录, 是否继续?`, '提示', {
@@ -449,7 +449,7 @@ export default {
       this.currentItem = item || {}
       this.dialogVisible = true
     },
-    // 删除价格码
+    // 删除产品
     deleteItem (item) {
       this.$confirm('确定删除?', '提示', {
         confirmButtonText: '确定',

+ 3 - 3
src/views/otaBackstage/manualOrder.vue

@@ -18,7 +18,7 @@
         label="合作价格">
       </el-table-column>
       <el-table-column
-        label="价格码"
+        label="产品"
         prop="nodata">
       </el-table-column>
       <el-table-column
@@ -93,7 +93,7 @@ export default {
         this.ticketTypeList = res.list
       })
     },
-    // 获取价格码列表
+    // 获取产品列表
     getOTATicketSaleList () {
       this.loading = true
       getOTATicketSaleList(this.form).then(res => {
@@ -116,7 +116,7 @@ export default {
       this.currentItem = item
       this.editDialogVisible = true
     },
-    // 删除价格码
+    // 删除产品
     deleteOTATicketSale (item) {
       this.$confirm('确定删除?', '提示', {
         confirmButtonText: '确定',

+ 1 - 1
src/views/otaBackstage/orderList/OrderDialog.vue

@@ -35,7 +35,7 @@
       <el-form-item label="分销商订单号">
         {{ form.ota_order_no }}
       </el-form-item>
-      <el-form-item label="价格码">
+      <el-form-item label="产品">
         {{ form.nodata }}
       </el-form-item>
     </el-form>

+ 2 - 2
src/views/otaBackstage/otaOrderList.vue

@@ -25,7 +25,7 @@
         </el-date-picker>
       </el-form-item>
       <el-form-item
-        label="价格码代号"
+        label="产品代号"
         prop="nodata">
         <el-input v-model="form.nodata"></el-input>
       </el-form-item>
@@ -145,7 +145,7 @@
       </el-table-column>
       <el-table-column
         prop="price_code"
-        label="价格码">
+        label="产品">
       </el-table-column>
       <el-table-column
         prop="otaSourceName"

+ 2 - 2
src/views/queryReport/orderList.vue

@@ -506,8 +506,8 @@ export default {
       totalObj: {},
       type: '', // 操作状态 cancel退订单
       form: {
-        createTimeBegin: moment().subtract(7, 'days'),
-        createTimeEnd: moment(),
+        createTimeBegin: moment().subtract(7, 'days').startOf('day'),
+        createTimeEnd: moment().endOf('day'),
         partnerOrderNo: '', // ota订单号
         visitorName: '', // 预订姓名
         visitorPhone: '', // 预订人手机

+ 1 - 1
src/views/queryReport/orderList/OrderDialog.vue

@@ -61,7 +61,7 @@
         <el-form-item label="第三方分销商订单号">
           {{ form.ota_3rd_order_no }}
         </el-form-item>
-        <el-form-item label="价格码">
+        <el-form-item label="产品">
           {{ form.price_code }}
         </el-form-item>
 

+ 2 - 2
src/views/queryReport/otaPaymentAmountLog.vue

@@ -140,8 +140,8 @@ export default {
       total: 0,
       projectName: localStorage.getItem('otaProject'),
       form: {
-        createTimeBegin: moment().subtract(7, 'days'),
-        createTimeEnd: moment(),
+        createTimeBegin: moment().subtract(7, 'days').startOf('day'),
+        createTimeEnd: moment().endOf('day'),
         pageNum: 1,
         pageSize: 10,
         type: '', // type

+ 1 - 1
src/views/queryReport/refundAudit.vue

@@ -153,7 +153,7 @@
         </el-table-column>
         <el-table-column
           prop="tickets[0].pricecode_id"
-          label="价格码">
+          label="产品">
         </el-table-column>
         <el-table-column
           prop="otaSourceName"

+ 2 - 2
src/views/queryReport/reportExport.vue

@@ -140,8 +140,8 @@ export default {
   data () {
     return {
       form: {
-        createTimeBegin: moment().subtract(7, 'days'),
-        createTimeEnd: moment(),
+        createTimeBegin: moment().subtract(7, 'days').startOf('day'),
+        createTimeEnd: moment().endOf('day'),
         name: '', // 导出人
         type: 0,
         status: 1,

+ 49 - 53
src/views/systemSetting/role/AddDialog.vue

@@ -20,42 +20,36 @@
         </div>
         <table
           :data="permissionList"
-          class="table">
-          <!-- <tr
+          class="table"
+        >
+          <tr
             v-for="(item,index) in permissionList"
-            :key="index">
+            :key="index"
+          >
             <td class="td-title">
+              <!-- 全选 -->
               <b>{{ item.name }}</b>
               <el-checkbox
-                :indeterminate="isIndeterminate[item.id]"
-                v-model="checkAll[item.id]"
-                @change="handleCheckAllChange($event,item)">
+                :indeterminate="isIndeterminate[item.code]"
+                v-model="checkAll[item.code]"
+                @change="handleCheckAllChange($event,item)"
+              >
               </el-checkbox>
             </td>
             <td>
               <el-checkbox-group
-                v-model="resourceIdList">
+                v-model="resourceIdList"
+              >
                 <el-checkbox
                   v-for="i in item.permissions"
                   :label="i.id"
                   :key="i.id"
-                  @change="handleCheckedChange($event,item)">
+                  @change="handleCheckedChange($event,item)"
+                >
                   {{ i.name }}
                 </el-checkbox>
               </el-checkbox-group>
             </td>
-          </tr> -->
-          <tr
-            v-for="(item,index) in permissionList"
-            :key="index">
-            <td class="td-title">
-              <b>{{ item.name }}</b>
-              <el-checkbox
-                :indeterminate="isIndeterminate[item.id]"
-                v-model="checkAll[item.id]"
-                @change="handleCheckItem($event,item)">
-              </el-checkbox>
-            </td>
           </tr>
           <tr>
             <td class="td-title">
@@ -63,9 +57,10 @@
               <el-checkbox
                 v-model="isAllChecked"
                 :indeterminate="isIndeterminateAll"
-                @change="handleCheckAll"></el-checkbox>
+                @change="handleCheckAll"
+              ></el-checkbox>
             </td>
-            <!-- <td></td> -->
+            <td></td>
           </tr>
         </table>
       </div>
@@ -81,20 +76,14 @@
 </template>
 
 <script>
-import { getPermissionList, addRole } from '@/api/systemSetting/role'
+import { getResourceTreeList, addRole } from '@/api/systemSetting/role'
 
 export default {
-  props: {
-    permissionList: {
-      type: Array,
-      default: () => ([])
-    }
-  },
   data () {
     return {
       visible: false, // 弹窗状态,由父集弹窗控制
 
-      // permissionList: [], // 权限列表
+      permissionList: [], // 权限列表
       resourceIdList: [], // 已选择权限
       isIndeterminate: {}, // 所有模块不确定状态合集
       checkAll: {}, // 所有模块对应权限合集
@@ -154,12 +143,21 @@ export default {
         this.$emit('updateList')
       })
     },
-    getPermissionList () {
+    async getPermissionList () {
+      this.loading = true
       this.allPermissionID = []
-      getPermissionList().then(res => {
-        this.permissionList = res.data
-        this.allPermissionID = res.data.map(item => item.id)
-      })
+      this.permissionList = []
+      const res = await getResourceTreeList()
+
+      if (res && res.data) {
+        res.data.forEach(item => {
+          this.permissionList.push(item)
+          item.permissions = item.children || []
+          this.allPermissionID.push(item.id)
+          this.allPermissionID.push(...item.permissions.map(i => i.id))
+        })
+      }
+      this.loading = false
     },
     // 所有模块全选
     handleCheckAll (val) {
@@ -167,8 +165,8 @@ export default {
       this.isIndeterminateAll = false
 
       this.permissionList.forEach(item => {
-        this.isIndeterminate[item.id] = false
-        this.checkAll[item.id] = val
+        this.isIndeterminate[item.code] = false
+        this.checkAll[item.code] = val
       })
     },
     // 单模块全选
@@ -190,7 +188,7 @@ export default {
           }
         })
       }
-      this.isIndeterminate[module.id] = false
+      this.isIndeterminate[module.code] = false
 
       this.checkAllStatus()
     },
@@ -204,18 +202,9 @@ export default {
       })
       let checkedCount = intersection.length
       // 单模块全选
-      this.checkAll[module.id] = checkedCount === module.permissions.length
+      this.checkAll[module.code] = checkedCount === module.permissions.length
       // 单模块不确定状态
-      this.isIndeterminate[module.id] = checkedCount > 0 && checkedCount < module.permissions.length
-
-      this.checkAllStatus()
-    },
-    handleCheckItem (val, item) {
-      if (val) {
-        this.resourceIdList.push(item.id)
-      } else {
-        this.resourceIdList.splice(this.resourceIdList.indexOf(item.id), 1)
-      }
+      this.isIndeterminate[module.code] = checkedCount > 0 && checkedCount < module.permissions.length
 
       this.checkAllStatus()
     },
@@ -242,13 +231,20 @@ export default {
 .btn-wrap {
   padding-right: 20px;
 }
+
 .table {
-  border-collapse: collapse; width: 100%; margin-bottom: 20px;
+  border-collapse: collapse;
+  width: 100%;
+  margin-bottom: 20px;
+
   td {
-    border: 1px solid #ddd; padding:10px 20px;
+    border: 1px solid #ddd;
+    padding: 10px 20px;
   }
-  .td-title{
-    text-align: right; width: 100px;
+
+  .td-title {
+    text-align: right;
+    width: 100px;
   }
 }
 

+ 66 - 65
src/views/systemSetting/role/EditDialog.vue

@@ -19,43 +19,38 @@
           角色权限
         </div>
         <table
+          v-loading="loading"
           :data="permissionList"
-          class="table">
-          <!-- <tr
+          class="table"
+        >
+          <tr
             v-for="(item,index) in permissionList"
-            :key="index">
+            :key="index"
+          >
             <td class="td-title">
+              <!-- 全选 -->
               <b>{{ item.name }}</b>
               <el-checkbox
                 :indeterminate="isIndeterminate[item.id]"
                 v-model="checkAll[item.id]"
-                @change="handleCheckAllChange($event,item)">
+                @change="handleCheckAllChange($event,item)"
+              >
               </el-checkbox>
             </td>
             <td>
               <el-checkbox-group
-                v-model="resourceIdList">
+                v-model="selectPermission"
+              >
                 <el-checkbox
                   v-for="i in item.permissions"
                   :label="i.id"
                   :key="i.id"
-                  @change="handleCheckedChange($event,item)">
+                  @change="handleCheckedChange($event,item)"
+                >
                   {{ i.name }}
                 </el-checkbox>
               </el-checkbox-group>
             </td>
-          </tr> -->
-          <tr
-            v-for="(item,index) in permissionList"
-            :key="index">
-            <td class="td-title">
-              <b>{{ item.name }}</b>
-              <el-checkbox
-                :indeterminate="isIndeterminate[item.id]"
-                v-model="checkAll[item.id]"
-                @change="handleCheckItem($event,item)">
-              </el-checkbox>
-            </td>
           </tr>
           <tr>
             <td class="td-title">
@@ -63,9 +58,10 @@
               <el-checkbox
                 v-model="isAllChecked"
                 :indeterminate="isIndeterminateAll"
-                @change="handleCheckAll"></el-checkbox>
+                @change="handleCheckAll"
+              ></el-checkbox>
             </td>
-            <!-- <td></td> -->
+            <td></td>
           </tr>
         </table>
       </div>
@@ -80,7 +76,8 @@
 </template>
 
 <script>
-import { getPermissionList, editRole } from '@/api/systemSetting/role'
+import { cloneDeep, map } from 'lodash'
+import { getResourceTreeList, editRole } from '@/api/systemSetting/role'
 
 export default {
   props: {
@@ -95,6 +92,7 @@ export default {
       visible: false, // 弹窗状态,由父集弹窗控制
 
       permissionList: [], // 权限列表
+      selectPermission: [], // 已选择权限
       resourceIdList: [], // 已选择权限
       isIndeterminate: {}, // 所有模块不确定状态合集
       checkAll: {}, // 所有模块对应权限合集
@@ -145,14 +143,24 @@ export default {
       })
     },
     async getPermissionList () {
+      this.loading = true
       this.allPermissionID = []
-      const res = await getPermissionList()
-      this.permissionList = res.data
-      this.allPermissionID = res.data.map(item => item.id)
+      this.permissionList = []
+      const res = await getResourceTreeList()
+
+      if (res && res.data) {
+        res.data.forEach(item => {
+          item.permissions = item.children || []
+          this.permissionList.push(item)
+          this.allPermissionID.push(item.id)
+          this.allPermissionID.push(...item.permissions.map(i => i.id))
+        })
+      }
+      this.loading = false
     },
     // 所有模块全选
     handleCheckAll (val) {
-      this.resourceIdList = val ? this.allPermissionID.slice(0) : []
+      this.selectPermission = val ? this.allPermissionID.slice(0) : []
       this.isIndeterminateAll = false
 
       this.permissionList.forEach(item => {
@@ -164,18 +172,18 @@ export default {
     handleCheckAllChange (val, module) {
       if (val) { // 全选
         module.permissions.forEach(item => {
-          let idx = this.resourceIdList.indexOf(item.id)
+          let idx = this.selectPermission.indexOf(item.id)
 
           if (idx < 0) {
-            this.resourceIdList.push(item.id)
+            this.selectPermission.push(item.id)
           }
         })
       } else { // 全不选
         module.permissions.forEach(item => {
-          let idx = this.resourceIdList.indexOf(item.id)
+          let idx = this.selectPermission.indexOf(item.id)
 
           if (idx >= 0) {
-            this.resourceIdList.splice(idx, 1)
+            this.selectPermission.splice(idx, 1)
           }
         })
       }
@@ -185,7 +193,7 @@ export default {
     },
     handleCheckedChange (val, module) {
       // 交集
-      let intersection = this.resourceIdList.filter(val => {
+      let intersection = this.selectPermission.filter(val => {
         let list = module.permissions.map(i => {
           return i.id
         })
@@ -199,21 +207,12 @@ export default {
 
       this.checkAllStatus()
     },
-    handleCheckItem (val, item) {
-      if (val) {
-        this.resourceIdList.push(item.id)
-      } else {
-        this.resourceIdList.splice(this.resourceIdList.indexOf(item.id), 1)
-      }
-
-      this.checkAllStatus()
-    },
     // 全选状态判断
     checkAllStatus () {
       // 全选判断
-      this.isAllChecked = this.resourceIdList.length === this.allPermissionID.length
+      this.isAllChecked = this.selectPermission.length === this.allPermissionID.length
       // 全选不确定状态
-      this.isIndeterminateAll = this.resourceIdList.length > 0 && this.resourceIdList.length < this.allPermissionID.length
+      this.isIndeterminateAll = this.selectPermission.length > 0 && this.selectPermission.length < this.allPermissionID.length
     }
   },
   watch: {
@@ -224,28 +223,22 @@ export default {
       this.reset()
 
       if (val && this.roleItem) {
-        const { id, name, resourceList } = this.roleItem
-        this.form.name = name
-        this.form.id = id
-        this.resourceIdList = resourceList.map(item => item.id) || []
+        this.form = cloneDeep(this.roleItem)
+        const { resourceList } = this.roleItem
+        this.selectPermission = map(resourceList, 'id')
 
-        // this.permissionList.forEach(item => {
-        //   // 交集
-        //   let intersection = this.resourceIdList.filter(val => {
-        //     let list = item.permissions.map(i => {
-        //       return i.id
-        //     })
-        //     return list.indexOf(val) >= 0
-        //   })
-        //   let checkedCount = intersection.length
-        //   // 单模块全选
-        //   this.checkAll[item.id] = checkedCount === item.permissions.length
-        //   // 单模块不确定状态
-        //   this.isIndeterminate[item.id] = checkedCount > 0 && checkedCount < item.permissions.length
-        // })
         this.permissionList.forEach(item => {
-          // this.isIndeterminate[item.id] = false
-          this.checkAll[item.id] = this.resourceIdList.includes(item.id)
+          const cLength = item.children ? item.children.length : 0
+
+          if (cLength > 0) {
+            // 交集
+            const hasOne = item.children.some(i => this.selectPermission.includes(i.id))
+            const hasAll = item.children.every(i => this.selectPermission.includes(i.id))
+            // 单模块全选
+            this.checkAll[item.id] = !!hasAll
+            // 单模块不确定状态
+            this.isIndeterminate[item.id] = !hasAll && hasOne
+          }
         })
 
         this.checkAllStatus()
@@ -259,15 +252,23 @@ export default {
 .btn-wrap {
   padding-right: 20px;
 }
+
 .table {
-  border-collapse: collapse; width: 100%; margin-bottom: 20px;
+  border-collapse: collapse;
+  width: 100%;
+  margin-bottom: 20px;
+
   td {
-    border: 1px solid #ddd; padding:10px 20px;
+    border: 1px solid #ddd;
+    padding: 10px 20px;
   }
-  .td-title{
-    text-align: right; width: 100px;
+
+  .td-title {
+    text-align: right;
+    width: 100px;
   }
 }
+
 // .el-checkbox+.el-checkbox{
 //   margin: 0;
 // }