Răsfoiți Sursa

角色管理

于继渤 2 ani în urmă
părinte
comite
fe5c2d112c

+ 14 - 7
components/dkbase/dk-collapse-item/dk-collapse-item.js

@@ -34,6 +34,7 @@ Component({
    * 组件的初始数据
    */
   data: {
+    tableData:[]
   },
 
   /**
@@ -48,17 +49,22 @@ Component({
 
     onCheckedItem(e) {
       console.log(e)
+      let _that = this
       let index = e.currentTarget.dataset.index
-      let list = this.data.list
+      let list =_that.data.list
       list[index].checked = !list[index].checked
-      if (list[index].list && list[index].list.length > 0) {
-        list[index].list.forEach(res => {
+      if (list[index].subMenus && list[index].subMenus.length > 0) {
+        console.log('list[index].subMenus',list[index].subMenus)
+        list[index].subMenus.forEach(res => {
           res.checked = list[index].checked
         })
       }
-      this.setData({
+      list[index].checked = list[index].checked
+      console.log('list',list)
+      _that.setData({
         list: list
       })
+      this.triggerEvent("obtainList", { list: list })
     },
     //todo
     onCheckedItem_(e) {
@@ -66,10 +72,10 @@ Component({
       let index = e.currentTarget.dataset.index
       let index_ = e.currentTarget.dataset.index_
       let list = this.data.list
-      list[index].list[index_].checked = !list[index].list[index_].checked
-      if(list[index].list.filter(res=>{
+      list[index].subMenus[index_].checked = !list[index].subMenus[index_].checked
+      if(list[index].subMenus.filter(res=>{
         res.checked
-      }).length ==  list[index].list.length){
+      }).length ==  list[index].subMenus.length){
         list[index].checked = true
       }else{
         list[index].checked = false
@@ -77,6 +83,7 @@ Component({
       this.setData({
         list: list
       })
+      this.triggerEvent("obtainList", { list: list })
     },
   }
 })

+ 7 - 7
components/dkbase/dk-collapse-item/dk-collapse-item.wxml

@@ -4,24 +4,24 @@
       <van-collapse-item border="{{false}}" name="{{index}}" wx:for="{{list}}" wx:key="index" data-item="{{item}}" data-index="{{index}}">
         <view slot="title">
           <view style="display: flex;">
-            <view style="width: 15%;">
-              <van-checkbox checked-color="#95A8CB" value="{{ item.checked }}" shape="square" catch:tap="onCheckedItem" data-index="{{index}}">
+            <view style="width: 15%;" catch:tap="onCheckedItem" data-index="{{index}}">
+              <van-checkbox checked-color="#95A8CB" value="{{ item.checked }}" shape="square" >
               </van-checkbox>
             </view>
             <view style="width: 85%;">
-              <view class="font">{{item.title}}</view>
+              <view class="font">{{item.menuName}}</view>
             </view>
           </view>
         </view>
-        <view wx:for="{{item.list}}" wx:for-index="index_" wx:for-item="item_" style="margin-left: 50rpx;">
+        <view wx:for="{{item.subMenus}}" wx:for-index="index_" wx:for-item="item_" style="margin-left: 50rpx;">
           <view style="display: flex;padding-top: {{ index_ !=0 ?  '40rpx' : ''}};">
-            <view style="width: 10%;">
-              <van-checkbox checked-color="#95A8CB" value="{{ item_.checked }}" shape="square" catch:tap="onCheckedItem_"  data-index="{{index}}"  data-index_="{{index_}}"></van-checkbox>
+            <view style="width: 10%;" catch:tap="onCheckedItem_"  data-index="{{index}}"  data-index_="{{index_}}">
+              <van-checkbox checked-color="#95A8CB" value="{{ item_.checked }}" shape="square" ></van-checkbox>
             </view>
             <view style="width: 15%;justify-content: center;align-items: center;display: flex;">
               <van-image round width="36rpx" height="36rpx" src="{{'/static/img/tree.png'}}" />
             </view>
-            <view class="font" style="width: 75%;">{{item_.title}}</view>
+            <view class="font" style="width: 75%;">{{item_.menuName}}</view>
           </view>
         </view>
       </van-collapse-item>

+ 5 - 2
i18n/zh-CN.js

@@ -20,7 +20,10 @@ const basicData = {
   staffName:'员工姓名',
   orgId:'业务部门',
 }
-
+const  role = {
+  roleName:'角色名称',
+  roleFunName:'功能名称',
+}
 // 列
 const columns = {
   null:'',
@@ -82,5 +85,5 @@ const others = {
 }
 
 module.exports  = {
-  items:Object.assign({},home,basicData,columns,saleOrder,button,messages,others,accountsManage)
+  items:Object.assign({},home,basicData,columns,saleOrder,button,messages,others,accountsManage,role)
 }

+ 111 - 49
package-base-select/pages/select-functional-permissions/select-functional-permissions.js

@@ -1,63 +1,125 @@
-// package-base-select/pages/select-functional-permissions/select-functional-permissions.js
+const Constants = require('@/utils/Constants.js');
+const util = require('@/utils/util.js')
+const mixins = require('@/mixins/index.js')
 Page({
-
+  mixins: [mixins],
   /**
    * 页面的初始数据
    */
   data: {
-    tableData: [
-      {
-        title: '销售管理',
-        checked:true,
-        list:[
-          {
-            title: '销售订单',
-            checked:true,
-          },
-          {
-            title: '库存查询',
-            checked:true,
-          },
-          {
-            title: '客户收款',
-            checked:true,
-          }
-        ]
-      },
-      {
-        title: '销售管理',
-        checked:false,
-        list:[
-          {
-            title: '销售订单',
-            checked:true,
-          },
-          {
-            title: '库存查询',
-            checked:true,
-          },
-          {
-            title: '客户收款',
-            checked:true,
-          }
-        ]
-      },
-      {
-        title: '销售管理',
-        checked:false
-      },
-      {
-        title: '销售管理',
-        checked:false
-      },
-    ]
+    routeObjName: 'roleFun',
+    tableData: [],
+    formMode: Constants.formMode.detail,
+  },
+
+  onChangeSwitch(e) {
+    console.log(e)
+    let formData = this.data.formData
+    let tableData = this.data.tableData
+    formData.checked = e.detail
+    if (tableData && tableData.length > 0) {
+      tableData.forEach(res => {
+        res.checked = e.detail
+        if (res.subMenus && res.subMenus.length > 0) {
+          res.subMenus.forEach(it => {
+            it.checked = e.detail
+          })
+        }
+      })
+    }
+
+    this.setData({
+      formData: formData,
+      tableData: tableData
+    })
+  },
+
+
+  setParams() {
+    let params = {}
+    // 修改之后的 值
+    if(this.data.formData && this.data.formData.roleId){
+      params.roleId = this.data.formData.roleId
+    }
+    params.pageSize = this.data.pageInfo.pageSize;
+    params.currentPage = this.data.pageInfo.currentPage;
+    return params
+  },
+
+  handleData(tableData) {
+    tableData.forEach(res => {
+      if (res.subMenus && res.subMenus.value) {
+        res.subMenus = JSON.parse(res.subMenus.value)
+      }
+    })
+    this.setData({
+      tableData: tableData
+    })
   },
 
+
+  getData(params) {
+    return this.excute(this.data.service, this.data.service.getRoleFun, params).then(res=>{
+      //处理数据
+      if(res.data.code == 200){
+        this.handleData(res.data.data.list)
+      }
+    })
+  },
+
+  obtainList(e) {
+    this.setData({
+      tableData: e.detail.list
+    })
+  },
+
+  toAdd() {
+    let tableData = this.data.tableData
+    //格式化数据
+    let tableDataTemp = []
+    tableData.forEach(res => {
+      if (res.checked) {
+        tableDataTemp.push({
+          funUuid: res.funUuid,
+          appCode: res.appCode
+        })
+      }
+      if (res.subMenus && res.subMenus.length > 0) {
+        res.subMenus.forEach(it => {
+          if (it.checked) {
+            tableDataTemp.push({
+              funUuid: it.funUuid,
+              appCode: it.appCode
+            })
+          }
+        })
+      }
+    })
+
+    // 给父页面传递数据
+    const eventChannel = this.getOpenerEventChannel();
+    eventChannel.emit('bindData', tableDataTemp)
+    wx.navigateBack({
+      delta: 1
+    })
+  },
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
-
+    //接收父页面传递的参数
+    let that = this
+    const eventChannel = this.getOpenerEventChannel()
+    eventChannel.on('editParams', function (data) {
+      console.log('editParams', data)
+
+      that.setData({
+        formData: JSON.parse(data.data.formData),
+        formMode: data.data.formMode
+      })
+      let params =  that.setParams()
+      that.getData(params)
+    })
   },
 
   /**

+ 30 - 2
package-base-select/pages/select-functional-permissions/select-functional-permissions.wxml

@@ -1,4 +1,32 @@
-<dk-collapse-item list="{{tableData}}"></dk-collapse-item>
+<!-- 前台导入wxmlUtil.wxs -->
+<wxs src='/utils/wxmlUtil.wxs' module="wxmlUtil"></wxs>
+<loading wx:if="{{loading}}" loadingName="加载中" backgroundColor="#f2f2f2;" opacity="0.8"></loading>
+<van-sticky scroll-top="0">
+  <!-- 查询条件 -->
+  <dk-dropdown-menu model:searchForm="{{searchForm}}"  bind:search="searchData" searchTextPlaceholder="{{wxmlUtil.setSearchPlaceholder($t,['roleFunName'])}}">
+  </dk-dropdown-menu>
+  <view style="display: flex;background-color: white;padding:18rpx;padding-right: 40rpx;padding-left:40rpx;">
+    <view style="width: 60%;display: flex;">
+      <view style="width: 18%;">
+        <van-image width="40rpx" height="40rpx" src="{{'/static/img/roles.png'}}" />
+      </view>
+      <view class="font" style="width: 82%;">{{formData.roleName}}</view>
+    </view>
+    <view style="width: 50%;text-align: right;">
+      <view style="display: flex;">
+        <view class="font" style="width: 40%;text-align: center;">{{ formData.checked ? '全部启用':'全部停用' }}</view>
+        <view style="width: 50%;text-align: right;">
+          <van-switch bind:change="onChangeSwitch" active-color="#00A7B5" checked="{{ formData.checked }}" size="18px"></van-switch>
+        </view>
 
+      </view>
 
-<dk-save-bottom flagTypeName="select-functional-permissions" bottomClass="{{true}}"  bind:submit="toClose" bind:allClean="toAdd" />
+    </view>
+  </view>
+
+</van-sticky>
+
+<dk-collapse-item list="{{tableData}}" bind:obtainList="obtainList"></dk-collapse-item>
+
+
+<dk-save-bottom flagTypeName="select-functional-permissions" bottomClass="{{true}}" bind:submit="toClose" bind:allClean="toAdd" />

+ 9 - 1
package-base-select/pages/select-functional-permissions/select-functional-permissions.wxss

@@ -1 +1,9 @@
-/* package-base-select/pages/select-functional-permissions/select-functional-permissions.wxss */
+.font {
+  font-family: PingFang HK;
+  font-size: 30rpx;
+  font-weight: 400;
+  line-height: 40rpx;
+  letter-spacing: 0em;
+  text-align: left;
+
+}

+ 83 - 43
package-basic-data/pages/role/add/add.js

@@ -1,6 +1,6 @@
 const mixins = require('@/mixins/index.js')
 const app = getApp()
-
+const Constants = require('@/utils/Constants.js');
 Page({
   mixins: [mixins],
   /**
@@ -10,8 +10,8 @@ Page({
     cardList: [{ name: 'main' }, { name: 'middle' }],
     contentObj: {
       main: [
-        { code: 'staffCode', type: 'str', required: true, title: '角色编码' },
-        { code: 'staffName', type: 'str', required: true, title: '角色名称' },
+        // { code: 'staffCode', type: 'str', required: true, title: '角色编码' },
+        { code: 'roleName', type: 'str', required: true, title: '角色名称' },
       ],
       middle: [
         { code: 'remarks', type: 'textarea', title: '备注' },
@@ -26,79 +26,119 @@ Page({
   },
 
   openObjPop(e) {
+    let that = this
     let key = e.currentTarget.dataset.key
     wx.navigateTo({
       url: key,
       events: {
         // 回调后
         bindData: function (data) {
-          let form = _this.data.form
-          form.objInfo = data;
-          // _this.setData({
-          //   form: form,
-          //   value: JSON.stringify(form)
-          // })
+          console.log('回调后', data)
+          let formData = JSON.parse(that.data.formData)
+          formData.roleFunList = data
+          that.setData({
+            selectFunctionalPermissionsFlag: data.length > 0,
+            formData: JSON.stringify(formData)
+          })
         }
       },
       success: function (res) {
         // 通过eventChannel向被打开页面传送数据
-        res.eventChannel.emit('params', { data: 'test' })
+        let formData = JSON.parse(that.data.formData)
+        if (that.data.formMode == Constants.formMode.edit) {
+          console.log(that.data.id)
+          formData['roleId'] = that.data.id
+        }
+        let data = {
+          formData: JSON.stringify(formData),
+          // formMode: Constants.formMode.edit,
+          id:that.data.id
+        }
+        res.eventChannel.emit('editParams', { data: data })
       }
     })
   },
   /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad(options) {
-    console.log('routeUrl', app.globalData['routeUrl'].role.selectFunctionalPermissions.url)
+    * @desc   : 处理数据
+    * @author : 于继渤
+    * @date   : 2024/1/26 11:46
+    */
+  handleData() {
+    this.setData({
+      formData: null
+    })
+
   },
 
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady() {
 
+  /**
+  * @desc : 给参数赋值
+  * @date : 2024/2/1 15:49
+  * @author : 于继渤
+  */
+  setParams(params) {
+    // 修改之后的 值
+    console.log('setParams', params)
   },
 
   /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow() {
-
+ * @desc : 校验-需要额外校验就在此函数写
+ * @date : 2024/2/1 15:49
+ * @author : 于继渤
+ */
+  validData() {
+    let params = this.data.formData
+    // 修改之后的 值
+    console.log('validData', params)
+    return true;
   },
 
   /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide() {
+  * @desc : 保存数据服务
+  * @date : 2024/2/1 15:49
+  * @author : 于继渤
+  */
+  saveData() {
+    if (this.data.formMode == Constants.formMode.edit) {
+      return this.excute(this.data.service, this.data.service.update, this.data.params);
+    } else {
+      return this.excute(this.data.service, this.data.service.insert, this.data.params);
+    }
 
   },
-
   /**
-   * 生命周期函数--监听页面卸载
+   * @desc : 给表单赋值
+   * @date : 2024/2/1 15:49
+   * @author : 于继渤
    */
-  onUnload() {
-
+  setValuesByEdit(data) {
+    console.log('给表单赋值',data)
+    this.setData({
+      formData: JSON.stringify(data)
+    })
+ 
   },
 
   /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh() {
-
+ * 生命周期函数--监听页面加载
+ */
+  onLoad: function (options) {
+    if (this.data.formMode == Constants.formMode.edit) {
+      wx.setNavigationBarTitle({
+        title: '编辑角色',
+      })
+    } else {
+      if (this.data.formMode == Constants.formMode.edit) {
+        wx.setNavigationBarTitle({
+          title: '新建角色',
+        })
+      }
+    }
   },
 
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom() {
 
-  },
 
-  /**
-   * 用户点击右上角分享
-   */
-  onShareAppMessage() {
 
-  }
+
+
 })

+ 3 - 2
package-basic-data/pages/role/add/add.wxml

@@ -2,12 +2,13 @@
 <wxs src='/utils/wxmlUtil.wxs' module="wxmlUtil"></wxs>
 <!-- 加载图层 -->
 <loading wx:if="{{loading}}"></loading>
+
 <!-- 列表区 -->
 <dk-form-more-items id="{{formName}}" cardList="{{cardList}}" contentObj="{{contentObj}}" model:value="{{formData}}" bind:chooseData="chooseData">
 </dk-form-more-items>
 <view style="margin: 10px 32rpx 10px 32rpx;">
   <view class="dk-card-class">
-    <van-field label-class="red-label" is-link value="{{ form[objCol]}}" label="功能权限" autosize border="{{ false }}" readonly="{{true}}" data-key="{{ route.selectFunctionalPermissions.url}}" placeholder="未设置"  input-class="dk-cell-value-right-class" catchtap="openObjPop">
+    <van-field label-class="red-label" is-link value="{{}}" label="功能权限" autosize border="{{ false }}" readonly="{{true}}" data-key="{{ route.selectFunctionalPermissions.url}}" placeholder="{{selectFunctionalPermissionsFlag ? '已设置':'未设置'}}"  input-class="dk-cell-value-right-class" catchtap="openObjPop">
     </van-field>
 
     <van-field label-class="red-label" is-link value="{{ form[objCol]}}" label="敏感数据" autosize border="{{ false }}" readonly="{{true}}" placeholder="未设置" input-class="dk-cell-value-right-class" catchtap="openObjPop">
@@ -16,4 +17,4 @@
 </view>
 
 <!--  保存 -->
-<dk-save-bottom flagTypeName="select-functional-permissions" bottomClass="{{true}}"  bind:submit="toClose" bind:allClean="toAdd" />
+<dk-save-bottom flagTypeName="select-functional-permissions" bottomClass="{{true}}"  bind:submit="toClose" bind:allClean="save" />

+ 25 - 2
package-basic-data/pages/role/role.js

@@ -12,8 +12,8 @@ Page({
     contentList: [{ name: 'sysCode', title: '角色编码' },
     { name: 'remarks', title: '角色说明' }],
     // 弹出按钮
-    buttonList: [{ name: 'follow', title: '采购作废' }, { name: 'followTask', title: '冲正重开' }, { name: 'purchase-return-repla-sup', title: '采购退货' },
-    { name: 'collection', title: '采购退货冲正' }, { name: 'merge', title: '打印票据' }],
+    buttonList: [{ name: 'follow', title: '功能权限' }, { name: 'followTask', title: '复制新增' }, { name: 'purchase-return-repla-sup', title: '敏感数据' },
+    { name: 'collection', title: '启用/停用' }],
     totallength: 234999, //视图下方提醒数量
     selectTotallength: 12,
     selectlength: 5,
@@ -37,6 +37,29 @@ Page({
   getData(params) {
     return this.excute(this.data.service, this.data.service.selectByCond, params);
   },
+
+  /**
+* @desc : 详细页面
+* @date : 2024/2/1 15:49
+* @author : 于继渤
+*/
+  toDetail(e) {
+    let roleId = e.detail.item.roleId
+    this.setData({
+      selectflag: true
+    })
+    wx.navigateTo({
+      url: this.data.route.add.url,
+      events: function (e) {
+        // 回调后,在这里给页面赋值
+
+      },
+      success: function (res) {
+        // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的,实际中,需要从route中读取
+        res.eventChannel.emit('params', { id: roleId,  formMode: Constants.formMode.edit})
+      }
+    })
+  },
   /**
    * 生命周期函数--监听页面加载
    */

+ 1 - 1
package-basic-data/pages/role/role.wxml

@@ -3,7 +3,7 @@
 <loading wx:if="{{loading}}" loadingName="加载中" backgroundColor="#f2f2f2;" opacity="0.8"></loading>
 <van-sticky scroll-top="0">
   <!-- 查询条件 -->
-  <dk-dropdown-menu model:searchForm="{{searchForm}}"  bind:search="searchData" searchTextPlaceholder="{{wxmlUtil.setSearchPlaceholder($t,['customerName','telephone'])}}">
+  <dk-dropdown-menu model:searchForm="{{searchForm}}"  bind:search="searchData" searchTextPlaceholder="{{wxmlUtil.setSearchPlaceholder($t,['roleName'])}}">
   </dk-dropdown-menu>
 </van-sticky>
 <!-- 暂无数据 -->

BIN
static/img/roles.png


+ 2 - 0
utils/Constants.js

@@ -64,6 +64,8 @@ module.exports = {
     add:'add',
     // 编辑
     edit:'edit',
+    // 明细
+    detail:'detail'
   },
 
   // 查询条件日期数据源