Browse Source

feat:报表

master
“wangzihua” 3 months ago
parent
commit
4a4fbc85ac
  1. 15
      src/components/system/department-tree-select/index.vue
  2. 4
      src/components/system/service-count/firm-statistics-detail.vue
  3. 4
      src/components/system/service-count/quarter-statistics.vue
  4. 15
      src/views/business/erp/service/service-applications-count.vue
  5. 2
      src/views/system/account/components/center/index.vue
  6. 4
      src/views/system/employee/components/employee-form-modal/index.vue

15
src/components/system/department-tree-select/index.vue

@ -20,6 +20,7 @@
allow-clear
tree-default-expand-all
:multiple="props.multiple"
:filterTreeNode="filterTreeNode"
@change="onChange"
/>
</template>
@ -52,6 +53,20 @@
emit('update:value', e);
}
//
function filterTreeNode(inputValue, treeNode) {
//
const departmentName = treeNode.departmentName || '';
//
if (!inputValue) {
return true;
}
//
return departmentName.includes(inputValue);
}
defineExpose({
queryDepartmentTree,
});

4
src/components/system/service-count/firm-statistics-detail.vue

@ -8,7 +8,7 @@
</a-button>
<div class="detail-title">
<h2>律所统计详情</h2>
<div class="detail-subtitle">统计时间{{ queryParams.year }}{{ queryParams.quarter }}季度</div>
<div class="detail-subtitle">统计时间{{ queryParams.year }}<span v-if="queryParams.quarter != null">{{ queryParams.quarter }}季度</span></div>
</div>
</div>
@ -24,7 +24,7 @@
<div class="excel-table-container">
<div class="excel-table-header">
<div class="excel-table-title">律所服务统计报表</div>
<div class="excel-table-subtitle">统计时间{{ queryParams.year }}{{ queryParams.quarter }}季度</div>
<div class="excel-table-subtitle">统计时间{{ queryParams.year }}<span v-if="queryParams.quarter != null">{{ queryParams.quarter }}季度</span></div>
</div>
<div class="excel-table">

4
src/components/system/service-count/quarter-statistics.vue

@ -30,9 +30,9 @@
<a-input v-model:value="queryForm.lawyerName" placeholder="请输入律师姓名" style="width: 150px" />
</a-form-item>
<a-form-item label="律所名称">
<!--<a-form-item label="律所名称">
<a-input v-model:value="queryForm.firmName" :placeholder="isAdmin ? '请输入机构名称' : '请输入律所名称'" style="width: 150px" />
</a-form-item>
</a-form-item>-->
<a-form-item>
<a-button type="primary" @click="handleSearch">

15
src/views/business/erp/service/service-applications-count.vue

@ -37,9 +37,12 @@
</a-select>
</a-form-item>
<!--<a-form-item label="机构名称" :label-col="{ span: 4 }" :wrapper-col="{ span: 8 }">
<a-input v-model:value="queryForm.firmName" placeholder="请输入机构名称(可选)" style="width: 300px" />
</a-form-item>-->
<a-form-item label="机构名称" :label-col="{ span: 4 }" :wrapper-col="{ span: 8 }">
<!--<a-input v-model:value="queryForm.firmName" placeholder="请输入机构名称(可选)" style="width: 300px; margin-bottom: 8px;" />-->
<div class="department-selector">
<DepartmentTreeSelect v-model:value="queryForm.firmId" style="width: 300px;" />
</div>
</a-form-item>
<a-form-item :wrapper-col="{ span: 8, offset: 4 }">
<a-button type="primary" @click="handleQuery" :loading="queryLoading" style="margin-right: 8px;">
@ -88,6 +91,7 @@ import { ExportOutlined, SearchOutlined, ReloadOutlined, ArrowLeftOutlined } fro
import { message } from 'ant-design-vue';
import QuarterStatistics from '/@/components/system/service-count/quarter-statistics.vue';
import FirmStatisticsDetail from '/@/components/system/service-count/firm-statistics-detail.vue';
import DepartmentTreeSelect from '/@/components/system/department-tree-select/index.vue';
import { loginApi } from '/@/api/system/login-api';
import { serviceApplicationsApi } from '/@/api/business/service-applications/service-applications-api';
@ -100,7 +104,8 @@ const hasQueried = ref(false);
const queryForm = reactive({
quarter: null,
year: new Date().getFullYear(),
//firmName: ''
//firmName: '',
firmId: null
});
const tableData = ref([]);
const summaryData = ref(null);
@ -158,6 +163,7 @@ async function handleQuery() {
quarter: queryForm.quarter,
year: queryForm.year,
firmName: queryForm.firmName,
firmId: queryForm.firmId,
//
pageNum: 1,
pageSize: 500
@ -220,6 +226,7 @@ function handleReset() {
queryForm.quarter = null;
queryForm.year = new Date().getFullYear();
queryForm.firmName = '';
queryForm.firmId = null;
tableData.value = [];
summaryData.value = null;
hasQueried.value = false;

2
src/views/system/account/components/center/index.vue

@ -130,7 +130,7 @@
{ pattern: regular.phone, message: '请输入正确的手机号码', trigger: 'blur' },
],
gender: [{ required: true, message: '性别不能为空' }],
email: [{ required: true, message: '请输入邮箱' }],
//email: [{ required: true, message: '' }],
};
//
let avatarUrl = ref();

4
src/views/system/employee/components/employee-form-modal/index.vue

@ -49,7 +49,7 @@
</a-form-item>
<a-form-item label="角色" name="roleIdList">
<a-select mode="multiple" v-model:value="form.roleIdList" optionFilterProp="title" placeholder="请选择角色">
<a-select v-model:value="form.roleIdList" optionFilterProp="title" placeholder="请选择角色">
<a-select-option v-for="item in roleList" :key="item.roleId" :title="item.roleName">{{ item.roleName }}</a-select-option>
</a-select>
</a-form-item>
@ -152,7 +152,7 @@
departmentId: [{ required: true, message: '部门不能为空' }],
disabledFlag: [{ required: true, message: '状态不能为空' }],
leaveFlag: [{ required: true, message: '在职状态不能为空' }],
email: [{ required: true, message: '请输入邮箱' }],
//email: [{ required: true, message: '' }],
};
//

Loading…
Cancel
Save