Просмотр исходного кода

Merge branch 'master' of http://119.23.210.103:3000/wy/zdqy_firm_former

cfort 1 год назад
Родитель
Сommit
d0123c3d96

+ 6 - 2
src/business/platform/form/formrender/dynamic-form/dynamic-form-table.vue

@@ -855,18 +855,22 @@ export default {
                         // this.dataModel.push(data)
                     })
                     // 后置事件
+                    let importCallBack = null
                     if (this.actionCode === 'importData') {
                         this.afterScript(this.actionCode, this.actionPosition, {
                             button: this.actionButton,
                             importList: list,
-                            fullImportList: [...this.dataModel, ...list]
+                            fullImportList: [...this.dataModel, ...list],
+                            importFunction (a) {
+                                importCallBack = a
+                            }
                         })
                     }
 
                     this.importTableDialogVisible = false
                     this.importValue = null
                     this.importList = []
-                    ActionUtils.success('导入成功')
+                    importCallBack ? importCallBack() : ActionUtils.success('导入成功')
                 })
             } else {
                 const formData = FormUtils.getTableDefaultColumnData(this.field)

+ 159 - 36
src/views/business/attendance/attendanceDetails.vue

@@ -19,24 +19,24 @@
         >
             <!-- 自定义多级表头 -->
             <template #prepend-column>
-                <el-table-column key="yong_hu_id_" prop="yong_hu_id_" label="用户" width="80">
+                <el-table-column key="userName" prop="userName" label="姓名" width="80">
                     <template #default="{ row }">
                         <el-tag style="margin: 2px;">
-                            {{ getUserLabel(row.yong_hu_id_) }}
+                            {{ row.userName }}
                         </el-tag>
                     </template>
                 </el-table-column>
                 <!-- 基本信息分组 -->
                 <el-table-column label="基本信息">
-                    <!--<el-table-column prop="yong_hu_id_" title="用户" key="yong_hu_id_" width="80" />-->
-                    <el-table-column key="gong_hao_" prop="gong_hao_" label="工号" width="80" />
-                    <el-table-column key="bu_men_" prop="bu_men_" label="部门" width="100">
+                    <!--<el-table-column prop="yong_hu_id_" title="姓名" key="yong_hu_id_" width="80" />-->
+                    <el-table-column key="deptName" prop="deptName" label="部门" width="100">
                         <template #default="{ row }">
                             <el-tag style="margin: 2px;">
-                                {{ getDeptLabel(row.bu_men_) }}
+                                {{ row.deptName }}
                             </el-tag>
                         </template>
                     </el-table-column>
+                    <el-table-column key="gong_hao_" prop="gong_hao_" label="工号" width="80" />
                 </el-table-column>
                 <!-- 班次信息分组 -->
                 <el-table-column label="班次信息">
@@ -84,6 +84,7 @@
 <script>
 import ActionUtils from '@/utils/action'
 import FixHeight from '@/mixins/height'
+import IbpsExport from '@/plugins/export'
 import color from '@/store/modules/ibps/modules/color'
 
 export default {
@@ -96,7 +97,7 @@ export default {
             userOption,
             deptOption,
             title: '考勤明细统计',
-            pkKey: 'pal_ban_lu_l_uL', // 主键对应数据库字段
+            pkKey: 'id_', // 主键对应数据库字段
             loading: true,
             height: document.clientHeight,
             listData: [],
@@ -108,16 +109,16 @@ export default {
             listConfig: {
                 toolbars: [
                     { key: 'search', icon: 'ibps-icon-search', label: '查询', type: 'primary' },
-                    { key: 'export', icon: 'ibps-icon-download', label: '导出', type: 'warning' }
+                    { key: 'export', icon: 'ibps-icon-download', label: '导出', type: 'primary' }
                 ],
                 searchForm: {
                     labelWidth: 100,
                     forms: [
                         { prop: 'Q^pai_ban_ming_chen^SL', label: '排班名称' },
-                        { prop: 'Q^yong_hu_id_^S', label: '用户' },
+                        { prop: 'Q^yong_hu_id_^S', label: '姓名' },
                         { prop: 'Q^bu_men_^SL', label: '部门', fieldType: 'select', options: deptOption },
-                        { prop: 'Q^kao_qin_zhuang_ta^SL', label: '考勤状态' },
-                        { prop: ['Q^ri_qi_^DG', 'Q^ri_qi_^DL'], label: '日期范围', fieldType: 'daterange' }
+                        { prop: 'Q^kao_qin_zhuang_ta^SL', label: '考勤状态', fieldType: 'select', options: [{ value: '正常', label: '正常' }, { value: '异常', label: '异常' }] },
+                        { prop: ['Q^ri_qi_^DL', 'Q^ri_qi_^DG'], label: '日期范围', fieldType: 'daterange' }
                     ]
                 },
                 columns: []
@@ -126,51 +127,96 @@ export default {
     },
     computed: {
     },
-    created() {
+    created () {
         this.loadData()
     },
     methods: {
         // 加载数据
-        loadData() {
+        loadData () {
             this.loading = true
-            const sql = `select * FROM t_attendance_detail 
-                        LIMIT ${this.pagination.limit} 
-                        OFFSET ${(this.pagination.currentPage-1)*this.pagination.limit}`
-            debugger
+            const sql = this.getSearchSql()
             this.$common.request('sql', sql).then(res => {
                 this.listData = res.variables.data
-                this.pagination.total = res.totalCount
+                // 做部门和姓名处理
+                this.listData.forEach(item => {
+                    item.userName = this.getUserLabel(item.yong_hu_id_)
+                    item.deptName = this.getDeptLabel(item.bu_men_)
+                })
+                // this.pagination.total = res.totalCount
             }).finally(() => {
                 this.loading = false
             })
         },
-        getUserLabel(userId) {
+        getUserLabel (userId) {
             const user = this.userOption.find(item => item.value === userId)
             return user ? user.label : ''
         },
-        getDeptLabel(positionId) {
+        getDeptLabel (positionId) {
             const dept = this.deptOption.find(item => item.value === positionId)
             return dept ? dept.label : ''
         },
-        // 构造查询参数
-        getSearchParams() {
-            const params = this.$refs.crud?.getSearcFormData() || {}
-            return ActionUtils.formatParams(params, this.pagination, this.sorts)
+        /**
+         * 获取格式化参数
+         */
+        getSearchFormData () {
+            const { first, second } = this.$store.getters.level || {}
+            const searchParam = this.$refs['crud'] ? this.$refs['crud'].getSearcFormData() : {}
+            searchParam['Q^di_dian_^S'] = second || first
+            return ActionUtils.formatParams(searchParam, this.pagination, this.sorts)
         },
+        getSearchSql () {
+            let sql = `select * FROM t_attendance_detail`
+            const params = this.getSearchFormData()
+            // 定义操作符映射
+            const operatorMap = {
+                'S': '=',
+                'SL': 'LIKE',
+                'DG': '<=',
+                'DL': '>='
+            }
+            // 如果有查询条件,构建 WHERE 子句
+            if (params.parameters && params.parameters.length > 0) {
+                const conditions = []
+                params.parameters.forEach(item => {
+                    const { key, value } = item
+                    const parts = key.split('^') // 格式: Q^field^operator
+                    if (parts.length === 3 && parts[0] === 'Q') {
+                        const field = parts[1] // 字段名
+                        const operatorKey = parts[2] // 操作符(S/SL/DG/DL)
+                        const operator = operatorMap[operatorKey]
+                        if (operator) {
+                            let condition
+                            if (operator === 'LIKE') {
+                                condition = `${field} LIKE '%${value}%'` // LIKE 模糊查询
+                            } else {
+                                condition = `${field} ${operator} '${value}'` // 其他操作符(=, <=, >=)
+                            }
+                            conditions.push(condition)
+                        }
+                    }
+                })
 
+                if (conditions.length > 0) {
+                    sql += ' WHERE ' + conditions.join(' AND ')
+                }
+            }
+            // 添加分页
+            sql += ` LIMIT ${this.pagination.limit} OFFSET ${(this.pagination.currentPage - 1) * this.pagination.limit}`
+            return sql
+        },
         // 分页/排序处理
-        handlePaginationChange(page) {
+        handlePaginationChange (page) {
             ActionUtils.setPagination(this.pagination, page)
             this.loadData()
         },
-        handleSortChange(sort) {
+        handleSortChange (sort) {
             ActionUtils.setSorts(this.sorts, sort)
             this.loadData()
         },
 
         // 操作处理
-        handleAction(command, _, selection) {
-            switch(command) {
+        handleAction (command, _, selection) {
+            switch (command) {
                 case 'search':
                     ActionUtils.setFirstPagination(this.pagination)
                     this.loadData()
@@ -180,14 +226,91 @@ export default {
                     break
             }
         },
-        // 导出数据(需实现后端接口)
-        exportData() {
-            const sql = 'SELECT * FROM t_attendance_detail'
-            this.$common.request('export', { sql }).then(res => {
-                const link = document.createElement('a')
-                link.href = URL.createObjectURL(new Blob([res.data]))
-                link.download = `考勤明细_${new Date().toLocaleDateString()}.csv`
-                link.click()
+        // 导出数据
+        exportData () {
+            const exportColumns = [
+                {
+                    field_name: 'userName',
+                    label: '姓名',
+                    name: 'userName'
+                },
+                {
+                    field_name: 'deptName',
+                    label: '部门',
+                    name: 'deptName'
+                },
+                {
+                    field_name: 'gong_hao_',
+                    label: '工号',
+                    name: 'gong_hao_'
+                },
+                {
+                    field_name: 'pai_ban_ming_chen',
+                    label: '排班名称',
+                    name: 'pai_ban_ming_chen'
+                },
+                {
+                    field_name: 'ban_ci_ming_',
+                    label: '班次名',
+                    name: 'ban_ci_ming_'
+                },
+                {
+                    field_name: 'ban_ci_bie_ming_',
+                    label: '班次别名',
+                    name: 'ban_ci_bie_ming_'
+                },
+                {
+                    field_name: 'ri_qi_',
+                    label: '日期',
+                    name: 'ri_qi_'
+                },
+                {
+                    field_name: 'da_ka_shi_jian_1_',
+                    label: '上班打卡时间',
+                    name: 'da_ka_shi_jian_1_'
+                },
+                {
+                    field_name: 'zhuang_tai_1_',
+                    label: '上班打卡状态',
+                    name: 'zhuang_tai_1_'
+                },
+                {
+                    field_name: 'da_ka_shi_jian_2_',
+                    label: '下班打卡时间',
+                    name: 'da_ka_shi_jian_2_'
+                },
+                {
+                    field_name: 'zhuang_tai_2_',
+                    label: '下班打卡状态',
+                    name: 'zhuang_tai_2_'
+                },
+                {
+                    field_name: 'chi_dao_shi_chang',
+                    label: '迟到时长(分钟)',
+                    name: 'chi_dao_shi_chang'
+                },
+                {
+                    field_name: 'da_ka_ci_shu_',
+                    label: '打卡次数',
+                    name: 'da_ka_ci_shu_'
+                },
+                {
+                    field_name: 'kao_qin_zhuang_ta',
+                    label: '考勤状态',
+                    name: 'kao_qin_zhuang_ta'
+                }
+            ]
+            this.handleExport(exportColumns, this.listData, `考勤明细统计数据`)
+        },
+        handleExport (columns, data, title, message, nameKey = 'name') {
+            IbpsExport.excel({
+                columns: columns,
+                data: data,
+                nameKey: nameKey,
+                title: title
+            }).then(() => {
+                const msg = message || '导出成功'
+                ActionUtils.success(msg)
             })
         }
     }

+ 333 - 0
src/views/business/attendance/personAttendanceDetails.vue

@@ -0,0 +1,333 @@
+<template>
+    <div class="main-container">
+        <ibps-crud
+            ref="crud"
+            :display-field="title"
+            :height="height"
+            :data="listData"
+            :toolbars="listConfig.toolbars"
+            :search-form="listConfig.searchForm"
+            :pk-key="pkKey"
+            :columns="listConfig.columns"
+            :row-handle="listConfig.rowHandle"
+            :pagination="pagination"
+            :loading="loading"
+            @action-event="handleAction"
+            @sort-change="handleSortChange"
+            @pagination-change="handlePaginationChange"
+            @row-dblclick="handleRowDblclick"
+        >
+            <!-- 自定义多级表头 -->
+            <template #prepend-column>
+                <el-table-column key="userName" prop="userName" label="姓名" width="80">
+                    <template #default="{ row }">
+                        <el-tag style="margin: 2px;">
+                            {{ row.userName }}
+                        </el-tag>
+                    </template>
+                </el-table-column>
+                <!-- 基本信息分组 -->
+                <el-table-column label="基本信息">
+                    <!--<el-table-column prop="yong_hu_id_" title="姓名" key="yong_hu_id_" width="80" />-->
+                    <el-table-column key="deptName" prop="deptName" label="部门" width="100">
+                        <template #default="{ row }">
+                            <el-tag style="margin: 2px;">
+                                {{ row.deptName }}
+                            </el-tag>
+                        </template>
+                    </el-table-column>
+                    <el-table-column key="gong_hao_" prop="gong_hao_" label="工号" width="80" />
+                </el-table-column>
+                <!-- 班次信息分组 -->
+                <el-table-column label="班次信息">
+                    <el-table-column key="pai_ban_ming_chen" prop="pai_ban_ming_chen" label="排班名称" width="120" />
+                    <el-table-column key="ban_ci_ming_" prop="ban_ci_ming_" label="班次名" width="80" />
+                    <el-table-column key="ban_ci_bie_ming_" prop="ban_ci_bie_ming_" label="班次别名" width="80" />
+                </el-table-column>
+                <el-table-column key="ri_qi_" prop="ri_qi_" label="日期" width="100" />
+                <!-- 上班分组 -->
+                <el-table-column label="上班">
+                    <el-table-column key="da_ka_shi_jian_1_" prop="da_ka_shi_jian_1_" label="打卡时间" width="120" />
+                    <el-table-column key="zhuang_tai_1_" prop="zhuang_tai_1_" label="打卡状态" width="80">
+                        <template #default="{ row }">
+                            <span :style="{ color: row.zhuang_tai_2_=='异常' ? 'red' : 'inherit' }">
+                                {{ row.zhuang_tai_2_ }}
+                            </span>
+                        </template>
+                    </el-table-column>
+                </el-table-column>
+                <!-- 下班分组 -->
+                <el-table-column label="下班">
+                    <el-table-column key="da_ka_shi_jian_2_" prop="da_ka_shi_jian_2_" label="打卡时间" width="120" />
+                    <el-table-column key="zhuang_tai_2_" prop="zhuang_tai_2_" label="打卡状态" width="80">
+                        <template #default="{ row }">
+                            <span :style="{ color: row.zhuang_tai_2_=='异常' ? 'red' : 'inherit' }">
+                                {{ row.zhuang_tai_2_ }}
+                            </span>
+                        </template>
+                    </el-table-column>
+                </el-table-column>
+                <el-table-column key="chi_dao_shi_chang" prop="chi_dao_shi_chang" label="迟到时长(分钟)" width="100" />
+                <el-table-column key="da_ka_ci_shu_" prop="da_ka_ci_shu_" label="打卡次数" width="70" />
+                <el-table-column key="kao_qin_zhuang_ta" prop="kao_qin_zhuang_ta" label="考勤状态" width="80">
+                    <template #default="{ row }">
+                        <span :style="{ color: row.kao_qin_zhuang_ta=='异常' ? 'red' : 'inherit' }">
+                            {{ row.kao_qin_zhuang_ta }}
+                        </span>
+                    </template>
+                </el-table-column>
+            </template>
+        </ibps-crud>
+    </div>
+</template>
+
+<script>
+import ActionUtils from '@/utils/action'
+import FixHeight from '@/mixins/height'
+import IbpsExport from '@/plugins/export'
+import color from '@/store/modules/ibps/modules/color'
+
+export default {
+    mixins: [FixHeight],
+    data () {
+        const { userList = [], deptList = [] } = this.$store.getters || {}
+        const userOption = userList.map(item => ({ label: item.userName, value: item.userId }))
+        const deptOption = deptList.map(item => ({ label: item.positionName, value: item.positionId }))
+        return {
+            userOption,
+            deptOption,
+            title: '我的考勤明细统计',
+            pkKey: 'id_', // 主键对应数据库字段
+            loading: true,
+            height: document.clientHeight,
+            listData: [],
+            pagination: {
+                currentPage: 1,
+                limit: 20
+            },
+            sorts: {},
+            listConfig: {
+                toolbars: [
+                    { key: 'search', icon: 'ibps-icon-search', label: '查询', type: 'primary' },
+                    { key: 'export', icon: 'ibps-icon-download', label: '导出', type: 'primary' }
+                ],
+                searchForm: {
+                    labelWidth: 100,
+                    forms: [
+                        { prop: 'Q^pai_ban_ming_chen^SL', label: '排班名称' },
+                        { prop: 'Q^kao_qin_zhuang_ta^SL', label: '考勤状态', fieldType: 'select', options: [{ value: '正常', label: '正常' }, { value: '异常', label: '异常' }] },
+                        { prop: ['Q^ri_qi_^DL', 'Q^ri_qi_^DG'], label: '日期范围', fieldType: 'daterange' }
+                    ]
+                },
+                columns: []
+            }
+        }
+    },
+    computed: {
+    },
+    created () {
+        this.loadData()
+    },
+    methods: {
+        // 加载数据
+        loadData () {
+            this.loading = true
+            const sql = this.getSearchSql()
+            this.$common.request('sql', sql).then(res => {
+                this.listData = res.variables.data
+                // 做部门和姓名处理
+                this.listData.forEach(item => {
+                    item.userName = this.getUserLabel(item.yong_hu_id_)
+                    item.deptName = this.getDeptLabel(item.bu_men_)
+                })
+                // this.pagination.total = res.totalCount
+            }).finally(() => {
+                this.loading = false
+            })
+        },
+        getUserLabel (userId) {
+            const user = this.userOption.find(item => item.value === userId)
+            return user ? user.label : ''
+        },
+        getDeptLabel (positionId) {
+            const dept = this.deptOption.find(item => item.value === positionId)
+            return dept ? dept.label : ''
+        },
+        /**
+         * 获取格式化参数
+         */
+        getSearchFormData () {
+            const { first, second } = this.$store.getters.level || {}
+            const searchParam = this.$refs['crud'] ? this.$refs['crud'].getSearcFormData() : {}
+            searchParam['Q^di_dian_^S'] = second || first
+            // 筛选当前用户数据
+            searchParam['Q^yong_hu_id_^S'] = this.$store.getters.userId
+            return ActionUtils.formatParams(searchParam, this.pagination, this.sorts)
+        },
+        getSearchSql () {
+            let sql = `select * FROM t_attendance_detail`
+            const params = this.getSearchFormData()
+            // 定义操作符映射
+            const operatorMap = {
+                'S': '=',
+                'SL': 'LIKE',
+                'DG': '<=',
+                'DL': '>='
+            }
+            // 如果有查询条件,构建 WHERE 子句
+            if (params.parameters && params.parameters.length > 0) {
+                const conditions = []
+                params.parameters.forEach(item => {
+                    const { key, value } = item
+                    const parts = key.split('^') // 格式: Q^field^operator
+                    if (parts.length === 3 && parts[0] === 'Q') {
+                        const field = parts[1] // 字段名
+                        const operatorKey = parts[2] // 操作符(S/SL/DG/DL)
+                        const operator = operatorMap[operatorKey]
+                        if (operator) {
+                            let condition
+                            if (operator === 'LIKE') {
+                                condition = `${field} LIKE '%${value}%'` // LIKE 模糊查询
+                            } else {
+                                condition = `${field} ${operator} '${value}'` // 其他操作符(=, <=, >=)
+                            }
+                            conditions.push(condition)
+                        }
+                    }
+                })
+
+                if (conditions.length > 0) {
+                    sql += ' WHERE ' + conditions.join(' AND ')
+                }
+            }
+            // 添加分页
+            sql += ` LIMIT ${this.pagination.limit} OFFSET ${(this.pagination.currentPage - 1) * this.pagination.limit}`
+            return sql
+        },
+        // 分页/排序处理
+        handlePaginationChange (page) {
+            ActionUtils.setPagination(this.pagination, page)
+            this.loadData()
+        },
+        handleSortChange (sort) {
+            ActionUtils.setSorts(this.sorts, sort)
+            this.loadData()
+        },
+
+        // 操作处理
+        handleAction (command, _, selection) {
+            switch (command) {
+                case 'search':
+                    ActionUtils.setFirstPagination(this.pagination)
+                    this.loadData()
+                    break
+                case 'export':
+                    this.exportData()
+                    break
+            }
+        },
+        // 导出数据
+        exportData () {
+            const exportColumns = [
+                {
+                    field_name: 'userName',
+                    label: '姓名',
+                    name: 'userName'
+                },
+                {
+                    field_name: 'deptName',
+                    label: '部门',
+                    name: 'deptName'
+                },
+                {
+                    field_name: 'gong_hao_',
+                    label: '工号',
+                    name: 'gong_hao_'
+                },
+                {
+                    field_name: 'pai_ban_ming_chen',
+                    label: '排班名称',
+                    name: 'pai_ban_ming_chen'
+                },
+                {
+                    field_name: 'ban_ci_ming_',
+                    label: '班次名',
+                    name: 'ban_ci_ming_'
+                },
+                {
+                    field_name: 'ban_ci_bie_ming_',
+                    label: '班次别名',
+                    name: 'ban_ci_bie_ming_'
+                },
+                {
+                    field_name: 'ri_qi_',
+                    label: '日期',
+                    name: 'ri_qi_'
+                },
+                {
+                    field_name: 'da_ka_shi_jian_1_',
+                    label: '上班打卡时间',
+                    name: 'da_ka_shi_jian_1_'
+                },
+                {
+                    field_name: 'zhuang_tai_1_',
+                    label: '上班打卡状态',
+                    name: 'zhuang_tai_1_'
+                },
+                {
+                    field_name: 'da_ka_shi_jian_2_',
+                    label: '下班打卡时间',
+                    name: 'da_ka_shi_jian_2_'
+                },
+                {
+                    field_name: 'zhuang_tai_2_',
+                    label: '下班打卡状态',
+                    name: 'zhuang_tai_2_'
+                },
+                {
+                    field_name: 'chi_dao_shi_chang',
+                    label: '迟到时长(分钟)',
+                    name: 'chi_dao_shi_chang'
+                },
+                {
+                    field_name: 'da_ka_ci_shu_',
+                    label: '打卡次数',
+                    name: 'da_ka_ci_shu_'
+                },
+                {
+                    field_name: 'kao_qin_zhuang_ta',
+                    label: '考勤状态',
+                    name: 'kao_qin_zhuang_ta'
+                }
+            ]
+            this.handleExport(exportColumns, this.listData, `考勤明细统计数据`)
+        },
+        handleExport (columns, data, title, message, nameKey = 'name') {
+            IbpsExport.excel({
+                columns: columns,
+                data: data,
+                nameKey: nameKey,
+                title: title
+            }).then(() => {
+                const msg = message || '导出成功'
+                ActionUtils.success(msg)
+            })
+        }
+    }
+}
+</script>
+
+<style scoped>
+.main-container {
+    padding: 20px;
+    background: #fff;
+    border-radius: 4px;
+    box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
+}
+
+::v-deep .el-table {
+    .el-table__column[prop="bu_men_"] { min-width: 200px; }
+    .el-table__column[prop="pal_ban_ming_chen"] { min-width: 180px; }
+    .el-tag { margin: 2px; }
+}
+</style>

+ 3 - 3
src/views/peopleManages/personComcont/GetPieView.vue

@@ -3,12 +3,12 @@
         <div style="  height:14%;line-height:30px;text-align: left;padding-left: 10px;color: white;">
             {{ info.config.title || "" }}
         </div>
-        <div v-show="showChart" style="width: 100%; height: 86%; display: inline-block; overflow: hidden">
+        <div style="width: 100%; height: 86%; display: inline-block; overflow: hidden">
             <div :id="info.config.idSelector" style="width: 100%; height: 95%; overflow: hidden" />
         </div>
-        <div v-if="!showChart" style="background: #061237;width: 100%;height: 70%;display: flex;justify-content: center;align-items: center;">
+        <!-- <div v-if="!showChart" style="background: #061237;width: 100%;height: 70%;display: flex;justify-content: center;align-items: center;">
             <div style="color: #c7c7c7">目前无数据</div>
-        </div>
+        </div> -->
     </div>
 </template>
 

Разница между файлами не показана из-за своего большого размера
+ 106 - 16
src/views/peopleManages/taskStatistics/index.vue


+ 1 - 1
src/views/platform/examination/survey/all.vue

@@ -57,7 +57,7 @@ export default {
                     const t = Object.keys(JSON.parse(val[0].xuan_xiang_)).length
                     for (let i = 1; i <= 8; i++) {
                         if (i <= t) {
-                            obj[`xuan_xiang_${i}`] = (val.filter(item => item.da_an_ === String.fromCharCode('A'.charCodeAt() + i - 1)).length / val.length * 100).toFixed(2) + ' %'
+                            obj[`xuan_xiang_${i}`] = (val.filter(item => item.da_an_.includes(String.fromCharCode('A'.charCodeAt() + i - 1))).length / val.length * 100).toFixed(2) + ' %'
                         } else {
                             obj[`xuan_xiang_${i}`] = '/'
                         }

+ 2 - 2
src/views/platform/examination/survey/itemEchart.vue

@@ -42,7 +42,7 @@ export default {
                 let cnt = 1
                 for (const key in t) {
                     data.push({
-                        value: this.statisItemData.filter(item => item.da_an_ === key).length,
+                        value: this.statisItemData.filter(item => item.da_an_.includes(key)).length,
                         name: `选项${cnt}`
                     })
                     cnt++
@@ -86,7 +86,7 @@ export default {
                 let cnt = 1
                 for (const key in t) {
                     data.push({
-                        value: this.statisItemData.filter(item => item.da_an_ === key).length,
+                        value: this.statisItemData.filter(item => item.da_an_.includes(key)).length,
                         name: `选项${cnt}`
                     })
                     cnt++

+ 1 - 1
src/views/platform/examination/survey/itemTable.vue

@@ -82,7 +82,7 @@ export default {
                     const notChoice = this.statisItemData.filter(item => !item.da_an_).length // 未选项
                     const validCnt = this.statisItemData.length - notChoice
                     for (const key in t) {
-                        const cnt = this.statisItemData.filter(item => item.da_an_ === key).length
+                        const cnt = this.statisItemData.filter(item => item.da_an_.includes(key)).length
                         arr.push({
                             xx: `选项${ind}`,
                             xuan_xiang_: t[key],

Некоторые файлы не были показаны из-за большого количества измененных файлов