Procházet zdrojové kódy

用户分配页面

yumeng před 5 roky
rodič
revize
c2dedc1c12

+ 1 - 0
src/components/jeecgbiz/JSelectUser.vue

@@ -43,6 +43,7 @@
       }
     },
     created() {
+      console.log(this.model)
     },
     methods: {
       open() {

+ 1 - 1
src/components/jeecgbiz/modal/JSelectUserByDepModal.vue

@@ -42,7 +42,7 @@
             :columns="columns"
             :dataSource="dataSource"
             :pagination="ipagination"
-            :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+            :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type:'radio'}"
             @change="handleTableChange">
           </a-table>
         </a-card>

+ 1 - 1
src/components/jeecgbiz/modal/SelectUserListModal.vue

@@ -16,7 +16,7 @@
       :dataSource="dataSource"
       :pagination="ipagination"
       :loading="loading"
-      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"></a-table>
+      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type:'radio'}"></a-table>
   </a-modal>
 </template>
 

+ 5 - 0
src/mixins/JeecgListMixin.js

@@ -187,6 +187,11 @@ export const JeecgListMixin = {
       this.$refs.modalForm.title = "新增";
       this.$refs.modalForm.disableSubmit = false;
     },
+    handleOpen: function () {
+      this.$refs.userForm.open();
+      this.$refs.userForm.title = "选择";
+      this.$refs.userForm.disableSubmit = false;
+    },
     handleTableChange(pagination, filters, sorter) {
       //分页、排序、筛选变化时触发
       //TODO 筛选

+ 1 - 0
src/store/modules/user.js

@@ -11,6 +11,7 @@ const user = {
     realname: '',
     welcome: '',
     avatar: '',
+    orgcode : '',
     permissionList: [],
     info: {}
   },

+ 128 - 71
src/views/modules/advertiser/AdvertiserList.vue

@@ -99,11 +99,12 @@
       <a-modal
         title="账号绑定"
         v-model="visible"
-        @ok="handleOk"
+        @ok="handleSubmit"
         :width="800"
         :okButtonProps="{ props: {disabled: false} }"
         :cancelButtonProps="{ props: {disabled: false} }"
       >
+
         <a-form>
           <a-form-item
             label="选择方式"
@@ -119,8 +120,8 @@
             v-if="showLogin"
           >
             <a-form
-              :form="form"
-              @submit="loginForm">
+              :form="form">
+              <!-- @submit="loginForm">-->
               <a-form-item
                 label="账号:"
                 :label-col="{xs: {span: 24},sm: {span: 5}}"
@@ -142,20 +143,28 @@
                   <a-radio-button value="bytedance">头条</a-radio-button>
                 </a-radio-group>
               </a-form-item>
-              <a-form-item :wrapperCol="{ span: 24 }"
-                           style="text-align: center">
-                <a-button htmlType="submit" type="primary">提交</a-button>
+
+              <a-form-item label="部门分配" :labelCol="{xs: {span: 24},sm: {span: 5}}"
+                           :wrapperCol="{xs: {span: 24},sm: {span: 16}}" v-show="!departDisabled">
+                <j-select-depart v-model="departmentId" :multi="false"></j-select-depart>
+              </a-form-item>
+
+              <a-form-item label="用户选择" :labelCol="{xs: {span: 24},sm: {span: 5}}"
+                           :wrapperCol="{xs: {span: 24},sm: {span: 16}}">
+                <j-select-user-by-dep v-model="users"></j-select-user-by-dep>
               </a-form-item>
+
             </a-form>
           </a-form-item>
+
           <a-form-item
             v-if="showAuthorization"
             :labelCol="{xs: {span: 24},sm: {span: 5}}"
             :wrapperCol="{xs: {span: 24},sm: {span: 16}}">
             <a-form
-              :form="form"
-              @submit="authorizationForm"
-            >
+              :form="form">
+              <!--@submit="authorizationForm"-->
+
               <a-form-item label="媒体:" :labelCol="{xs: {span: 24},sm: {span: 5}}"
                            :wrapperCol="{xs: {span: 24},sm: {span: 16}}">
                 <a-radio-group buttonStyle="outline" v-model="authorizationType">
@@ -163,10 +172,17 @@
                   <a-radio-button value="bytedance">头条</a-radio-button>
                 </a-radio-group>
               </a-form-item>
-              <a-form-item :wrapperCol="{ span: 24 }"
-                           style="text-align: center">
-                <a-button htmlType="submit" type="primary">提交</a-button>
+              <a-form-item label="部门分配" :labelCol="{xs: {span: 24},sm: {span: 5}}"
+                           :wrapperCol="{xs: {span: 24},sm: {span: 16}}" v-show="!departDisabled">
+                <j-select-depart v-model="departmentId" :multi="false"></j-select-depart>
+
+              </a-form-item>
+
+              <a-form-item label="用户选择" :labelCol="{xs: {span: 24},sm: {span: 5}}"
+                           :wrapperCol="{xs: {span: 24},sm: {span: 16}}">
+                <j-select-user-by-dep v-model="users"></j-select-user-by-dep>
               </a-form-item>
+
             </a-form>
           </a-form-item>
 
@@ -177,6 +193,7 @@
 
     <!-- 表单区域 -->
     <advertiser-modal ref="modalForm" @ok="modalFormOk"></advertiser-modal>
+    <j-select-user ref="userForm" @ok="modalFormOk"></j-select-user>
   </a-card>
 </template>
 
@@ -184,8 +201,12 @@
   import AdvertiserModal from './modules/AdvertiserModal'
   import {JeecgListMixin} from '@/mixins/JeecgListMixin'
   import JTreeSelect from '@/components/jeecg/JTreeSelect'
-  import {deleteAction, postAction, getAction} from '@/api/manage'
   import AFormItem from "ant-design-vue/es/form/FormItem";
+  import JSelectDepart from '@/components/jeecgbiz/JSelectDepart'
+  import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
+  import JSelectUser from '@/components/jeecgbiz/JSelectUser'
+  import {postAction} from "../../../api/manage";
+  import {mapActions, mapGetters} from 'vuex'
 
 
   export default {
@@ -194,10 +215,16 @@
     components: {
       AFormItem,
       AdvertiserModal,
-      JTreeSelect
+      JTreeSelect,
+      JSelectUserByDep,
+      JSelectDepart,
+      JSelectUser
     },
     data() {
       return {
+        departDisabled: false, //是否是我的部门调用该页面
+        users: this.userInfo().realname,//用户名称
+        departmentId: this.userInfo().departId, //部门id
         description: '广告主信息表管理页面',
         visible: false,
         accountName: '',
@@ -258,8 +285,12 @@
           deleteBatch: '/ctop/advertiser/deleteBatch',
           exportXlsUrl: 'ctop/advertiser/exportXls',
           importExcelUrl: 'ctop/advertiser/importExcel',
-          bindAccountLoginUrl: '/ctop/bindAccount/login',
-          bindAuthorizationUrl: '/ctop/bindAccount/authorization',
+          bindAccountLoginUrl: '/ctop/bindAccountLogin/login',
+          bindAuthorizationUrl: '/ctop/bindAccountAuth/authorization',
+          getLoginInfo: '/ctop/bindAccount/getLoginInfo',
+          userId: "/sys/user/generateUserId", // 引入生成添加用户情况下的url
+          userWithDepart: "/sys/user/userDepartList", // 引入为指定用户查看部门信息需要的url
+
         },
       }
     },
@@ -269,67 +300,72 @@
       }
     },
     methods: {
-      loginForm(e) {
-        e.preventDefault()
-        this.form.validateFields((err, values) => {
-            if (!err) {
-              if (this.mode == 'login') {
-                let params = {};
-                params.advertiserId = this.record.id;
-                params.accountName = this.accountName;
-                params.password = this.password;
-                params.loginType = this.loginType;
-                console.log(this.loginType)
-                getAction(this.url.bindAccountLoginUrl, params).then((res) => {
-                  if (res.success) {
-                    alert("绑定成功");
-                    this.accountName = '';
-                    this.password = '';
-                    this.loginType = '';
-                  } else {
-                    alert("绑定失败");
-                  }
-                });
-              }
-            }
+      ...mapGetters(["nickname", "avatar", "userInfo"]),
+
+      handleSubmit() {
+        /*postAction(this.url.getLoginInfo).then((res) => {
+          if (res.success) {
+            alert("绑定成功");
+            this.accountName = '';
+            this.password = '';
+            this.loginType = '';
+          } else {
+            alert("绑定失败");
           }
-        )
-      },
+        });*/
+        let params = {};
+        params.advertiserId = this.record.id;
+        params.advertiser_name = this.record.name;
+        params.userId = this.userInfo().id;
+        params.realName = this.userInfo().realname;
+        params.departmentId = this.departmentId;
+        params.distributionName = this.users;
 
-      authorizationForm(e) {
-        e.preventDefault()
-        this.form.validateFields((err, values) => {
-            if (!err) {
-              if (this.mode == 'authorization') {
-                let params = {};
-                params.advertiserId = this.record.id;
-                params.authorizationType = this.authorizationType;
-                getAction(this.url.bindAuthorizationUrl, params).then((res) => {
-                  if (res.success) {
-                    alert("绑定成功");
-                    window.open(res.message, '_blank');
-                  } else {
-                    alert("绑定失败");
-                  }
-                });
+        // 触发表单验证
+        this.form.validateFields((err) => {
+          if (!err) {
+            if (this.mode == 'login') {
+              params.accountName = this.accountName;
+              params.password = this.password;
+              params.loginType = this.loginType;
+              if (this.loginType == 'kuaishou') {
+                params.mediaId = 2;
+              } else if (this.loginType == 'bytedance') {
+                params.mediaId = 1;
+              }
+              postAction(this.url.bindAccountLoginUrl, params).then((res) => {
+                if (res.success) {
+                  alert("绑定成功");
+                  this.accountName = '';
+                  this.password = '';
+                  this.loginType = '';
+                } else {
+                  alert("绑定失败");
+                }
+              });
+            }
+            // 授权登录
+            if (this.mode == 'authorization') {
+              params.authorizationType = this.authorizationType;
+              if (this.authorizationType == 'kuaishou') {
+                params.mediaId = 2;
+              } else if (this.authorizationType == 'bytedance') {
+                params.mediaId = 1;
               }
+              postAction(this.url.bindAuthorizationUrl, params).then((res) => {
+                if (res.success) {
+                  window.open(res.message, '_blank');
+                } else {
+                  alert("绑定失败");
+                }
+              });
             }
+
           }
-        )
-      },
+        })
 
-      showModal(record) {
-        this.record = record
-        this.visible = true
-      },
-      handleOk(e) {
-        console.log(e);
-        this.visible = false
-      },
-      handleCancel(e) {
-        console.log(e);
-        this.visible = false
       },
+
       onChageLogin() {
         console.log(this.mode)
         if (this.mode == 'login') {
@@ -338,9 +374,30 @@
         } else {
           this.showLogin = false;
           this.showAuthorization = true;
+
+
         }
-      }
+      },
+      showModal(record) {
+        this.record = record
+        this.visible = true
+      },
+
+      handleCancel() {
+        this.close()
+      },
+    },
+
+    handleOk(e) {
+      console.log(e);
+      this.visible = false
+    },
+    handleCancel(e) {
+      console.log(e);
+      this.visible = false
     }
+
+
   }
 </script>
 <style scoped>

+ 65 - 0
src/views/modules/advertiser/userAllocation.vue

@@ -0,0 +1,65 @@
+<template>
+  <a-select :value="arrayValue" @change="onChange" mode="multiple" :placeholder="placeholder">
+    <a-select-option
+      v-for="(item,index) in options"
+      :key="index"
+      :value="item.value">
+      {{ item.text || item.label }}
+    </a-select-option>
+  </a-select>
+</template>
+
+<script>
+  //option {label:,value:}
+  export default {
+    name: 'JSelectMultiple',
+    props: {
+      placeholder: {
+        type: String,
+        default: '',
+        required: false
+      },
+      value: {
+        type: String,
+        required: false
+      },
+      readOnly: {
+        type: Boolean,
+        required: false,
+        default: false
+      },
+      options: {
+        type: Array,
+        required: true
+      },
+      triggerChange: {
+        type: Boolean,
+        required: false,
+        default: false
+      }
+    },
+    data() {
+      return {
+        arrayValue: !this.value ? [] : this.value.split(",")
+      }
+    },
+    watch: {
+      value(val) {
+        if (!val) {
+          this.arrayValue = []
+        } else {
+          this.arrayValue = this.value.split(",")
+        }
+      }
+    },
+    methods: {
+      onChange(selectedValue) {
+        if (this.triggerChange) {
+          this.$emit('change', selectedValue.join(","));
+        } else {
+          this.$emit('input', selectedValue.join(","));
+        }
+      },
+    },
+  }
+</script>