浏览代码

需求修改

zt 4 月之前
父节点
当前提交
dffbb19332
共有 3 个文件被更改,包括 693 次插入1061 次删除
  1. 1 1
      src/views/base/baseData.vue
  2. 252 229
      src/views/system/department.vue
  3. 440 831
      src/views/system/user.vue

+ 1 - 1
src/views/base/baseData.vue

@@ -62,7 +62,7 @@ export default {
             this.checkGroup(postData)
 
             const _this = this
-            return this.$channel.globeRequest('SysExtendController', 'listAllUser', postData, 'Detail Users').then((res) => {
+            return this.$channel.globeRequest('SysUserExtendController', 'listAll', postData, 'Contract Detail Users').then((res) => {
                 _this.StaffData = []
                 if (res.data) {
                     res.data.forEach(function(item) {

+ 252 - 229
src/views/system/department.vue

@@ -1,34 +1,34 @@
 <template>
-  <div>
-    <el-row class="handle-box" style="margin-bottom: 10px">
-      <el-col :span="24">
-        <el-radio-group v-model="deptGroup" size="small" @change="initData">
-          <el-radio-button v-for="item in GroupDataAll" :key="item.value" :label="item.value">{{ item.label }}</el-radio-button>
-        </el-radio-group>
-        <el-select popper-class="statistic_base" v-model="deptAttr" clearable filterable placeholder="组织架构类型" size="small" @change="initData">
-          <el-option v-for="item in DeptAttrDataAll" :key="item.value" :label="item.label" :value="item.value" />
-          </el-select>
-          <el-input v-model="deptName" class="ch-input ch-input-size" placeholder="部门名称" size="small" @keyup.enter.native="handleSearch()" />
-          <el-button class="ch-button-warning" size="small" @click="handleReset()"><i class="el-icon-search" />&nbsp;重置</el-button>
-          <el-button class="ch-button" size="small" @click="handleSearch()"><i class="el-icon-search" />&nbsp;搜索</el-button>
-          <el-button class="ch-button-export" size="small" @click="confirmOutput()"><i class="el-icon-download" />&nbsp;导出</el-button>
-          <el-button class="ch-button" size="small" style="float: right; margin-top: 4px" @click="handleAdd()"><i class="el-icon-menu" />&nbsp;新增</el-button>
-        </el-select popper-class="statistic_base"></el-col>
-    </el-row>
-    <div class="custom-tree-container">
-      <div class="block-l">
-        <el-card shadow="hover">
-          <el-tag class="full space-vertical">当前所选:{{ selectDeptNode.name || '暂无' }}</el-tag>
-          <el-tree
-            ref="selectTree"
-            :data="DeptTree"
-            :default-expanded-keys="expandedDeptKey"
-            :expand-on-click-node="expandDeptClick"
-            :indent="deptTreeIndent"
-            accordion
-            node-key="id"
-            @node-click="handleDeptNodeClick"
-          >
+    <div>
+        <el-row class="handle-box" style="margin-bottom: 10px">
+            <el-col :span="24">
+                <el-radio-group v-model="deptGroup" size="small" @change="initData">
+                    <el-radio-button v-for="item in GroupDataAll" :key="item.value" :label="item.value">{{ item.label }}</el-radio-button>
+                </el-radio-group>
+                <el-select v-model="deptAttr" filterable clearable placeholder="组织架构类型" size="small" @change="initData">
+                    <el-option v-for="item in DeptAttrDataAll" :key="item.value" :label="item.label" :value="item.value" />
+                </el-select>
+                <el-input v-model="deptName" size="small" placeholder="部门名称" class="ch-input ch-input-size" @keyup.enter.native="handleSearch()" />
+                <el-button size="small" class="ch-button-warning" @click="handleReset()"><i class="el-icon-refresh" />&nbsp;重置</el-button>
+                <el-button size="small" class="ch-button" @click="handleSearch()"><i class="el-icon-search" />&nbsp;搜索</el-button>
+                <el-button size="small" class="ch-button-export" @click="confirmOutput()"><i class="el-icon-download" />&nbsp;导出</el-button>
+                <el-button size="small" class="ch-button" style="float: right; margin-top: 4px" @click="handleAdd()"><i class="el-icon-document-add" />&nbsp;新增</el-button>
+            </el-col>
+        </el-row>
+        <div class="custom-tree-container">
+            <div class="block-l">
+                <el-card shadow="hover">
+                    <el-tag class="full space-vertical">当前所选:{{ selectDeptNode.name || '暂无' }}</el-tag>
+                    <el-tree
+                        ref="selectTree"
+                        :data="DeptTree"
+                        node-key="id"
+                        :indent="deptTreeIndent"
+                        accordion
+                        :expand-on-click-node="expandDeptClick"
+                        :default-expanded-keys="expandedDeptKey"
+                        @node-click="handleDeptNodeClick"
+                    >
             <span slot-scope="{ node, data }" class="custom-tree-node">
               <span>
                 <i v-if="data.level == 0" class="el-icon-s-home" />
@@ -41,143 +41,162 @@
                 <el-link class="space" type="primary" @click="() => collapseAll()">折叠</el-link>
               </span>
             </span>
-          </el-tree>
-        </el-card>
-      </div>
-      <div class="block-r">
-        <el-row class="handle-box">
-          <el-col :span="24">
-            <el-table v-loading="loading" :data="AllData" row-class-name="g_table_row" stripe>
-              <el-table-column type="index" width="60" />
-              <el-table-column label="部门名称" prop="deptName" />
-              <el-table-column v-if="!currGroup" align="center" header-align="center" label="所属组织" prop="groupStr" />
-              <el-table-column align="center" header-align="center" label="组织架构类型" prop="deptAttrStr" />
-              <el-table-column align="center" header-align="center" label="顺序号" prop="deptOrder" />
-              <el-table-column header-align="center" label="操作" width="160">
-                <template scope="scope">
-                  <el-button v-if="scope.row.deptLevel!==0" size="mini" type="primary" @click="handleEdit(scope.row)">编辑</el-button>
-                  <el-button v-if="scope.row.deptLevel!==0" size="mini" type="info" @click="handleDel(scope.row)">删除</el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-            <div class="table-page">
-              <el-pagination
-                :current-page.sync="currentPage"
-                :page-size="pageSize"
-                :total="allpage"
-                background
-                layout="total, prev, pager, next"
-                @current-change="handleCurrentChange"
-              />
+                    </el-tree>
+                </el-card>
             </div>
-          </el-col>
-        </el-row>
-      </div>
+            <div class="block-r">
+                <el-row class="handle-box">
+                    <el-col :span="24">
+                        <el-table v-loading="loading" :data="AllData" stripe row-class-name="g_table_row">
+                            <el-table-column type="index" width="60" />
+                            <el-table-column label="部门名称" prop="deptName" />
+                            <el-table-column v-if="!currGroup" label="所属集团" prop="groupStr" header-align="center" align="center" />
+                            <el-table-column label="组织架构类型" prop="deptAttrStr" header-align="center" align="center" />
+                            <el-table-column label="顺序号" prop="deptOrder" header-align="center" align="center" />
+                            <el-table-column label="操作" header-align="center" width="160">
+                                <template scope="scope">
+                                    <el-button v-if="scope.row.deptLevel!==0" size="mini" type="primary" @click="handleEdit(scope.row)">编辑</el-button>
+                                    <el-button v-if="scope.row.deptLevel!==0" size="mini" type="info" @click="handleDel(scope.row)">删除</el-button>
+                                </template>
+                            </el-table-column>
+                        </el-table>
+                        <div class="table-page">
+                            <el-pagination
+                                :current-page.sync="currentPage"
+                                :page-size="pageSize"
+                                background
+                                layout="total, prev, pager, next"
+                                :total="allpage"
+                                @current-change="handleCurrentChange"
+                            />
+                        </div>
+                    </el-col>
+                </el-row>
+            </div>
+        </div>
+        <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="75%" top="50px" @open="dlgOpen"
+                   :append-to-body="true"
+                   class="statistic_base"
+                   :modal-append-to-body="true"
+                   custom-class="tagdialog">
+            <el-form ref="form" :model="form" style="width: 100%;padding: 5px" :rules="rules">
+                <el-row>
+                    <el-col style="padding-bottom: 10px">
+                        <el-card shadow="always" style="padding: 15px 5px 5px 15px">
+                            <!--<el-row v-if="((isAdd && selectDeptNode.id) || (!isAdd && !selectDeptNode.id)) && form.deptLevel !== 0">-->
+                            <el-row v-if="!currGroup">
+                                <el-col :span="4" class="col-txt"><span>所属集团</span></el-col>
+                                <el-col :span="20" class="col-input">
+                                    <el-form-item>
+                                        <el-select v-model="form.groupId" filterable clearable placeholder="所属集团">
+                                            <el-option
+                                                v-for="item in GroupData"
+                                                :key="item.value"
+                                                :label="item.label"
+                                                :value="item.value"
+                                            />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="4" class="col-txt"><span>上级部门</span></el-col>
+                                <el-col :span="20" class="col-input">
+                                    <el-form-item>
+                                        <el-cascader
+                                            v-model="form.parentId"
+                                            class="full"
+                                            :options="DeptTree"
+                                            :props="{ checkStrictly: true }"
+                                        />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="4" class="col-txt"><span>顺序号</span></el-col>
+                                <el-col :span="20" class="col-input">
+                                    <el-form-item>
+                                        <el-input v-model="form.deptOrder" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="4" class="col-txt"><span>部门名称</span></el-col>
+                                <el-col :span="20" class="col-input">
+                                    <el-form-item prop="deptName">
+                                        <el-input v-model="form.deptName" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="4" class="col-txt"><span>部门编码</span></el-col>
+                                <el-col :span="20" class="col-input">
+                                    <el-form-item>
+                                        <el-input v-model="form.deptCode" :disabled="form.deptCode==='TOP'" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+
+                            <el-row>
+                                <el-col :span="4" class="col-txt"><span>部门负责人</span></el-col>
+                                <el-col :span="20" class="col-input">
+                                    <el-form-item>
+                                        <el-select v-model="form.chargedBy" filterable clearable  placeholder="部门负责人">
+                                            <el-option
+                                                v-for="item in StaffData"
+                                                :key="item.value"
+                                                :label="item.label"
+                                                :value="item.value"
+                                            />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="4" class="col-txt"><span>分管领导</span></el-col>
+                                <el-col :span="20" class="col-input">
+                                    <el-form-item>
+                                        <el-select v-model="form.leadBy" filterable clearable  placeholder="分管领导">
+                                            <el-option
+                                                v-for="item in StaffData"
+                                                :key="item.value"
+                                                :label="item.label"
+                                                :value="item.value"
+                                            />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row v-if="!isAdd || (isAdd && !selectDeptNode.id)">
+                                <el-col :span="4" class="col-txt"><span>组织架构类型</span></el-col>
+                                <el-col :span="20" class="col-input">
+                                    <el-form-item prop="deptAttr">
+                                        <el-select v-model="form.deptAttr" filterable clearable placeholder="组织架构类型">
+                                            <el-option
+                                                v-for="item in DeptAttrData"
+                                                :key="item.value"
+                                                :label="item.label"
+                                                :value="item.value"
+                                            />
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                        </el-card>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <div slot="footer">
+                <el-button @click="dialogVisible = false">取 消</el-button>
+                <el-button v-preventReClick type="primary" @click.native="confirmSubmit()">确 定</el-button>
+            </div>
+        </el-dialog>
     </div>
-    <el-dialog :title="dialogTitle" class="statistic_base" :visible.sync="dialogVisible" top="50px" width="75%" append-to-body @open="dlgOpen">
-      <el-form ref="form" :model="form" :rules="rules" style="width: 100%;padding: 5px">
-        <el-row>
-          <el-col style="padding-bottom: 10px">
-            <el-card shadow="always" style="padding: 15px 5px 5px 15px">
-              <!--<el-row v-if="((isAdd && selectDeptNode.id) || (!isAdd && !selectDeptNode.id)) && form.deptLevel !== 0">-->
-              <el-row>
-                <el-col :span="4" class="col-txt"><span>上级部门</span></el-col>
-                <el-col :span="20" class="col-input">
-                  <el-form-item>
-                    <el-cascader
-                      v-model="form.parentId"
-                      :options="DeptTree"
-                      :props="{ checkStrictly: true }"
-                      class="full"
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="4" class="col-txt"><span>顺序号</span></el-col>
-                <el-col :span="20" class="col-input">
-                  <el-form-item>
-                    <el-input v-model="form.deptOrder" />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="4" class="col-txt"><span>*部门名称</span></el-col>
-                <el-col :span="20" class="col-input">
-                  <el-form-item>
-                    <el-input v-model="form.deptName" />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="4" class="col-txt"><span>部门编码/行政区划</span></el-col>
-                <el-col :span="20" class="col-input">
-                  <el-form-item>
-                    <el-input v-model="form.deptCode" :disabled="form.deptCode==='TOP'" />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row v-if="!currGroup">
-                <el-col :span="4" class="col-txt"><span>所属组织</span></el-col>
-                <el-col :span="20" class="col-input">
-                  <el-form-item>
-                    <el-select popper-class="statistic_base" v-model="form.groupId" clearable filterable placeholder="所属组织">
-                      <el-option
-                        v-for="item in GroupData"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value"
-                      />
-                      </el-select>
-                    </el-select popper-class="statistic_base"></el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="4" class="col-txt"><span>部门负责人</span></el-col>
-                <el-col :span="20" class="col-input">
-                  <el-form-item>
-                    <el-select popper-class="statistic_base" v-model="form.chargedBy" clearable filterable multiple placeholder="部门负责人">
-                      <el-option
-                        v-for="item in StaffData"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value"
-                      />
-                      </el-select>
-                    </el-select popper-class="statistic_base"></el-form-item>
-                </el-col>
-              </el-row>
-              <el-row v-if="!isAdd || (isAdd && !selectDeptNode.id)">
-                <el-col :span="4" class="col-txt"><span>*组织架构类型</span></el-col>
-                <el-col :span="20" class="col-input">
-                  <el-form-item>
-                    <el-select popper-class="statistic_base" v-model="form.deptAttr" clearable filterable placeholder="组织架构类型">
-                      <el-option
-                        v-for="item in DeptAttrData"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value"
-                      />
-                      </el-select>
-                    </el-select popper-class="statistic_base"></el-form-item>
-                </el-col>
-              </el-row>
-            </el-card>
-          </el-col>
-        </el-row>
-      </el-form>
-      <div slot="footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="confirmSubmit()">确 定</el-button>
-      </div>
-    </el-dialog>
-  </div>
 </template>
 <script>
 import Base from '../base/base'
 import BaseData from '../base/baseData'
 import BaseDept from '../base/baseDept'
-
 export default {
     name: 'Department',
     mixins: [Base, BaseData, BaseDept],
@@ -196,9 +215,12 @@ export default {
             isAdd: true,
             // selectParent: [],
             form: this.initForm(),
-            rules: {},
+            rules: {
+                deptName: [{ required: true, trigger: 'blur', message: '请输入部门名称' }],
+                deptAttr: [{ required: true, trigger: 'blur', message: '请选择组织架构类型' }]
+            },
 
-            // 判定组织
+            // 判定集团
             currGroup: ''
         }
     },
@@ -224,7 +246,7 @@ export default {
             //             this.expandedDeptKey = []
             //             this.expandedDeptKey.push(this.selectDeptNode.id)
             //         }
-            //         //console.log('初始化', this.selectDeptNode)
+            //         console.log('初始化', this.selectDeptNode)
             //         this.getData()
             //     })
             // })
@@ -238,7 +260,7 @@ export default {
                     this.expandedDeptKey = []
                     this.expandedDeptKey.push(this.selectDeptNode.id)
                 }
-                // console.log('初始化', this.selectDeptNode)
+                console.log('初始化', this.selectDeptNode)
                 this.getData()
             })
         },
@@ -331,7 +353,7 @@ export default {
         },
         initForm: function(_selectNode) {
             // this.selectParent = _selectNode ? [_selectNode.id] : []
-            // console.log('_selectNode', _selectNode)
+            console.log('_selectNode', _selectNode)
             return {
                 id: '',
                 deptName: '',
@@ -342,7 +364,8 @@ export default {
                 deptLevel: _selectNode ? (_selectNode.level ? _selectNode.level + 1 : 1) : 1,
                 deptAttr: _selectNode ? _selectNode.deptAttr : '',
                 groupId: _selectNode ? (_selectNode.groupId ? _selectNode.groupId : this.currGroup) : this.currGroup,
-                chargedBy: []
+                chargedBy: [],
+                leadBy: []
             }
         },
         // initDeptTopNodeSelect: function(_deptId) {
@@ -361,6 +384,10 @@ export default {
         },
         dlgOpen: function() {
             const _this = this
+            if (_this.deptGroup) {
+                _this.form.groupId = _this.deptGroup
+                _this.initStaff({ groupId: _this.deptGroup })
+            }
 
             if (_this.form.id) {
                 const postData = {
@@ -379,6 +406,7 @@ export default {
                         _this.form.parentId = res.data.parentId
                         _this.form.parentName = _this.DeptTreeMap[res.data.parentId].label
                         _this.form.chargedBy = res.data.chargedBy ? res.data.chargedBy.split(',') : []
+                        _this.form.leadBy = res.data.leadBy ? res.data.leadBy.split(',') : []
                         _this.form.id = res.data.id
 
                         // _this.selectParent = []
@@ -406,17 +434,7 @@ export default {
         },
         confirmSubmit: function() {
             const _this = this
-            // console.log()
-            if (!_this.form.deptName) {
-                _this.$message.error('请填写部门名称')
-                return
-            }
-            if (!_this.isAdd || (_this.isAdd && !_this.selectDeptNode.id)) {
-                if (!_this.form.deptAttr) {
-                    _this.$message.error('请选择组织架构类型')
-                    return
-                }
-            }
+
             this.$refs.form.validate(valid => {
                 if (valid) {
                     let soaUrl = 'edit'
@@ -426,6 +444,7 @@ export default {
                         // deptLevel: _this.form.deptLevel,
                         groupId: _this.form.groupId,
                         chargedBy: _this.form.chargedBy.join(','),
+                        leadBy: _this.form.leadBy.join(','),
                         id: _this.form.id
                     }
 
@@ -445,13 +464,17 @@ export default {
                             }
                         }
                     }
+                    if (postData.id === postData.parentId) {
+                        _this.$message.error('上级部门不能选自身')
+                        return
+                    }
 
                     if (this.isAdd) {
                         soaUrl = 'add'
                     }
                     this.opRecord(postData, soaUrl)
                 } else {
-                    // console.log('error submit!!')
+                    console.log('error submit!!')
                     return false
                 }
             })
@@ -459,10 +482,10 @@ export default {
         opRefresh: function() {
             this.initData()
             this.dialogVisible = false
-            // this.$notify({
-            //     title: '处理成功',
-            //     type: 'info'
-            // })
+            this.$notify({
+                title: '处理成功',
+                type: 'info'
+            })
         },
         // // 全部展开
         // unFoldAll: function() {
@@ -492,54 +515,54 @@ export default {
 </script>
 
 <style scoped>
-    .custom-tree-node {
-        flex: 1;
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        font-size: 16px;
-        padding-right: 8px;
-    }
-    .custom-tree-container .block-l {
-        /*flex-grow: 2 ;*/
-        float: left;
-        width: 20%;
-        padding: 0 8px 0 0;
-    }
-    .custom-tree-container .block-r {
-        /*flex-grow: 10;*/
-        float: left;
-        width: 80%;
-        /*padding: 0 0 0 8px;*/
-    }
+.custom-tree-node {
+    flex: 1;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    font-size: 16px;
+    padding-right: 8px;
+}
+.custom-tree-container .block-l {
+    /*flex-grow: 2 ;*/
+    float: left;
+    width: 20%;
+    padding: 0 8px 0 0;
+}
+.custom-tree-container .block-r {
+    /*flex-grow: 10;*/
+    float: left;
+    width: 80%;
+    /*padding: 0 0 0 8px;*/
+}
 </style>
 
 <style scoped>
-    .ch-input .el-input__inner {
-        border-radius: 0px;
-        border-color: #32323A;
-    }
-    .ch-input-size {
-        width: 150px;
-    }
-    .ch-button {
-        border-radius: 0px;
-        border-color: #32323A;
-        background-color: #32323A;
-        color: #fff;
-    }
-    .ch-button-warning {
-        margin-left: 10px;
-        border-radius: 0px;
-        border-color: #E6A23C;
-        background-color: #E6A23C;
-        color: #fff;
-    }
-    .ch-button-export {
-        margin-left: 10px;
-        border-radius: 0px;
-        border-color: #98CC1F;
-        background-color: #98CC1F;
-        color: #fff;
-    }
+.ch-input .el-input__inner {
+    border-radius: 0px;
+    border-color: #32323A;
+}
+.ch-input-size {
+    width: 150px;
+}
+.ch-button {
+    border-radius: 0px;
+    border-color: #32323A;
+    background-color: #32323A;
+    color: #fff;
+}
+.ch-button-warning {
+    margin-left: 10px;
+    border-radius: 0px;
+    border-color: #E6A23C;
+    background-color: #E6A23C;
+    color: #fff;
+}
+.ch-button-export {
+    margin-left: 10px;
+    border-radius: 0px;
+    border-color: #98CC1F;
+    background-color: #98CC1F;
+    color: #fff;
+}
 </style>

文件差异内容过多而无法显示
+ 440 - 831
src/views/system/user.vue