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

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

@ -8,7 +8,7 @@
</a-button> </a-button>
<div class="detail-title"> <div class="detail-title">
<h2>律所统计详情</h2> <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>
</div> </div>
@ -24,7 +24,7 @@
<div class="excel-table-container"> <div class="excel-table-container">
<div class="excel-table-header"> <div class="excel-table-header">
<div class="excel-table-title">律所服务统计报表</div> <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>
<div class="excel-table"> <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-input v-model:value="queryForm.lawyerName" placeholder="请输入律师姓名" style="width: 150px" />
</a-form-item> </a-form-item>
<a-form-item label="律所名称"> <!--<a-form-item label="律所名称">
<a-input v-model:value="queryForm.firmName" :placeholder="isAdmin ? '请输入机构名称' : '请输入律所名称'" style="width: 150px" /> <a-input v-model:value="queryForm.firmName" :placeholder="isAdmin ? '请输入机构名称' : '请输入律所名称'" style="width: 150px" />
</a-form-item> </a-form-item>-->
<a-form-item> <a-form-item>
<a-button type="primary" @click="handleSearch"> <a-button type="primary" @click="handleSearch">

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

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

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

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

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

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

Loading…
Cancel
Save