From 756e8f1a9b336e7b04b3b54677df031401af4ac9 Mon Sep 17 00:00:00 2001 From: "aoli.qu" <408346101@qq.com> Date: Fri, 25 Feb 2022 16:39:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=9C=BA=E6=9E=84=E6=A0=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/util.js | 7 + src/views/archives/certificate/Index.vue | 127 +++++++++++-------- src/views/data/DataStatisticsList.vue | 47 ++++--- src/views/org/OrgTree.vue | 9 +- src/views/person/PersonForm.vue | 4 +- src/views/person/PersonList.vue | 33 ++--- src/views/person/PersonOrgForm.vue | 25 ++-- src/views/project/form/ProjectPersonForm.vue | 105 +++++++-------- 8 files changed, 192 insertions(+), 165 deletions(-) diff --git a/src/utils/util.js b/src/utils/util.js index a7bcb72..ae0f8a1 100644 --- a/src/utils/util.js +++ b/src/utils/util.js @@ -1,3 +1,4 @@ +import _ from 'lodash' export function timeFix() { const time = new Date() const hour = time.getHours() @@ -67,6 +68,12 @@ export function removeLoadingAnimate(id = '', timeout = 1500) { } export function listToTree(list, tree, parentId) { + list.map(item => { + const index = _.findIndex(list, ['id', item.pid]) + if(index === -1){ + item.pid = 0 + } + }) list.forEach(item => { if (item.pid === parentId) { const child = { diff --git a/src/views/archives/certificate/Index.vue b/src/views/archives/certificate/Index.vue index 2515320..ebae73a 100644 --- a/src/views/archives/certificate/Index.vue +++ b/src/views/archives/certificate/Index.vue @@ -11,7 +11,13 @@
- +
@@ -63,7 +69,7 @@ export default { // import引入的组件需要注入到对象中才能使用 components: { STable, SearchCom }, props: {}, - data() { + data () { // 这里存放数据 return { queryParam: { orgId: '', orgType: 1, type: '' }, @@ -75,7 +81,7 @@ export default { // 组织机构数需要用到的参数 simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, orgTree: [], - defaultExpandedKeys: [], + expandedKeys: [], treeLoading: true, replaceFields: { children: 'children', @@ -91,25 +97,35 @@ export default { { title: '部门信息', width: 'auto', align: 'center', dataIndex: 'bmOrgName', key: 'bmOrgName' }, { title: '证书名称', width: 'auto', align: 'center', dataIndex: 'name', key: 'name' }, { - title: '证书类型', width: 'auto', align: 'center', dataIndex: 'type', key: 'type', customRender: (text, record, index) => { - let textStr = ''; - this.queryOptions[0].options.forEach(element => { if (element.value.toString() === text) textStr = element.name; }); - return textStr; + title: '证书类型', +width: 'auto', +align: 'center', +dataIndex: 'type', +key: 'type', +customRender: (text, record, index) => { + let textStr = '' + this.queryOptions[0].options.forEach(element => { if (element.value.toString() === text) textStr = element.name }) + return textStr } }, { title: '注册日期', width: 'auto', align: 'center', dataIndex: 'registerDate', key: 'registerDate' }, { title: '失效日期', width: 'auto', align: 'center', dataIndex: 'validityEndDate', key: 'validityEndDate' }, { - title: '证书状态', width: '80px', align: 'center', dataIndex: 'state', key: 'state', customRender: (text, record, index) => { - let textStr = ''; - this.state.forEach(element => { if (element.value.toString() === text) textStr = element.name; }); - return textStr; + title: '证书状态', +width: '80px', +align: 'center', +dataIndex: 'state', +key: 'state', +customRender: (text, record, index) => { + let textStr = '' + this.state.forEach(element => { if (element.value.toString() === text) textStr = element.name }) + return textStr } }, { title: '操作', width: '70px', key: 'operation', align: 'center', scopedSlots: { customRender: 'action' } } ], - loadData: null, - }; + loadData: null + } }, // 计算属性 类似于data概念 computed: {}, @@ -118,112 +134,111 @@ export default { // 方法集合 methods: { // 获取到机构树,展开顶级下树节点,考虑到后期数据量变大,不建议全部展开 - getOrgTree() { + getOrgTree () { orgList({ orgType: this.queryParam.orgType }).then(res => { this.treeLoading = false if (!res.code === 200 || !res.data.length) { return } - this.defaultExpandedKeys = [] + this.expandedKeys = [] this.orgTree = listToTree(res.data, [], 0) this.queryParam.orgId = this.orgTree[0].id - for (var item of this.orgTree) { - if (item.pid === 0) { - this.defaultExpandedKeys.push(item.id) - } - } + // 默认展开 + this.orgTree.forEach(item => { + this.expandedKeys.push(item.id) + }) - if (!this.loadData) this.loadData = parameter => { return getArchivesCertificatelist(Object.assign(parameter, this.queryParam)).then(res => { return res }) }; - else this.handleRefresh(); - - }); + if (!this.loadData) this.loadData = parameter => { return getArchivesCertificatelist(Object.assign(parameter, this.queryParam)).then(res => { return res }) } + else this.handleRefresh() + }) }, // 获取词典项 - dictionaryDropDown() { + dictionaryDropDown () { // 获取证书类型 dictionaryDropDown({ dictionaryCode: '0001' }).then((res) => { - this.queryOptions[0].options = res.data; + this.queryOptions[0].options = res.data }) // 获取证书状态 dictionaryDropDown({ dictionaryCode: '0010' }).then((res) => { - this.state = res.data; + this.state = res.data }) }, // 编辑证书类型 - editCertificateType() { - this.$router.push({ path: '/archives/certificate/CertificateType', query: {} }); + editCertificateType () { + this.$router.push({ path: '/archives/certificate/CertificateType', query: {} }) }, // 搜索区查询按钮 - handleRefresh() { + handleRefresh () { this.$refs.table.refresh(true) }, // 切换组织树 - changeOrgType() { - this.queryParam.orgType = this.queryParam.orgType === 1 ? 2 : 1; - this.getOrgTree(); + changeOrgType () { + this.queryParam.orgType = this.queryParam.orgType === 1 ? 2 : 1 + this.getOrgTree() // this.handleClick(); }, // 点击组织树节点时调用 - handleClick(e) { + handleClick (e) { this.queryParam.orgId = e.toString() this.$refs.table.refresh(true) }, // 修改人员证书 - editPersonCertificate(record) { + editPersonCertificate (record) { this.$router.push({ - path: '/archives/certificate/EditCertificate', query: { + path: '/archives/certificate/EditCertificate', +query: { certificateId: record.id } - }); + }) }, // 导出人员证书 - exportPersonCertificate(record) { + exportPersonCertificate (record) { exportCertificate({ id: record.id }).then(res => { - downloadExportFile(res.data); - }); + downloadExportFile(res.data) + }) }, // 删除人员证书 - delPersonCertificate(record) { + delPersonCertificate (record) { delCertificate({ id: record.id }).then(res => { - this.$message.success("删除证书成功!"); + this.$message.success('删除证书成功!') this.$refs.table.refresh(true) - }); + }) } }, // 生命周期 - 创建完成(可以访问当前this实例) - created() { + created () { // 获取组织机构树 - this.getOrgTree(); + this.getOrgTree() // 获取所有证书类型 - this.dictionaryDropDown(); + this.dictionaryDropDown() }, // 生命周期 - 挂载完成(可以访问DOM元素) - mounted() { }, + mounted () { }, // 生命周期 - 创建之前 - beforeCreate() { }, + beforeCreate () { }, // 生命周期 - 挂载之前 - beforeMount() { }, + beforeMount () { }, // 生命周期 - 更新之前 - beforeUpdate() { }, + beforeUpdate () { }, // 生命周期 - 更新之后 - updated() { }, + updated () { }, // 生命周期 - 销毁之前 - beforeDestroy() { }, + beforeDestroy () { }, // 生命周期 - 销毁完成 - destroyed() { }, + destroyed () { }, // 如果页面有keep-alive缓存功能,这个函数会触发 - activated() { } -}; + activated () { } +} \ No newline at end of file + diff --git a/src/views/data/DataStatisticsList.vue b/src/views/data/DataStatisticsList.vue index 37c8286..8c36d0b 100644 --- a/src/views/data/DataStatisticsList.vue +++ b/src/views/data/DataStatisticsList.vue @@ -11,9 +11,9 @@ :onLoadData="orgTree" v-if="orgTree.length" @select="handleClick" - :defaultExpandAll="true" - :defaultExpandedKeys="defaultExpandedKeys" - :defaultSelectedKeys="defaultSelectedKeys" + :defaultExpandAll="false" + :expandedKeys="expandedKeys" + :defaultSelectedKeys="selectedKeys" :replaceFields="replaceFields" />
@@ -60,8 +60,8 @@ v-if="orgTree.length" @select="handleClick" :defaultExpandAll="true" - :defaultExpandedKeys="defaultExpandedKeys" - :defaultSelectedKeys="defaultSelectedKeys" + :expandedKeys="expandedKeys" + :defaultSelectedKeys="selectedKeys" :replaceFields="replaceFields" />
@@ -86,8 +86,8 @@
- 按累计学时排序 - 按年度学时排序 + 按累计学时排序 + 按年度学时排序
前十统计排名
- 公司排名年度学时前十统计 - 公司累计学时学时前十统计 + 公司排名年度学时前十统计 + 公司累计学时学时前十统计
{ return dataOrgStatistics(Object.assign(parameter, this.queryParam)).then((res) => { const data = res.rows - data.forEach(function(val){ + data.forEach(function (val) { val.trainRate = val.trainRate + '%' }) return res @@ -207,7 +207,7 @@ { title: '累计学时', dataIndex: 'sumClassHour' - }, + } ], loadData2: parameter => { return dataPersonalStatistics(Object.assign(parameter, this.queryParam)).then((res) => { @@ -221,7 +221,7 @@ key: 'index', align: 'center', width: 60, - customRender: (text,record,index) => `${index+1}`, + customRender: (text, record, index) => `${index + 1}` }, { title: '姓名', @@ -256,7 +256,7 @@ key: 'index', align: 'center', width: 60, - customRender: (text,record,index) => `${index+1}`, + customRender: (text, record, index) => `${index + 1}` }, { title: '姓名', @@ -287,8 +287,8 @@ orgTree: [], selectedRowKeys: [], selectedRows: [], - defaultExpandedKeys: [], - defaultSelectedKeys: [], + expandedKeys: [], + selectedKeys: [], treeLoading: true, simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, replaceFields: { @@ -314,7 +314,7 @@ this.$refs.table1.refresh(true) } if (key === '2') { - this.$nextTick(()=>{ + this.$nextTick(() => { // 添加columns事件 this.$refs.table2.refresh(true) this.$refs.toFocus.$el.focus() @@ -329,16 +329,15 @@ if (!res.code === 200 || !res.data.length) { return } - this.defaultExpandedKeys = [] - this.defaultSelectedKeys = [] + this.expandedKeys = [] + this.selectedKeys = [] this.orgTree = listToTree(res.data, [], 0) this.orgId = this.orgTree[0].id - this.defaultSelectedKeys.push(this.orgId) - for (var item of this.orgTree) { - if (item.pid === 0) { - this.defaultExpandedKeys.push(item.id) - } - } + this.selectedKeys.push(this.orgId) + // 默认展开 + this.orgTree.forEach(item => { + this.expandedKeys.push(item.id) + }) }) }, /** diff --git a/src/views/org/OrgTree.vue b/src/views/org/OrgTree.vue index b17955d..2babcce 100644 --- a/src/views/org/OrgTree.vue +++ b/src/views/org/OrgTree.vue @@ -109,11 +109,10 @@ export default { return } const orgTree = listToTree(res.data, [], rootParentId) - for (var item of orgTree) { - if (item.pid === 0) { - this.expandedKeys.push(item.id) - } - } + // 默认展开 + orgTree.forEach(item => { + this.expandedKeys.push(item.id) + }) generateList(orgTree) this.orgList = orgTree }) diff --git a/src/views/person/PersonForm.vue b/src/views/person/PersonForm.vue index 83e013b..6de81d7 100644 --- a/src/views/person/PersonForm.vue +++ b/src/views/person/PersonForm.vue @@ -62,7 +62,7 @@ - + @@ -72,7 +72,7 @@ diff --git a/src/views/person/PersonList.vue b/src/views/person/PersonList.vue index 5bfdbb5..f57d8cb 100644 --- a/src/views/person/PersonList.vue +++ b/src/views/person/PersonList.vue @@ -9,9 +9,9 @@ :onLoadData="orgTree" v-if="orgTree.length" @select="handleClick" - :defaultExpandAll="true" - :defaultExpandedKeys="defaultExpandedKeys" - :defaultSelectedKeys="defaultSelectedKeys" + :defaultExpandAll="false" + :expandedKeys="expandedKeys" + :defaultSelectedKeys="selectedKeys" :replaceFields="replaceFields" />
@@ -165,7 +165,7 @@ export default { }, { title: '年度学时要求', - dataIndex: 'classHours' + dataIndex: 'planClassHour' }, { title: '注册时间', @@ -175,6 +175,7 @@ export default { ], // 加载数据方法 必须为 Promise 对象 loadData: parameter => { + if (!this.orgId) return [] return personPage(Object.assign(parameter, this.queryParam)).then((res) => { return res }) @@ -182,8 +183,8 @@ export default { orgTree: [], selectedRowKeys: [], selectedRows: [], - defaultExpandedKeys: [], - defaultSelectedKeys: [], + expandedKeys: [], + selectedKeys: [], treeLoading: true, simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, replaceFields: { @@ -226,26 +227,28 @@ export default { async getOrgTree () { await orgList({ orgType: this.orgType }).then(res => { this.treeLoading = false + this.expandedKeys = [] + this.selectedKeys = [] if (!res.code === 200 || !res.data.length) { + this.orgTree = [] return } - this.defaultExpandedKeys = [] - this.defaultSelectedKeys = [] this.orgTree = listToTree(res.data, [], rootParentId) this.orgId = this.orgTree[0].id - this.defaultSelectedKeys.push(this.orgId) - for (var item of this.orgTree) { - if (item.pid === 0) { - this.defaultExpandedKeys.push(item.id) - } - } + this.selectedKeys.push(this.orgId) + // 默认展开 + this.orgTree.forEach(item => { + this.expandedKeys.push(item.id) + }) + + this.handleClick(this.orgId) }) }, async changeOrgType () { this.orgType = this.orgType === 1 ? 2 : 1 await this.getOrgTree() // 此处使用async和await 由于需要等待orgTree的返回 再往下依据结果继续执行 - this.handleClick(this.orgId) + // this.handleClick(this.orgId) }, /** * 重置密码 diff --git a/src/views/person/PersonOrgForm.vue b/src/views/person/PersonOrgForm.vue index 44f3008..c07e7f0 100644 --- a/src/views/person/PersonOrgForm.vue +++ b/src/views/person/PersonOrgForm.vue @@ -12,9 +12,9 @@ :treeData="orgTree" v-if="orgTree.length" @select="onSelect" - :defaultExpandAll="true" - :defaultExpandedKeys="defaultExpandedKeys" - :defaultSelectedKeys="defaultSelectedKeys" + :defaultExpandAll="false" + :expandedKeys="expandedKeys" + :defaultSelectedKeys="selectedKeys" :replaceFields="replaceFields" > @@ -105,8 +105,8 @@ export default { replaceFields: { children: 'children', title: 'name', key: 'id', value: 'id' }, expandedKeys: [], autoExpandParent: true, - defaultExpandedKeys: [], - defaultSelectedKeys: [], + expandedKeys: [], + selectedKeys: [], orgTree: [], orgId: this.$route.query.orgId, orgType: 2, @@ -227,16 +227,15 @@ export default { return } var rootParentId = res.data[0].pid - this.defaultExpandedKeys = [] - this.defaultSelectedKeys = [] + this.expandedKeys = [] + this.selectedKeys = [] this.orgTree = listToTree(res.data, [], rootParentId) this.orgId = this.orgTree[0].id - this.defaultSelectedKeys.push(this.orgId) - for (var item of this.orgTree) { - if (item.pid === 0) { - this.defaultExpandedKeys.push(item.id) - } - } + this.selectedKeys.push(this.orgId) + // 默认展开 + this.orgTree.forEach(item => { + this.expandedKeys.push(item.id) + }) }) } }, diff --git a/src/views/project/form/ProjectPersonForm.vue b/src/views/project/form/ProjectPersonForm.vue index 0511479..2fd15ee 100644 --- a/src/views/project/form/ProjectPersonForm.vue +++ b/src/views/project/form/ProjectPersonForm.vue @@ -10,7 +10,13 @@
- +
@@ -71,14 +77,14 @@ export default { // import引入的组件需要注入到对象中才能使用 components: { orgList, - STable, + STable }, props: { projectForm: { - type: Object, - }, + type: Object + } }, - data() { + data () { // 这里存放数据 return { form: this.projectForm, @@ -87,7 +93,7 @@ export default { replaceFields: { children: 'children', title: 'name', key: 'id', value: 'id' }, expandedKeys: [], autoExpandParent: true, - defaultExpandedKeys: [], + expandedKeys: [], selectedRowKeys: [], selectedRows: this.projectForm.projectPersonLists || [], orgTree: [], @@ -96,28 +102,28 @@ export default { columns: [ { title: '序号', key: 'id', dataIndex: 'id', width: 60, scopedSlots: { customRender: 'serial' } }, { title: '姓名', dataIndex: 'name' }, - { title: '用户名', dataIndex: 'userName' }, + { title: '用户名', dataIndex: 'userName' } ], - //人员列表数据 + // 人员列表数据 loadData: (parameter) => { return personPage(Object.assign(parameter, this.queryParam)).then((res) => { return res }) - }, + } } }, // 计算属性 类似于data概念 computed: { - hasSelected() { + hasSelected () { return this.selectedRowKeys.length > 0 - }, + } }, // 监控data中的数据变化 watch: {}, // 方法集合 methods: { - //下一步 - toNext() { + // 下一步 + toNext () { this.form.projectPersonLists = this.selectedRows this.form.personIds = this.selectedRowKeys if (this.form.personIds.length > 0) { @@ -126,35 +132,35 @@ export default { this.$message.warning('培训人员不能为空') } }, - //上一步 - toPrev() { + // 上一步 + toPrev () { this.form.projectPersonLists = this.selectedRows this.form.personIds = this.selectedRowKeys this.$emit('prevStep', this.form) }, /** 表格行选中后触发 */ - onSelectChange(selectedRowKeys, selectedRows) { + onSelectChange (selectedRowKeys, selectedRows) { console.log('selectedRowKeys changed: ', selectedRowKeys) console.log('选择的表格数据 : ', selectedRows) this.selectedRowKeys = this.uniqueKeys([...this.selectedRowKeys, ...selectedRowKeys]) this.selectedRows = this.unique([...this.selectedRows, ...selectedRows]) }, - //对象去重 - unique(arr) { + // 对象去重 + unique (arr) { const res = new Map() return arr.filter((arr) => !res.has(arr.id) && res.set(arr.id, 1)) }, - //key去重 - uniqueKeys(arr) { + // key去重 + uniqueKeys (arr) { const res = new Map() return arr.filter((arr) => !res.has(arr) && res.set(arr, 1)) }, - //列表点击删除列表项 - changeList(item) { + // 列表点击删除列表项 + changeList (item) { console.log('列表点击删除列表项 : ', item) this.selectedRows = this.selectedRows.filter(function (i) { return i.id != item.item.id @@ -164,78 +170,77 @@ export default { }) }, - //清空选择 - removeAllSelece() { + // 清空选择 + removeAllSelece () { this.selectedRowKeys = [] this.selectedRows = [] }, - //选中后触发 - onSelect(selectedKey, info) { + // 选中后触发 + onSelect (selectedKey, info) { console.log('selected', selectedKey, info) this.queryParam.orgId = selectedKey.toString() this.orgId = selectedKey.toString() this.$refs.table.refresh(true) }, - //树使用的方法 - onExpand(expandedKeys) { + // 树使用的方法 + onExpand (expandedKeys) { this.expandedKeys = expandedKeys this.autoExpandParent = false }, - //编辑时初始化人员列表初始化 - initPersonList() { + // 编辑时初始化人员列表初始化 + initPersonList () { if (this.form.projectPersonLists) { this.selectedRowKeys = [], this.form.projectPersonLists.forEach(element => { this.selectedRowKeys.push(element.id) - }); - console.log('初始化的值',this.selectedRowKeys) + }) + console.log('初始化的值', this.selectedRowKeys) } }, /** * 获取到机构树,展开顶级下树节点,考虑到后期数据量变大,不建议全部展开 */ - async getOrgTree() { + async getOrgTree () { await orgList({ orgType: this.orgType }).then((res) => { this.treeLoading = false if (!res.code === 200 || !res.data.length) { return } - this.defaultExpandedKeys = [] + this.expandedKeys = [] this.orgTree = listToTree(res.data, [], rootParentId) this.orgId = this.orgTree[0].id - for (var item of this.orgTree) { - if (item.pid === 0) { - this.defaultExpandedKeys.push(item.id) - } - } + // 默认展开 + this.orgTree.forEach(item => { + this.expandedKeys.push(item.id) + }) }) - }, + } }, // 生命周期 - 创建完成(可以访问当前this实例) - created() { + created () { this.getOrgTree() this.initPersonList() }, // 生命周期 - 挂载完成(可以访问DOM元素) - mounted() { }, + mounted () { }, // 生命周期 - 创建之前 - beforeCreate() { }, + beforeCreate () { }, // 生命周期 - 挂载之前 - beforeMount() { }, + beforeMount () { }, // 生命周期 - 更新之前 - beforeUpdate() { }, + beforeUpdate () { }, // 生命周期 - 更新之后 - updated() { }, + updated () { }, // 生命周期 - 销毁之前 - beforeDestroy() { }, + beforeDestroy () { }, // 生命周期 - 销毁完成 - destroyed() { }, + destroyed () { }, // 如果页面有keep-alive缓存功能,这个函数会触发 - activated() { }, + activated () { } } \ No newline at end of file +