dct 5 месяцев назад
Родитель
Сommit
a5fad672af

+ 6 - 0
config/index.js

@@ -56,6 +56,12 @@ module.exports = {
         target: 'https://oriented-quail-refined.ngrok-free.app/',
         changeOrigin: true,
         rewrite: (path) => path.replace(/^\/api/, '')
+      },
+      '/admin': {
+      // target: 'https://pdev.cleartv.cn/cticketmember/',
+        target: 'http://114.104.160.233:28001/',
+        changeOrigin: true,
+        rewrite: (path) => path.replace(/^\/api/, '')
       }
     }
   },

+ 10 - 0
src/api/order.js

@@ -30,3 +30,13 @@ export function exportOrderList (params) {
 export function cancelOrderAudit (params) {
   return http.post('/tenant/order/cancelOrderAudit', { data: params })
 }
+
+// 获取订单销售统计
+export function getOrderStatistics (params) {
+  return http.post('/tenant/statistics/orderSaleStatistics', { data: params })
+}
+
+// 获取销售来源列表
+export function getOtaSourceList (params) {
+  return http.post('/admin/order/otaSourceNameList', { data: params })
+}

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

@@ -27,3 +27,8 @@ export function delRole (id) {
   }
   return http.post('/tenant/role/delete', { data: params })
 }
+
+// 获取资源权限列表
+export function getResourceList () {
+  return http.post('/tenant/resource')
+}

+ 4 - 0
src/permission.js

@@ -27,6 +27,10 @@ router.beforeEach((to, from, next) => {
             }
             next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
           }).catch((err) => {
+            if (to.path === '/login') {
+              next()
+              return
+            }
             store.dispatch('LogOut').then(() => {
               Message.error(err || 'Verification failed, please login again')
               next({ path: '/login' })

+ 7 - 0
src/utils/request.js

@@ -37,6 +37,13 @@ service.interceptors.response.use(response => {
   */
   // console.log(response)
   let code = `${response.data.code}`
+  const msg = response.data.msg
+
+  if (msg && msg.includes('请登录')) {
+    localStorage.removeItem('otaToken')
+    router.push('/login')
+    return Promise.reject(new Error('请登录'))
+  }
   if (code) {
     if (code !== '200') {
       Message({

+ 2 - 1
src/views/goodsCenter/goodsList.vue

@@ -233,7 +233,8 @@ export default {
         name: '', // 名称
         ticketTypeId: '', // 助记符
         pageNum: 1,
-        pageSize: 10
+        pageSize: 10,
+        export: false
       },
       loading: false, // 表格部分
       tableData: [],

+ 7 - 2
src/views/goodsCenter/otaList.vue

@@ -30,10 +30,10 @@
         </el-form-item>
       </el-form> -->
       <div class="btn-wrap">
-        <!-- <el-button @click="reset">重置</el-button>
+        <!-- <el-button @click="reset">重置</el-button> -->
         <el-button
           type="primary"
-          @click="getOtaProjectList">搜索</el-button> -->
+          @click="getOtaProjectList">搜索</el-button>
         <el-button
           type="primary"
           plain
@@ -57,6 +57,11 @@
           prop="otaSourceName">
         </el-table-column>
 
+        <el-table-column
+          label="编码"
+          prop="otaSourceCode">
+        </el-table-column>
+
         <!-- <el-table-column
           label="退款人工审核开关"
           prop="is_refund_need_audit"

+ 10 - 0
src/views/goodsCenter/priceList.vue

@@ -126,6 +126,16 @@
           prop="salePrice"
           label="价格">
         </el-table-column>
+        <el-table-column
+          width="80"
+          prop="marketPrice"
+          label="市场价">
+        </el-table-column>
+        <el-table-column
+          width="80"
+          prop="settlementPrice"
+          label="结算价">
+        </el-table-column>
         <!-- <el-table-column
           prop="name"
           label="价格码名称">

+ 42 - 4
src/views/goodsCenter/priceList/EditDialog.vue

@@ -29,7 +29,7 @@
         label="分销商">
         <el-select
           v-model="form.otaSourceIds"
-          :multiple="dialogType === 'add'"
+          multiple
           filterable
           :disabled="dialogType === 'edit'">
           <el-option
@@ -42,7 +42,43 @@
       <el-form-item
         verify
         class="is-required"
-        label="合作价格"
+        label="市场价"
+        prop="marketPrice">
+        <el-input-number
+          controls-position="right"
+          v-model="form.marketPrice"
+          :min="0"
+          :precision="2"></el-input-number>
+        <el-tooltip
+          effect="dark"
+          content="划线价"
+          placement="top"
+        >
+          <i class="el-icon-info"></i>
+        </el-tooltip>
+      </el-form-item>
+      <el-form-item
+        verify
+        class="is-required"
+        label="结算价"
+        prop="settlementPrice">
+        <el-input-number
+          controls-position="right"
+          v-model="form.settlementPrice"
+          :min="0"
+          :precision="2"></el-input-number>
+        <el-tooltip
+          effect="dark"
+          content="分销商和景区结算的价格"
+          placement="top"
+        >
+          <i class="el-icon-info"></i>
+        </el-tooltip>
+      </el-form-item>
+      <el-form-item
+        verify
+        class="is-required"
+        label="售卖价"
         prop="salePrice">
         <el-input-number
           controls-position="right"
@@ -51,7 +87,7 @@
           :precision="2"></el-input-number>
         <el-tooltip
           effect="dark"
-          content="与分销商协议的结算价"
+          content="分销商实际售卖价"
           placement="top"
         >
           <i class="el-icon-info"></i>
@@ -248,12 +284,14 @@ export default {
         ticketTypeId: '',
         isSale: 1,
         salePrice: 0,
+        marketPrice: 0,
+        settlementPrice: 0,
         realNameType: 0,
         saleDateStart: moment().format('YYYY-MM-DD'),
         saleDateEnd: moment().add(20, 'years').endOf('year').format('YYYY-MM-DD'),
         useDateStart: moment().format('YYYY-MM-DD'),
         useDateEnd: moment().add(30, 'years').endOf('year').format('YYYY-MM-DD'),
-        totalStock: 0,
+        totalStock: -1, // -1代表不限库存
         xcRealNameType: ''
       },
       showDeletedOption: false,

+ 23 - 1
src/views/goodsCenter/priceList/NewDialog.vue

@@ -38,7 +38,29 @@
     <el-form-item
       verify
       class="is-required"
-      label="合作价格"
+      label="市场价"
+      prop="marketPrice">
+      <el-input-number
+        controls-position="right"
+        v-model="form.marketPrice"
+        :min="0.00"
+        :precision="2"></el-input-number>
+    </el-form-item>
+    <el-form-item
+      verify
+      class="is-required"
+      label="结算价"
+      prop="settlementPrice">
+      <el-input-number
+        controls-position="right"
+        v-model="form.settlementPrice"
+        :min="0.00"
+        :precision="2"></el-input-number>
+    </el-form-item>
+    <el-form-item
+      verify
+      class="is-required"
+      label="分销商实际售卖价"
       prop="salePrice">
       <el-input-number
         controls-position="right"

+ 148 - 82
src/views/queryReport/salesReport.vue

@@ -25,42 +25,32 @@
           </el-date-picker>
         </el-form-item>
         <el-form-item
-          label="分销商名称"
-          prop="otaSourceNameList"
-        >
+          label="票种"
+          prop="ticketTypeIdList">
           <el-select
-            v-model="form.otaSourceNameList"
+            filterable
+            v-model="form.ticketTypeIdList"
             multiple
             clearable
-            placeholder="请选择"
-            filterable>
-            <el-option
-              label="全部"
-              value="">
-            </el-option>
+            placeholder="请选择">
             <el-option
-              v-for="item in otaList"
+              v-for="item in ticketTypeList"
               :key="item.id"
-              :label="item.otaSourceName"
-              :value="item.otaSourceName">
+              :label="item.name"
+              :value="item.ticketTypeId">
             </el-option>
           </el-select>
         </el-form-item>
         <el-form-item
-          label="票种"
-          prop="ticketTypeIdList">
+          label="销售来源"
+          prop="otaSourceNameList">
           <el-select
             filterable
             multiple
-            clearable
-            v-model="form.ticketTypeIdList"
+            v-model="form.otaSourceNameList"
             placeholder="请选择">
             <el-option
-              label="全部"
-              value="">
-            </el-option>
-            <el-option
-              v-for="item in ticketTypeList"
+              v-for="item in otaSourceList"
               :key="item.id"
               :label="item.name"
               :value="item.ticketTypeId">
@@ -69,14 +59,14 @@
         </el-form-item>
       </el-form>
       <div class="btn-wrap">
-        <el-button @click="reset">重置</el-button>
         <el-button
-          :loading="exportLoading"
+          @click="reset">重置</el-button>
+        <el-button
           type="primary"
-          @click="handleExport">导出</el-button>
+          @click="getOrderStatistics($event,true)">搜索</el-button>
         <el-button
           type="primary"
-          @click="getData">搜索</el-button>
+          @click="handleExport">导出</el-button>
       </div>
     </div>
 
@@ -86,15 +76,14 @@
       </div>
       <el-table
         :data="tableData"
-        v-loading="loading"
-        :row-class-name="totalRowClassName">
+        v-loading="loading">
         <el-table-column
           prop="otaSourceName"
-          label="分销">
+          label="分销渠道">
         </el-table-column>
         <el-table-column
           prop="ticketTypeName"
-          label="商品名">
+          label="票种">
         </el-table-column>
         <el-table-column
           prop="unitPrice"
@@ -102,7 +91,7 @@
         </el-table-column>
         <el-table-column
           prop="saleNum"
-          label="售票数">
+          label="售票数">
         </el-table-column>
         <el-table-column
           prop="salePrice"
@@ -110,7 +99,7 @@
         </el-table-column>
         <el-table-column
           prop="cancelNum"
-          label="退票数">
+          label="退票数">
         </el-table-column>
         <el-table-column
           prop="cancelPrice"
@@ -124,119 +113,196 @@
           prop="actualPrice"
           label="实售金额">
         </el-table-column>
+        <!-- <el-table-column
+          width="260"
+          fixed="right"
+          label="操作">
+          <template slot-scope="scope">
+            <el-button
+              type="text"
+              @click="showOrderInfo(scope.row)">订单详情</el-button>
+            <el-button
+              type="text"
+              @click="$refs.ticketInfo.show(scope.row.tickets)">门票详情</el-button>
+            <el-button
+              type="text"
+              @click="showGuestInfo(scope.row)">游客信息</el-button>
+            <el-button
+              type="text"
+              v-if="checkRefundVisible(scope.row)&&canCancel"
+              @click="showOrderInfo(scope.row,'cancel')">退订单</el-button>
+          </template>
+        </el-table-column> -->
       </el-table>
       <el-pagination
         background
         :current-page.sync="form.pageNum"
-        @current-change="getData"
+        @current-change="getOrderStatistics"
         layout="total, prev, pager, next"
         :total="total">
       </el-pagination>
     </div>
+
+    <ElDialog
+      :title="type==='cancel'?'退单':'订单详情'"
+      width="760px"
+      v-model="orderDialogVisible"
+    >
+      <OrderDialog
+        :current-item="currentItem"
+        :can-cancel="canCancel"
+        @updateList="getOrderStatistics"
+        :type="type"></OrderDialog>
+    </ElDialog>
+    <ElDialog
+      title="游客信息"
+      width="760px"
+      v-model="guestDialogVisible">
+      <GuestDialog
+        :current-item="currentItem"></GuestDialog>
+    </ElDialog>
+
+    <TicketInfo ref="ticketInfo"></TicketInfo>
   </div>
 </template>
-
 <script>
+import { getOrderStatistics, getOtaSourceList } from '@/api/order'
 import { getTicketTypeList } from '@/api/ticketType'
-import { getOtaProjectList } from '@/api/ota'
-import { getSaleStatistics } from '@/api/queryReport'
+import ElDialog from '@/components/Dialog'
+import OrderDialog from './orderList/OrderDialog'
+import GuestDialog from './orderList/GuestDialog'
+import TicketInfo from './orderList/TicketInfo'
+import { orderStatus } from '@/const'
 import moment from 'moment'
 
 export default {
-  name: 'salesReport',
+  name: 'orderList',
+  components: {
+    ElDialog,
+    OrderDialog,
+    GuestDialog,
+    TicketInfo
+  },
   data () {
     return {
       ticketTypeList: [],
-      otaList: [],
+      otaSourceList: [],
+      projectName: localStorage.getItem('otaProject'),
+      totalObj: {},
+      type: '', // 操作状态 cancel退订单
       form: {
-        export: false,
-        timeBegin: new Date(moment().startOf('month')),
-        timeEnd: new Date(moment().endOf('month')),
-        otaSourceNameList: [], // 分销商名称
+        timeBegin: moment().startOf('day'),
+        timeEnd: moment().endOf('day'),
         ticketTypeIdList: [], // 票种名称
+        otaSourceNameList: [], // 分销渠道
+        export: false,
         pageNum: 1,
         pageSize: 10
       },
-      projectName: localStorage.getItem('otaProject'),
+      orderStatusDic: orderStatus,
+      loading: false,
       tableData: [],
       total: 0,
-      loading: false,
-      exportLoading: false
+      currentItem: {},
+      orderDialogVisible: false,
+      guestDialogVisible: false
     }
   },
+  created () {
+    this.getTicketTypeList()
+    // this.getOtaSourceList()
+    this.getOrderStatistics()
+  },
   computed: {
+    canCancel () {
+      return this.$store.state.user.permissionList.includes('orders:cancel')
+    },
     queryClear () {
       return this.$store.state.user.permissionList.includes('stats:clearwx_query')
+    },
+    otaList () {
+      const list = JSON.parse(localStorage.getItem('otaList'))
+      return this.projectName === 'YINXIANGMAZU' && !this.queryClear ? list.filter(item => item.otaSourceCode !== 'CLEARWX') : list
     }
   },
-  created () {
-    this.getTicketTypeList()
-    this.getProductList()
-    this.getData()
-  },
   methods: {
+    checkRefundVisible (item) {
+      if (item.status !== 'CANCELED') return true
+      if (item.status === 'CANCELED') {
+        if (item.tickets.some(i => i.status !== 'CANCELED')) {
+          return true
+        } else {
+          return false
+        }
+      }
+      return false
+    },
     reset () {
       this.$refs.form.resetFields()
     },
-    // 获取票种列表
     getTicketTypeList () {
-      return getTicketTypeList({
+      getTicketTypeList({
         pageNum: 1,
         pageSize: -1
       }).then(res => {
         this.ticketTypeList = res.data.records || []
       })
     },
-    getProductList () {
-      return getOtaProjectList({
+    getOtaSourceList () {
+      getOtaSourceList({
         pageNum: 1,
         pageSize: -1
       }).then(res => {
-        this.otaList = res.data.records || []
+        this.otaSourceList = res.data || []
       })
     },
-    getData () {
-      this.loading = true
-      if (this.form.timeBegin) {
-        this.form.timeBegin = moment(this.form.timeBegin).format('YYYY-MM-DD HH:mm:ss')
+    getOrderStatistics (e, goFirst) {
+      if (goFirst) { this.form.pageNum = 1 }
+
+      if (!this.form.timeBegin || !this.form.timeEnd) {
+        this.$message.error('请选择起始时间和截止时间')
+        return
       }
-      if (this.form.timeEnd) {
-        this.form.timeEnd = moment(this.form.timeEnd).format('YYYY-MM-DD HH:mm:ss')
+
+      this.form.timeBegin = moment(this.form.timeBegin).format('YYYY-MM-DD HH:mm:ss')
+      this.form.timeEnd = moment(this.form.timeEnd).format('YYYY-MM-DD HH:mm:ss')
+
+      if (!this.form.ticketTypeIdList) {
+        this.form.ticketTypeIdList = []
       }
-      if (!this.form.otaSourceNameList || this.form.otaSourceNameList.length === 0) {
+
+      if (!this.form.otaSourceNameList) {
         this.form.otaSourceNameList = []
       }
-      if (!this.form.ticketTypeIdList || this.form.ticketTypeIdList.length === 0) {
-        this.form.ticketTypeIdList = []
-      }
-      getSaleStatistics(this.form).then(res => {
-        res.data.forEach(item => {
-          if (item.ticketTypeName === '总计') {
-            item.otaSourceName = '总计'
-            item.ticketTypeName = ''
-            item.price = ''
-          } else if (item.ticketTypeName === '小计') {
-            item.otaSourceName = '小计'
-            item.ticketTypeName = ''
-            item.price = ''
-          }
-        })
+      this.loading = true
+      getOrderStatistics(this.form).then(res => {
         this.tableData = res.data
         this.loading = false
-      }).catch(() => {
-        this.loading = false
       })
     },
+    showOrderInfo (item, type) {
+      if ((item.otaSourceCode === 'CLEARWX' || item.otaSourceCode === 'CLEARWXDEV') && type === 'cancel') return this.$message.info('自营平台订单请到自营后台办理退票')
+      this.currentItem = item
+      this.type = type
+      this.orderDialogVisible = true
+    },
+    showGuestInfo (item) {
+      this.currentItem = item
+      this.guestDialogVisible = true
+    },
     handleExport () {
-      this.exportLoading = true
       this.form.export = true
-      getSaleStatistics(this.form).then(res => {
-        this.exportLoading = false
+      getOrderStatistics(this.form).then(res => {
         this.$notify({
           title: '提示',
           message: '导出成功',
           type: 'success'
         })
+      }, () => {
+        this.$notify.error({
+          title: '提示',
+          message: '导出失败'
+        })
       })
     }
   }

+ 248 - 0
src/views/queryReport/salesReport_bak.vue

@@ -0,0 +1,248 @@
+<template>
+  <div class="form-wrap">
+    <div class="searchBox">
+      <el-form
+        ref="form"
+        :model="form"
+        :inline="true"
+        label-width="150px">
+        <el-form-item
+          label="起始时间"
+          prop="timeBegin">
+          <el-date-picker
+            v-model="form.timeBegin"
+            type="datetime"
+            placeholder="选择日期时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item
+          label="截止时间"
+          prop="timeEnd">
+          <el-date-picker
+            v-model="form.timeEnd"
+            type="datetime"
+            placeholder="选择日期时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item
+          label="分销商名称"
+          prop="otaSourceNameList"
+        >
+          <el-select
+            v-model="form.otaSourceNameList"
+            multiple
+            clearable
+            placeholder="请选择"
+            filterable>
+            <el-option
+              label="全部"
+              value="">
+            </el-option>
+            <el-option
+              v-for="item in otaList"
+              :key="item.id"
+              :label="item.otaSourceName"
+              :value="item.otaSourceName">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item
+          label="票种"
+          prop="ticketTypeIdList">
+          <el-select
+            filterable
+            multiple
+            clearable
+            v-model="form.ticketTypeIdList"
+            placeholder="请选择">
+            <el-option
+              label="全部"
+              value="">
+            </el-option>
+            <el-option
+              v-for="item in ticketTypeList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.ticketTypeId">
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div class="btn-wrap">
+        <el-button @click="reset">重置</el-button>
+        <el-button
+          :loading="exportLoading"
+          type="primary"
+          @click="handleExport">导出</el-button>
+        <el-button
+          type="primary"
+          @click="getData">搜索</el-button>
+      </div>
+    </div>
+
+    <div class="tableBox">
+      <div class="block-title">
+        查询信息
+      </div>
+      <el-table
+        :data="tableData"
+        v-loading="loading"
+        :row-class-name="totalRowClassName">
+        <el-table-column
+          prop="otaSourceName"
+          label="分销商">
+        </el-table-column>
+        <el-table-column
+          prop="ticketTypeName"
+          label="商品名">
+        </el-table-column>
+        <el-table-column
+          prop="unitPrice"
+          label="单价">
+        </el-table-column>
+        <el-table-column
+          prop="saleNum"
+          label="售票数量">
+        </el-table-column>
+        <el-table-column
+          prop="salePrice"
+          label="售票金额">
+        </el-table-column>
+        <el-table-column
+          prop="cancelNum"
+          label="退票数量">
+        </el-table-column>
+        <el-table-column
+          prop="cancelPrice"
+          label="退票金额">
+        </el-table-column>
+        <el-table-column
+          prop="actualNum"
+          label="实售数量">
+        </el-table-column>
+        <el-table-column
+          prop="actualPrice"
+          label="实售金额">
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        background
+        :current-page.sync="form.pageNum"
+        @current-change="getData"
+        layout="total, prev, pager, next"
+        :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getTicketTypeList } from '@/api/ticketType'
+import { getOtaProjectList } from '@/api/ota'
+import { getSaleStatistics } from '@/api/queryReport'
+import moment from 'moment'
+
+export default {
+  name: 'salesReport',
+  data () {
+    return {
+      ticketTypeList: [],
+      otaList: [],
+      form: {
+        export: false,
+        timeBegin: new Date(moment().startOf('month')),
+        timeEnd: new Date(moment().endOf('month')),
+        otaSourceNameList: [], // 分销商名称
+        ticketTypeIdList: [], // 票种名称
+        pageNum: 1,
+        pageSize: 10
+      },
+      projectName: localStorage.getItem('otaProject'),
+      tableData: [],
+      total: 0,
+      loading: false,
+      exportLoading: false
+    }
+  },
+  computed: {
+    queryClear () {
+      return this.$store.state.user.permissionList.includes('stats:clearwx_query')
+    }
+  },
+  created () {
+    this.getTicketTypeList()
+    this.getProductList()
+    this.getData()
+  },
+  methods: {
+    reset () {
+      this.$refs.form.resetFields()
+    },
+    // 获取票种列表
+    getTicketTypeList () {
+      return getTicketTypeList({
+        pageNum: 1,
+        pageSize: -1
+      }).then(res => {
+        this.ticketTypeList = res.data.records || []
+      })
+    },
+    getProductList () {
+      return getOtaProjectList({
+        pageNum: 1,
+        pageSize: -1
+      }).then(res => {
+        this.otaList = res.data.records || []
+      })
+    },
+    getData () {
+      this.loading = true
+      if (this.form.timeBegin) {
+        this.form.timeBegin = moment(this.form.timeBegin).format('YYYY-MM-DD HH:mm:ss')
+      }
+      if (this.form.timeEnd) {
+        this.form.timeEnd = moment(this.form.timeEnd).format('YYYY-MM-DD HH:mm:ss')
+      }
+      if (!this.form.otaSourceNameList || this.form.otaSourceNameList.length === 0) {
+        this.form.otaSourceNameList = []
+      }
+      if (!this.form.ticketTypeIdList || this.form.ticketTypeIdList.length === 0) {
+        this.form.ticketTypeIdList = []
+      }
+      getSaleStatistics(this.form).then(res => {
+        res.data.forEach(item => {
+          if (item.ticketTypeName === '总计') {
+            item.otaSourceName = '总计'
+            item.ticketTypeName = ''
+            item.price = ''
+          } else if (item.ticketTypeName === '小计') {
+            item.otaSourceName = '小计'
+            item.ticketTypeName = ''
+            item.price = ''
+          }
+        })
+        this.tableData = res.data
+        this.loading = false
+      }).catch(() => {
+        this.loading = false
+      })
+    },
+    handleExport () {
+      this.exportLoading = true
+      this.form.export = true
+      getSaleStatistics(this.form).then(res => {
+        this.exportLoading = false
+        this.$notify({
+          title: '提示',
+          message: '导出成功',
+          type: 'success'
+        })
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 3
src/views/systemSetting/role.vue

@@ -47,7 +47,9 @@
       title="添加角色"
       width="660px"
       v-model="addVisible">
-      <AddDialog @updateList="getRoleList"></AddDialog>
+      <AddDialog
+        :permission-list="resourceList"
+        @updateList="getRoleList"></AddDialog>
     </ElDialog>
     <ElDialog
       title="编辑角色"
@@ -68,10 +70,11 @@
 </template>
 
 <script>
-import { getRoleList, delRole } from '@/api/systemSetting/role'
+import { getRoleList, delRole, getResourceList } from '@/api/systemSetting/role'
 import ElDialog from '@/components/Dialog'
 import AddDialog from './role/AddDialog'
 import EditDialog from './role/EditDialog'
+
 export default {
   components: {
     ElDialog,
@@ -81,6 +84,7 @@ export default {
   created () {
     this.params.pageNum = 1
     this.params.pageSize = 10
+    this.getResourceList()
     this.getRoleList()
   },
   data () {
@@ -95,7 +99,8 @@ export default {
         pageSize: 10,
         pageNum: 1
       },
-      total: 0
+      total: 0,
+      resourceList: [] // 资源权限列表
     }
   },
   methods: {
@@ -103,6 +108,11 @@ export default {
       this[`${type}Visible`] = true
       this.currentItem = item
     },
+    getResourceList () {
+      getResourceList().then(res => {
+        this.resourceList = res.data || []
+      })
+    },
     getRoleList () {
       this.loading = true
       getRoleList(this.params).then(res => {

+ 7 - 1
src/views/systemSetting/role/AddDialog.vue

@@ -84,11 +84,17 @@
 import { getPermissionList, addRole } from '@/api/systemSetting/role'
 
 export default {
+  props: {
+    permissionList: {
+      type: Array,
+      default: () => ([])
+    }
+  },
   data () {
     return {
       visible: false, // 弹窗状态,由父集弹窗控制
 
-      permissionList: [], // 权限列表
+      // permissionList: [], // 权限列表
       resourceIdList: [], // 已选择权限
       isIndeterminate: {}, // 所有模块不确定状态合集
       checkAll: {}, // 所有模块对应权限合集