Browse Source

格克view

LZP 3 years ago
parent
commit
94728d6198

File diff suppressed because it is too large
+ 209 - 209
package-lock.json


BIN
public/gklog.jpeg


+ 13 - 1
src/api/api.js

@@ -92,6 +92,14 @@ const checkRuleByCode = (params) => getAction('/sys/checkRule/checkByCode', para
 //加载我的通告信息
 const getUserNoticeInfo= (params)=>getAction("/sys/sysAnnouncementSend/getMyAnnouncementSend",params);
 const getTransitURL = url => `/sys/common/transitRESTful?url=${encodeURIComponent(url)}`
+//从企业微信拉取用户信息
+const pullData= (params)=>getAction("/sys/weixin/pullData",params);
+//同步数据到企业微信
+const synchronizationWeixin= (params)=>getAction("/sys/weixin/synchronizationWeixin",params);
+
+const tbquery= (params)=>getAction("/sys/weixin/list",params);
+//把用户考勤数据同步到平台
+const synchronizationPt= (params)=>getAction("/sys/weixin/synchronizationpt",params);
 // 中转HTTP请求
 export const transitRESTful = {
   get: (url, parameter) => getAction(getTransitURL(url), parameter),
@@ -154,7 +162,11 @@ export {
   saveDeptRolePermission,
   queryMyDepartTreeList,
   getUserNoticeInfo,
-  getDictItemsFromCache
+  getDictItemsFromCache,
+  pullData,
+  synchronizationWeixin,
+  tbquery,
+  synchronizationPt
 }
 
 

BIN
src/assets/gklog.jpeg


+ 3 - 3
src/components/jeecg/JVxeTable/mixins/vxe.web.socket.mixins.js

@@ -22,9 +22,9 @@ const vs = {
   // 心跳检测
   heartCheck: {
     // 间隔时间,间隔多久发送一次心跳消息
-    interval: 10000,
+    interval: 100000,
     // 心跳消息超时时间,心跳消息多久没有回复后重连
-    timeout: 6000,
+    timeout: 600000,
     timeoutTimer: null,
     clear() {
       clearTimeout(this.timeoutTimer)
@@ -128,7 +128,7 @@ const vs = {
       console.info('【VXEWebSocket】尝试重连...')
       this.initialWebSocket()
       this.lockReconnect = false
-    }, 5000)
+    }, 50000)
   },
 
   on: {

+ 1 - 9
src/components/page/GlobalFooter.vue

@@ -1,17 +1,9 @@
 <template>
   <div class="footer">
-    <div class="links">
-      <a href="http://www.jeecg.com" target="_blank">JEECG 首页</a>
-      <a href="https://github.com/zhangdaiscott/jeecg-boot" target="_blank">
-        <a-icon type="github"/>
-      </a>
-      <a href="https://ant.design/">Ant Design</a>
-      <a href="https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/">Vue Antd</a>
-    </div>
     <div class="copyright">
       Copyright
       <a-icon type="copyright"/>
-      2019 <span>JEECG开源社区 出品</span>
+      2021 <span>萃巅 出品</span>
     </div>
   </div>
 </template>

+ 1 - 1
src/mixins/WebsocketMixin.js

@@ -56,7 +56,7 @@ export const WebsocketMixin = {
         console.info("尝试重连...");
         that.initWebSocket();
         that.lockReconnect = false;
-      }, 5000);
+      }, 50000);
     },
   }
 

+ 1 - 1
src/utils/request.js

@@ -17,7 +17,7 @@ let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot";
 const service = axios.create({
   //baseURL: '/jeecg-boot',
   baseURL: apiBaseUrl, // api base_url
-  timeout: 9000 // 请求超时时间
+  timeout: 900000 // 请求超时时间
 })
 
 const err = (error) => {

+ 3 - 3
src/views/account/center/Index.vue

@@ -116,13 +116,13 @@
 
         tabListNoTitle: [{
             key: 'article',
-            tab: '文章(8)',
+            tab: '文章(0)',
           }, {
             key: 'app',
-            tab: '应用(8)',
+            tab: '应用(0)',
           }, {
             key: 'project',
-            tab: '项目(8)',
+            tab: '项目(0)',
           }
         ],
         noTitleKey: 'app',

+ 5 - 5
src/views/account/center/page/App.vue

@@ -59,12 +59,12 @@
 
 <script>
   const dataSource = []
-  for (let i = 0; i < 11; i++) {
+  for (let i = 0; i < 0; i++) {
     dataSource.push({
-      title: 'Alipay',
-      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
-      activeUser: 17,
-      newUser: 1700
+      title: '',
+      avatar: '',
+      activeUser:"" ,
+      newUser: ""
     })
   }
 

+ 6 - 6
src/views/dashboard/Analysis.vue

@@ -1,16 +1,16 @@
 <template>
   <div>
-    <index-chart v-if="indexStyle==1"></index-chart>
-    <index-bdc v-if="indexStyle==2"></index-bdc>
-    <index-task v-if="indexStyle==3"></index-task>
-    <div style="width: 100%;text-align: right;margin-top: 20px">
+     <index-chart v-if="indexStyle==1"></index-chart> 
+    <!-- <index-bdc v-if="indexStyle==2"></index-bdc> 
+    <index-task v-if="indexStyle==3"></index-task> -->
+    <!-- <div style="width: 100%;text-align: right;margin-top: 20px">
       请选择首页样式:
       <a-radio-group v-model="indexStyle">
-        <a-radio :value="1">统计图表</a-radio>
+        <a-radio :value="1">统计图表</a-radio>pei'z
         <a-radio :value="2">统计图表2</a-radio>
         <a-radio :value="3">任务表格</a-radio>
       </a-radio-group>
-    </div>
+    </div> -->
   </div>
 </template>
 

+ 4 - 4
src/views/dashboard/IndexChart.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="page-header-index-wide">
-    <a-row :gutter="24">
+    <!-- <a-row :gutter="24">
       <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
         <chart-card :loading="loading" title="总销售额" total="¥126,560">
           <a-tooltip title="指标说明" slot="action">
@@ -61,9 +61,9 @@
           </template>
         </chart-card>
       </a-col>
-    </a-row>
+    </a-row> -->
 
-    <a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}">
+    <!-- <a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}">
       <div class="salesCard">
         <a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
           <div class="extra-wrapper" slot="tabBarExtraContent">
@@ -97,7 +97,7 @@
           </a-tab-pane>
         </a-tabs>
       </div>
-    </a-card>
+    </a-card> -->
 
     <a-row>
       <a-col :span="24">

+ 5 - 5
src/views/system/DepartList.vue

@@ -5,13 +5,13 @@
 
         <!-- 按钮操作区域 -->
         <a-row style="margin-left: 14px">
-          <a-button @click="handleAdd(1)" type="primary">添加部门</a-button>
-          <a-button @click="handleAdd(2)" type="primary">添加下级</a-button>
-          <a-button type="primary" icon="download" @click="handleExportXls('部门信息')">导出</a-button>
-          <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+          <a-button @click="handleAdd(1)" type="primary" v-has='"depart:add"'>添加部门</a-button>
+          <a-button @click="handleAdd(2)" type="primary" v-has='"depart:subordinate"'>添加下级</a-button>
+          <a-button type="primary" icon="download" @click="handleExportXls('部门信息')" v-has='"depart:export"'>导出</a-button>
+          <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel" v-has='"depart:import"'>
             <a-button type="primary" icon="import">导入</a-button>
           </a-upload>
-          <a-button title="删除多条数据" @click="batchDel" type="default">批量删除</a-button>
+          <a-button title="删除多条数据" @click="batchDel" type="default" v-has='"depart:delete"'>批量删除</a-button>
           <!--<a-button @click="refresh" type="default" icon="reload" :loading="loading">刷新</a-button>-->
         </a-row>
         <div style="background: #fff;padding-left:16px;height: 100%; margin-top: 5px">

+ 8 - 8
src/views/system/RoleUserList.vue

@@ -32,12 +32,12 @@
         </div>
         <!-- 操作按钮区域 -->
         <div class="table-operator" style="margin: 5px 0 10px 2px">
-          <a-button @click="handleAdd" type="primary" icon="plus">新建角色</a-button>
+          <a-button @click="handleAdd" type="primary" icon="plus" v-has='"role:add"'>新建角色</a-button>
           <!--<a-button @click="handleEdit(model1)" type="primary" icon="plus">角色编辑</a-button>-->
-          <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+          <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel" v-has='"role:import"'>
             <a-button type="primary" icon="import">导入</a-button>
           </a-upload>
-          <a-button type="primary" icon="download" @click="handleExportXls('角色管理')">导出</a-button>
+          <a-button type="primary" icon="download" @click="handleExportXls('角色管理')" v-has='"role:export"'>导出</a-button>
         </div>
 
         <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
@@ -60,21 +60,21 @@
             :rowSelection="{selectedRowKeys: selectedRowKeys1, onChange: onSelectChange1, type:'radio'}"
             @change="handleTableChange">
           <span slot="action" slot-scope="text, record">
-            <a @click="handleOpen(record)">用户</a>
+            <a @click="handleOpen(record)" v-has='"role:user"'>用户</a>
             <a-divider type="vertical"/>
 
-            <a-dropdown>
+            <a-dropdown v-has='"role:more"'>
               <a class="ant-dropdown-link">
                 更多 <a-icon type="down"/>
               </a>
               <a-menu slot="overlay">
-                <a-menu-item>
+                <a-menu-item v-has='"role:jurisdiction"'>
                   <a @click="handlePerssion(record.id)">授权</a>
                 </a-menu-item>
-                <a-menu-item>
+                <a-menu-item v-has='"role:edit"'>
                   <a @click="handleEdit(record)">编辑</a>
                 </a-menu-item>
-                <a-menu-item>
+                <a-menu-item v-has='"role:delete"'>
                   <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete1(record.id)">
                     <a>删除</a>
                   </a-popconfirm>

+ 28 - 17
src/views/system/UserList.vue

@@ -65,12 +65,13 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator" style="border-top: 5px">
-      <a-button @click="handleAdd" type="primary" icon="plus" >添加用户</a-button>
-      <a-button type="primary" icon="download" @click="handleExportXls('用户信息')">导出</a-button>
-      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+      <a-button @click="handleAdd()" type="primary" icon="plus" v-has="'user:add'" >添加用户</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('用户信息')" v-has='"user:export"'>导出</a-button>
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel" v-has='"user:import"'>
         <a-button type="primary" icon="import">导入</a-button>
       </a-upload>
-      <a-button type="primary" icon="hdd" @click="recycleBinVisible=true">回收站</a-button>
+      <a-button type="primary" icon="hdd" @click="recycleBinVisible=true" v-has='"user:recovery"'>回收站</a-button>
+     
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay" @click="handleMenuClick">
           <a-menu-item key="1">
@@ -91,7 +92,7 @@
           <a-icon type="down"/>
         </a-button>
       </a-dropdown>
-      <j-super-query :fieldList="superQueryFieldList" @handleSuperQuery="handleSuperQuery"/>
+      <j-super-query :fieldList="superQueryFieldList" @handleSuperQuery="handleSuperQuery" v-has='"user:query"'/>
     </div>
 
     <!-- table区域-begin -->
@@ -120,36 +121,36 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)" >编辑</a>
+          <a @click="handleEdit(record)" v-has='"user:edit"'>编辑</a>
 
           <a-divider type="vertical"/>
 
-          <a-dropdown>
+          <a-dropdown v-has='"user:more"'>
             <a class="ant-dropdown-link">
               更多 <a-icon type="down"/>
             </a>
             <a-menu slot="overlay">
-              <a-menu-item>
+              <a-menu-item v-has='"user:details"'>
                 <a href="javascript:;" @click="handleDetail(record)">详情</a>
               </a-menu-item>
 
-              <a-menu-item>
+              <a-menu-item v-has='"user:pwd"'>
                 <a href="javascript:;" @click="handleChangePassword(record.username)">密码</a>
               </a-menu-item>
 
-              <a-menu-item>
+              <a-menu-item v-has='"user:delete"'>
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
               </a-menu-item>
 
-              <a-menu-item v-if="record.status==1">
+              <a-menu-item v-if="record.status==1" v-has='"user:frozen"'>
                 <a-popconfirm title="确定冻结吗?" @confirm="() => handleFrozen(record.id,2,record.username)">
                   <a>冻结</a>
                 </a-popconfirm>
               </a-menu-item>
 
-              <a-menu-item v-if="record.status==2">
+              <a-menu-item v-if="record.status==2" v-has='"user:thaw"'>
                 <a-popconfirm title="确定解冻吗?" @confirm="() => handleFrozen(record.id,1,record.username)">
                   <a>解冻</a>
                 </a-popconfirm>
@@ -191,6 +192,7 @@
       PasswordModal,
       JInput,
       UserRecycleBinModal,
+      
       JSuperQuery
     },
     data() {
@@ -198,6 +200,7 @@
         description: '这是用户管理页面',
         queryParam: {},
         recycleBinVisible: false,
+        selectedRowKeys:[],
         columns: [
           /*{
             title: '#',
@@ -246,20 +249,26 @@
           {
             title: '手机号码',
             align: "center",
-            width: 100,
+            width: 120,
             dataIndex: 'phone'
           },
+          {
+            title: '组织',
+            align: "center",
+            width: 120,
+            dataIndex: 'orgText'
+          },
           {
             title: '部门',
             align: "center",
-            width: 180,
+            width: 120,
             dataIndex: 'orgCodeTxt'
           },
           {
-            title: '负责部门',
+            title: '入职时间',
             align: "center",
-            width: 180,
-            dataIndex: 'departIds_dictText'
+            width: 120,
+            dataIndex: 'entryDate'
           },
           {
             title: '状态',
@@ -288,6 +297,7 @@
           deleteBatch: "/sys/user/deleteBatch",
           exportXlsUrl: "/sys/user/exportXls",
           importExcelUrl: "sys/user/importExcel",
+          pulldata:"/sys/weixin/pullData"
         },
       }
     },
@@ -297,6 +307,7 @@
       }
     },
     methods: {
+      
       getAvatarView: function (avatar) {
         return getFileAccessHttpUrl(avatar)
       },

+ 37 - 16
src/views/system/modules/UserModal.vue

@@ -23,7 +23,7 @@
       <a-form :form="form">
 
         <a-form-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <a-input placeholder="请输入用户账号" v-decorator.trim="[ 'username', validatorRules.username]" :readOnly="!!model.id"/>
+          <a-input placeholder="请输入用户账号" v-decorator.trim="[ 'username', validatorRules.username]" />
         </a-form-item>
 
         <template v-if="!model.id">
@@ -40,6 +40,9 @@
           <a-input placeholder="请输入用户姓名" v-decorator.trim="[ 'realname', validatorRules.realname]" />
         </a-form-item>
 
+        <a-form-item label="用户英文名" :labelCol="labelCol" :wrapperCol="wrapperCol" >
+          <a-input placeholder="请输入用户英文名" v-decorator="[ 'egName', validatorRules.egName]" />
+        </a-form-item>
         <a-form-item label="工号" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <a-input placeholder="请输入工号" v-decorator.trim="[ 'workNo', validatorRules.workNo]" />
         </a-form-item>
@@ -67,15 +70,15 @@
         <a-form-item label="部门分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
           <a-input-search
             placeholder="点击选择部门"
-            v-model="checkedDepartNameString"
+            v-model="checkedDepartNameString" 
             readOnly
-            @search="onSearch">
+            @search="onSearch" >
             <a-button slot="enterButton" icon="search">选择</a-button>
           </a-input-search>
         </a-form-item>
 
         <!--租户分配-->
-        <a-form-item label="租户分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
+        <!-- <a-form-item label="租户分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
 
           <a-select
             mode="multiple"
@@ -87,7 +90,7 @@
               {{ item.name }}
             </a-select-option>
           </a-select>
-        </a-form-item>
+        </a-form-item> -->
 
        <!-- update--begin--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ -->
         <a-form-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -98,7 +101,7 @@
             <a-radio value="2">上级</a-radio>
           </a-radio-group>
         </a-form-item>
-        <a-form-item label="负责部门" :labelCol="labelCol" :wrapperCol="wrapperCol"  v-if="departIdShow==true">
+        <!-- <a-form-item label="负责部门" :labelCol="labelCol" :wrapperCol="wrapperCol"  v-if="departIdShow==true">
           <a-select
             mode="multiple"
             style="width: 100%"
@@ -112,7 +115,7 @@
             >{{item.title}}</a-select-option
             >
           </a-select>
-        </a-form-item>
+        </a-form-item> -->
         <!-- update--end--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ -->
         <a-form-item label="头像" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <j-image-upload class="avatar-uploader" text="上传" v-model="fileList" ></j-image-upload>
@@ -125,6 +128,14 @@
             v-decorator="['birthday', {initialValue:!model.birthday?null:moment(model.birthday,dateFormat)}]"
             :getCalendarContainer="node => node.parentNode"/>
         </a-form-item>
+        
+        <a-form-item label="入职日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-date-picker
+            style="width: 100%"
+            placeholder="请选择入职日期"
+            v-decorator="['entryDate', {initialValue:!model.entryDate?null:moment(model.entryDate,dateFormat)}]"
+            :getCalendarContainer="node => node.parentNode"/>
+        </a-form-item>
 
         <a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <a-select v-decorator="[ 'sex', {}]" placeholder="请选择性别" :getPopupContainer= "(target) => target.parentNode">
@@ -132,18 +143,26 @@
             <a-select-option :value="2">女</a-select-option>
           </a-select>
         </a-form-item>
-
+        
         <a-form-item label="邮箱" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <a-input placeholder="请输入邮箱" v-decorator="[ 'email', validatorRules.email]" />
         </a-form-item>
 
         <a-form-item label="手机号码" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <a-input placeholder="请输入手机号码" :disabled="isDisabledAuth('user:form:phone')" v-decorator="[ 'phone', validatorRules.phone]" />
+          <a-input placeholder="请输入手机号码" v-decorator="[ 'phone', validatorRules.phone]" />
         </a-form-item>
 
         <a-form-item label="座机" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <a-input placeholder="请输入座机" v-decorator="[ 'telephone', validatorRules.telephone]"/>
         </a-form-item>
+        
+        <a-form-item label="紧急联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input placeholder="请输入紧急联系人" v-decorator="[ 'urgentName', validatorRules.urgentName]" />
+        </a-form-item>
+        
+        <a-form-item label="紧急联系人电话" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input placeholder="请输入紧急联系人电话" v-decorator="[ 'urgentPhone', validatorRules.urgentPhone]" />
+        </a-form-item>
 
         <a-form-item label="工作流引擎" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <j-dict-select-tag  v-decorator="['activitiSync', {}]" placeholder="请选择是否同步工作流引擎" :type="'radio'" :triggerChange="true" dictCode="activiti_sync"/>
@@ -155,9 +174,9 @@
 
     <div class="drawer-bootom-button" v-show="!disableSubmit">
       <a-popconfirm title="确定放弃编辑?" @confirm="handleCancel" okText="确定" cancelText="取消">
-        <a-button style="margin-right: .8rem">取消</a-button>
+       
       </a-popconfirm>
-      <a-button @click="handleSubmit" type="primary" :loading="confirmLoading">提交</a-button>
+      <a-button @click="handleSubmit()" type="primary" :loading="confirmLoading">提交</a-button>
     </div>
   </a-drawer>
 </template>
@@ -225,9 +244,11 @@
             }],
           },
           realname:{rules: [{ required: true, message: '请输入用户名称!' }]},
-          phone:{rules: [{validator: this.validatePhone}]},
+          phone:{rules: [{ required: true, message: '请输入手机号!' },{validator: this.validatePhone}]},
           email:{
-            rules: [{
+            rules: [
+               { required: true, message: '请输入邮箱' },
+              {
               validator: this.validateEmail
             }],
           },
@@ -359,7 +380,7 @@
         that.visible = true;
         that.model = Object.assign({}, record);
         that.$nextTick(() => {
-          that.form.setFieldsValue(pick(this.model,'username','sex','realname','email','phone','activitiSync','workNo','telephone','post'))
+          that.form.setFieldsValue(pick(this.model,'username','sex','realname','email','phone','activitiSync','workNo','telephone','post','egName','urgentName','urgentPhone'))
         });
         //身份为上级显示负责部门,否则不显示
         if(this.model.userIdentity=="2"){
@@ -450,11 +471,11 @@
               formData.avatar = null;
             }
             //update-begin-author:taoyan date:2020710 for:多租户配置
-            formData.relTenantIds = this.currentTenant.length>0?this.currentTenant.join(','):''
+            //formData.relTenantIds = this.currentTenant.length>0?this.currentTenant.join(','):''
             //update-end-author:taoyan date:2020710 for:多租户配置
             formData.selectedroles = this.selectedRole.length>0?this.selectedRole.join(","):'';
             formData.selecteddeparts = this.userDepartModel.departIdList.length>0?this.userDepartModel.departIdList.join(","):'';
-            formData.userIdentity=this.identity;
+            formData.userIdentity=this.identity; 
             //如果是上级择传入departIds,否则为空
             if(this.identity==="2"){
               formData.departIds=this.departIds.join(",");

+ 351 - 0
src/views/system/synchronization.vue

@@ -0,0 +1,351 @@
+<template>
+     <a-spin :spinning="spinning" tip="正在同步中...">
+  <a-card :bordered="false">
+
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+
+          <a-col :md="6" :sm="12">
+            <a-form-item label="数据模块">
+              
+              <j-input placeholder="输入数据模块查询" ></j-input>
+            </a-form-item>
+          </a-col>
+
+          <a-col :md="6" :sm="8">
+            <a-form-item label="同步方式">
+              <j-input placeholder="输入同步方式查询" ></j-input>
+            </a-form-item>
+          </a-col>
+
+
+          
+
+          <a-col :md="6" :sm="8">
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+
+            </span>
+          </a-col>
+
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 操作按钮区域 -->
+     <div class="table-operator" style="border-top: 5px">
+      <a-button @click="pulldata()" type="primary" icon="plus" >拉取</a-button>
+      <a-button @click="pulldata()" type="primary" icon="plus" >同步U8</a-button>
+      <a-button @click="synchronizationWeixin()" type="primary" icon="plus" >同步企业微信</a-button>
+      <a-dropdown   :visible="show">
+        <a-button @click="synchronizationPt()" type="primary" icon="plus" >同步中间平台</a-button>
+        <a-menu slot="overlay">
+          <a-menu-item >
+          <a-month-picker placeholder="请选择日期"  v-model="date"/>
+          </a-menu-item>
+          
+        </a-menu>
+      </a-dropdown>
+     
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项&nbsp;&nbsp;
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        bordered
+        size="middle"
+        rowKey="id"
+        :columns="columns"
+        :dataSource="data"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type: 'radio'}"
+        @change="handleTableChange">
+
+        <template slot="avatarslot" slot-scope="text, record, index">
+          <div class="anty-img-wrap">
+            <a-avatar shape="square" :src="getAvatarView(record.avatar)" icon="user"/>
+          </div>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+        
+
+          <!-- <a-dropdown>
+            <a class="ant-dropdown-link">
+              同步 <a-icon type="down"/>
+            </a>
+            <a-menu slot="overlay">
+              <a-menu-item >
+                <a href="javascript:;" @click="handleDetail(record)">同步U8</a>
+              </a-menu-item>
+
+              <a-menu-item >
+                <a href="javascript:;" @click="handleChangePassword(record.username)">同步中间平台</a>
+              </a-menu-item>
+
+              <a-menu-item >
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>同步企业微信</a>
+                </a-popconfirm>
+              </a-menu-item>
+
+             
+            </a-menu>
+          </a-dropdown> -->
+        </span>
+
+
+      </a-table>
+      
+      
+      
+     
+    </div>
+    
+    <!-- table区域-end -->
+
+    
+
+    <!-- 用户回收站 -->
+    <user-recycle-bin-modal :visible.sync="recycleBinVisible" />
+
+  </a-card>
+  </a-spin>
+</template>
+
+<script>
+  import UserModal from './modules/UserModal'
+  import PasswordModal from './modules/PasswordModal'
+  import {putAction,getFileAccessHttpUrl} from '@/api/manage';
+  import {frozenBatch} from '@/api/api'
+  import {pullData,synchronizationWeixin,tbquery,synchronizationPt} from '@/api/api'
+  import {JeecgListMixin} from '@/mixins/JeecgListMixin'
+  import JInput from '@/components/jeecg/JInput'
+  import UserRecycleBinModal from './modules/UserRecycleBinModal'
+  import JSuperQuery from '@/components/jeecg/JSuperQuery'
+
+  export default {
+    name: "UserList",
+    mixins: [JeecgListMixin],
+    components: {
+      UserModal,
+      PasswordModal,
+      JInput,
+      UserRecycleBinModal,
+      
+      JSuperQuery
+    },
+    data() {
+      return {
+        show:false,
+        date:null,
+        spinning:false,
+        data:[],
+        description: '这是数据同步管理页面',
+        queryParam: {},
+        recycleBinVisible: false,
+        selectedRowKeys:[],
+        columns: [
+          {
+            title: '编号',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+          },
+          {
+            title: '数据模块',
+            align: "center",
+            dataIndex: 'name',
+            width: 120,
+            sorter: true
+          },
+          {
+            title: '状态',
+            align: "center",
+            width: 100,
+            dataIndex: 'state',
+            customRender:function (t,r,index) {
+            if(r.state==""||r.state==null){
+              return "暂无";
+            }
+            if(r.state=="0"){
+              return "成功";
+            }
+            if(r.state=="1"){
+              return "失败";
+            }
+            }
+          },
+          {
+            title: '同步方式',
+            align: "center",
+            width: 120,
+            dataIndex: 'type',
+          customRender:function (t,r,index) {
+         
+          if(r.type==""||r.type==null){
+            return "暂无";
+          }
+          if(r.type=="0"){
+            return "手动同步";
+          }
+          if(r.type=="1"){
+            return "自动同步";
+          }
+          }
+          },
+
+          {
+            title: '同步时间',
+            align: "center",
+            width: 120,
+            dataIndex: 'date',
+            sorter: true,
+            customRender:function (t,r,index) {
+                     
+            if(r.date==""||r.date==null){
+              return "暂无";
+            }else{
+              return r.date;
+            }
+           
+            }
+          },
+          {
+            title: '用时',
+            align: "center",
+            width: 100,
+            dataIndex: 'time',
+            customRender:function (t,r,index) {
+                     
+            if(r.time==""||r.time==null){
+              return "暂无";
+            }else{
+              return r.time+"秒";
+            }
+                       
+            }
+          },
+         
+          {
+            title: '操作',
+            align: "center",
+            width: 150,
+          }
+
+        ],
+        
+      }
+    },
+    /* watch:{
+    	date:{
+    		handler(newVal, objVal) {
+          if(this.date!=null){
+            this.show=false;
+          }
+      },
+    	}
+    }, */
+   created() {
+     this.querylist();
+   },
+    methods: {
+      querylist:function(){
+        tbquery({}).then(res=>{
+          this.data=res;
+        })
+        
+      },
+      synchronizationPt:function(){
+       if(this.selectedRowKeys.length<1){
+         this.$message.warning('请选择需要同步的数据!');
+         return false;
+       }
+       if(this.selectedRowKeys[0]==1){
+         this.$message.warning('该数据不能同步到平台!');
+         return false;
+       }
+       this.show=true;
+       if(this.date==null){
+         this.$message.warning('请选择需要同步的日期!');
+         return false; 
+       }
+       
+        this.spinning=true;
+       var datetime=this.formats(this.date);
+       synchronizationPt({date:datetime,id:this.selectedRowKeys[0],type:0,typeGo:2}).then(res=>{
+         console.log(res);
+          this.$message.warning('同步成功'+res.count+'条,同步失败'+res.errCount+'条');
+          this.querylist();
+          this.spinning=false;
+        }) 
+       
+       
+      },
+      formats:function(e){
+      	 var date = new Date(e);
+      	  var seperator1 = "-";
+      	  var year = date.getFullYear();
+      	  var month = date.getMonth() + 1;
+      	  if (month >= 1 && month <= 9) {
+      	    month = "0" + month;
+      	  }
+      	 
+      	  var currentdate = year + seperator1 + month;
+      	  return currentdate;
+      },
+      onSelectChange(selectedRowKeys) {
+           this.selectedRowKeys=selectedRowKeys;
+          },
+      synchronizationWeixin:function(){
+        if(this.selectedRowKeys.length<1){
+          this.$message.warning('请选择需要同步的数据!');
+          return false;
+        }
+        if(this.selectedRowKeys[0]!=1){
+          this.$message.warning('该数据不能同步到企业微信!');
+          return false;
+        }
+       this.spinning=true;
+        synchronizationWeixin({id:this.selectedRowKeys[0],type:0,typeGo:0}).then(res=>{
+           this.$message.warning(res.msg);
+           this.querylist();
+           this.spinning=false;
+         }) 
+      },
+      pulldata:function(){
+          this.spinning=true;
+      pullData({}).then(res=>{
+        if(res.errCode=="0"){
+          this.$message.success('拉取数据成功'
+          +res.userCount+"条,拉取数据失败"+res.userErrCount+"条");
+          
+        }else{
+          this.$message.warning("拉取数据失败");
+        }
+         this.spinning=false;
+        
+       }) 
+      },
+      
+     
+    }
+
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>

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