Преглед изворни кода

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

ZZJ пре 3 година
родитељ
комит
9f11eaf039
56 измењених фајлова са 2341 додато и 1615 уклоњено
  1. 11 3
      src/business/platform/bpmn/components/approval-opinion/index.vue
  2. 958 1003
      src/business/platform/form/formrender/dynamic-form/dynamic-form-table.vue
  3. 1 1
      src/views/peopleManages/personComcont/BarChart.vue
  4. 1 1
      src/views/peopleManages/personComcont/RingChart.vue
  5. 948 413
      src/views/peopleManages/taskStatistics/index.vue
  6. 15 20
      src/views/platform/bpmn/bpmInstHis/record/component/testingRecord.vue
  7. 5 4
      src/views/statistics/index.vue
  8. 4 3
      src/views/statistics/item/s10waiBuNengLi.vue
  9. 163 0
      src/views/statistics/item/s10waiBuNengLiCol2.vue
  10. 1 1
      src/views/statistics/item/s11biaoZhunWu.vue
  11. 1 1
      src/views/statistics/item/s11biaoZhunWuCol.vue
  12. 1 1
      src/views/statistics/item/s11biaoZhunWuCol2.vue
  13. 3 3
      src/views/statistics/item/s12fengXian.vue
  14. 2 2
      src/views/statistics/item/s12fengXianCol.vue
  15. 4 4
      src/views/statistics/item/s13shengWuCol.vue
  16. 1 1
      src/views/statistics/item/s14bufuhexiangCol.vue
  17. 2 2
      src/views/statistics/item/s15tousu.vue
  18. 1 1
      src/views/statistics/item/s16bzJunZhu.vue
  19. 2 2
      src/views/statistics/item/s16bzJunZhuCol.vue
  20. 1 1
      src/views/statistics/item/s16bzJunZhuCol2.vue
  21. 1 1
      src/views/statistics/item/s17bzXiBao.vue
  22. 2 2
      src/views/statistics/item/s17bzXiBaoCol.vue
  23. 1 1
      src/views/statistics/item/s17bzXiBaoCol2.vue
  24. 6 0
      src/views/statistics/item/s7sheBeiJiaoZhunCol2.vue
  25. 6 0
      src/views/statistics/item/s8sheBeiHeChaCol2.vue
  26. 1 1
      src/views/statistics/item/s9neiBuZhiLiang.vue
  27. 6 4
      src/views/statistics/item/s9neiBuZhiLiangCol.vue
  28. 5 1
      src/views/statistics/js/selectDB.js
  29. 10 9
      src/views/statistics/properties/s10waiBuNengLiPro.vue
  30. 9 9
      src/views/statistics/properties/s11biaoZhunWuPro.vue
  31. 1 1
      src/views/statistics/properties/s12fengXianPro.vue
  32. 2 2
      src/views/statistics/properties/s13shengWuPro.vue
  33. 1 1
      src/views/statistics/properties/s14bufehexiangPro.vue
  34. 1 1
      src/views/statistics/properties/s15tousuPro.vue
  35. 9 9
      src/views/statistics/properties/s16bzJunZhuPro.vue
  36. 9 9
      src/views/statistics/properties/s17bzXiBaoPro.vue
  37. 1 1
      src/views/statistics/properties/s1jianCePro.vue
  38. 1 1
      src/views/statistics/properties/s1zhiLiangMuBiaoPro.vue
  39. 1 1
      src/views/statistics/properties/s2manYiDuPro.vue
  40. 1 1
      src/views/statistics/properties/s3tousuPro.vue
  41. 1 1
      src/views/statistics/properties/s4renYuanPeiXunPro.vue
  42. 1 1
      src/views/statistics/properties/s5renYuanJianDuPro.vue
  43. 1 1
      src/views/statistics/properties/s6sheBeiWeiHuPro.vue
  44. 1 1
      src/views/statistics/properties/s7sheBeiJiaoZhunPro.vue
  45. 1 1
      src/views/statistics/properties/s8sheBeiHeChaPro.vue
  46. 5 5
      src/views/statistics/properties/s9neiBuZhiLiangPro.vue
  47. 35 33
      src/views/statistics/sendDatas.js
  48. 5 3
      src/views/system/jbdHome/board/checkBoard.vue
  49. 1 1
      src/views/system/jbdHome/board/component/CarouselTabl.vue
  50. 2 2
      src/views/system/jbdHome/board/component/getPieView.vue
  51. 27 16
      src/views/system/jbdHome/board/component/zhuzhuangtu.vue
  52. 36 10
      src/views/system/jbdHome/board/equipmentBoard.vue
  53. 8 1
      src/views/system/jbdHome/yangPinShuJu/AnnualStatus.vue
  54. 7 7
      src/views/system/jbdHome/yangPinShuJu/EntrustNumber.vue
  55. 7 6
      src/views/system/jbdHome/yangPinShuJu/headerContent.vue
  56. 4 4
      src/views/system/jbdHome/yangPinShuJu/index.vue

+ 11 - 3
src/business/platform/bpmn/components/approval-opinion/index.vue

@@ -181,11 +181,19 @@ export default {
     }
   },
   created(){
-    this.data = this.value ? this.value : '同意'
+    setTimeout(()=> {
+        this.data = this.value ? this.value : '同意'
+    },100)
+
+
   },
   watch: {
-    data(){
-      this.$emit('input', this.data)
+    data:{
+        handler(){
+
+          this.$emit('input', this.data)
+        },
+        immediate: true
     },
     value: {
       handler(val, oldVal) {

+ 958 - 1003
src/business/platform/form/formrender/dynamic-form/dynamic-form-table.vue

@@ -1,143 +1,102 @@
 <template>
-  <div v-if="!tableHidden && dynamicShow" class="dynamic-form-table">
-    <template v-if="columns && columns.length > 0">
-      <!--================表内和弹窗模式=================================-->
-      <div v-if="mode === 'inner' || mode === 'dialog'" class="dynamic-form-table__inner panel panel-info">
-        <div class="panel-heading ibps-clearfix">
-          <div v-if="!formDialogVisible" class="ibps-fl dynamic-form-table__label  table-tetle-style">{{ field.label }}
-          </div>
-          <!--弹窗模式对话框-->
-          <formrender-dialog ref="jyxtEdit" v-if="formDialogVisible" :title="field.label" :form-def="dialogFormDef"
-            :data="dialogFormData" :mode="mode" :editFromType="editFromType" @close="deleteEdit()"
-            @action-event="handleFormDialogActionEvent" />
-          <div v-if="toolbarButtons && toolbarButtons.length > 0" class="ibps-fr hidden-print">
-            <!-- :visible="formDialogVisible"-->
+    <div v-if="!tableHidden && dynamicShow" class="dynamic-form-table">
+        <template v-if="columns && columns.length > 0">
+            <!--================表内和弹窗模式=================================-->
+            <div v-if="mode === 'inner' || mode === 'dialog'" class="dynamic-form-table__inner panel panel-info">
+                <div class="panel-heading ibps-clearfix">
+                    <div v-if="!formDialogVisible" class="ibps-fl dynamic-form-table__label table-tetle-style">{{ field.label }}</div>
+                    <!--弹窗模式对话框-->
+                    <formrender-dialog ref="jyxtEdit" v-if="formDialogVisible" :title="field.label" :form-def="dialogFormDef" :data="dialogFormData" :mode="mode" :editFromType="editFromType" @close="deleteEdit()" @action-event="handleFormDialogActionEvent" />
+                    <div v-if="toolbarButtons && toolbarButtons.length > 0" class="ibps-fr hidden-print">
+                        <!-- :visible="formDialogVisible"-->
 
-            <el-button-group>
-              <el-button v-for="(button, index) in toolbarButtons" :key="index" :type="button.type" :icon="button.icon"
-                @click="handleActionEvent(button, index)">
-                {{ button.label }}
-              </el-button>
-            </el-button-group>
-
-          </div>
-        </div>
-        <div class="panel-body">
-          <el-table :data="copDataModel" ref="elTable"
-            :header-cell-style="{ color: '#000', 'font-size': '14px', padding: '4px 0' }" :row-class-name="tableRowClassName"
-            :show-summary="showSummary" :sum-text="sumText" :summary-method="hasSummaryMethod ? summaryMethod : null" border
-            @selection-change="handleSelectionChange">
-            <el-table-column v-if="!tableReadonly" type="selection" width="50" />
-            <el-table-column v-if="field.field_options.index" type="index"
-              :label="field.field_options.index_name ? field.field_options.index_name : '序号'"
-              :width="field.field_options.index_width ? field.field_options.index_width : 50" />
-            <template v-for="(column, j) in displayColumns">
-              <el-table-column show-overflow-tooltip
-                v-if="!columnHidden(column) && column.field_type != 'desc' && column.label != ''" :key="j"
-                :prop="column.name" :width="column.field_options.custom_class || null">
-                <!--  :width="column.field_options.is_label_width ?column.field_options.label_width + (column.field_options.label_width_unit || 'px') :null"-->
-                <template slot="header">
-                  {{ $utils.isNotEmpty(column.field_options.units) ? column.label + '(' + column.field_options.units +
-                      ')' : column.label
-                  }}
-                  <ibps-help v-if="column && column.desc && descPosition === 'lableIcon'" type="tooltip"
-                    :content="$utils.formatText(column.desc)" />
-                </template>
-                <template slot-scope="scope">
-                  <template v-if="copDataModelCont && copDataModelCont.length > 0 && dynamicShow">
-                    <ibps-dynamic-form-table-item :ref="'formItem' + column.name" :key="scope.$index + j"
-                      :models.sync="copDataModelCont[scope.$index + (currentPage * 10 - 10)]" :rights.sync="columnsRights"
-                      :form-data="models" :field="column" :main-code="mainCode" :code="code" :row="scope.$index"
-                      :mode="mode" :params="params" :currPage="currentPage" @updateModel="updateModel"
-                      v-on="listeners" />
-                  </template>
-                </template>
-              </el-table-column>
-            </template>
-            <el-table-column v-if="manageButtons && manageButtons.length > 0" align="center" fixed="right"
-              class-name="hidden-print" label="操作栏目" width="160">
-
-              <template slot-scope="scope">
-                <el-dropdown v-if="manageButtons.length > 3">
-                  <ibps-icon name="chevron-circle-down" size="28" class="hidden-print" />
-                  <el-dropdown-menu slot="dropdown" class="ibps-table-dropdown-menu" style="margin-top: 0.02rem">
-                    <ibps-toolbar :actions="manageButtons" :socpe="thatSocpe" :data="scope.row" position="manage"
-                      class="hidden-print" @action-event="(action) => handleActionEvent(action, scope.$index)" />
-                  </el-dropdown-menu>
-                </el-dropdown>
-                <template v-else>
-                  <template v-for="(button, index) in manageButtons">
-                    <el-button plain size="mini" :key="index" :type="button.type"
-                      @click="handleActionEvent(button, scope.$index)">
-                      {{ button.label }}
-                    </el-button>
-                    <el-divider v-if="manageButtons.length === 3 && index === 0 || index === 1" :key="index"
-                      direction="vertical" />
-
-                  </template>
-                </template>
-              </template>
-            </el-table-column>
-          </el-table>
-          <!-- 分页 -->
-          <el-pagination v-if="mode === 'dialog' || mode === 'inner'" @current-change="handleCurrentChange"
-            :page-size="10" layout="total, prev, pager, next" :total="pageSize">
-          </el-pagination>
-        </div>
-      </div>
-      <!--================表内和弹窗模式end=================================-->
-      <!--================块模式=================================-->
-      <template v-else-if="mode === 'block'">
-        <template v-if="dataModel && dataModel.length > 0">
-          <template v-for="(data, index) in dataModel ">
-
-            <div :key="index" class="dynamic-form-table__block panel panel-info">
-
-              <div class="panel-heading ibps-clearfix">
-                <!--块模式:工具栏-->
-                <div class="ibps-fl dynamic-form-table__label">
-                  <el-badge v-if="field.field_options.index" :value="index + 1" type="primary" style="top: 0.3em;" />{{
-                      field.label
-                  }}
+                        <el-button-group>
+                            <el-button v-for="(button, index) in toolbarButtons" :key="index" :type="button.type" :icon="button.icon" @click="handleActionEvent(button, index)">
+                                {{ button.label }}
+                            </el-button>
+                        </el-button-group>
+                    </div>
                 </div>
-                <div v-if="toolbarButtons && toolbarButtons.length > 0" class="ibps-fr">
-
-                  <el-button-group>
-                    <template v-for="(button, b) in toolbarButtons ">
-                      <template v-if="!(button.key === 'remove' && dataModel.length === 1)">
-                        <el-button :key="b" :type="button.type" :icon="button.icon"
-                          @click="handleActionEvent(button, b)">
-                          {{ button.label }}
-                        </el-button>
-                      </template>
-                    </template>
-                  </el-button-group>
+                <div class="panel-body">
+                    <el-table :data="copDataModel" ref="elTable" :header-cell-style="{ color: '#000', 'font-size': '14px', padding: '4px 0' }" :row-class-name="tableRowClassName" :show-summary="showSummary" :sum-text="sumText" :summary-method="hasSummaryMethod ? summaryMethod : null" border @selection-change="handleSelectionChange">
+                        <el-table-column v-if="!tableReadonly" type="selection" width="50" />
+                        <el-table-column v-if="field.field_options.index" type="index" :label="field.field_options.index_name ? field.field_options.index_name : '序号'" :width="field.field_options.index_width ? field.field_options.index_width : 50" />
+                        <template v-for="(column, j) in displayColumns">
+                            <el-table-column show-overflow-tooltip v-if="!columnHidden(column) && column.field_type != 'desc' && column.label != ''" :key="j" :prop="column.name" :width="column.field_options.custom_class || null">
+                                <!--  :width="column.field_options.is_label_width ?column.field_options.label_width + (column.field_options.label_width_unit || 'px') :null"-->
+                                <template slot="header">
+                                    {{ $utils.isNotEmpty(column.field_options.units) ? column.label + '(' + column.field_options.units + ')' : column.label }}
+                                    <ibps-help v-if="column && column.desc && descPosition === 'lableIcon'" type="tooltip" :content="$utils.formatText(column.desc)" />
+                                </template>
+                                <template slot-scope="scope">
+                                    <template v-if="copDataModelCont && copDataModelCont.length > 0 && dynamicShow">
+                                        <ibps-dynamic-form-table-item :ref="'formItem' + column.name" :key="scope.$index + j" :models.sync="copDataModelCont[scope.$index + (currentPage * 10 - 10)]" :rights.sync="columnsRights" :form-data="models" :field="column" :main-code="mainCode" :code="code" :row="scope.$index" :mode="mode" :params="params" :currPage="currentPage" @updateModel="updateModel" v-on="listeners" />
+                                    </template>
+                                </template>
+                            </el-table-column>
+                        </template>
+                        <el-table-column v-if="manageButtons && manageButtons.length > 0" align="center" fixed="right" class-name="hidden-print" label="操作栏目" width="160">
+                            <template slot-scope="scope">
+                                <el-dropdown v-if="manageButtons.length > 3">
+                                    <ibps-icon name="chevron-circle-down" size="28" class="hidden-print" />
+                                    <el-dropdown-menu slot="dropdown" class="ibps-table-dropdown-menu" style="margin-top: 0.02rem">
+                                        <ibps-toolbar :actions="manageButtons" :socpe="thatSocpe" :data="scope.row" position="manage" class="hidden-print" @action-event="(action) => handleActionEvent(action, scope.$index)" />
+                                    </el-dropdown-menu>
+                                </el-dropdown>
+                                <template v-else>
+                                    <template v-for="(button, index) in manageButtons">
+                                        <el-button plain size="mini" :key="index" :type="button.type" @click="handleActionEvent(button, scope.$index)">
+                                            {{ button.label }}
+                                        </el-button>
+                                        <el-divider v-if="(manageButtons.length === 3 && index === 0) || index === 1" :key="index" direction="vertical" />
+                                    </template>
+                                </template>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <!-- 分页 -->
+                    <el-pagination v-if="mode === 'dialog' || mode === 'inner'" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next" :total="pageSize"> </el-pagination>
                 </div>
-              </div>
-
-              <!--块模式:表单-->
-              <div class="panel-body">
-                <ibps-dynamic-form-table-block v-for="(column, j) in columns" :ref="'formItem' + column.name"
-                  :key="index + j" :models.sync="dataModel[index]" :rights.sync="columnsRights" :form-data="models"
-                  :field="column" :main-code="mainCode" :code="code" :row="index" :params="params" v-on="listeners" />
-              </div>
             </div>
+            <!--================表内和弹窗模式end=================================-->
+            <!--================块模式=================================-->
+            <template v-else-if="mode === 'block'">
+                <template v-if="dataModel && dataModel.length > 0">
+                    <template v-for="(data, index) in dataModel">
+                        <div :key="index" class="dynamic-form-table__block panel panel-info">
+                            <div class="panel-heading ibps-clearfix">
+                                <!--块模式:工具栏-->
+                                <div class="ibps-fl dynamic-form-table__label"><el-badge v-if="field.field_options.index" :value="index + 1" type="primary" style="top: 0.3em" />{{ field.label }}</div>
+                                <div v-if="toolbarButtons && toolbarButtons.length > 0" class="ibps-fr">
+                                    <el-button-group>
+                                        <template v-for="(button, b) in toolbarButtons">
+                                            <template v-if="!(button.key === 'remove' && dataModel.length === 1)">
+                                                <el-button :key="b" :type="button.type" :icon="button.icon" @click="handleActionEvent(button, b)">
+                                                    {{ button.label }}
+                                                </el-button>
+                                            </template>
+                                        </template>
+                                    </el-button-group>
+                                </div>
+                            </div>
 
-          </template>
+                            <!--块模式:表单-->
+                            <div class="panel-body">
+                                <ibps-dynamic-form-table-block v-for="(column, j) in columns" :ref="'formItem' + column.name" :key="index + j" :models.sync="dataModel[index]" :rights.sync="columnsRights" :form-data="models" :field="column" :main-code="mainCode" :code="code" :row="index" :params="params" v-on="listeners" />
+                            </div>
+                        </div>
+                    </template>
+                </template>
+            </template>
         </template>
-      </template>
-    </template>
 
-    <el-table v-else :data="[]" empty-text="您尚未创建任何字段。请在表单中添加字段。" border />
-    <!--按钮支持自定义对话框-->
-    <custom-dialog :visible="customDialogVisible" :value="[]" :template-key="customDialogKey"
-      :dynamic-params="customDialogDynamicParams" @close="visible => customDialogVisible = visible"
-      @action-event="handleCustomDialogActionEvent" />
+        <el-table v-else :data="[]" empty-text="您尚未创建任何字段。请在表单中添加字段。" border />
+        <!--按钮支持自定义对话框-->
+        <custom-dialog :visible="customDialogVisible" :value="[]" :template-key="customDialogKey" :dynamic-params="customDialogDynamicParams" @close="(visible) => (customDialogVisible = visible)" @action-event="handleCustomDialogActionEvent" />
 
-    <import-table :visible="importTableDialogVisible" :title="field.label"
-      @close="visible => importTableDialogVisible = visible" @action-event="handleImportTableActionEvent" />
-    <component :is="dialogTemplate" v-if="dialogTemplate" ref="dialogTemplate" v-bind="dialogTemplateAtts" />
-  </div>
+        <import-table :visible="importTableDialogVisible" :title="field.label" @close="(visible) => (importTableDialogVisible = visible)" @action-event="handleImportTableActionEvent" />
+        <component :is="dialogTemplate" v-if="dialogTemplate" ref="dialogTemplate" v-bind="dialogTemplateAtts" />
+    </div>
 </template>
 <script>
 import emitter from '@/plugins/element-ui/src/mixins/emitter'
@@ -158,193 +117,197 @@ import IbpsImport from '@/plugins/import'
 
 const JForm = window.JForm
 export default {
-  components: {
-    FormrenderDialog,
-    CustomDialog,
-    ImportTable,
-  },
-  mixins: [emitter],
-  props: {
-    value: [Array, Object, String], // 值
-    formData: [Array, Object], // 表单数据
-    field: { // 字段
-      type: Object,
-      required: true
-    },
-    rights: {
-      type: [String, Object]
-    },
-    readonly: {
-      type: Boolean,
-      default: false
-    },
-    mainCode: String, // 主表名
-    params: Object // 参数
-  },
-  inject: {
-    elForm: {
-      default: ''
+    components: {
+        FormrenderDialog,
+        CustomDialog,
+        ImportTable
+    },
+    mixins: [emitter],
+    props: {
+        value: [Array, Object, String], // 值
+        formData: [Array, Object], // 表单数据
+        field: {
+            // 字段
+            type: Object,
+            required: true
+        },
+        rights: {
+            type: [String, Object]
+        },
+        readonly: {
+            type: Boolean,
+            default: false
+        },
+        mainCode: String, // 主表名
+        params: Object // 参数
+    },
+    inject: {
+        elForm: {
+            default: ''
+        },
+        elFormItem: {
+            default: ''
+        }
     },
-    elFormItem: {
-      default: ''
-    }
-  },
-  data() {
-    let val = [], tableType = '', copVal = []
-    if (this.$utils.isNotEmpty(this.value)) {
-      val = this.value || []
-      copVal = tableType === 'dialog' || 'inner' ? JSON.parse(JSON.stringify(val)).slice(0, 10) : val
-    }
-    tableType = this.field.field_options.mode || 'inner'
-    /* 由于内容遍历卡顿问题,需再建个中间对象进行渲染.*/
-    return {
-      editFromType: 'add', //列表编辑弹出框类型
-      npmDialogFormVisible: false, // 弹窗
-      defId: '', // 编辑dialog需要使用
-      currentPage: 1,
-      dataPage: 0,//当前条数
-      pageSize: val.length,
-      dataModel: val,
-      copDataModel: copVal,
-      multipleSelection: '',
-      countNumber: 0,
-      fieldRights: {}, // 子表配置权限
-      tableRights: FormOptions.t.PERMISSIONS.EDIT, // 子表权限
-      columnsRights: {}, // 子表字段权限
-      buttonsRights: {}, // 子表按钮权限
-      actionCode: '',
-      actionPosition: 'toolbar',
-      handleCout: '',
-      dynamicShow: true,
+    data() {
+        let val = [],
+            tableType = '',
+            copVal = []
+        if (this.$utils.isNotEmpty(this.value)) {
+            val = this.value || []
+            copVal = tableType === 'dialog' || 'inner' ? JSON.parse(JSON.stringify(val)).slice(0, 10) : val
+        }
+        tableType = this.field.field_options.mode || 'inner'
+        /* 由于内容遍历卡顿问题,需再建个中间对象进行渲染.*/
+        return {
+            editFromType: 'add', //列表编辑弹出框类型
+            npmDialogFormVisible: false, // 弹窗
+            defId: '', // 编辑dialog需要使用
+            currentPage: 1,
+            dataPage: 0, //当前条数
+            pageSize: val.length,
+            dataModel: val,
+            copDataModel: copVal,
+            multipleSelection: '',
+            countNumber: 0,
+            fieldRights: {}, // 子表配置权限
+            tableRights: FormOptions.t.PERMISSIONS.EDIT, // 子表权限
+            columnsRights: {}, // 子表字段权限
+            buttonsRights: {}, // 子表按钮权限
+            actionCode: '',
+            actionPosition: 'toolbar',
+            handleCout: '',
+            dynamicShow: true,
 
-      customDialogVisible: false,
-      customDialogKey: '',
-      customDialogDynamicParams: {},
-      customDialogCustom: {},
+            customDialogVisible: false,
+            customDialogKey: '',
+            customDialogDynamicParams: {},
+            customDialogCustom: {},
 
-      formEditVisible: false,
-      formDialogVisible: false,
-      dialogFormDef: {},
-      dialogFormData: {},
-      dialogFormIndex: -1,
+            formEditVisible: false,
+            formDialogVisible: false,
+            dialogFormDef: {},
+            dialogFormData: {},
+            dialogFormIndex: -1,
 
-      importTableDialogVisible: false,
-      dialogTemplate: null,
-      dialogTemplateAtts: {}
-    }
-  },
-  computed: {
-    thatSocpe() {
-      return this
-    },
-    models() {
-      return this.formData
-    },
-    fieldOptions() {
-      const fieldOptions = this.field.field_options || {}
-      fieldOptions.default_value_type = fieldOptions.default_value_type || 'fixed'
-      return fieldOptions
+            importTableDialogVisible: false,
+            dialogTemplate: null,
+            dialogTemplateAtts: {}
+        }
     },
+    computed: {
+        thatSocpe() {
+            return this
+        },
+        models() {
+            return this.formData
+        },
+        fieldOptions() {
+            const fieldOptions = this.field.field_options || {}
+            fieldOptions.default_value_type = fieldOptions.default_value_type || 'fixed'
+            return fieldOptions
+        },
 
-    toolbarButtons() {
-      return this.filterButtons('toolbar')
-    },
-    manageButtons() {
-      return this.filterButtons('manage')
-    },
-    manageButtonWidth() {
-      return this.manageButtons.length > 2 || this.manageButtons.length === 1 ? 70 : 150
-    },
-    mode() {
-      return this.field.field_options.mode || 'inner'
-    },
-    showSummary() {
-      return this.field.field_options.summary || false
-    },
-    sumText() {
-      return this.field.field_options.sum_text || '合计'
-    },
-    hasSummaryMethod() {
-      return this.field.field_options.summary_method || false
-    },
-    code() {
-      return this.field.name || ''
-    },
-    columns() {
-      return this.field.field_options.columns || []
-    },
-    nameColumns() {
-      return FormFieldUtil.getSubDisplayColumns(this.columns)
-    },
-    displayColumns() {
-      const displayColumns = []
-      const traverse = (fields) => {
-        fields.forEach((field) => {
-          if (nestedFieldTypes.includes(field.field_type)) {
-            const columns = field.field_options.columns
-            columns.forEach(child => {
-              traverse(child.fields)
+        toolbarButtons() {
+            return this.filterButtons('toolbar')
+        },
+        manageButtons() {
+            return this.filterButtons('manage')
+        },
+        manageButtonWidth() {
+            return this.manageButtons.length > 2 || this.manageButtons.length === 1 ? 70 : 150
+        },
+        mode() {
+            return this.field.field_options.mode || 'inner'
+        },
+        showSummary() {
+            return this.field.field_options.summary || false
+        },
+        sumText() {
+            return this.field.field_options.sum_text || '合计'
+        },
+        hasSummaryMethod() {
+            return this.field.field_options.summary_method || false
+        },
+        code() {
+            return this.field.name || ''
+        },
+        columns() {
+            return this.field.field_options.columns || []
+        },
+        nameColumns() {
+            return FormFieldUtil.getSubDisplayColumns(this.columns)
+        },
+        displayColumns() {
+            const displayColumns = []
+            const traverse = (fields) => {
+                fields.forEach((field) => {
+                    if (nestedFieldTypes.includes(field.field_type)) {
+                        const columns = field.field_options.columns
+                        columns.forEach((child) => {
+                            traverse(child.fields)
+                        })
+                    } else {
+                        if (this.$utils.toBoolean(field.field_options.display, true)) {
+                            displayColumns.push(field)
+                        }
+                    }
+                })
+            }
+            traverse(this.columns)
+            return displayColumns
+        },
+        buttons() {
+            const buttons = this.field.field_options.buttons || []
+            const bs = []
+            buttons.forEach((button) => {
+                const b = JSON.parse(JSON.stringify(button))
+                b.key = button.type
+                b.type = button.style
+                b.style = button.style
+                b.icon = 'ibps-icon-' + button.icon
+                bs.push(b)
             })
-          } else {
-            if (this.$utils.toBoolean(field.field_options.display, true)) {
-              displayColumns.push(field)
+            return bs
+        },
+        tableReadonly() {
+            return this.readonlyRights ? true : this.tableRights === FormOptions.t.PERMISSIONS.READ
+        },
+        tableHidden() {
+            return this.tableRights === FormOptions.t.PERMISSIONS.HIDE
+        },
+        descPosition() {
+            return this.params.descPosition || 'inline'
+        },
+        defaultLabelWidth() {
+            return this.params.labelWidth
+        },
+        readonlyRights() {
+            return this.params.readonly
+        },
+        readonlyStyle() {
+            return this.params.readonlyStyle
+        },
+        formula() {
+            return this.params.responseFormula
+        },
+        linkages() {
+            return this.params.responseLinkages
+        },
+        copDataModelCont() {
+            /* 进行参数替换,提高子表性能 */
+            return JSON.parse(JSON.stringify(this.dataModel))
+        },
+        listeners() {
+            return {
+                'update-form-data': (name, value) => {
+                    this.updateFormData(name, value)
+                }
             }
-          }
-        })
-      }
-      traverse(this.columns)
-      return displayColumns
-    },
-    buttons() {
-      const buttons = this.field.field_options.buttons || []
-      const bs = []
-      buttons.forEach(button => {
-        const b = JSON.parse(JSON.stringify(button))
-        b.key = button.type
-        b.type = button.style
-        b.style = button.style
-        b.icon = 'ibps-icon-' + button.icon
-        bs.push(b)
-      })
-      return bs
-    },
-    tableReadonly() {
-      return this.readonlyRights ? true : this.tableRights === FormOptions.t.PERMISSIONS.READ
-    },
-    tableHidden() {
-      return this.tableRights === FormOptions.t.PERMISSIONS.HIDE
-    },
-    descPosition() {
-      return this.params.descPosition || 'inline'
-    },
-    defaultLabelWidth() {
-      return this.params.labelWidth
-    },
-    readonlyRights() {
-      return this.params.readonly
-    },
-    readonlyStyle() {
-      return this.params.readonlyStyle
-    },
-    formula() {
-      return this.params.responseFormula
-    },
-    linkages() {
-      return this.params.responseLinkages
-    },
-    copDataModelCont() {/* 进行参数替换,提高子表性能 */
-      return JSON.parse(JSON.stringify(this.dataModel))
-    },
-    listeners() {
-      return {
-        'update-form-data': (name, value) => {
-          this.updateFormData(name, value)
         }
-      }
-    }
-  },
-  beforeDestroy() {
-    /* this.dataModel = null
+    },
+    beforeDestroy() {
+        /* this.dataModel = null
     this.copDataModel =null
     this.fieldRights = null
     this.tableRights = null
@@ -357,757 +320,749 @@ export default {
     this.dialogTemplate = null
     this.dialogTemplateAtts = null
     this.handleCout = null */
-    this.dynamicShow = false
-    // 注销当前表格保存在window[this.mainCode+'TableRefs']的this
-    this.destoryTable()
-  },
-  watch: {
-    value: {
-      handler(val, oldVal) {
-        if (!val) return
-        this.dataModel = val
-        /*  if (!valueEquals(val, oldVal)) {
+        this.dynamicShow = false
+        // 注销当前表格保存在window[this.mainCode+'TableRefs']的this
+        this.destoryTable()
+    },
+    watch: {
+        value: {
+            handler(val, oldVal) {
+                if (!val) return
+                this.dataModel = val
+                /*  if (!valueEquals(val, oldVal)) {
                this.dispatch('ElFormItem', 'el.form.change', val)
              } */
-      }
-    },
-    dataModel: {
-      handler(val, oldVal) {
-        //进行分页操作
-        this.pageOperation(val, oldVal)
-      }
-    },
-    rights: {
-      handler(val, oldVal) {
-        if (val !== oldVal) {
-          this.fieldRights = val || {}
-        }
-      },
-      deep: true,
-      immediate: true
-    },
-    // 字段权限
-    fieldRights: {
-      handler(fieldRights) {
-        if (this.$utils.isNotEmpty(fieldRights) && this.$utils.isPlainObject(fieldRights)) {
-          this.tableRights = this.getRealRights(fieldRights['rights'] || FormOptions.t.PERMISSIONS.EDIT)
-          this.columnsRights = this.getColumnsRights(fieldRights['columns'])
-          this.buttonsRights = this.getButtonsRights(fieldRights['buttons'])
-        } else {
-          this.tableRights = FormOptions.t.PERMISSIONS.EDIT
-          this.columnsRights = this.getColumnsRights({})
-          this.buttonsRights = this.getButtonsRights({})
+            }
+        },
+        dataModel: {
+            handler(val, oldVal) {
+                //进行分页操作
+                this.pageOperation(val, oldVal)
+            }
+        },
+        rights: {
+            handler(val, oldVal) {
+                if (val !== oldVal) {
+                    this.fieldRights = val || {}
+                }
+            },
+            deep: true,
+            immediate: true
+        },
+        // 字段权限
+        fieldRights: {
+            handler(fieldRights) {
+                if (this.$utils.isNotEmpty(fieldRights) && this.$utils.isPlainObject(fieldRights)) {
+                    this.tableRights = this.getRealRights(fieldRights['rights'] || FormOptions.t.PERMISSIONS.EDIT)
+                    this.columnsRights = this.getColumnsRights(fieldRights['columns'])
+                    this.buttonsRights = this.getButtonsRights(fieldRights['buttons'])
+                } else {
+                    this.tableRights = FormOptions.t.PERMISSIONS.EDIT
+                    this.columnsRights = this.getColumnsRights({})
+                    this.buttonsRights = this.getButtonsRights({})
+                }
+            },
+            deep: true,
+            immediate: true
         }
-      },
-      deep: true,
-      immediate: true
-    }
-  },
-  mounted() {
-    this.$nextTick(() => {
-      if (this.$refs.elTable) {
-        this.$refs.elTable.doLayout()
-      }
-    })
-  },
-  methods: {
-    /* 更新后的参数*/ // 定义删除、增加 不做操作。修改时才做更新 ,分页修改时,根据页表修改。
-    updateModel(key, val, index, page) {
-      this.dataModel[page * 10 - 10 + index][key] = val
-      this.$emit('change-data', key, val)
-    },
-    /* 分页操作及数据操作内容*/
-    pageOperation(val, oldVal) {
-      let page = this.currentPage * 10 - 10
-      let size = val.length
-      if (size >= 10 && (this.pageSize % 10) == 1) { //删除了一个参数 ,如果当前总条数小于页数,则退一页。
-        if (this.currentPage > 1) this.currentPage = this.currentPage - 1
-        page = this.currentPage * 10 - 10
-        if (page != 0) page - 10
-      }
-      this.pageSize = size
-      //具体操作
-      if (this.mode === 'dialog' || this.mode === 'inner') {
-        this.copDataModel = JSON.parse(JSON.stringify(val)).slice(page, page + 10)
-      }
-      this.$emit('update:value', val)
     },
-
-    //简单的分页 usnin
-    handleCurrentChange(val) {
-      this.dataPage = val * 10 - 10
-      //深度克隆主要数据
-      this.copDataModel = JSON.parse(JSON.stringify(this.dataModel)).slice(this.dataPage, this.dataPage + 10)
-      this.currentPage = val
-    },
-
-    columnHidden(column) { // 是否隐藏
-      return this.columnsRights[column.name] === FormOptions.t.PERMISSIONS.HIDE || column.field_type === 'hidden'
-    },
-    /**
-     * 获取真实的权限
-     */
-    getRealRights(rights) {
-      if (this.tableReadonly) {
-        return rights === FormOptions.t.PERMISSIONS.HIDE ? rights : FormOptions.t.PERMISSIONS.READ
-      } else {
-        return rights
-      }
-    },
-    getColumnsRights(rights = {}) {
-      const columnsRights = {}
-      if (this.nameColumns && this.nameColumns.length > 0) {
-        this.nameColumns.forEach(column => {
-          columnsRights[column.name] = this.getRealRights(rights[column.name] || FormUtils.getDefaultRigths(column))
+    mounted() {
+        this.$nextTick(() => {
+            if (this.$refs.elTable) {
+                this.$refs.elTable.doLayout()
+            }
         })
-      }
-      return columnsRights
-    },
-    getButtonsRights(rights = {}) {
-      if (this.$utils.isEmpty(rights)) {
-        const buttonsRights = {}
-        if (this.$utils.isNotEmpty(this.buttons)) {
-          this.buttons.forEach(button => {
-            buttonsRights[button.key] = FormOptions.t.PERMISSIONS.SHOW
-          })
-        }
-        return buttonsRights
-      } else {
-        return rights || {}
-      }
     },
+    methods: {
+        /* 更新后的参数*/ // 定义删除、增加 不做操作。修改时才做更新 ,分页修改时,根据页表修改。
+        updateModel(key, val, index, page) {
+            this.dataModel[page * 10 - 10 + index][key] = val
+            this.$emit('change-data', key, val)
+        },
+        /* 分页操作及数据操作内容*/
+        pageOperation(val, oldVal) {
+            let page = this.currentPage * 10 - 10
+            let size = val.length
+            if (size >= 10 && this.pageSize % 10 == 1) {
+                //删除了一个参数 ,如果当前总条数小于页数,则退一页。
+                if (this.currentPage > 1) this.currentPage = this.currentPage - 1
+                page = this.currentPage * 10 - 10
+                if (page != 0) page - 10
+            }
+            this.pageSize = size
+            //具体操作
+            if (this.mode === 'dialog' || this.mode === 'inner') {
+                this.copDataModel = JSON.parse(JSON.stringify(val)).slice(page, page + 10)
+            }
+            this.$emit('update:value', val)
+        },
 
-    tableRowClassName({ row, rowIndex }) {
-      // 把每一行的索引放进row
-      row.$index = rowIndex
-      if (rowIndex % 2 === 1) return "warning-row"
-      return 'success-row'
-    },
-    handleSelectionChange(selection) {
-      this.multipleSelection = selection
-    },
-    handleRowClick(row, event, column) {
-      this.$refs.elTable.toggleRowSelection(row)
-    },
-    filterButtons(position) {
-      if (this.tableReadonly) {
-        return this.filterDetailButtons(position)
-      }
-      const bs = []
-      this.buttons.forEach(button => {
-        if (hasPermission(button.key, position) && // 有位置权限
-          (!button.position || button.position === 'all' || button.position === position) &&// 有位置权限
-          (this.$utils.isEmpty(this.buttonsRights[button.key]) || this.buttonsRights[button.key] !== FormOptions.t.PERMISSIONS.HIDE) // 有按钮权限
-        ) {
-          const b = JSON.parse(JSON.stringify(button))
-          b.position = position
-          bs.push(b)
-        }
-      })
-      return bs
-    },
-    filterDetailButtons(position) {
-      const bs = []
-      this.buttons.forEach(button => {
-        if (hasPermission(button.key, position) && // 有位置权限
-          (!button.position || button.position === 'all' || button.position === position) &&// 有位置权限
-          (this.$utils.isEmpty(this.buttonsRights[button.key]) || this.buttonsRights[button.key] !== FormOptions.t.PERMISSIONS.HIDE) && // 有按钮权限
-          this.$utils.toBoolean(button.enabledDetail)
-        ) {
-          const b = JSON.parse(JSON.stringify(button))
-          b.position = position
-          bs.push(b)
-        }
-      })
-      return bs
-    },
-    handleActionEvent(button, buttonIndex) {
-      // 起始下标
-      let index = this.currentPage * 10 - 10 + buttonIndex
-      this.actionCode = button.key === 'custom' ? (button.code || button.key + index) : button.key
-      this.actionPosition = button.position || 'toolbar'
-      // 前置事件
-      this.beforeScript(button, index, (result) => {
-        this.editFromType = button.key
-        if (!result) {
-          return
-        }
-        switch (button.key) {
-          case 'add':
-            // 新增自定义对话框按钮
-            if (button.enabledCustom === 'Y') {
-              this.handleAddCustomDialog(button)
+        //简单的分页 usnin
+        handleCurrentChange(val) {
+            this.dataPage = val * 10 - 10
+            //深度克隆主要数据
+            this.copDataModel = JSON.parse(JSON.stringify(this.dataModel)).slice(this.dataPage, this.dataPage + 10)
+            this.currentPage = val
+        },
+
+        columnHidden(column) {
+            // 是否隐藏
+            return this.columnsRights[column.name] === FormOptions.t.PERMISSIONS.HIDE || column.field_type === 'hidden'
+        },
+        /**
+         * 获取真实的权限
+         */
+        getRealRights(rights) {
+            if (this.tableReadonly) {
+                return rights === FormOptions.t.PERMISSIONS.HIDE ? rights : FormOptions.t.PERMISSIONS.READ
             } else {
-              this.handleAdd()
+                return rights
             }
-            break
-          case 'edit':
-            this.handleDialogMode(index)
-            break
-          case 'consult':
-            // 查阅按钮事件
-            this.handleDialogMode(index)
-            break
-          case 'remove':
-            this.handleRemove(button, index)
-            break
-          case 'import':
-            this.handleImport(button, index)
-            break
-          case 'export':
-            this.handleExport(button, index)
-            break
-          case 'custom':
-            // 新增自定义对话框按钮
-            if (button.enabledCustom === 'Y') {
-              this.handleAddCustomDialog(button)
+        },
+        getColumnsRights(rights = {}) {
+            const columnsRights = {}
+            if (this.nameColumns && this.nameColumns.length > 0) {
+                this.nameColumns.forEach((column) => {
+                    columnsRights[column.name] = this.getRealRights(rights[column.name] || FormUtils.getDefaultRigths(column))
+                })
             }
-            break
-          default:
-            break
-        }
-      })
-    },
-    destoryTable() {
-      if (this.$utils.isNotEmpty(window[this.mainCode + 'TableRefs']) && this.$utils.isNotEmpty(window[this.mainCode + 'TableRefs'][this.code])) {
-        window[this.mainCode + 'TableRefs'][this.code] = null
-        delete window[this.mainCode + 'TableRefs'][this.code]
-      }
-      if (this.$utils.isObject(window[this.mainCode + 'TableRefs']) && this.$utils.isEmpty(window[this.mainCode + 'TableRefs'])) {
-        window[this.mainCode + 'TableRefs'] = null
-        delete window[this.mainCode + 'TableRefs']
-      }
-    },
-    // 添加
-    async handleAdd() {
-      if (this.mode === 'dialog') {
-        this.handleDialogMode()
-      } else {
-        const defaultValue = await FormUtils.getTableDefaultData(this.field)
-        await this.addData(JSON.parse(JSON.stringify(defaultValue)))
-      }
-    },
-    // 新增数据
-    addData(data) {
-      this.dataModel.unshift(data)
-      // 初始化运行公式计算 unshift
-      this.initRunCalFormula(this.dataModel.length - 1)
-      // 后置事件
-      this.afterScript(this.actionCode, this.actionPosition)
-      /*  if (this.$refs.elTable) {
+            return columnsRights
+        },
+        getButtonsRights(rights = {}) {
+            if (this.$utils.isEmpty(rights)) {
+                const buttonsRights = {}
+                if (this.$utils.isNotEmpty(this.buttons)) {
+                    this.buttons.forEach((button) => {
+                        buttonsRights[button.key] = FormOptions.t.PERMISSIONS.SHOW
+                    })
+                }
+                return buttonsRights
+            } else {
+                return rights || {}
+            }
+        },
+
+        tableRowClassName({ row, rowIndex }) {
+            // 把每一行的索引放进row
+            row.$index = rowIndex
+            if (rowIndex % 2 === 1) return 'warning-row'
+            return 'success-row'
+        },
+        handleSelectionChange(selection) {
+            this.multipleSelection = selection
+        },
+        handleRowClick(row, event, column) {
+            this.$refs.elTable.toggleRowSelection(row)
+        },
+        filterButtons(position) {
+            if (this.tableReadonly) {
+                return this.filterDetailButtons(position)
+            }
+            const bs = []
+            this.buttons.forEach((button) => {
+                if (
+                    hasPermission(button.key, position) && // 有位置权限
+                    (!button.position || button.position === 'all' || button.position === position) && // 有位置权限
+                    (this.$utils.isEmpty(this.buttonsRights[button.key]) || this.buttonsRights[button.key] !== FormOptions.t.PERMISSIONS.HIDE) // 有按钮权限
+                ) {
+                    const b = JSON.parse(JSON.stringify(button))
+                    b.position = position
+                    bs.push(b)
+                }
+            })
+            return bs
+        },
+        filterDetailButtons(position) {
+            const bs = []
+            this.buttons.forEach((button) => {
+                if (
+                    hasPermission(button.key, position) && // 有位置权限
+                    (!button.position || button.position === 'all' || button.position === position) && // 有位置权限
+                    (this.$utils.isEmpty(this.buttonsRights[button.key]) || this.buttonsRights[button.key] !== FormOptions.t.PERMISSIONS.HIDE) && // 有按钮权限
+                    this.$utils.toBoolean(button.enabledDetail)
+                ) {
+                    const b = JSON.parse(JSON.stringify(button))
+                    b.position = position
+                    bs.push(b)
+                }
+            })
+            return bs
+        },
+        handleActionEvent(button, buttonIndex) {
+            // 起始下标
+            let index = this.currentPage * 10 - 10 + buttonIndex
+            this.actionCode = button.key === 'custom' ? button.code || button.key + index : button.key
+            this.actionPosition = button.position || 'toolbar'
+            // 前置事件
+            this.beforeScript(button, index, (result) => {
+                this.editFromType = button.key
+                if (!result) {
+                    return
+                }
+                switch (button.key) {
+                    case 'add':
+                        // 新增自定义对话框按钮
+                        if (button.enabledCustom === 'Y') {
+                            this.handleAddCustomDialog(button)
+                        } else {
+                            this.handleAdd()
+                        }
+                        break
+                    case 'edit':
+                        this.handleDialogMode(index)
+                        break
+                    case 'consult':
+                        // 查阅按钮事件
+                        this.handleDialogMode(index)
+                        break
+                    case 'remove':
+                        this.handleRemove(button, index)
+                        break
+                    case 'import':
+                        this.handleImport(button, index)
+                        break
+                    case 'export':
+                        this.handleExport(button, index)
+                        break
+                    case 'custom':
+                        // 新增自定义对话框按钮
+                        if (button.enabledCustom === 'Y') {
+                            this.handleAddCustomDialog(button)
+                        }
+                        break
+                    default:
+                        break
+                }
+            })
+        },
+        destoryTable() {
+            if (this.$utils.isNotEmpty(window[this.mainCode + 'TableRefs']) && this.$utils.isNotEmpty(window[this.mainCode + 'TableRefs'][this.code])) {
+                window[this.mainCode + 'TableRefs'][this.code] = null
+                delete window[this.mainCode + 'TableRefs'][this.code]
+            }
+            if (this.$utils.isObject(window[this.mainCode + 'TableRefs']) && this.$utils.isEmpty(window[this.mainCode + 'TableRefs'])) {
+                window[this.mainCode + 'TableRefs'] = null
+                delete window[this.mainCode + 'TableRefs']
+            }
+        },
+        // 添加
+        async handleAdd() {
+            if (this.mode === 'dialog') {
+                this.handleDialogMode()
+            } else {
+                const defaultValue = await FormUtils.getTableDefaultData(this.field)
+                await this.addData(JSON.parse(JSON.stringify(defaultValue)))
+            }
+        },
+        // 新增数据
+        addData(data) {
+            this.dataModel.unshift(data)
+            // 初始化运行公式计算 unshift
+            this.initRunCalFormula(this.dataModel.length - 1)
+            // 后置事件
+            this.afterScript(this.actionCode, this.actionPosition)
+            /*  if (this.$refs.elTable) {
           this.$refs.elTable.doLayout()
         } */
-    },
-    /**
-     * 获取选择的记录
-     */
-    getSelection(position, index) {
-      const selection = []
-      if (position === 'toolbar' && this.mode !== 'block') {
-        if (this.multipleSelection && this.multipleSelection.length > 0) {
-          let startIndex = this.currentPage * 10 - 10
-          this.multipleSelection.forEach(row => {
-            selection.push(row.$index + startIndex)
-          })
-        }
-      } else {
-        selection.push(index)
-      }
-      return selection
-    },
-    handleRemove(button, index) {
-      const position = button.position
-      const selection = this.getSelection(position, index)
-      ActionUtils.removeRecord(selection, '确定删除当前数据??', true).then((ids) => {
-        for (let i = this.dataModel.length - 1; i >= 0; i--) {
-          if (ids.indexOf(i) > -1) {
-            this.dataModel.splice(i, 1)
-          }
-        }
-        // 后置事件
-        this.afterScript(this.actionCode, position, {
-          selection: selection,
-          index: index
-        })
-      }).catch(() => { })
-    },
-    // 初始化运行公式计算
-    initRunCalFormula(row) {
-      // 不需要字段的进行公式计算 比如获取但其当前时间,随机数
-      FormUtils.runCalFormula(this, this.formula[FormUtils.NOT_NEED_FIELD], this.mainCode, row)
-    },
-    handleImport() {
-      this.importTableDialogVisible = true
-    },
-    handleImportTableActionEvent(file, options) {
-      const formData = FormUtils.getTableDefaultColumnData(this.field)
-      IbpsImport.xlsx(file, options).then(({ header, results }) => {
-        const columnMap = {}
-        this.nameColumns.forEach((column) => {
-          columnMap[column.label] = column
-        })
-        results.forEach((result) => {
-          const data = JSON.parse(JSON.stringify(formData))
-          for (const key in result) {
-            if (columnMap[key]) {
-              const column = columnMap[key]
-              const name = column.name
-              const value = this.importDataFormatter(result[key], column)
-              data[name] = value
+        },
+        /**
+         * 获取选择的记录
+         */
+        getSelection(position, index) {
+            const selection = []
+            if (position === 'toolbar' && this.mode !== 'block') {
+                if (this.multipleSelection && this.multipleSelection.length > 0) {
+                    let startIndex = this.currentPage * 10 - 10
+                    this.multipleSelection.forEach((row) => {
+                        selection.push(row.$index + startIndex)
+                    })
+                }
+            } else {
+                selection.push(index)
+            }
+            return selection
+        },
+        handleRemove(button, index) {
+            const position = button.position
+            const selection = this.getSelection(position, index)
+            ActionUtils.removeRecord(selection, '确定删除当前数据??', true)
+                .then((ids) => {
+                    for (let i = this.dataModel.length - 1; i >= 0; i--) {
+                        if (ids.indexOf(i) > -1) {
+                            this.dataModel.splice(i, 1)
+                        }
+                    }
+                    // 后置事件
+                    this.afterScript(this.actionCode, position, {
+                        selection: selection,
+                        index: index
+                    })
+                })
+                .catch(() => {})
+        },
+        // 初始化运行公式计算
+        initRunCalFormula(row) {
+            // 不需要字段的进行公式计算 比如获取但其当前时间,随机数
+            FormUtils.runCalFormula(this, this.formula[FormUtils.NOT_NEED_FIELD], this.mainCode, row)
+        },
+        handleImport() {
+            this.importTableDialogVisible = true
+        },
+        handleImportTableActionEvent(file, options) {
+            const formData = FormUtils.getTableDefaultColumnData(this.field)
+            IbpsImport.xlsx(file, options).then(({ header, results }) => {
+                const columnMap = {}
+                this.nameColumns.forEach((column) => {
+                    columnMap[column.label] = column
+                })
+                results.forEach((result) => {
+                    const data = JSON.parse(JSON.stringify(formData))
+                    for (const key in result) {
+                        if (columnMap[key]) {
+                            const column = columnMap[key]
+                            const name = column.name
+                            const value = this.importDataFormatter(result[key], column)
+                            data[name] = value
+                        }
+                    }
+                    // TODO: 需要格式化的成数据库的数据
+                    // 数据添加
+                    this.dataModel.push(data)
+                })
+                this.importTableDialogVisible = false
+                ActionUtils.success('导入成功')
+            })
+        },
+        // 导出
+        handleExport(button, index) {
+            const position = button.position
+            const selection = this.getSelection(position, index)
+            if (selection.length > 1) {
+                ActionUtils.selectedMultiRecord(selection)
+                    .then((ids) => {
+                        this.exportData(ids)
+                    })
+                    .catch(() => {})
+            } else {
+                this.exportData()
+            }
+        },
+        /**
+         * 导出数据
+         */
+        exportData(ids) {
+            const columnMap = {}
+            const columns = []
+            this.nameColumns.forEach((column) => {
+                if (!this.columnHidden(column)) {
+                    columns.push(column)
+                }
+                columnMap[column.name] = column
+            })
+            const exportData = JSON.parse(JSON.stringify(this.dataModel))
+            const data = ids
+                ? exportData.filter((d, i) => {
+                      return ids.includes(i)
+                  })
+                : exportData
+            // TODO: 需要格式化展示的数据
+            this.convertExportData(data, columnMap).then((data) => {
+                console.log(columns, data)
+                IbpsExport.excel({
+                    columns: columns,
+                    data: data,
+                    nameKey: 'name',
+                    title: this.field.label
+                }).then(() => {
+                    ActionUtils.success('导出成功')
+                })
+            })
+        },
+        async convertExportData(data, columnMap) {
+            return new Promise((resolve, reject) => {
+                const result = []
+                data
+                    ? data.forEach((d) => {
+                          const o = d
+                          for (const name in d) {
+                              const column = columnMap[name]
+                              const value = this.dataFormatter(d[name], column)
+                              o[name] = value
+                          }
+                          result.push(o)
+                      })
+                    : ''
+                resolve(result)
+            })
+        },
+        importDataFormatter(value, column) {
+            if (this.$utils.isEmpty(value) || this.$utils.isEmpty(column)) {
+                return value
+            }
+            const fieldType = column.field_type
+            const fieldOptions = column.field_options
+            let result = ''
+            switch (fieldType) {
+                case 'hidden':
+                case 'text':
+                case 'textarea':
+                case 'editor':
+                case 'autoNumber':
+                case 'number': // 数字,格式化千分位等
+                case 'datePicker': // 日期格式
+                case 'currentDate':
+                case 'currentTime':
+                    result = value
+                    break
+                case 'select': // 下拉,单选,多选
+                case 'radio':
+                case 'checkbox':
+                    result = this.formatterOptions(value, fieldOptions['options'], 'label', 'val')
+                    break
+                case 'switch': //
+                    result = this.formatterOptions(value, FormUtils.getSwitchOptions(this.field.field_options), 'label', 'val')
+                    break
+                default:
+                    result = value
+                    break
+            }
+            return result
+        },
+        dataFormatter(value, column) {
+            if (this.$utils.isEmpty(value) || this.$utils.isEmpty(column)) {
+                return value
+            }
+            const fieldType = column.field_type
+            const fieldOptions = column.field_options
+            let result = ''
+            switch (fieldType) {
+                case 'hidden':
+                case 'text':
+                case 'textarea':
+                case 'editor':
+                case 'autoNumber':
+                case 'number': // 数字,格式化千分位等
+                case 'datePicker': // 日期格式
+                case 'currentDate':
+                case 'currentTime':
+                    result = value
+                    break
+                case 'select': // 下拉,单选,多选
+                case 'radio':
+                case 'checkbox':
+                    result = this.formatterOptions(value, fieldOptions['options'], 'val')
+                    break
+                case 'switch': //
+                    result = this.formatterOptions(value, FormUtils.getSwitchOptions(fieldOptions), 'val')
+                    break
+                default:
+                    result = value
+                    break
+            }
+            return result
+        },
+        /**
+         * 格式化选项
+         */
+        formatterOptions(value, options, valueKey = 'value', labelKey = 'label') {
+            const optionObj = {}
+            options.map((option) => {
+                optionObj[option[valueKey]] = option[labelKey]
+            })
+            const aryValue = value.split(',')
+            const res = aryValue.map((v) => {
+                return optionObj[v] || v
+            })
+            return res.join(',')
+        },
+        deleteEdit() {
+            this.formDialogVisible = false
+            this.handleCout = null
+        },
+        // =====================对话框模式数据处理   金源信通改=====================
+        handleDialogMode(index) {
+            const data = this.$utils.isNotEmpty(index) ? this.dataModel[index] : {}
+            this.dialogFormData = {
+                responses: JSON.parse(JSON.stringify(data)),
+                // 表单字段权限
+                permissions: {
+                    fields: this.columnsRights
+                }
+            }
+            const attrs = {
+                hide_name: true
+            }
+            if (this.params.formAttrs) {
+                const formAttrs = this.params.formAttrs
+                const allowAttrs = ['inline', 'labelPosition', 'labelWidth', 'labelWidthUnit', 'size', 'statusIcon', 'descPosition', 'read_style', 'colon', 'labelSuffix']
+                for (const key in formAttrs) {
+                    if (allowAttrs.indexOf(key) > -1) {
+                        const val = formAttrs[key]
+                        attrs[key] = val
+                    }
+                }
             }
-          }
-          // TODO: 需要格式化的成数据库的数据
-          // 数据添加
-          this.dataModel.push(data)
-        })
-        this.importTableDialogVisible = false
-        ActionUtils.success('导入成功')
-      })
-    },
-    // 导出
-    handleExport(button, index) {
-      const position = button.position
-      const selection = this.getSelection(position, index)
-      if (selection.length > 1) {
-        ActionUtils.selectedMultiRecord(selection).then((ids) => {
-          this.exportData(ids)
-        }).catch(() => { })
-      } else {
-        this.exportData()
-      }
-    },
-    /**
-     * 导出数据
-     */
-    exportData(ids) {
-      const columnMap = {}
-      const columns = []
-      this.nameColumns.forEach(column => {
-        if (!this.columnHidden(column)) {
-          columns.push(column)
-        }
-        columnMap[column.name] = column
-      })
-      const exportData = JSON.parse(JSON.stringify(this.dataModel))
-      const data = ids ? exportData.filter((d, i) => {
-        return ids.includes(i)
-      }) : exportData
-      // TODO: 需要格式化展示的数据
-      this.convertExportData(data, columnMap).then((data) => {
-        IbpsExport.excel({
-          columns: columns,
-          data: data,
-          nameKey: 'name',
-          title: this.field.label
-        })
-          .then(() => {
-            ActionUtils.success('导出成功')
-          })
-      })
-    },
-    async convertExportData(data, columnMap) {
-      return new Promise((resolve, reject) => {
-        const result = []
-        data ? data.forEach(d => {
-          const o = d
-          for (const name in d) {
-            const column = columnMap[name]
-            const value = this.dataFormatter(d[name], column)
-            o[name] = value
-          }
-          result.push(o)
-        }) : ''
-        resolve(result)
-      })
-    },
-    importDataFormatter(value, column) {
-      if (this.$utils.isEmpty(value) || this.$utils.isEmpty(column)) {
-        return value
-      }
-      const fieldType = column.field_type
-      const fieldOptions = column.field_options
-      let result = ''
-      switch (fieldType) {
-        case 'hidden':
-        case 'text':
-        case 'textarea':
-        case 'editor':
-        case 'autoNumber':
-        case 'number':// 数字,格式化千分位等
-        case 'datePicker':// 日期格式
-        case 'currentDate':
-        case 'currentTime':
-          result = value
-          break
-        case 'select': // 下拉,单选,多选
-        case 'radio':
-        case 'checkbox':
-          result = this.formatterOptions(value, fieldOptions['options'], 'label', 'val')
-          break
-        case 'switch': //
-          result = this.formatterOptions(value, FormUtils.getSwitchOptions(this.field.field_options), 'label', 'val')
-          break
-        default:
-          result = value
-          break
-      }
-      return result
-    },
-    dataFormatter(value, column) {
-      if (this.$utils.isEmpty(value) || this.$utils.isEmpty(column)) {
-        return value
-      }
-      const fieldType = column.field_type
-      const fieldOptions = column.field_options
-      let result = ''
-      switch (fieldType) {
-        case 'hidden':
-        case 'text':
-        case 'textarea':
-        case 'editor':
-        case 'autoNumber':
-        case 'number':// 数字,格式化千分位等
-        case 'datePicker':// 日期格式
-        case 'currentDate':
-        case 'currentTime':
-          result = value
-          break
-        case 'select': // 下拉,单选,多选
-        case 'radio':
-        case 'checkbox':
-          result = this.formatterOptions(value, fieldOptions['options'], 'val')
-          break
-        case 'switch': //
-          result = this.formatterOptions(value, FormUtils.getSwitchOptions(fieldOptions), 'val')
-          break
-        default:
-          result = value
-          break
-      }
-      return result
-    },
-    /**
-     * 格式化选项
-     */
-    formatterOptions(value, options, valueKey = 'value', labelKey = 'label') {
-      const optionObj = {}
-      options.map(option => {
-        optionObj[option[valueKey]] = option[labelKey]
-      })
-      const aryValue = value.split(',')
-      const res = aryValue.map((v) => {
-        return optionObj[v] || v
-      })
-      return res.join(',')
-    },
-    deleteEdit() {
-      this.formDialogVisible = false
-      this.handleCout = null
-    },
-    // =====================对话框模式数据处理   金源信通改=====================
-    handleDialogMode(index) {
-      const data = this.$utils.isNotEmpty(index) ? this.dataModel[index] : {}
-      this.dialogFormData = {
-        responses: JSON.parse(JSON.stringify(data)),
-        // 表单字段权限
-        permissions: {
-          fields: this.columnsRights
-        }
-      }
-      const attrs = {
-        hide_name: true
-      }
-      if (this.params.formAttrs) {
-        const formAttrs = this.params.formAttrs
-        const allowAttrs = ['inline',
-          'labelPosition',
-          'labelWidth',
-          'labelWidthUnit',
-          'size',
-          'statusIcon',
-          'descPosition',
-          'read_style',
-          'colon',
-          'labelSuffix'
-        ]
-        for (const key in formAttrs) {
-          if (allowAttrs.indexOf(key) > -1) {
-            const val = formAttrs[key]
-            attrs[key] = val
-          }
-        }
-      }
 
-      this.dialogFormIndex = this.$utils.isNotEmpty(index) ? index : -1
-      this.dialogFormDef = {
-        code: this.field.name,
-        attrs: attrs,
-        fields: this.columns
-      }
-      // 表单
-      this.formDialogVisible = true
-      this.judgeData(index)
-    },
-    /* 第一次进入时,不做更新判断。
+            this.dialogFormIndex = this.$utils.isNotEmpty(index) ? index : -1
+            this.dialogFormDef = {
+                code: this.field.name,
+                attrs: attrs,
+                fields: this.columns
+            }
+            // 表单
+            this.formDialogVisible = true
+            this.judgeData(index)
+        },
+        /* 第一次进入时,不做更新判断。
       并记录当前进入时的操作, index>=0 则为修改。否则为新增。
       第二次进入时判断
       如果上次为修改,则刷新重置添加。
       如果上次为新增,则不做变化。
     */
-    judgeData(index) {
-      if (index >= 0 && this.handleCout) {//第一次进入时,不做更新判断。
-        this.$refs.jyxtEdit.loadFormData();
-      } else if (index == undefined && this.handleCout == '编辑') {
-        this.$refs.jyxtEdit.loadFormData();
-      }
-      this.handleCout = index >= 0 ? '编辑' : '新增' //记录
-    },
+        judgeData(index) {
+            if (index >= 0 && this.handleCout) {
+                //第一次进入时,不做更新判断。
+                this.$refs.jyxtEdit.loadFormData()
+            } else if (index == undefined && this.handleCout == '编辑') {
+                this.$refs.jyxtEdit.loadFormData()
+            }
+            this.handleCout = index >= 0 ? '编辑' : '新增' //记录
+        },
 
-    // =====================对话框模式数据处理=  原====================
+        // =====================对话框模式数据处理=  原====================
 
-    handleEditMode(index) {
-      const data = this.$utils.isNotEmpty(index) ? this.dataModel[index] : {}
-      this.dialogFormData = {
-        responses: JSON.parse(JSON.stringify(data)),
-        // 表单字段权限
-        permissions: {
-          fields: this.columnsRights
-        }
-      }
-      const attrs = {
-        hide_name: true
-      }
-      if (this.params.formAttrs) {
-        const formAttrs = this.params.formAttrs
-        const allowAttrs = ['inline',
-          'labelPosition',
-          'labelWidth',
-          'labelWidthUnit',
-          'size',
-          'statusIcon',
-          'descPosition',
-          'read_style',
-          'colon',
-          'labelSuffix'
-        ]
-        for (const key in formAttrs) {
-          if (allowAttrs.indexOf(key) > -1) {
-            const val = formAttrs[key]
-            attrs[key] = val
-          }
-        }
-      }
+        handleEditMode(index) {
+            const data = this.$utils.isNotEmpty(index) ? this.dataModel[index] : {}
+            this.dialogFormData = {
+                responses: JSON.parse(JSON.stringify(data)),
+                // 表单字段权限
+                permissions: {
+                    fields: this.columnsRights
+                }
+            }
+            const attrs = {
+                hide_name: true
+            }
+            if (this.params.formAttrs) {
+                const formAttrs = this.params.formAttrs
+                const allowAttrs = ['inline', 'labelPosition', 'labelWidth', 'labelWidthUnit', 'size', 'statusIcon', 'descPosition', 'read_style', 'colon', 'labelSuffix']
+                for (const key in formAttrs) {
+                    if (allowAttrs.indexOf(key) > -1) {
+                        const val = formAttrs[key]
+                        attrs[key] = val
+                    }
+                }
+            }
 
-      this.dialogFormIndex = this.$utils.isNotEmpty(index) ? index : -1
-      this.dialogFormDef = {
-        code: this.field.name,
-        attrs: attrs,
-        fields: this.columns
-      }
-      // 表单
-      this.formEditVisible = true
-    },
+            this.dialogFormIndex = this.$utils.isNotEmpty(index) ? index : -1
+            this.dialogFormDef = {
+                code: this.field.name,
+                attrs: attrs,
+                fields: this.columns
+            }
+            // 表单
+            this.formEditVisible = true
+        },
 
-    /**
-     * 对话框模式表单返回值
-     */
-    handleFormDialogActionEvent(key, data) {
-      this.$message({
-        showClose: true,
-        message: '操作成功!',
-        type: 'success'
-      });
-      if (this.dialogFormIndex > -1) {
-        this.dataModel.splice(this.dialogFormIndex, 1, data)
-        // 后置事件
-        this.afterScript(this.actionCode, this.actionPosition, {
-          index: this.dialogFormIndex
-        })
-      } else {
-        this.addData(data)
-      }
-    },
-    // =====================自定义对话框=====================
+        /**
+         * 对话框模式表单返回值
+         */
+        handleFormDialogActionEvent(key, data) {
+            this.$message({
+                showClose: true,
+                message: '操作成功!',
+                type: 'success'
+            })
+            if (this.dialogFormIndex > -1) {
+                this.dataModel.splice(this.dialogFormIndex, 1, data)
+                // 后置事件
+                this.afterScript(this.actionCode, this.actionPosition, {
+                    index: this.dialogFormIndex
+                })
+            } else {
+                this.addData(data)
+            }
+        },
+        // =====================自定义对话框=====================
 
-    async handleAddCustomDialog(button) {
-      this.customDialogKey = button.dialog
-      this.customDialogDynamicParams = await FormUtils.getLinkDynamicParams(button.custom, this.formData)
-      this.customDialogCustom = button.custom
-      setTimeout(() => {
-        this.customDialogVisible = true
-      }, 10)
-    },
-    async handleCustomDialogActionEvent(key, datas) {
-      const linkLinkage = this.customDialogCustom['link_linkage']
-      if (this.$utils.isEmpty(linkLinkage)) {
-        return
-      }
-      const defaultValue = await FormUtils.getTableDefaultData(this.field)
-      for (let i = 0; i < datas.length; i++) {
-        const data = datas[i]
-        const model = JSON.parse(JSON.stringify(defaultValue))
-        for (let i = 0; i < linkLinkage.length; i++) {
-          const item = linkLinkage[i]
-          const fieldName = item.field
-          if (model.hasOwnProperty(fieldName)) {
-            model[fieldName] = data[item.name] || ''
-          }
-        }
-        this.dataModel.push(model)
-      }
-      // 后置事件
-      this.afterScript(this.actionCode, this.actionPosition)
-    },
-    summaryMethod(param) {
-      if (this.showSummary) {
-        return JForm._summaryMethod(this, this.field.name, param)
-      }
-    },
-    hasScript() {
-      return true
-    },
-    // 前置脚本
-    beforeScript(button, index, callback) {
-      if (!this.hasScript()) {
-        if (callback) {
-          const flag = true
-          callback(flag)
-        }
-        return
-      }
-      const params = {
-        button: button,
-        index: index
-      }
-      if (!callback) {
-        callback = () => { }
-      }
-      JForm._beforeSubButton(this, this.actionCode, button.position, params, callback)
-    },
-    // 后置脚本
-    afterScript(action, position, params, callback) {
-      if (!this.hasScript()) {
-        if (callback) {
-          const flag = true
-          callback(flag)
+        async handleAddCustomDialog(button) {
+            this.customDialogKey = button.dialog
+            this.customDialogDynamicParams = await FormUtils.getLinkDynamicParams(button.custom, this.formData)
+            this.customDialogCustom = button.custom
+            setTimeout(() => {
+                this.customDialogVisible = true
+            }, 10)
+        },
+        async handleCustomDialogActionEvent(key, datas) {
+            const linkLinkage = this.customDialogCustom['link_linkage']
+            if (this.$utils.isEmpty(linkLinkage)) {
+                return
+            }
+            const defaultValue = await FormUtils.getTableDefaultData(this.field)
+            for (let i = 0; i < datas.length; i++) {
+                const data = datas[i]
+                const model = JSON.parse(JSON.stringify(defaultValue))
+                for (let i = 0; i < linkLinkage.length; i++) {
+                    const item = linkLinkage[i]
+                    const fieldName = item.field
+                    if (model.hasOwnProperty(fieldName)) {
+                        model[fieldName] = data[item.name] || ''
+                    }
+                }
+                this.dataModel.push(model)
+            }
+            // 后置事件
+            this.afterScript(this.actionCode, this.actionPosition)
+        },
+        summaryMethod(param) {
+            if (this.showSummary) {
+                return JForm._summaryMethod(this, this.field.name, param)
+            }
+        },
+        hasScript() {
+            return true
+        },
+        // 前置脚本
+        beforeScript(button, index, callback) {
+            if (!this.hasScript()) {
+                if (callback) {
+                    const flag = true
+                    callback(flag)
+                }
+                return
+            }
+            const params = {
+                button: button,
+                index: index
+            }
+            if (!callback) {
+                callback = () => {}
+            }
+            JForm._beforeSubButton(this, this.actionCode, button.position, params, callback)
+        },
+        // 后置脚本
+        afterScript(action, position, params, callback) {
+            if (!this.hasScript()) {
+                if (callback) {
+                    const flag = true
+                    callback(flag)
+                }
+                return
+            }
+            if (!params) {
+                params = {}
+            }
+            params.button = this.getButtonByKey(action)
+            if (!callback) {
+                callback = () => {}
+            }
+            JForm._afterSubButton(this, action, position, params, callback)
+        },
+        getButtonByKey(action) {
+            return this.buttons.find((button) => {
+                return button.key === action
+            })
+        },
+        /**
+         * 更新字段值(主表或其他子表)
+         */
+        updateFormData(name, value) {
+            this.$emit('change-data', name, value)
+        },
+        // 设置行数据
+        setRowData(row, name, value) {
+            this.dataModel[row][name] = value
+        },
+        // 设置行数据
+        getRowData(row, name) {
+            return this.dataModel[row][name]
+        },
+        /**
+         * 获取表单值
+         */
+        getData(key) {
+            return this.formData[key]
+        },
+        /**
+         * 设置表单值
+         */
+        setData(name, value) {
+            this.updateFormData(name, value)
         }
-        return
-      }
-      if (!params) {
-        params = {}
-      }
-      params.button = this.getButtonByKey(action)
-      if (!callback) {
-        callback = () => { }
-      }
-      JForm._afterSubButton(this, action, position, params, callback)
-    },
-    getButtonByKey(action) {
-      return this.buttons.find((button) => {
-        return button.key === action
-      })
-    },
-    /**
-     * 更新字段值(主表或其他子表)
-     */
-    updateFormData(name, value) {
-      this.$emit('change-data', name, value)
-    },
-    // 设置行数据
-    setRowData(row, name, value) {
-      this.dataModel[row][name] = value
-    },
-    // 设置行数据
-    getRowData(row, name) {
-      return this.dataModel[row][name]
-    },
-    /**
-     * 获取表单值
-     */
-    getData(key) {
-      return this.formData[key]
-    },
-    /**
-     * 设置表单值
-     */
-    setData(name, value) {
-      this.updateFormData(name, value)
     }
-  }
 }
 </script>
 <style lang="scss">
 .dynamic-form-table {
-  .panel-heading {
-    color: #000;
-    border-bottom: 0;
-    padding: 0px 0px 0px 15px;
-    background: #F0FFFF;
-  }
+    .panel-heading {
+        color: #000;
+        border-bottom: 0;
+        padding: 0px 0px 0px 15px;
+        background: #f0ffff;
+    }
 
-  .dynamic-form-table__inner {
-    .panel-body {
-      padding: 0;
+    .dynamic-form-table__inner {
+        .panel-body {
+            padding: 0;
+        }
     }
-  }
 
-  .dynamic-form-table__block {
-    padding-bottom: 10px;
+    .dynamic-form-table__block {
+        padding-bottom: 10px;
 
-    .panel-body {
-      border: 0px;
+        .panel-body {
+            border: 0px;
+        }
     }
-  }
 
-  .el-rate {
-    position: relative;
-    display: inline-block;
-  }
+    .el-rate {
+        position: relative;
+        display: inline-block;
+    }
 }
 
 .is-error {
-  .dynamic-form-table {
-    border: 1px solid #F56C6C;
-  }
+    .dynamic-form-table {
+        border: 1px solid #f56c6c;
+    }
 }
 
 .is-required:not(.is-no-asterisk) {
-  .dynamic-form-table__label:before {
-    content: '*';
-    color: #F56C6C;
-    margin-right: 4px;
-  }
+    .dynamic-form-table__label:before {
+        content: '*';
+        color: #f56c6c;
+        margin-right: 4px;
+    }
 }
 
 .table-tetle-style {
-  font-weight: bold;
-  font-size: 12px;
-  color: #999999;
+    font-weight: bold;
+    font-size: 12px;
+    color: #999999;
 }
 
 .dynamic-form-table .el-table th {
-  background-color: #A7D6F8 !important;
-  font-size: 12px;
-  font-weight: bold;
-  border: 0px;
+    background-color: #a7d6f8 !important;
+    font-size: 12px;
+    font-weight: bold;
+    border: 0px;
 }
 
 .dynamic-form-table .el-table td {
-  font-size: 12px;
-  padding: 0px 0 !important;
+    font-size: 12px;
+    padding: 0px 0 !important;
 }
 
 .dynamic-form-table .el-table .warning-row {
-  background: #D3EBFC;
-  color: #000000;
+    background: #d3ebfc;
+    color: #000000;
 }
 
 .dynamic-form-table .el-table .success-row {
-  background: #F9FFFF;
-  color: #000000;
+    background: #f9ffff;
+    color: #000000;
 }
 </style>
-  
-  
+
+
   </style>
-  

+ 1 - 1
src/views/peopleManages/personComcont/BarChart.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="pieView">
-    <div style="height: 10%;line-height: 30px;text-align: left;padding-left: 10px;width: 100%;">{{config.title}}</div>   
+    <div style="height: 10%;line-height: 30px;text-align: left;padding-left: 10px;width: 100%;color: white;">{{config.title}}</div>   
     <div style="width:100%;height:90%;display: inline-block;overflow: hidden;box-sizing: border-box;">
       <div :id="config.id" style="width:100%;height:100%;"> </div>
     </div>

+ 1 - 1
src/views/peopleManages/personComcont/RingChart.vue

@@ -55,7 +55,7 @@ export default {
           }
         },
         label: {
-          formatter: '{b}:{c}个'
+          formatter: '{b}:{d}%'
         },
         series: [
           {

+ 948 - 413
src/views/peopleManages/taskStatistics/index.vue

@@ -1,452 +1,987 @@
 <template>
-    <div>
-        <div class="jbd-title-cont"> 检测人员任务统计 </div>
-        <div class="contain">
-            <div class="date">
-                统计时间:
-                <el-date-picker v-model="monthValues" type="monthrange" align="right" unlink-panels range-separator="至"
-                    start-placeholder="开始月份" end-placeholder="结束月份" :picker-options="pickerOptions"
-                    @change="changeDate">
-                </el-date-picker>
-            </div>
-            <div class="chart">
-                <div id="echart-line" :style="{ width: '100%', height: '100%', paddingRight: '10px' }"></div>
-            </div>
-
+  <div class="personView">
+    <div class="topView" style="width: 100%;height: 11%;">
+      <!-- <div class="jbd-title"> 人员管理看板 </div> -->
+      <div class="jbd-title">
+        <dv-decoration-8 style="width:20%;height:50px;position: absolute;left: 0px;top: 0px;" />
+        <div style="width:100%">
+          <div style="height:40%;font-size: 22px;margin-top: 10px;">人员管理看板</div>
+          <dv-decoration-5 style="width:30%;height: 50%;margin: 0 auto;" />
         </div>
+        <dv-decoration-8 :reverse="true" style="width:20%;height:50px;position:absolute;right: 0px;top: 0px;" />
+      </div>
+      <!-- <dv-decoration-7 class="jbd-title">人员管理看板</dv-decoration-7> -->
 
-        <el-dialog :visible.sync="dialogTableVisible">
-            <div class="dialogbox">
-                <div class="jbd-title-cont"> {{ setParams.seriesName }}-{{ setParams.name }} </div>
-                <div class="ibps">
-                    <ibps-crud key="istree" ref="crud" :data="formDataFiiter" :toolbars="listConfig.toolbars"
-                        :search-form="listConfig.searchForm" :pk-key="pkKey" :columns="listConfig.columns"
-                        :loading="loading" @action-event="handleAction" :pagination="pagination"
-                        @pagination-change="handlePaginationChange">
-                        <template slot="jianceyuan"  slot-scope="scope">
-                            <ibps-user-selector :value="scope.row.jian_ce_yuan_" type="user" :multiple="true"
-                                :disabled="true" readonly-text="text" @callback="data => formId = data.id" />
-                        </template>
-                        <template slot="fuheyuan"  slot-scope="scope">
-                            <ibps-user-selector :value="scope.row.fu_he_yuan_" type="user" :multiple="true"
-                                :disabled="true" readonly-text="text" @callback="data => formId = data.id" />
-                        </template>
-                    </ibps-crud>
-                </div>
-            </div>
-
-        </el-dialog>
+      <div class="contain">
+        <!-- <div class="personNum">员工数量:{{ employeeNum }}</div> -->
+        <dv-decoration-11  class="personNum" style="margin-left:10%"><i class="el-icon-user" style="color:#4ea5d6;margin-right: 3px;"></i> 员工数量:{{ employeeNum   }}人</dv-decoration-11>
+        <dv-border-box-8 class="date" style="margin-right:10%; display: flex; align-items: center;">
+          <div style="width:25%;display: inline-block;margin-right: 3px;">统计时间:</div>          
+          <el-date-picker style="width:75%;" v-model="monthValues" type="monthrange" align="right" unlink-panels range-separator="至" start-placeholder="开始月份" end-placeholder="结束月份" :picker-options="pickerOptions" @change="changeDate">
+          </el-date-picker>
+        </dv-border-box-8>
+        <!-- <dv-border-box-9 >员工数量:8</dv-border-box-9> -->
+        <!-- <div class="date">
+          统计时间:
+          <el-date-picker v-model="monthValues" type="monthrange" align="right" unlink-panels range-separator="至" start-placeholder="开始月份" end-placeholder="结束月份" :picker-options="pickerOptions" @change="changeDate">
+          </el-date-picker>
+        </div> -->
+      </div>
     </div>
+    <dv-border-box-1 style="width:100%;height:89%; box-sizing: border-box; overflow: hidden;">
+      <div style="height:3%"></div>
+      <!-- <dv-decoration-10 style="height:2%;width:100%;" /> -->
+      <div class="middleView">
+        <div class="viewLeft">
+          <pieView v-if="degreePieData.data[0].value" :info="degreePieData" />
+        </div>
+        <dv-decoration-2 :reverse="true" style="width:2%;height: 100%;" />
+        <div class="viewCenter">
+          <RingChart v-if="ranksPieData.data[2].value" :info="ranksPieData" />
+        </div>
+        <dv-decoration-2 :reverse="true" style="width:2%;height: 100%;" />
+        <div class="viewRight">
+          <CarouselTabl v-if="personInfoData.data.length" :info="personInfoData" title="员工基本信息列表" />
+        </div>
+      </div>
+      <dv-decoration-10 style="height:2%;width:96%; margin: 0 auto;" />
+      <div class="bottomView">
+        <div class="detectionTask">
+          <!-- <div id="echart-line" :style="{ width: '100%', height: '100%', paddingRight: '10px' }"></div> -->
+          <BarChart v-if="this.option.yAxis.data[0]" :info="option" :config="{title:'检测任务统计',id:'textJob'}" />
+        </div>
+        <dv-decoration-2 :reverse="true" style="width:2%;height: 100%;" />
+        <div class="taskMatters">
+          <BarChart v-if="optionPersonShow" :info="optionPerson" :config="{title:'任务事宜统计',id:'taskMatters'}" />
+        </div>
+        <!-- <dv-decoration-2 :reverse="true" style="width:2%;height: 100%;" /> -->
+        <!-- <el-dialog :visible.sync="dialogTableVisible">
+        <div class="dialogbox">
+          <div class="jbd-title-cont"> {{ setParams.seriesName }}-{{ setParams.name }} </div>
+          <div class="ibps">
+            <ibps-crud key="istree" ref="crud" :data="formDataFiiter" :toolbars="listConfig.toolbars" :search-form="listConfig.searchForm" :pk-key="pkKey" :columns="listConfig.columns" :loading="loading" @action-event="handleAction" :pagination="pagination" @pagination-change="handlePaginationChange">
+              <template slot="jianceyuan" slot-scope="scope">
+                <ibps-user-selector :value="scope.row.jian_ce_yuan_" type="user" :multiple="true" :disabled="true" readonly-text="text" @callback="data => formId = data.id" />
+              </template>
+              <template slot="fuheyuan" slot-scope="scope">
+                <ibps-user-selector :value="scope.row.fu_he_yuan_" type="user" :multiple="true" :disabled="true" readonly-text="text" @callback="data => formId = data.id" />
+              </template>
+            </ibps-crud>
+          </div>
+        </div>
+      </el-dialog> -->
+      </div>
+    </dv-border-box-1>
+  </div>
 </template>
-
+  
 <script>
-import * as echarts from 'echarts';
-import curdPost from '@/business/platform/form/utils/custom/joinCURD.js'
-import IbpsUserSelector from '@/business/platform/org/selector'
-import ActionUtils from '@/utils/action'
+import * as echarts from "echarts";
+import curdPost from "@/business/platform/form/utils/custom/joinCURD.js";
+import IbpsUserSelector from "@/business/platform/org/selector";
+import pieView from "@/views/system/jbdHome/board/component/getPieView";
+import CarouselTabl from "@/views/system/jbdHome/board/component/CarouselTabl";
+// import { pending, handledTask } from '@/api/platform/office/bpmReceived'
+// import { queryPageList } from '@/api/platform/bpmn/bpmTask'
+import ActionUtils from "@/utils/action";
+import { sync } from "@/api/platform/mail/outMail";
+import data from "@/components/ibps-icon-select/data";
 export default {
-    components: {
-        'ibps-user-selector': IbpsUserSelector
-    },
-    props: {},
-    data() {
-        return {
-            pkKey: 'id', // 主键  如果主键不是pk需要传主键
-            pickerOptions: {
-                shortcuts: [{
-                    text: '本月',
-                    onClick(picker) {
-                        const start = new Date();
-                        start.setDate(1);
-                        picker.$emit('pick', [start, new Date()]);
-                    }
-                }, {
-                    text: '今年至今',
-                    onClick(picker) {
-                        const end = new Date();
-                        const start = new Date(new Date().getFullYear(), 0);
-                        picker.$emit('pick', [start, end]);
-                    }
-                }, {
-                    text: '最近六个月',
-                    onClick(picker) {
-                        const end = new Date();
-                        const start = new Date();
-                        start.setMonth(start.getMonth() - 6);
-                        start.setDate(1);
-                        picker.$emit('pick', [start, end]);
-                    }
-                }]
+  name: "checkBoard1",
+  components: {
+    "ibps-user-selector": IbpsUserSelector,
+    pieView,
+    CarouselTabl,
+    RingChart: () => import("../personComcont/RingChart"),
+    BarChart: () => import("../personComcont/BarChart"),
+  },
+  props: {},
+  data() {
+    return {
+      pkKey: "id", // 主键  如果主键不是pk需要传主键
+      pickerOptions: {
+        shortcuts: [
+          {
+            text: "本月",
+            onClick(picker) {
+              const start = new Date();
+              start.setDate(1);
+              picker.$emit("pick", [start, new Date()]);
             },
-            monthValues: [],
-            dialogTableVisible: false,
-            getchart: null,
-            option: {
-                title: {
-                    text: ''
-                },
-                tooltip: {
-                    trigger: 'axis',
-                    axisPointer: {
-                        type: 'shadow'
-                    }
-                },
-                legend: {
-                    orient: 'vertical',
-                    right: '5',
-                    top: 'top'
-                },
-                grid: {
-                    left: '2%',
-                    right: '10%',
-                    bottom: '3%',
-                    containLabel: true
-                },
-                xAxis: {
-                    type: 'value',
-                    name: '任务数量(项)',
-                    axisLabel: {
-                        formatter: function (v) {
-                            return parseInt(v)//表示整数。其他数值类型以此类推
-                        }
-                    }
-                },
-                yAxis: {
-                    type: 'category',
-                    name: '检测人员',
-                    data: []
-                },
-                series: [
-                    {
-                        name: '检测未完成数',
-                        type: 'bar',
-                        data: [],
-                        label: {
-                            show: true,
-                            position: 'right',
-                            valueAnimation: true
-                        }
-                    },
-                    {
-                        name: '检测已完成数',
-                        type: 'bar',
-                        data: [],
-                        label: {
-                            show: true,
-                            position: 'right',
-                            valueAnimation: true
-                        }
-                    },
-                    {
-                        name: '复核未完成数',
-                        type: 'bar',
-                        data: [],
-                        label: {
-                            show: true,
-                            position: 'right',
-                            valueAnimation: true
-                        }
-                    },
-                    {
-                        name: '复核已完成数',
-                        type: 'bar',
-                        data: [],
-                        label: {
-                            show: true,
-                            position: 'right',
-                            valueAnimation: true
-                        }
-                    }
-                ],
-                dataZoom: [
-                    {
-                        type: 'inside',
-                        xAxisIndex: 0,
-                        filterMode: 'filter'
-                    },
-                    {
-                        type: 'inside',
-                        left: 'left',
-                        yAxisIndex: 0,
-                        filterMode: 'none'
-                    }
-                ]
+          },
+          {
+            text: "今年至今",
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date(new Date().getFullYear(), 0);
+              picker.$emit("pick", [start, end]);
             },
-            setParams: {},
-            formData: [],
-            formDataFiiter: [],
-            listConfig: {
-                // 工具栏
-                toolbars: [
-                    { key: 'search' }
-                ],
-                // 查询条件
-                searchForm: {
-                    forms: [
-                        { prop: 'yang_pin_bian_hao', label: '样品编号' },
-                        { prop: 'yang_pin_ming_che', label: '样品名称' },
-                        { prop: 'yang_pin_lei_xing', label: '样品类型' },
-                        { prop: 'shi_fou_he_ge_', label: '是否合格' },
-                    ]
-                },
-                // 表格字段配置
-                columns: [
-                    { prop: 'wei_tuo_lei_xing_', label: '委托类型' },
-                    { prop: 'jian_ce_zhuang_ta', label: '检测状态' },
-                    { prop: 'yang_pin_lei_xing', label: '样品类型' },
-                    { prop: 'yang_pin_bian_hao', label: '样品编号' },
-                    { prop: 'yang_pin_ming_che', label: '样品名称' },
-                    { prop: 'ji_lu_bian_hao_', label: '记录编号' },
-                    { prop: 'shi_fou_he_ge_', label: '是否合格' },
-                    { prop: 'jian_ce_yuan_', label: '检测员', slotName: "jianceyuan" },
-                    { prop: 'fu_he_yuan_', label: '复核员', slotName: "fuheyuan" }
-                ]
+          },
+          {
+            text: "最近六个月",
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setMonth(start.getMonth() - 6);
+              start.setDate(1);
+              picker.$emit("pick", [start, end]);
             },
-            startDate: '2022-1-1',
-            endDate: '',
-            chartData: [],
-            pagination: { limit: 20, page: 1 },
-            loading: false
-        };
-    },
-    computed: {},
-    methods: {
-        initChart() {
-            this.getchart = echarts.init(document.getElementById('echart-line'));
-            document.getElementById('echart-line').setAttribute('_echarts_instance_', '');
-            this.getchart.setOption(this.option, true);
-            //随着屏幕大小调节图表
-            window.addEventListener("resize", () => {
-                this.getchart.resize();
-            });
-            this.getchart.on('click', (params) => {
-                this.pagination = { limit: 20, page: 1 }
-                this.dialogTableVisible = true
-                this.setParams["dataIndex"] = params.dataIndex
-                this.setParams["name"] = params.name
-                switch (params.seriesName) {
-                    case "检测未完成数":
-                        this.setParams["seriesName"] = "未完成检测项目情况"
-                        break;
-                    case "检测已完成数":
-                        this.setParams["seriesName"] = "已完成检测项目情况"
-                        break;
-                    case "复核未完成数":
-                        this.setParams["seriesName"] = "未完成复核项目情况"
-                        break;
-                    case "复核已完成数":
-                        this.setParams["seriesName"] = "已完成复核项目情况"
-                        break;
-                    default:
-                        break;
-                }
-                this.formLoading()
-            });
+          },
+        ],
+      },
+      monthValues: [],
+      dialogTableVisible: false,
+      getchart: null,
+      option: {
+        title: {
+          text: "",
         },
-        /**
-        * 处理按钮事件
-        */
-        handleAction(command, position, selection, data) {
-            switch (command) {
-                case 'search':// 查询
-                    console.log("搜索")
-                    const params = this.$refs['crud'] ? this.$refs['crud'].getSearcFormData() : {}
-                    console.log("params:", params)
-                    this.formLoading()
-                    break
-                default:
-                    break
-            }
+        textAlign: "left",
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            type: "shadow",
+          },
         },
-        /**
-     * 处理分页事件
-     */
-        handlePaginationChange(page) {
-            this.pagination = page
-            this.paginationFunc(this.formData)
+        legend: {
+          // show: true,
+          left: "0%",
+          itemGap: 2,
+          itemWidth: 16,
+          textStyle: {
+            color: "#fff",
+          },
+        },
+        grid: {
+          left: "2%",
+          right: "10%",
+          bottom: "3%",
+          containLabel: true,
+        },
+        xAxis: {
+          type: "value",
+          name: "任务数量",
+          nameTextStyle: {
+            color: "#fff",
+          },
+          axisLabel: {
+            formatter: function (v) {
+              return parseInt(v); //表示整数。其他数值类型以此类推
+            },
+            color: "#fff",
+          },
+        },
+        yAxis: {
+          type: "category",
+          name: "检测人员",
+          data: [],
+          color: "#ffffff",
+          axisLabel: {
+            color: "#fff",
+          },
+          nameTextStyle: {
+            color: "#fff",
+          },
+        },
+        series: [
+          {
+            name: "检测未完成数",
+            type: "bar",
+            data: [],
+            label: {
+              show: true,
+              position: "right",
+              valueAnimation: true,
+              color: "#ffff00",
+            },
+            itemStyle: {
+              normal: {
+                color: ["#CC0000"],
+              },
+            },
+          },
+          {
+            name: "检测已完成数",
+            type: "bar",
+            data: [],
+            label: {
+              show: true,
+              position: "right",
+              valueAnimation: true,
+            },
+            itemStyle: {
+              normal: {
+                color: ["#99cc00"],
+              },
+            },
+          },
+          {
+            name: "复核未完成数",
+            type: "bar",
+            data: [],
+            label: {
+              show: true,
+              position: "right",
+              valueAnimation: true,
+            },
+            itemStyle: {
+              normal: {
+                color: ["#FFFF00"],
+              },
+            },
+          },
+          {
+            name: "复核已完成数",
+            type: "bar",
+            data: [],
+            label: {
+              show: true,
+              position: "right",
+              valueAnimation: true,
+            },
+            itemStyle: {
+              normal: {
+                color: ["#7070ff"],
+              },
+            },
+          },
+        ],
+        dataZoom: [
+          {
+            type: "inside",
+            xAxisIndex: 0,
+            filterMode: "filter",
+          },
+          {
+            type: "inside",
+            left: "left",
+            yAxisIndex: 0,
+            filterMode: "none",
+          },
+        ],
+      },
+      optionPersonShow: false,
+      optionPerson: {
+        title: {
+          text: "",
+        },
+        textAlign: "left",
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            type: "shadow",
+          },
+        },
+        legend: {
+          // show: true,
+          left: "0%",
+          itemGap: 2,
+          itemWidth: 16,
+          textStyle: {
+            color: "#fff",
+          },
+        },
+        grid: {
+          left: "2%",
+          right: "10%",
+          bottom: "3%",
+          containLabel: true,
+        },
+        xAxis: {
+          type: "value",
+          name: "任务数量",
+          nameTextStyle: {
+            color: "#fff",
+          },
+          axisLabel: {
+            formatter: function (v) {
+              return parseInt(v); //表示整数。其他数值类型以此类推
+            },
+            color: "#fff",
+          },
+        },
+        yAxis: {
+          type: "category",
+          name: "人员",
+          data: [],
+          axisLabel: {
+            color: "#fff",
+          },
+          nameTextStyle: {
+            color: "#fff",
+          },
         },
-        // 图表数据加载
-        chartLoading() {
-            // 获取所有检测人员任务统计
-            const sql = `select  *FROM (SELECT ie.ID_ AS jcId,ie.NAME_ AS jcName,COUNT(tj.zhuang_tai_ = '待数据输入' OR NULL) AS jianCeWeiWanCheng,COUNT(tj.zhuang_tai_ = '待数据校验' OR tj.zhuang_tai_ = '已完成' OR NULL) AS jianCeYiWanCheng FROM 
-                        t_lhjczb tj,ibps_party_employee ie 
-                        WHERE tj.jian_ce_yuan_ = ie.ID_ AND tj.update_time_ BETWEEN '${this.startDate}' AND '${this.endDate}' GROUP BY jian_ce_yuan_ 
-                        ) jc  LEFT JOIN 
-                        (
-                        SELECT ie.ID_ AS fhId,ie.NAME_ AS fhName,COUNT(tj.zhuang_tai_ = '待数据校验' OR NULL) AS fuHeWeiWanCheng,COUNT(tj.zhuang_tai_ = '已完成' OR NULL) AS fuHeYiWanCheng FROM 
-                        t_lhjczb tj,ibps_party_employee ie 
-                        WHERE tj.fu_he_yuan_ = ie.ID_ AND tj.update_time_ BETWEEN  '${this.startDate}' AND '${this.endDate}' GROUP BY fu_he_yuan_ 
-                        ) fh ON jc.jcName = fh.fhName
-                        UNION (
-                        SELECT  *FROM (SELECT ie.ID_ AS jcId, ie.NAME_ AS jcName,COUNT(tj.zhuang_tai_ = '待数据输入' OR NULL) AS jianCeWeiWanCheng,COUNT(tj.zhuang_tai_ = '待数据校验' OR tj.zhuang_tai_ = '已完成' OR NULL) AS jianCeYiWanCheng FROM 
-                        t_lhjczb tj,ibps_party_employee ie 
-                        WHERE tj.jian_ce_yuan_ = ie.ID_ AND tj.update_time_ BETWEEN  '${this.startDate}' AND '${this.endDate}' GROUP BY jian_ce_yuan_ 
-                        ) jc  RIGHT JOIN 
-                        (
-                        SELECT ie.ID_ AS fhId,ie.NAME_ AS fhName,COUNT(tj.zhuang_tai_ = '待数据校验' OR NULL) AS fuHeWeiWanCheng,COUNT(tj.zhuang_tai_ = '已完成' OR NULL) AS fuHeYiWanCheng FROM 
-                        t_lhjczb tj,ibps_party_employee ie 
-                        WHERE tj.fu_he_yuan_ = ie.ID_ AND tj.update_time_ BETWEEN  '${this.startDate}' AND '${this.endDate}' GROUP BY fu_he_yuan_ 
-                        ) fh ON jc.jcName = fh.fhName
-                        )`
-            this.option.yAxis.data = []
-            this.option.series[0].data = []
-            this.option.series[1].data = []
-            this.option.series[2].data = []
-            this.option.series[3].data = []
-            this.chartData = []
-            curdPost('sql', sql).then(res => {
-                const data = res.variables.data
-                for (let i of data) {
-                    this.option.yAxis.data.push(i.jcName ? i.jcName : i.fhName)
-                    // 检测未完成数
-                    this.option.series[0].data.push(i.jianCeWeiWanCheng ? i.jianCeWeiWanCheng : 0)
-                    // 检测已完成数
-                    this.option.series[1].data.push(i.jianCeYiWanCheng ? i.jianCeYiWanCheng : 0)
-                    // 复核未完成数
-                    this.option.series[2].data.push(i.fuHeWeiWanCheng ? i.fuHeWeiWanCheng : 0)
-                    // 复核已完成数
-                    this.option.series[3].data.push(i.fuHeYiWanCheng ? i.fuHeYiWanCheng : 0)
-                    this.chartData.push(i)
-                }
-                this.initChart()
-            }).catch(error => {
-                console.log(error)
-            })
+        series: [
+          {
+            name: "待办事宜数",
+            type: "bar",
+            data: [],
+            label: {
+              show: true,
+              position: "right",
+              valueAnimation: true,
+            },
+            itemStyle: {
+              normal: {
+                color: ["#7070ff"],
+              },
+            },
+          },
+          {
+            name: "已办事宜数",
+            type: "bar",
+            data: [],
+            label: {
+              show: true,
+              position: "right",
+              valueAnimation: true,
+            },
+            itemStyle: {
+              normal: {
+                color: ["#00CC33"],
+              },
+            },
+          },
+          {
+            name: "逾期未完成数",
+            type: "bar",
+            data: [],
+            label: {
+              show: true,
+              position: "right",
+              valueAnimation: true,
+            },
+            itemStyle: {
+              normal: {
+                color: ["#faff72"],
+              },
+            },
+          },
+        ],
+        dataZoom: [
+          {
+            type: "inside",
+            xAxisIndex: 0,
+            filterMode: "filter",
+          },
+          {
+            type: "inside",
+            left: "left",
+            yAxisIndex: 0,
+            filterMode: "none",
+          },
+        ],
+      },
+      setParams: {},
+      formData: [],
+      formDataFiiter: [],
+      listConfig: {
+        // 工具栏
+        toolbars: [{ key: "search" }],
+        // 查询条件
+        searchForm: {
+          forms: [
+            { prop: "yang_pin_bian_hao", label: "样品编号" },
+            { prop: "yang_pin_ming_che", label: "样品名称" },
+            { prop: "yang_pin_lei_xing", label: "样品类型" },
+            { prop: "shi_fou_he_ge_", label: "是否合格" },
+          ],
         },
-        formLoading() {
-            this.loading = true
-            let formsql = `select zhuang_tai_,fu_jian_,yang_pin_bian_hao,yang_pin_ming_che,shi_fou_he_ge_,
-                        ji_lu_bian_hao_,wei_tuo_lei_xing_,jian_ce_yuan_,fu_he_yuan_,yang_pin_lei_xing FROM t_lhjczb
-                        where update_time_ BETWEEN '${this.startDate}' AND '${this.endDate}' and `
-            let sql = ''
+        // 表格字段配置
+        columns: [
+          { prop: "wei_tuo_lei_xing_", label: "委托类型" },
+          { prop: "jian_ce_zhuang_ta", label: "检测状态" },
+          { prop: "yang_pin_lei_xing", label: "样品类型" },
+          { prop: "yang_pin_bian_hao", label: "样品编号" },
+          { prop: "yang_pin_ming_che", label: "样品名称" },
+          { prop: "ji_lu_bian_hao_", label: "记录编号" },
+          { prop: "shi_fou_he_ge_", label: "是否合格" },
+          { prop: "jian_ce_yuan_", label: "检测员", slotName: "jianceyuan" },
+          { prop: "fu_he_yuan_", label: "复核员", slotName: "fuheyuan" },
+        ],
+      },
+      startDate: "2023-03-01",
+      endDate: "",
+      chartData: [],
+      pagination: { limit: 20, page: 1 },
+      loading: false,
+      degreePieData: {
+        //学位学历
+        data: [
+          {
+            name: "博士",
+            value: 0,
+          },
+          {
+            name: "硕士",
+            value: 0,
+          },
+          {
+            name: "本科",
+            value: 0,
+          },
+        ],
+        color: ["#FFFF00", "#99CC00", "#6666FF"],
+        config: { title: "学历学位统计", idSelector: "degreeId" },
+      },
+      ranksPieData: {
+        //职称
+        data: [
+          {
+            name: "高级",
+            value: 0,
+          },
+          {
+            name: "中级",
+            value: 0,
+          },
+          {
+            name: "初级",
+            value: 0,
+          },
+        ],
+        color: ["#FFFF00", "#99CC00", "#6666FF"],
+        config: { title: "职称显示", idSelector: "ranksid" },
+      },
+      personInfoData: {
+        //员工基本信息轮播表
+        header: ["姓名", "学历学位", "职称", "员工编号", "入职时间"],
+        data: [],
+        columnWidth: ["100", "90","100", "90","100"],
+        rowNum: 6,
+        align: "right",
+        hoverPause: true,
+      },
+      employeeNum: 0,
+      employeeInfo: [],
+    };
+  },
+  computed: {},
+  methods: {
+    async getTtaskMattersData() {
+      let this_ = this;
+      this.optionPersonShow = false;
+      this_.optionPerson.yAxis.data = [];
+      this_.optionPerson.series[0].data = [];
+      this_.optionPerson.series[1].data = [];
+      let create_by_ = "";
+      let data = [];
+      let csData = [];
+      let yibanData1 = [];
+      let yibanData2 = [];
+      let personIds = "";
+      for (let item of this.employeeInfo) {
+        create_by_ += create_by_ + "," + item.id_;
+      }
+      create_by_ = create_by_.slice(0, create_by_.length - 1);
+      let sql = `select  executor_,count(executor_) as num ,c.name_ FROM  IBPS_BPM_TASKS as a join IBPS_BPM_TASK_ASSIGN as b  on a.task_id_ = b.task_id_ join ibps_party_employee as c on b.executor_ = c.id_ and  c.STATUS_= 'actived' and c.ID_ != '1' and c.ID_ != '-1' and c.ID_ != '702117247933480960' and c.GROUP_ID_ not like '%1041786072788369408%'   GROUP BY  executor_ order by c.CREATE_TIME_ asc `;
+      await curdPost("sql", sql).then((res) => {
+        data = res.variables.data;
+      });
+      for (let item of data) {
+        this_.optionPerson.yAxis.data.push(item.name_);
+        this_.optionPerson.series[0].data.push(item.num);
+      }
+      //超时
+      let cssql = `select  executor_ ,count(executor_) as num ,c.name_,a.create_time_ FROM  IBPS_BPM_TASKS as a join IBPS_BPM_TASK_ASSIGN as b  on a.task_id_ = b.task_id_ join ibps_party_employee as c on b.executor_ = c.id_  
+                  where now()> SUBDATE(a.create_time_,interval - 3 day) and  c.STATUS_= 'actived' and c.ID_ != '1' and c.ID_ != '-1' and c.ID_ != '702117247933480960' and c.GROUP_ID_ not like '%1041786072788369408%'  GROUP BY  executor_  order by  c.CREATE_TIME_ asc `;
+      await curdPost("sql", cssql).then((res) => {
+        csData = res.variables.data;
+      });
+      for (let it of csData) {
+        this_.optionPerson.series[2].data.push(it.num);
+        personIds += "'" + it.executor_ + "',";
+      }
+      personIds = personIds.slice(0, personIds.length - 1);
+      let yibansql1 = `select count(AUDITOR_) as num,AUDITOR_,name_,STATUS_,CREATE_TIME_ from (select a.AUDITOR_,b.name_,a.STATUS_,b.CREATE_TIME_ from IBPS_BPM_APPROVAL as a join ibps_party_employee as b on a.AUDITOR_ = b.id_
+                      where  a.CREATE_TIME_ > '${this.startDate}' and a.CREATE_TIME_ < '${this.endDate}' and b.id_ in(${personIds})   group by a.PROC_inst_ID_) as zz  group by AUDITOR_  order by  CREATE_TIME_ asc `;
+      await curdPost("sql", yibansql1).then((res) => {
+        yibanData1 = res.variables.data;
+      });
+      let yibansql2 = `select count(AUDITOR_) as num,AUDITOR_,name_,STATUS_,CREATE_TIME_ from (select a.PROC_inst_ID_,b.name_,a.AUDITOR_,a.STATUS_,b.CREATE_TIME_ from IBPS_BPM_APPROVAL_HIS as a join ibps_party_employee as b on a.AUDITOR_ = b.id_
+                        where  a.CREATE_TIME_ > '${this.startDate}' and  a.CREATE_TIME_ < '${this.endDate}' and b.id_ in(${personIds})  group by a.PROC_inst_ID_) as bb  group by AUDITOR_ order by  CREATE_TIME_ asc `;
+      await curdPost("sql", yibansql2).then((res) => {
+        yibanData2 = res.variables.data;
+      });
+
+      for (let items of yibanData1) {
+        for (let el of yibanData2) {
+          if (items.AUDITOR_ == el.AUDITOR_) {
+            this_.optionPerson.series[1].data.push(
+              Number(items.num) + Number(el.num)
+            );
+          }
+        }
+      }
+      this.optionPersonShow = true;
+    },
+    // initChart() {
+    //   this.getchart = echarts.init(document.getElementById("echart-line"));
+    //   // document.getElementById("echart-line").setAttribute("_echarts_instance_", "");
+    //   this.getchart.setOption(this.option);
+    //   // //随着屏幕大小调节图表
+    //   // window.addEventListener("resize", () => {
+    //   //   this.getchart.resize();
+    //   // });
+    //   // this.getchart.on("click", (params) => {
+    //   //   this.pagination = { limit: 20, page: 1 };
+    //   //   this.dialogTableVisible = true;
+    //   //   this.setParams["dataIndex"] = params.dataIndex;
+    //   //   this.setParams["name"] = params.name;
+    //   //   switch (params.seriesName) {
+    //   //     case "检测未完成数":
+    //   //       this.setParams["seriesName"] = "未完成检测项目情况";
+    //   //       break;
+    //   //     case "检测已完成数":
+    //   //       this.setParams["seriesName"] = "已完成检测项目情况";
+    //   //       break;
+    //   //     case "复核未完成数":
+    //   //       this.setParams["seriesName"] = "未完成复核项目情况";
+    //   //       break;
+    //   //     case "复核已完成数":
+    //   //       this.setParams["seriesName"] = "已完成复核项目情况";
+    //   //       break;
+    //   //     default:
+    //   //       break;
+    //   //   }
+    //   //   this.formLoading();
+    //   // });
+    // },
+    /**
+     * 处理按钮事件
+     */
+    handleAction(command, position, selection, data) {
+      switch (command) {
+        case "search": // 查询
+          const params = this.$refs["crud"]
+            ? this.$refs["crud"].getSearcFormData()
+            : {};
+          this.formLoading();
+          break;
+        default:
+          break;
+      }
+    },
+    /**
+     * 处理分页事件
+     */
+    handlePaginationChange(page) {
+      this.pagination = page;
+      this.paginationFunc(this.formData);
+    },
+    // 图表数据加载
+    async chartLoading() {
+      // 获取所有检测人员任务统计
+      let this_ = this;
+      const sql = `select  *FROM (SELECT ie.ID_ AS jcId,ie.NAME_ AS jcName,COUNT(tj.zhuang_tai_ = '待数据输入' OR NULL) AS jianCeWeiWanCheng,COUNT(tj.zhuang_tai_ = '待数据校验' OR tj.zhuang_tai_ = '已完成' OR NULL) AS jianCeYiWanCheng FROM 
+                          t_lhjczb tj,ibps_party_employee ie 
+                          WHERE ie.positions_ like '%1040709034740547584%' and tj.jian_ce_yuan_ = ie.ID_ AND tj.update_time_ BETWEEN '${this.startDate}' AND '${this.endDate}' GROUP BY jian_ce_yuan_ 
+                          ) jc  LEFT JOIN 
+                          (
+                          SELECT ie.ID_ AS fhId,ie.NAME_ AS fhName,COUNT(tj.zhuang_tai_ = '待数据校验' OR NULL) AS fuHeWeiWanCheng,COUNT(tj.zhuang_tai_ = '已完成' OR NULL) AS fuHeYiWanCheng FROM 
+                          t_lhjczb tj,ibps_party_employee ie 
+                          WHERE ie.positions_ like '%1040709034740547584%' and tj.fu_he_yuan_ = ie.ID_ AND tj.update_time_ BETWEEN  '${this.startDate}' AND '${this.endDate}' GROUP BY fu_he_yuan_ 
+                          ) fh ON jc.jcName = fh.fhName
+                          UNION (
+                          SELECT  *FROM (SELECT ie.ID_ AS jcId, ie.NAME_ AS jcName,COUNT(tj.zhuang_tai_ = '待数据输入' OR NULL) AS jianCeWeiWanCheng,COUNT(tj.zhuang_tai_ = '待数据校验' OR tj.zhuang_tai_ = '已完成' OR NULL) AS jianCeYiWanCheng FROM 
+                          t_lhjczb tj,ibps_party_employee ie 
+                          WHERE tj.jian_ce_yuan_ = ie.ID_ AND tj.update_time_ BETWEEN  '${this.startDate}' AND '${this.endDate}' GROUP BY jian_ce_yuan_ 
+                          ) jc  RIGHT JOIN 
+                          (
+                          SELECT ie.ID_ AS fhId,ie.NAME_ AS fhName,COUNT(tj.zhuang_tai_ = '待数据校验' OR NULL) AS fuHeWeiWanCheng,COUNT(tj.zhuang_tai_ = '已完成' OR NULL) AS fuHeYiWanCheng FROM 
+                          t_lhjczb tj,ibps_party_employee ie 
+                          WHERE ie.positions_ like '%1040709034740547584%' and tj.fu_he_yuan_ = ie.ID_ AND tj.update_time_ BETWEEN  '${this.startDate}' AND '${this.endDate}' GROUP BY fu_he_yuan_ 
+                          ) fh ON jc.jcName = fh.fhName
+                          )`;
+      // console.log(sql,"sql")
+      this.option.yAxis.data = [];
+      this.option.series[0].data = [];
+      this.option.series[1].data = [];
+      this.option.series[2].data = [];
+      this.option.series[3].data = [];
+      this.chartData = [];
+      await curdPost("sql", sql)
+        .then((res) => {
+          const data = res.variables.data;
+          for (let i of data) {
+            this_.option.yAxis.data.push(i.jcName ? i.jcName : i.fhName);
+            // 检测未完成数
+            this_.option.series[0].data.push(
+              i.jianCeWeiWanCheng ? i.jianCeWeiWanCheng : 0
+            );
+            // 检测已完成数
+            this_.option.series[1].data.push(
+              i.jianCeYiWanCheng ? i.jianCeYiWanCheng : 0
+            );
+            // 复核未完成数
+            this_.option.series[2].data.push(
+              i.fuHeWeiWanCheng ? i.fuHeWeiWanCheng : 0
+            );
+            // 复核已完成数
+            this_.option.series[3].data.push(
+              i.fuHeYiWanCheng ? i.fuHeYiWanCheng : 0
+            );
+            this_.chartData.push(i);
+          }
+        })
+        .catch((error) => {
+          console.log(error);
+        });
+    },
+    formLoading() {
+      this.loading = true;
+      let formsql = `select zhuang_tai_,fu_jian_,yang_pin_bian_hao,yang_pin_ming_che,shi_fou_he_ge_,
+                     ji_lu_bian_hao_,wei_tuo_lei_xing_,jian_ce_yuan_,fu_he_yuan_,yang_pin_lei_xing FROM t_lhjczb
+                     where update_time_ BETWEEN '${this.startDate}' AND '${this.endDate}' and `;
+      let sql = "";
 
-            const params = this.$refs['crud'] ? this.$refs['crud'].getSearcFormData() : {}
-            // console.log("params:", params)
+      const params = this.$refs["crud"]
+        ? this.$refs["crud"].getSearcFormData()
+        : {};
+      // console.log("params:", params)
 
-            switch (this.setParams.seriesName) {
-                case "未完成检测项目情况":
-                    sql = formsql + `zhuang_tai_ = '待数据输入' and jian_ce_yuan_='${this.chartData[this.setParams.dataIndex].jcId}'`
-                    break;
-                case "已完成检测项目情况":
-                    sql = formsql + `(zhuang_tai_ = '待数据校验' or zhuang_tai_ = '已完成') and jian_ce_yuan_='${this.chartData[this.setParams.dataIndex].jcId}'`
-                    break;
-                case "未完成复核项目情况":
-                    sql = formsql + `zhuang_tai_ = '待数据校验' and fu_he_yuan_='${this.chartData[this.setParams.dataIndex].fhId}'`
-                    break;
-                case "已完成复核项目情况":
-                    sql = formsql + `zhuang_tai_ = '已完成' and fu_he_yuan_='${this.chartData[this.setParams.dataIndex].fhId}'`
-                    break;
-                default:
-                    break;
-            }
-            sql = sql + `${params.yang_pin_lei_xing ? ` and yang_pin_lei_xing like '%${params.yang_pin_lei_xing}%'` : ``}`
-            sql = sql + `${params.shi_fou_he_ge_ ? ` and shi_fou_he_ge_ like '%${params.shi_fou_he_ge_}%'` : ``}`
-            sql = sql + `${params.yang_pin_bian_hao ? ` and yang_pin_bian_hao like '%${params.yang_pin_bian_hao}%'` : ``}`
-            sql = sql + `${params.yang_pin_ming_che ? ` and yang_pin_ming_che like '%${params.yang_pin_ming_che}%'` : ``}`
+      switch (this.setParams.seriesName) {
+        case "未完成检测项目情况":
+          sql =
+            formsql +
+            `zhuang_tai_ = '待数据输入' and jian_ce_yuan_='${
+              this.chartData[this.setParams.dataIndex].jcId
+            }'`;
+          break;
+        case "已完成检测项目情况":
+          sql =
+            formsql +
+            `(zhuang_tai_ = '待数据校验' or zhuang_tai_ = '已完成') and jian_ce_yuan_='${
+              this.chartData[this.setParams.dataIndex].jcId
+            }'`;
+          break;
+        case "未完成复核项目情况":
+          sql =
+            formsql +
+            `zhuang_tai_ = '待数据校验' and fu_he_yuan_='${
+              this.chartData[this.setParams.dataIndex].fhId
+            }'`;
+          break;
+        case "已完成复核项目情况":
+          sql =
+            formsql +
+            `zhuang_tai_ = '已完成' and fu_he_yuan_='${
+              this.chartData[this.setParams.dataIndex].fhId
+            }'`;
+          break;
+        default:
+          break;
+      }
+      sql =
+        sql +
+        `${
+          params.yang_pin_lei_xing
+            ? ` and yang_pin_lei_xing like '%${params.yang_pin_lei_xing}%'`
+            : ``
+        }`;
+      sql =
+        sql +
+        `${
+          params.shi_fou_he_ge_
+            ? ` and shi_fou_he_ge_ like '%${params.shi_fou_he_ge_}%'`
+            : ``
+        }`;
+      sql =
+        sql +
+        `${
+          params.yang_pin_bian_hao
+            ? ` and yang_pin_bian_hao like '%${params.yang_pin_bian_hao}%'`
+            : ``
+        }`;
+      sql =
+        sql +
+        `${
+          params.yang_pin_ming_che
+            ? ` and yang_pin_ming_che like '%${params.yang_pin_ming_che}%'`
+            : ``
+        }`;
 
-            curdPost('sql', sql).then(res => {
-                this.loading = false
-                const data = res.variables.data
-                this.formData = res.variables.data
-                document.getElementsByClassName("el-pagination__rightwrapper")[0].style.display = "none";
-                this.paginationFunc(res.variables.data)
-            }).catch(error => {
-                console.log(error)
-                this.loading = false
-            })
-        },
-        /**
-         * 数据分页
-         * par:[]
-         * pagination: { limit: 20, page: 1 },
-         */
-        paginationFunc(par) {
-            this.formDataFiiter = []
-            for (var i = (this.pagination.limit * this.pagination.page - this.pagination.limit); i < (this.pagination.limit * this.pagination.page); i++) {
-                if (i < this.formData.length) {
-                    this.formDataFiiter.push(this.formData[i])
-                }
-            }
-        },
-        changeDate(value) {
-            let year = value[1].getFullYear()
-            let month = value[1].getMonth() + 1
-            // 这里传入的是整数时间,返回的是下个月的第一天,因为月份是0-11
-            let nextMonthFirthDay = new Date(year, month, 1) // 下个月的第一天
-            let oneDay = 1000 * 60 * 60 * 24 // 一天的时间毫秒数
-            let endDay = new Date(nextMonthFirthDay - oneDay)
-            let day = endDay.getDate() // 本月最后一天
-            this.endDate = value[1].getFullYear() + '-' + (value[1].getMonth() + 1) + '-' + day
-            this.startDate = value[0].getFullYear() + '-' + (value[0].getMonth() + 1) + '-' + value[0].getDate()
-            this.chartLoading()
+      curdPost("sql", sql)
+        .then((res) => {
+          this.loading = false;
+          const data = res.variables.data;
+          this.formData = res.variables.data;
+          document.getElementsByClassName(
+            "el-pagination__rightwrapper"
+          )[0].style.display = "none";
+          this.paginationFunc(res.variables.data);
+        })
+        .catch((error) => {
+          console.log(error);
+          this.loading = false;
+        });
+    },
+    /**
+     * 数据分页
+     * par:[]
+     * pagination: { limit: 20, page: 1 },
+     */
+    paginationFunc(par) {
+      this.formDataFiiter = [];
+      for (
+        var i =
+          this.pagination.limit * this.pagination.page - this.pagination.limit;
+        i < this.pagination.limit * this.pagination.page;
+        i++
+      ) {
+        if (i < this.formData.length) {
+          this.formDataFiiter.push(this.formData[i]);
         }
+      }
     },
-    created() {
-        const initendDate = new Date();
-        this.endDate = initendDate.getFullYear() + '-' + (initendDate.getMonth() + 1) + '-' + initendDate.getDate()
-        this.monthValues = [new Date(this.startDate), new Date(initendDate.getFullYear() + '-' + (initendDate.getMonth() + 1) + '-' + initendDate.getDate())]
-        this.chartLoading()
+    changeDate(value) {
+      let year = value[1].getFullYear();
+      let month = value[1].getMonth() + 1;
+      // 这里传入的是整数时间,返回的是下个月的第一天,因为月份是0-11
+      let nextMonthFirthDay = new Date(year, month, 1); // 下个月的第一天
+      let oneDay = 1000 * 60 * 60 * 24; // 一天的时间毫秒数
+      let endDay = new Date(nextMonthFirthDay - oneDay);
+      let day = endDay.getDate(); // 本月最后一天
+      this.endDate =
+        value[1].getFullYear() +
+        "-" +
+        (value[1].getMonth() + 1 > 9
+          ? value[1].getMonth() + 1
+          : "0" + (value[1].getMonth() + 1)) +
+        "-" +
+        (day > 9 ? day : "0" + day);
+      this.startDate =
+        value[0].getFullYear() +
+        "-" +
+        (value[0].getMonth() + 1 > 9
+          ? value[0].getMonth() + 1
+          : "0" + (value[0].getMonth() + 1)) +
+        "-" +
+        (value[0].getDate() > 9
+          ? value[0].getDate()
+          : "0" + value[0].getDate());
+      this.chartLoading();
+      this.getTtaskMattersData();
     },
-    mounted() {
-        this.initChart()
-    }
+    //员工基本信息 轮播表数据
+    async employeeInfoData() {
+      let this_ = this;
+      this.personInfoData.data = [];
+      let data = [];
+      let personInfo = [];
+      // let ranksObj = {};
+      let sql = `select a.id_,a.parent_id_,b.name_,a.zui_gao_xue_li_x_,a.zhi_cheng_deng_ji,b.jian_ding_zi_ge_z,a.ru_zhi_shi_jian_ from  t_ryjbqk as a join  ibps_party_employee as b on a.parent_id_= b.id_`;
+      await curdPost("sql", sql).then((res) => {
+        data = res.variables.data;
+      });
+      this.employeeInfo = data;
+      this.employeeNum = data.length;
+      for (let item of data) {
+        personInfo = [];
+        personInfo.push(item.name_);
+        personInfo.push(item.zui_gao_xue_li_x_ || `   `);
+        personInfo.push(item.zhi_cheng_deng_ji ||  `   `);
+        personInfo.push(item.jian_ding_zi_ge_z ||  `   `);
+        personInfo.push(item.ru_zhi_shi_jian_ ||  `   `);
+        this.personInfoData.data.push(personInfo ||  `   `);
+      }
+    },
+    //饼图 环形图数据
+    async degreeGradeInfoData() {
+      let data = [];
+      let sql = `select 
+                sum(a.zui_gao_xue_li_x_ = '博士') as doctor,
+                sum(a.zui_gao_xue_li_x_ = '硕士') as Master,
+                sum(a.zui_gao_xue_li_x_ = '本科') as undergraduate,
+                sum(a.zhi_cheng_deng_ji = '初级') as elementary,
+                sum(a.zhi_cheng_deng_ji = '中级') as middleRank,
+                sum(a.zhi_cheng_deng_ji = '高级') as senior
+                from t_ryjbqk as a join  ibps_party_employee as b on a.parent_id_= b.id_`;
+      await curdPost("sql", sql).then((res) => {
+        data = res.variables.data;
+      });
+      this.degreePieData.data[0].value = data[0].doctor;
+      this.degreePieData.data[1].value = data[0].Master;
+      this.degreePieData.data[2].value = data[0].undergraduate;
+      this.ranksPieData.data[0].value = data[0].senior;
+      this.ranksPieData.data[1].value = data[0].middleRank;
+      this.ranksPieData.data[2].value = data[0].elementary;
+    },
+    preDate(dateParameter, num) {
+      //往前推算日期
+      var translateDate = "",
+        dateString = "",
+        monthString = "",
+        dayString = "";
+      translateDate = dateParameter.replace("-", "/").replace("-", "/");
+      var newDate = new Date(translateDate);
+      newDate = newDate.valueOf();
+      newDate = newDate - num * 24 * 60 * 60 * 1000; //备注 如果是往前计算日期则为减号 否则为加号
+      newDate = new Date(newDate); //如果月份长度少于2,则前加 0 补位
+      if ((newDate.getMonth() + 1).toString().length == 1) {
+        monthString = 0 + "" + (newDate.getMonth() + 1).toString();
+      } else {
+        monthString = (newDate.getMonth() + 1).toString();
+      }
+      if (newDate.getDate().toString().length == 1) {
+        //如果天数长度少于2,则前加 0 补位
+        dayString = 0 + "" + newDate.getDate().toString();
+        0;
+      } else {
+        dayString = newDate.getDate().toString();
+      }
+      dateString = newDate.getFullYear() + "-" + monthString + "-" + dayString;
+      return dateString;
+    },
+  },
+  created() {
+    const initendDate = new Date();
+    this.endDate =
+      initendDate.getFullYear() +
+      "-" +
+      (initendDate.getMonth() + 1 > 9
+        ? initendDate.getMonth() + 1
+        : "0" + (initendDate.getMonth() + 1)) +
+      "-" +
+      (initendDate.getDate() > 9
+        ? initendDate.getDate()
+        : "0" + initendDate.getDate());
+    this.startDate = this.preDate(this.endDate, 60);
+    this.monthValues = [
+      new Date(this.startDate),
+      new Date(
+        initendDate.getFullYear() +
+          "-" +
+          (initendDate.getMonth() + 1) +
+          "-" +
+          initendDate.getDate()
+      ),
+    ];
+    this.chartLoading();
+    this.employeeInfoData();
+    this.degreeGradeInfoData();
+    this.getTtaskMattersData();
+  },
+  mounted() {
+    // this.initChart();
+  },
 };
 </script>
-<style lang="less" scoped>
-.contain {
-    width: 100%;
-    height: 800px;
-    border-left: 1px solid #dfdcdc;
-}
-
-.date {
-    text-align: right;
-    padding-right: 20px;
-}
-
-.chart {
-    width: 95%;
-    height: 800px;
+  <style lang="less" scoped>
+.personView {
+  width: 100%;
+  height: calc(100vh - 100px);
+  background-image: url("~@/views/system/jbdHome/board/img/bg.png");
 }
-
-.jbd-title-cont {
+.topView {
+  overflow: hidden;
+  box-sizing: border-box;
+  .jbd-title {
     text-align: center;
     font-weight: bold;
-    background-color: rgb(249, 255, 255);
+    // background-color: rgb(249, 255, 255);
     width: 100%;
+    color: white;
     font-size: 18px;
+    height: 50%;
+  }
+  .contain {
+    width: 100%;
+    height: 50%;
+    display: flex;
+    justify-content: space-between;
+    border-left: 1px solid #dfdcdc;
+    color: white;
+    .personNum {
+      margin-left: 20px;
+      width: 250px;
+    }
+    .date {
+      text-align: right;
+      // padding-right: 20px;
+      display: flex;
+      width: 300px;
+      height: 80%;
+    }
+    /deep/.dv-border-box-8 .border-box-content{
+      display: flex;
+      align-items: center;
+      padding: 0px 2px;
+    }
+  }
 }
 
-.dialogbox {
-    display: flex;
-    flex-direction: column;
+.middleView {
+  height: 36%;
+  width: 96%;
+  margin: 0 auto;
+  display: flex;
+  justify-content: left;
+  overflow: hidden;
+  box-sizing: border-box;
+  .viewLeft {
+    width: 28%;
+    height: 100%;
+    overflow: hidden;
+    box-sizing: border-box;
+  }
+  .viewCenter {
+    width: 28%;
+    height: 100%;
+    overflow: hidden;
+    box-sizing: border-box;
+  }
+  .viewRight {
+    width: 40%;
+    height: 100%;
+    overflow: hidden;
+    box-sizing: border-box;
+  }
 }
+.bottomView {
+  width: 96%;
+  margin: 0 auto;
+  height: 56%;
 
-.ibps {
+  //   background: red;
+  overflow: hidden;
+  box-sizing: border-box;
+  display: flex;
+  .dialogbox {
+    display: flex;
+    flex-direction: column;
+  }
+  .detectionTask {
+    width: 49%;
+    height: 100%;
+  }
+  .taskMatters {
+    width: 49%;
+    height: 100%;
+  }
+  .ibps {
     top: 55px;
     border: 1px solid rgb(241, 238, 238);
-}
-
-
+  }
+  // /deep/ .el-dialog {
+  //   height: 80%;
+  //   width: 80%;
+  // }
 
-/deep/ .el-dialog {
-    height: 700px;
-    width: 80%;
-}
+  // /deep/ .el-dialog__header {
+  //   border: 0;
+  // }
 
-/deep/ .el-dialog__header {
-    border: 0;
-}
+  // /deep/ .el-pagination__rightwrapper1 {
+  //   display: none;
+  // }
 
-/deep/ .el-pagination__rightwrapper1 {
-    display: none;
-}
-
-/deep/ .ibps-container-crud__header {
-    margin-top: 55px;
-}
+  // /deep/ .ibps-container-crud__header {
+  //   margin-top: 55px;
+  // }
 
-/deep/ .el-dialog__headerbtn {
-    z-index: 9999;
+  // /deep/ .el-dialog__headerbtn {
+  //   z-index: 9999;
+  // }
 }
 </style>

+ 15 - 20
src/views/platform/bpmn/bpmInstHis/record/component/testingRecord.vue

@@ -55,6 +55,7 @@
                                 <i class="el-icon-caret-bottom"></i>查阅
                             </div>
                             <template v-for="(item ,index) in reportList">
+                                <!-- 检测记录 -->
                                 <div v-if="item.key === 'testing'">
                                     <el-popover placement="left" width="200" trigger="click">
                                         <div class="operate-item" slot="reference" @click="getTesting(scope.row)">
@@ -73,8 +74,8 @@
                                     </el-popover>
                                 </div>
                                 <div v-else-if="item.key === 'file'">
-                                    <el-popover placement="left" width="200" trigger="click">
-                                        <div class="operate-item" slot="reference" @click="getFile(scope.row)">
+                                    <el-popover placement="left" width="300" trigger="click">
+                                        <div class="operate-item" slot="reference" @click="getFile(scope.row[item.field])">
                                             <i class="el-icon-s-order"></i> {{item.name}}
                                         </div>
                                         <div class="three-item">
@@ -84,7 +85,7 @@
                                                 class="operate-item"
                                                 @click="preview(i)"
                                             >
-                                                {{ i.fileName }}.{{ i.ext }}
+                                                <i class="el-icon-tickets"></i>{{ i.fileName }}.{{ i.ext }}
                                             </div>
                                         </div>
                                     </el-popover>
@@ -184,31 +185,29 @@
             name: '附件',
             key: 'file',
             path: '',
+            field: 'suo_you_yuan_shi_',
             hasItem: true
         },
         {
             name: '检测报告',
-            key: 'id_',
-            path: '43罗湖/LH非 检测报告.rpx',
+            key: 'file',
+            path: '',
+            field: 'bao_gao_pdf_',
             hasItem: false
         }
     ]
     // 非通用检测项目编号及报表路径
     const specialTest = [
         {
-            id: '1-1',
-            path: '43罗湖/LHXBJY-JC-SOP-001-FQ-01 无菌检测记录表.rpx'
-        },
-        {
-            id: '1-2',
+            id: 'Process_0idt26n',
             path: '43罗湖/LHXBJY-JC-SOP-001-FQ-01 无菌检测记录表.rpx'
         },
         {
-            id: '2',
+            id: 'Process_1rwhy1r',
             path: '43罗湖/LHXBJY-JC-SOP-002-FQ-01 支原体检测(培养法).rpx'
         },
         {
-            id: '3',
+            id: 'Process_05lkhio',
             path: '43罗湖/LHXBJY-JC-SOP-003-FQ-01 细菌内毒素检查记录表.rpx'
         }
     ]
@@ -233,7 +232,7 @@
             }
         },
         data () {
-            reportList[1].path = this.info.reportPath
+            reportList[reportList.length - 1].path = this.info.reportPath
             return {
                 searchList,
                 reportList,
@@ -309,20 +308,16 @@
             getTesting (row) {
                 const { wei_tuo_id_, yang_pin_bian_hao } = row
                 this.testingList = []
-                let sql = `select b.id_ as id, a.xiang_mu_bian_hao as number, a.jian_ce_xiang_mu_ as projectName from t_mjjcnlfw a, t_lhjczb b where a.id_ = b.jian_ce_xiang_mu_ and b.wei_tuo_id_ = '${wei_tuo_id_}' and b.yang_pin_bian_hao = '${yang_pin_bian_hao}'`
+                let sql = `select b.id_ as id, a.defkey_ as number, a.jian_ce_xiang_mu_ as projectName from t_mjjcnlfw a, t_lhjczb b where a.id_ = b.jian_ce_xiang_mu_ and b.wei_tuo_id_ = '${wei_tuo_id_}' and b.yang_pin_bian_hao = '${yang_pin_bian_hao}' and jian_ce_lei_xing_ = '${this.info.type}'`
                 curdPost('sql', sql).then(res => {
                     this.testingList = res.variables && res.variables.data
                     // console.log(this.testingList)
                 })
             },
             // 获取附件信息,报告表【bao_gao_pdf_, suo_you_yuan_shi_】字段
-            getFile (row) {
+            getFile (key) {
                 this.fileList = []
-                const { bao_gao_pdf_, suo_you_yuan_shi_ } = row
-                let fileArr = [bao_gao_pdf_]
-                fileArr = fileArr.concat(suo_you_yuan_shi_.split(','))
-                // console.log(fileArr)
-                let sql = `select id_ as id, file_name_ as fileName, ext_ as ext from ibps_file_attachment where find_in_set(id_, '${fileArr.join(',')}')`
+                let sql = `select id_ as id, file_name_ as fileName, ext_ as ext from ibps_file_attachment where find_in_set(id_, '${key}')`
                 curdPost('sql', sql).then(res => {
                     this.fileList = res.variables && res.variables.data
                 })

+ 5 - 4
src/views/statistics/index.vue

@@ -77,7 +77,7 @@
         <dv-border-box-7  backgroundColor="rgba(6, 30, 93, 0.5)" ><div class="ttitle">质量方针:公正、科学、准确、高效</div></dv-border-box-7>
         <div class="congxiebox7" style="display: flex;justify-content: space-between;padding: 1.5% 0.2%;">
           <div class="gongshiAll" style="width:16.4%">
-            <div class="touwidth">任务完成率=</div>
+            <div class="touwidth">检测任务完成率=</div>
             <div style="margin: 0 0.2%;">
               <div class="gongshiXian">完成检测项目数量</div>
               <div style="text-align:center;font-size:12px;padding-top: 6%;">有效检测任务总数</div>
@@ -104,15 +104,15 @@
             <div class="touwidth">投诉率=</div>
             <div style="margin: 0 0.2%;">
               <div class="gongshiXian">统计期内有效投诉项目数</div>
-              <div style="text-align:center;font-size:12px;padding-top: 6%;">统计期内检测项目总数</div>
+              <div style="text-align:center;font-size:12px;padding-top: 6%;">统计期内检测委托总数</div>
             </div>
             <div>×100%</div>
           </div>
           <div class="gongshiAll" style="width:27.4%">
             <div class="touwidth">投诉回复及时率=</div>
             <div style="margin: 0 0.2%;">
-              <div class="gongshiXian">统计期内被投诉后48h内达成一致解决方案次数</div>
-              <div style="text-align:center;font-size:12px;padding-top: 6%;">统计期内有效投诉总次数</div>
+              <div class="gongshiXian">统计期内投诉处理完成次数</div>
+              <div style="text-align:center;font-size:12px;padding-top: 6%;">统计期内有效投诉总次数</div>
             </div>
             <div>×100%</div>
           </div>
@@ -576,6 +576,7 @@
     box-shadow: rgb(128 128 128 / 30%) 0px 0px 40px inset;
     border: 1px solid rgba(128, 128, 128, 0.3);
     margin: 1% 0 0 0 ;
+    font-size: 12px;
   }
   .gongshiAll{
     display: flex;

+ 4 - 3
src/views/statistics/item/s10waiBuNengLi.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'能力验证计划完成情况',
+        title:'能力验证完成情况',
         dialogOff:false,
       }
     },
@@ -87,6 +87,7 @@
         //  let maxVal=max1>max2?max1:max2;
         //  console.log("max1:",max1,"max2:",max2);
         let e = 100 -this.data.Num.valna
+        console.log(e,'eeeeeeeeeeeeeeeeeeeeeeeeeeeeee')
 
        let option = {
           //v3
@@ -108,8 +109,8 @@
                 formatter: '{b}: {d}%'
               },
               data: [
-                { value: this.data.Num.valna, name: '能力验证计划完成率' },
-                { value: e, name: '能力验证计划未完成率' }
+                { value: this.data.Num.valna, name: '能力验证完成率' },
+                { value: e, name: '能力验证未完成率' }
               ],
               emphasis: {
                 itemStyle: {

+ 163 - 0
src/views/statistics/item/s10waiBuNengLiCol2.vue

@@ -0,0 +1,163 @@
+<template>
+  <div @click="toDetailed()" class="statisticsPage" :style="{width:width}">
+    <div :id="id" :style="{height:height}"/>
+    <!-- 打开详情弹窗-->
+    <div v-if="dialogOff">
+      <dialogView
+        :dialogOff = "dialogOff"
+        @close = "close"
+        :title="title"
+        :data="data"
+      />
+    </div>
+  </div>
+</template>
+
+<script>
+  import echarts from 'echarts'
+  import dialogView from '../properties/s11biaoZhunWuPro.vue'
+  import {GetPercent,GetMax} from  '../js/config.js'
+  export default {
+    components:{
+      dialogView
+    },
+    props: {
+      data: {
+        type: Object,
+      },
+      width:{
+        type:String,
+        default:"20%"
+      },
+      height:{
+        type:String,
+        default: window.screen.height/2+"px"
+      },
+      id:{
+        type:String,
+        default:"s11biaoZhunWu"
+      },
+      click:{
+        type:String,
+        default:'true'
+      },
+      colorw:{
+        type:String,
+        default:'true'
+      }
+    },
+    data () {
+      return {
+        title:'能力验证计划完成情况',
+        dialogOff:false,
+      }
+    },
+    mounted(){
+      this.drawLine();
+    },
+    methods: {
+      close(){
+        this.dialogOff = false
+      },
+      /* 跳转统计页面*/
+      toDetailed(){
+        if(this.click == "true"){
+        this.dialogOff = true
+       }
+      },
+      drawLine(){
+        let s10biaoZhunWu = echarts.init(document.getElementById(this.id))
+         
+
+          
+        // let beginInof = GetPercent(Number(this.data.t_sbhcjlbBegin.number),Number(this.data.t_sbhcjhBegin.number))
+        // let endInof = GetPercent(Number(this.data.t_sbhcjlbEnd.number),Number(this.data.t_sbhcjhEnd.number))
+         
+        //  let data1 = [];
+        //  data1.push(this.data.t_sbhcjhBegin.number);
+        //  data1.push(this.data.t_sbhcjhEnd.number);
+        //  let data2 = [];
+        //  data2.push(this.data.t_sbhcjlbBegin.number);
+        //  data2.push(this.data.t_sbhcjlbEnd.number);
+        //  let data3 = [];
+        //  data3.push(this.data.t_sbhcjlbBegin.date);
+        //  data3.push(this.data.t_sbhcjlbEnd.date);
+        //  let max1=GetMax(data1)+1;
+        //  let max2=GetMax(data2)+1;
+        //  let maxVal=max1>max2?max1:max2;
+        //  console.log("max1:",max1,"max2:",max2);
+        let e=[this.data.Num.valAll,this.data.Num.valnum]
+
+       let option = {
+           //v3
+         legend: {},
+            tooltip: {
+              trigger: 'axis',
+              axisPointer: {
+                type: 'shadow'
+              },
+              // formatter: function (params) {
+              //   return params[0].data[0] + '<br/>满意份数:' + params[0].data[1] + '<br/>调查总份数: ' + params[0].data[2];
+              // }
+            },
+            // dataset: {
+            //   source: barData
+            // },
+            xAxis: { 
+              type: 'category',
+              data:['能力验证计划数量', '能力验证完成数量']
+
+            },
+            yAxis: [
+              {
+                type: 'value',
+                scale: true,
+                name: '数量',
+                max: this.data.Num.valnum>this.data.Num.valAll?this.data.Num.valnum+1:this.data.Num.valAll+1,
+                min: 0,
+              },
+            ],
+            series: [
+              {
+                data: e,
+                type: 'bar',
+                barWidth: '20%',
+                itemStyle: {
+                  color: '#0099ff'
+                },
+                label: {
+                  show: true,
+                  position: 'top'
+                },
+              }
+            ],
+            grid: {
+              top: '20%',
+              left: '3%',
+              right: '4%',
+              bottom: '10%',
+              containLabel: true
+            },
+            title: {
+              text: this.title,
+              textStyle:{ fontSize:14,color: this.colorw }
+
+              // subtext: "        "+beingDate+"-"+endDate
+            },
+       };
+
+       option && s10biaoZhunWu.setOption(option);
+      }
+    }
+  }
+</script>
+<style scoped>
+  #s10waiBuNengLi:hover{
+    transition: all 0.5s;
+    transform:scale(1.03);
+  }
+  .statisticsPage{
+     box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+     float: left;
+  }
+</style>

+ 1 - 1
src/views/statistics/item/s11biaoZhunWu.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'标准物质期间核查计划完成情况',
+        title:'标准物质期间核查完成情况',
         dialogOff:false,
       }
     },

+ 1 - 1
src/views/statistics/item/s11biaoZhunWuCol.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'标准物质期间核查计划数量',
+        title:'标准物质期间核查数量',
         dialogOff:false,
       }
     },

+ 1 - 1
src/views/statistics/item/s11biaoZhunWuCol2.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'各个标准物质期间核查计划数量',
+        title:'各个标准物质期间核查数量',
         dialogOff:false,
       }
     },

+ 3 - 3
src/views/statistics/item/s12fengXian.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'实验室活动风险识别与控制计划',
+        title:'实验室活动风险识别与控制',
         dialogOff:false,
         measured:[]
       }
@@ -99,8 +99,8 @@
                 formatter: '{b}: {d}%'
               },
               data: [
-                { value: this.data.t_mjsyshdfxsbykzjhxbNum.res[0], name: '实验室活动风险识别与控制计划完成率' },
-                { value: e, name: '实验室活动风险识别与控制计划未完成率' }
+                { value: this.data.t_mjsyshdfxsbykzjhxbNum.res[0], name: '风险控制已完成率' },
+                { value: e, name: '风险控制未完成率' }
               ],
               emphasis: {
                 itemStyle: {

+ 2 - 2
src/views/statistics/item/s12fengXianCol.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'实验室活动风险识别与控制计划数量',
+        title:'实验室活动风险识别与控制数量',
         dialogOff:false,
         measured:[]
       }
@@ -95,7 +95,7 @@
             // },
             xAxis: { 
               type: 'category',
-              data:[ '实验室活动风险识别与控制计划总数','实验室活动风险识别与控制计划已完成数量']
+              data:[ '风险控制总数','风险控制已完成数量']
               // data:['已完成', '总数量', '完成率']
             },
             yAxis: [

+ 4 - 4
src/views/statistics/item/s13shengWuCol.vue

@@ -104,7 +104,7 @@
             // dataset: {
             //   source: barData
             // },
-            xAxis: { type: 'category',data:['有效投诉总次数','投诉后48h内达成一致解决方案次数']},
+            xAxis: { type: 'category',data:['有效投诉总次数','投诉回复已完成数']},
             yAxis: [
               {
                 type: 'value',
@@ -138,10 +138,10 @@
                   color: '#cc6633'
                 },
                 label: {
-                show: true,
-                position: 'top'
+                  show: true,
+                  position: 'top'
+                },
               },
-              }
             ],
             grid: {
               top: '30%',

+ 1 - 1
src/views/statistics/item/s14bufuhexiangCol.vue

@@ -95,7 +95,7 @@
             // },
             xAxis: { 
               type: 'category',
-              data:[ '不符合项总数','不符合项已完成数量']
+              data:[ '不符合项开立总数','不符合项整改完成数量']
               // data:['已完成', '总数量', '完成率']
             },
             yAxis: [

+ 2 - 2
src/views/statistics/item/s15tousu.vue

@@ -108,8 +108,8 @@
                 formatter: '{b}: {d}%'
               },
               data: [
-                { value: this.data.t_complaintNum.res2[0], name: '客户投诉已通知率' },
-                { value: e, name: '客户投诉未通知率' }
+                { value: this.data.t_complaintNum.res2[0], name: '投诉已完成率' },
+                { value: e, name: '投诉未完成率' }
               ],
               emphasis: {
                 itemStyle: {

+ 1 - 1
src/views/statistics/item/s16bzJunZhu.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'标准菌株期间核查计划完成情况',
+        title:'标准菌株期间核查完成情况',
         dialogOff:false,
       }
     },

+ 2 - 2
src/views/statistics/item/s16bzJunZhuCol.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'标准菌株期间核查计划数量',
+        title:'标准菌株期间核查数量',
         dialogOff:false,
       }
     },
@@ -105,7 +105,7 @@
             // },
             xAxis: { 
               type: 'category',
-              data:['标准菌株期间核查总数', '标准菌株质期间核查已完成数量']
+              data:['标准菌株期间核查总数', '标准菌株质已完成期间核查数量']
 
             },
             yAxis: [

+ 1 - 1
src/views/statistics/item/s16bzJunZhuCol2.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'各个标准菌株期间核查计划数量',
+        title:'各个标准菌株期间核查数量',
         dialogOff:false,
       }
     },

+ 1 - 1
src/views/statistics/item/s17bzXiBao.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'标准细胞期间核查计划完成情况',
+        title:'标准细胞期间核查完成情况',
         dialogOff:false,
       }
     },

+ 2 - 2
src/views/statistics/item/s17bzXiBaoCol.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'标准细胞期间核查计划数量',
+        title:'标准细胞期间核查数量',
         dialogOff:false,
       }
     },
@@ -105,7 +105,7 @@
             // },
             xAxis: { 
               type: 'category',
-              data:['标准细胞期间核查总数', '标准细胞期间核查已完成数量']
+              data:['标准细胞期间核查总数', '标准细胞已完成期间核查数量']
 
             },
             yAxis: [

+ 1 - 1
src/views/statistics/item/s17bzXiBaoCol2.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'各个标准细胞期间核查计划数量',
+        title:'各个标准细胞期间核查数量',
         dialogOff:false,
       }
     },

+ 6 - 0
src/views/statistics/item/s7sheBeiJiaoZhunCol2.vue

@@ -157,6 +157,9 @@
                 show: true,
                 position: 'right'
               },
+              itemStyle: {
+                color: '#66CC00'
+              },
             },
             {
               type: 'bar',
@@ -165,6 +168,9 @@
                 show: true,
                 position: 'right'
               },
+              itemStyle: {
+                color: '#FFCC00'
+              },
             },
           ],dataZoom: [
         {

+ 6 - 0
src/views/statistics/item/s8sheBeiHeChaCol2.vue

@@ -153,6 +153,9 @@
                 show: true,
                 position: 'right'
               },
+              itemStyle: {
+                color: '#66CC00'
+              },
             },
             {
               type: 'bar',
@@ -161,6 +164,9 @@
                 show: true,
                 position: 'right'
               },
+              itemStyle: {
+                color: '#FFCC00'
+              },
             },
           ],
                 dataZoom: [

+ 1 - 1
src/views/statistics/item/s9neiBuZhiLiang.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'质量控制计划完成率',
+        title:'质量控制完成率',
         dialogOff:false,
         measured:[]
       }

+ 6 - 4
src/views/statistics/item/s9neiBuZhiLiangCol.vue

@@ -48,7 +48,7 @@
     },
     data () {
       return {
-        title:'质量控制计划数量',
+        title:'质量控制数量',
         dialogOff:false,
         measured:[]
       }
@@ -74,7 +74,8 @@
         // let beingDate=this.data.t_complaintBegin.date
         // let endDate=this.data.t_complaintEnd.date
         var option;
-
+        let e = []
+        e.push(this.data.t_mjzlkzxbNum.val[0])
         //v3
         // let e=[this.data.t_complaintNum.number[0],this.data.t_complaintNum.numberAll[0],this.data.t_complaintNum.res[0]]
 
@@ -107,7 +108,7 @@
                 }
             },
             dataset: {
-                source: this.data.t_mjzlkzxbNum.val
+                source: e
             },
             xAxis: { type: 'category' },
             yAxis: {},
@@ -131,7 +132,8 @@
                 show: true,
                 position: 'top'
               },
-            }]
+            }
+            ]
         };
 
         option && s9neibu.setOption(option);

+ 5 - 1
src/views/statistics/js/selectDB.js

@@ -13,9 +13,13 @@ export const gethechaObj = (end)=>{
   // return "select a.t_mjsbjdxzjhzbName,a.t_mjsbjdxzjhzb,b.t_mjsbjdxzjhzbS FROM (select she_bei_ming_chen as t_mjsbjdxzjhzbName, COUNT(she_bei_ming_chen) as t_mjsbjdxzjhzb from t_mjsbjdxzjhzb where YEAR(create_time_)='2022' GROUP BY she_bei_ming_chen HAVING COUNT(she_bei_ming_chen)>=1) as a left join  (select she_bei_ming_chen, COUNT(she_bei_ming_chen) as t_mjsbjdxzjhzbS from t_mjsbjdxzjhzb where YEAR(create_time_)= '2022' AND DATE(yi_jian_xiao_ri_q) >= DATE(ji_hua_ri_qi_) GROUP BY she_bei_ming_chen HAVING COUNT(she_bei_ming_chen)>=1 )as b on a.t_mjsbjdxzjhzbName=b.she_bei_ming_chen"
   return "select	a.t_sbhcjlbZhname,	a.t_sbhcjlbName,	a.t_sbhcjlb,	ifnull( b.t_sbhcjlbS, 0 ) AS t_sbhcjlbS FROM	(	SELECT	t_sbdj.she_bei_ming_cheng_ AS t_sbhcjlbZhname,	t_sbdj.she_bei_shi_bie_h AS t_sbhcjlbName,	COUNT( t_yqsbhcjh.yi_qi_she_bei_min ) AS t_sbhcjlb 	FROM	t_yqsbhcjh	LEFT JOIN t_sbdj ON t_yqsbhcjh.yi_qi_she_bei_min = t_sbdj.id_ 	WHERE	YEAR ( t_yqsbhcjh.he_cha_pin_lv_ )= "+end+"	GROUP BY	t_yqsbhcjh.yi_qi_she_bei_min 	HAVING	COUNT( t_yqsbhcjh.yi_qi_she_bei_min )>= 1 	) AS a	LEFT JOIN ( SELECT shi_bie_hao_, COUNT( shi_bie_hao_ ) AS t_sbhcjlbS FROM t_sbhcjlb WHERE YEAR ( he_cha_ri_qi_ )= "+end+" GROUP BY shi_bie_hao_ HAVING COUNT( shi_bie_hao_ )>= 1 ) AS b ON a.t_sbhcjlbName = b.shi_bie_hao_ UNION SELECT	t_sbdj.she_bei_ming_cheng_ AS t_sbhcjlbZhname,	t_sbhcjlb.shi_bie_hao_ AS t_sbhcjlbName,IF	( t_sbhcjlb.id_, 0, 1 ) AS t_sbhcjlb,IF	(	YEAR ( t_sbhcjlb.he_cha_ri_qi_ )= YEAR ( t_sbhcjlb.xia_ci_he_cha_ri_ ),	COUNT( t_sbhcjlb.shi_bie_hao_ )+ 1,	COUNT( t_sbhcjlb.shi_bie_hao_ )) AS t_sbhcjlbS FROM	t_sbhcjlb	LEFT JOIN t_sbdj ON t_sbhcjlb.shi_bie_hao_ = t_sbdj.she_bei_shi_bie_h WHERE	YEAR ( t_sbhcjlb.he_cha_ri_qi_ )= "+end+" GROUP BY	t_sbhcjlb.shi_bie_hao_ HAVING	COUNT( t_sbhcjlb.shi_bie_hao_ )>=1"
 }
+// export const getnengliObj = (end)=>{
+//   // return "select a.t_mjsbjdxzjhzbName,a.t_mjsbjdxzjhzb,b.t_mjsbjdxzjhzbS FROM (select she_bei_ming_chen as t_mjsbjdxzjhzbName, COUNT(she_bei_ming_chen) as t_mjsbjdxzjhzb from t_mjsbjdxzjhzb where YEAR(create_time_)='2022' GROUP BY she_bei_ming_chen HAVING COUNT(she_bei_ming_chen)>=1) as a left join  (select she_bei_ming_chen, COUNT(she_bei_ming_chen) as t_mjsbjdxzjhzbS from t_mjsbjdxzjhzb where YEAR(create_time_)= '2022' AND DATE(yi_jian_xiao_ri_q) >= DATE(ji_hua_ri_qi_) GROUP BY she_bei_ming_chen HAVING COUNT(she_bei_ming_chen)>=1 )as b on a.t_mjsbjdxzjhzbName=b.she_bei_ming_chen"
+//   return "select a.enname,ifnull(a.num,0) as num,  ifnull(b.num,0) as numS from(select xiang_mu_ as enname, COUNT(jian_ce_biao_zhun) as num from t_ndnlyzsysjbdjhzb where YEAR(yu_ji_shi_jian_)="+end+" GROUP BY jian_ce_biao_zhun HAVING COUNT(jian_ce_biao_zhun)>=1) as a LEFT JOIN (select jian_ce_biao_zhun as enname, COUNT(jian_ce_biao_zhun) as num from t_ndnlyzsysjbdjhzb as c LEFT JOIN t_ndnlyzsysjbdjhb as d on c.parent_id_ = d.id_ where YEAR(c.create_time_)="+end+" and d.shi_fou_guo_shen_='1' GROUP BY jian_ce_biao_zhun HAVING COUNT(jian_ce_biao_zhun)>=1) as b on a.enname = b.enname"
+// }
 export const getnengliObj = (end)=>{
   // return "select a.t_mjsbjdxzjhzbName,a.t_mjsbjdxzjhzb,b.t_mjsbjdxzjhzbS FROM (select she_bei_ming_chen as t_mjsbjdxzjhzbName, COUNT(she_bei_ming_chen) as t_mjsbjdxzjhzb from t_mjsbjdxzjhzb where YEAR(create_time_)='2022' GROUP BY she_bei_ming_chen HAVING COUNT(she_bei_ming_chen)>=1) as a left join  (select she_bei_ming_chen, COUNT(she_bei_ming_chen) as t_mjsbjdxzjhzbS from t_mjsbjdxzjhzb where YEAR(create_time_)= '2022' AND DATE(yi_jian_xiao_ri_q) >= DATE(ji_hua_ri_qi_) GROUP BY she_bei_ming_chen HAVING COUNT(she_bei_ming_chen)>=1 )as b on a.t_mjsbjdxzjhzbName=b.she_bei_ming_chen"
-  return "select a.enname,ifnull(a.num,0) as num,  ifnull(b.num,0) as numS from(select jian_ce_biao_zhun as enname, COUNT(jian_ce_biao_zhun) as num from t_ndnlyzsysjbdjhzb where YEAR(yu_ji_shi_jian_)="+end+" GROUP BY jian_ce_biao_zhun HAVING COUNT(jian_ce_biao_zhun)>=1) as a LEFT JOIN (select jian_ce_biao_zhun as enname, COUNT(jian_ce_biao_zhun) as num from t_ndnlyzsysjbdjhzb as c LEFT JOIN t_ndnlyzsysjbdjhb as d on c.parent_id_ = d.id_ where YEAR(c.create_time_)="+end+" and d.shi_fou_guo_shen_='1' GROUP BY jian_ce_biao_zhun HAVING COUNT(jian_ce_biao_zhun)>=1) as b on a.enname = b.enname"
+  return "select COUNT(id_) as num from t_ndnlyzsysjbdjhb WHERE shi_fou_guo_shen_ = '1' and  YEAR(create_time_)= "+end+"  UNION all select COUNT(id_) as snum from t_ndnlyzsysjbdjhb where  YEAR(create_time_)= "+end
 }
 export const getbiaozhunObj = (end)=>{
   // return "select a.t_mjsbjdxzjhzbName,a.t_mjsbjdxzjhzb,b.t_mjsbjdxzjhzbS FROM (select she_bei_ming_chen as t_mjsbjdxzjhzbName, COUNT(she_bei_ming_chen) as t_mjsbjdxzjhzb from t_mjsbjdxzjhzb where YEAR(create_time_)='2022' GROUP BY she_bei_ming_chen HAVING COUNT(she_bei_ming_chen)>=1) as a left join  (select she_bei_ming_chen, COUNT(she_bei_ming_chen) as t_mjsbjdxzjhzbS from t_mjsbjdxzjhzb where YEAR(create_time_)= '2022' AND DATE(yi_jian_xiao_ri_q) >= DATE(ji_hua_ri_qi_) GROUP BY she_bei_ming_chen HAVING COUNT(she_bei_ming_chen)>=1 )as b on a.t_mjsbjdxzjhzbName=b.she_bei_ming_chen"

+ 10 - 9
src/views/statistics/properties/s10waiBuNengLiPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body
@@ -36,17 +36,18 @@
         <!-- 参数页面列 -->
         <el-aside style="border:0px;width: 30%; height: 700px;overflow: auto;">
               <br>
+           <div class="dataCont" style="font-size: 14px;">
 
-          <div>{{data.Num.date}} 年度</div>
-          <div v-for="(item,i) in data.Num.name" :key="i">
-              <el-divider content-position="left">{{data.Num.name[i]}}</el-divider>
-              能力验证计划完成次数 :<el-tag>{{data.Num.numberAll[i]}} 次</el-tag>
+          <el-divider content-position="left">{{data.Num.date}} 年度</el-divider>
+          <!-- <div v-for="(item,i) in data.Num.name" :key="i"> -->
+              <!-- <el-divider content-position="left">{{data.Num.name[i]}}</el-divider> -->
+              能力验证计划完成次数 :<el-tag>{{data.Num.valnum}} 次</el-tag>
               <br>
-              能力验证计划次数 :<el-tag>{{data.Num.number[i]}} 次</el-tag>
+              能力验证计划次数 :<el-tag>{{data.Num.valAll}} 次</el-tag>
               <br>
               <!-- 年度核查 :<el-tag>{{data.Num.numberAll[i]}} 次</el-tag>
               <br> -->
-            </div>
+            <!-- </div> -->
            <!-- <div class="dataCont" style="font-size: 14px;">
           <el-divider content-position="left">{{data.t_sbhcjhBegin.date}} 年度</el-divider>
             设备核查计划次数 :<el-tag>{{data.t_sbhcjhBegin.number}} 次</el-tag>
@@ -59,7 +60,7 @@
           <el-divider content-position="left">{{data.t_sbhcjlbEnd.date}} 年度</el-divider>
             设备核查完成次数 :<el-tag type="danger">{{data.t_sbhcjlbEnd.number}} 次</el-tag>
            </div> -->
-
+           </div>
         </el-aside>
         
       </el-container>
@@ -88,7 +89,7 @@
       beforeCreate: function () {
           // 官方文档给出的是require
            this.$options.components.s10s10waiBuNengLiItem = () => import('../item/s10waiBuNengLi.vue')
-           this.$options.components.s10s10waiBuNengLiCItem = () => import('../item/s10waiBuNengLiCol.vue')
+           this.$options.components.s10s10waiBuNengLiCItem = () => import('../item/s10waiBuNengLiCol2.vue')
           },
 
     watch:{

+ 9 - 9
src/views/statistics/properties/s11biaoZhunWuPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body
@@ -32,26 +32,26 @@
             id="s11biaoZhunWuCPro"
             click="false"
           />
-          <s11biaoZhunWuC2Item
+          <!-- <s11biaoZhunWuC2Item
             :data="data"
             width="100%"
             :height="height"
             id="s11biaoZhunWuC2Pro"
             click="false"
-          />
+          /> -->
       </el-aside>
         <!-- 参数页面列 -->
         <el-aside style="border:0px;width: 30%; height: 700px;overflow: auto;">
               <br>
 
-          <div>{{data.Num.date}} 年度</div>
-          <div v-for="(item,i) in data.Num.name" :key="i">
-              <el-divider content-position="left">{{data.Num.name[i]}}</el-divider>
-              标准物质期间核查已完成次数:<el-tag>{{data.Num.numberAll[i]}} 次</el-tag>
+          <el-divider content-position="left"><div>{{data.Num.date}} 年度</div></el-divider>
+          <!-- <div v-for="(item,i) in data.Num.name" :key="i"> -->
+              <!-- <el-divider content-position="left">{{data.Num.name[i]}}</el-divider> -->
+              标准物质期间核查已完成次数:<el-tag>{{data.Num.valAll}} 次</el-tag>
               <br>
-              标准物质期间核查次数:<el-tag>{{data.Num.number[i]}} 次</el-tag>
+              标准物质期间核查次数:<el-tag>{{data.Num.valnum}} 次</el-tag>
               <br>
-            </div>
+            <!-- </div> -->
            <!-- <div class="dataCont" style="font-size: 14px;">
           <el-divider content-position="left">{{data.t_sbhcjhBegin.date}} 年度</el-divider>
             设备核查计划次数 :<el-tag>{{data.t_sbhcjhBegin.number}} 次</el-tag>

+ 1 - 1
src/views/statistics/properties/s12fengXianPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 2 - 2
src/views/statistics/properties/s13shengWuPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body
@@ -37,7 +37,7 @@
         <el-aside style="border:0px;width: 30%;">
            <div class="dataCont" style="font-size: 14px;">
             <el-divider content-position="left">{{data.t_complaintNum.date}} 年度</el-divider>
-              投诉后48h内达成一致解决方案次数 :<el-tag>{{data.t_complaintNum.number[0]}} 次</el-tag>
+              投诉回复已完成数 :<el-tag>{{data.t_complaintNum.number[0]}} 次</el-tag>
               <br>
               有效投诉总次数 :<el-tag>{{data.t_complaintNum.numberAll[0]}} 次</el-tag>
               <br>

+ 1 - 1
src/views/statistics/properties/s14bufehexiangPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 1 - 1
src/views/statistics/properties/s15tousuPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 9 - 9
src/views/statistics/properties/s16bzJunZhuPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body
@@ -32,26 +32,26 @@
             id="s16bzJunZhuCPro"
             click="false"
           />
-          <s16bzJunZhuC2Item
+          <!-- <s16bzJunZhuC2Item
             :data="data"
             width="100%"
             :height="height"
             id="s16bzJunZhuC2Pro"
             click="false"
-          />
+          /> -->
       </el-aside>
         <!-- 参数页面列 -->
         <el-aside style="border:0px;width: 30%; height: 700px;overflow: auto;">
               <br>
 
-          <div>{{data.Num.date}} 年度</div>
-          <div v-for="(item,i) in data.Num.name" :key="i">
-              <el-divider content-position="left">{{data.Num.name[i]}}</el-divider>
-              标准菌株期间核查已完成次数:<el-tag>{{data.Num.numberAll[i]}} 次</el-tag>
+          <el-divider content-position="left"><div>{{data.Num.date}} 年度</div></el-divider>
+          <!-- <div v-for="(item,i) in data.Num.name" :key="i"> -->
+              <!-- <el-divider content-position="left">{{data.Num.name[i]}}</el-divider> -->
+              标准菌株期间核查已完成次数:<el-tag>{{data.Num.valAll}} 次</el-tag>
               <br>
-              标准菌株期间核查次数:<el-tag>{{data.Num.number[i]}} 次</el-tag>
+              标准菌株期间核查次数:<el-tag>{{data.Num.valnum}} 次</el-tag>
               <br>
-            </div>
+            <!-- </div> -->
            <!-- <div class="dataCont" style="font-size: 14px;">
           <el-divider content-position="left">{{data.t_sbhcjhBegin.date}} 年度</el-divider>
             设备核查计划次数 :<el-tag>{{data.t_sbhcjhBegin.number}} 次</el-tag>

+ 9 - 9
src/views/statistics/properties/s17bzXiBaoPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body
@@ -32,26 +32,26 @@
             id="s17bzXiBaoCPro"
             click="false"
           />
-          <s17bzXiBaoC2Item
+          <!-- <s17bzXiBaoC2Item
             :data="data"
             width="100%"
             :height="height"
             id="s17bzXiBaoC2Pro"
             click="false"
-          />
+          /> -->
       </el-aside>
         <!-- 参数页面列 -->
         <el-aside style="border:0px;width: 30%; height: 700px;overflow: auto;">
               <br>
 
-          <div>{{data.Num.date}} 年度</div>
-          <div v-for="(item,i) in data.Num.name" :key="i">
-              <el-divider content-position="left">{{data.Num.name[i]}}</el-divider>
-              标准细胞期间核查已完成次数:<el-tag>{{data.Num.numberAll[i]}} 次</el-tag>
+          <el-divider content-position="left"><div>{{data.Num.date}} 年度</div></el-divider>
+          <!-- <div v-for="(item,i) in data.Num.name" :key="i"> -->
+              <!-- <el-divider content-position="left">{{data.Num.name[i]}}</el-divider> -->
+              标准细胞期间核查已完成次数:<el-tag>{{data.Num.valAll}} 次</el-tag>
               <br>
-              标准细胞期间核查次数:<el-tag>{{data.Num.number[i]}} 次</el-tag>
+              标准细胞期间核查次数:<el-tag>{{data.Num.valnum}} 次</el-tag>
               <br>
-            </div>
+            <!-- </div> -->
            <!-- <div class="dataCont" style="font-size: 14px;">
           <el-divider content-position="left">{{data.t_sbhcjhBegin.date}} 年度</el-divider>
             设备核查计划次数 :<el-tag>{{data.t_sbhcjhBegin.number}} 次</el-tag>

+ 1 - 1
src/views/statistics/properties/s1jianCePro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 1 - 1
src/views/statistics/properties/s1zhiLiangMuBiaoPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 1 - 1
src/views/statistics/properties/s2manYiDuPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 1 - 1
src/views/statistics/properties/s3tousuPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 1 - 1
src/views/statistics/properties/s4renYuanPeiXunPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 1 - 1
src/views/statistics/properties/s5renYuanJianDuPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 1 - 1
src/views/statistics/properties/s6sheBeiWeiHuPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 1 - 1
src/views/statistics/properties/s7sheBeiJiaoZhunPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 1 - 1
src/views/statistics/properties/s8sheBeiHeChaPro.vue

@@ -2,7 +2,7 @@
     <el-dialog
       :visible.sync="visible"
       ref="dialog"
-      :title="title+'详情'"
+      :title="title+''"
       width="100%"
       lock-scroll
       append-to-body

+ 5 - 5
src/views/statistics/properties/s9neiBuZhiLiangPro.vue

@@ -37,19 +37,19 @@
         <el-aside style="border:0px;width: 30%;">
            <div class="dataCont" style="font-size: 14px;">
             <el-divider content-position="left">{{data.t_mjzlkzxbNum.date}} 年度</el-divider>
-              计划内质量控制计划完成数量 :<el-tag>{{data.t_mjzlkzxbNum.number[1]}} 次</el-tag>
+              计划内质量控制完成数量 :<el-tag>{{data.t_mjzlkzxbNum.number[1]}} 次</el-tag>
               <br>
-              计划内质量控制计划总数 :<el-tag>{{data.t_mjzlkzxbNum.number[2]}} 次</el-tag>
-              <br>
-              计划内质量控制计划完成率 :<el-tag>{{data.t_mjzlkzxbNum.number[1]==null||data.t_mjzlkzxbNum.number[1]==0?"0.00":(data.t_mjzlkzxbNum.number[2]/data.t_mjzlkzxbNum.number[1]*100).toFixed(2)}} %</el-tag>
+              计划内质量控制总数 :<el-tag>{{data.t_mjzlkzxbNum.number[2]}} 次</el-tag>
               <br>
+              计划内质量控制完成率 :<el-tag>{{data.t_mjzlkzxbNum.number[1]==null||data.t_mjzlkzxbNum.number[1]==0?"0.00":(data.t_mjzlkzxbNum.number[2]/data.t_mjzlkzxbNum.number[1]*100).toFixed(2)}} %</el-tag>
               <br>
+              <!-- <br>
               计划外质量控制计划完成数量 :<el-tag>{{data.t_mjzlkzxbNum.numberAll[1]}} 次</el-tag>
               <br>
               计划外质量控制计划总数 :<el-tag>{{data.t_mjzlkzxbNum.numberAll[2]}} 次</el-tag>
               <br>
               计划外质量控制计划完成率 :<el-tag>{{data.t_mjzlkzxbNum.numberAll[1]==null||data.t_mjzlkzxbNum.numberAll[1]==0?"0.00":(data.t_mjzlkzxbNum.numberAll[2]/data.t_mjzlkzxbNum.numberAll[1]*100).toFixed(2)}} %</el-tag>
-              <br>
+              <br> -->
             <br>
               <!-- <div v-for="(item,i) in data.t_complaintNum.number" :key="i">
                   <el-divider content-position="left">{{data.t_complaintNum.date[i]}} 年度</el-divider>

+ 35 - 33
src/views/statistics/sendDatas.js

@@ -158,41 +158,43 @@ export default {
                         let e = []
                         let that = this
                         
-                        let a=0
-                        let b=0
+                        let a=that.nengliObj[0].num
+                        let b=that.nengliObj[1].num
                         let c=0
-                        if(that.nengliObj.length === 0){
-                                val = [0]
-                                valAll = [0]
-                                e = [0]
-                                name = [0]
-                        }else{
-                                for (let i = 0; i < that.nengliObj.length; i++) {
-                                        // let num=0
-                                        // if (that.hechaObj[i].t_sbhcjlb===0) {
-                                        //         num =0
-                                        // } else {
-                                        //         num =Math.floor(that.hechaObj[i].t_sbhcjlbS/that.hechaObj[i].t_sbhcjlb * 10000) / 100
-                                        // }
-                                        // valAll.push(that.hechaObj[i].t_sbhcjlb)
-                                        val.push(that.nengliObj[i].num)
-                                        valAll.push(that.nengliObj[i].numS)
-                                        // e.push(num)
-                                        let nameMid = that.nengliObj[i].enname.split("—")
-                                        if(nameMid.length===2){
-                                                name.push(nameMid[1])
-                                        }else{
-                                                name.push(nameMid[0])
-                                        }
 
-                        }
-                        }
-                        val.forEach( function(item){
-                                a += item ;
-                        });
-                        valAll.forEach( function(item){
-                                b += item ;
-                        });
+                        console.log(that.nengliObj,'904380439034904343')
+                        // if(that.nengliObj.length === 0){
+                        //         val = [0]
+                        //         valAll = [0]
+                        //         e = [0]
+                        //         name = [0]
+                        // }else{
+                        //         for (let i = 0; i < that.nengliObj.length; i++) {
+                        //                 // let num=0
+                        //                 // if (that.hechaObj[i].t_sbhcjlb===0) {
+                        //                 //         num =0
+                        //                 // } else {
+                        //                 //         num =Math.floor(that.hechaObj[i].t_sbhcjlbS/that.hechaObj[i].t_sbhcjlb * 10000) / 100
+                        //                 // }
+                        //                 // valAll.push(that.hechaObj[i].t_sbhcjlb)
+                        //                 val.push(that.nengliObj[i].num)
+                        //                 valAll.push(that.nengliObj[i].numS)
+                        //                 // e.push(num)
+                        //                 let nameMid = that.nengliObj[i].enname.split("—")
+                        //                 if(nameMid.length===2){
+                        //                         name.push(nameMid[1])
+                        //                 }else{
+                        //                         name.push(nameMid[0])
+                        //                 }
+
+                        // }
+                        // }
+                        // val.forEach( function(item){
+                        //         a += item ;
+                        // });
+                        // valAll.forEach( function(item){
+                        //         b += item ;
+                        // });
                         if(b===0){
                                 c=0
                         }else{

+ 5 - 3
src/views/system/jbdHome/board/checkBoard.vue

@@ -63,12 +63,13 @@
                             '检测项目',
                             '检测类型',
                             '完成时间',
-                            '状态',
+                            // '状态',
                             '检测员'
                         ],
                         data: [],
                         rowNum: 7,
-                        columnWidth: ['300','100','150','150','100']
+                        // columnWidth: ['300','100','150','150','100']
+                        columnWidth: ['400','150','150','100']
                     },
                     acceptData:[],
                     taskData: [],
@@ -241,7 +242,8 @@
             getMiddleData() {
                 // 获取检测数据
                 // const sql1 = `select tm.jian_ce_xiang_mu_, tm.jian_ce_lei_bie_, IFNULL(rw.qi_wang_wan_cheng, '') as qi_wang_wan_cheng, rw.zhuang_tai_, ipe.NAME_ from t_rwfpb rw, ibps_party_employee ipe, t_mjjcnlfw tm where rw.jian_ce_yuan_ = ipe.ID_ and rw.jian_ce_xiang_mu_ = tm.id_ and rw.create_time_ like '${this.month}%'`
-                const sql1 = `select tm.jian_ce_xiang_mu_, tm.jian_ce_lei_bie_, IFNULL(rwz.create_time_, '') as qi_wang_wan_cheng, rw.zhuang_tai_, ipe.NAME_ from t_lhrwfpb rw, ibps_party_employee ipe, t_mjjcnlfw tm, t_mjrwfpzb rwz where rwz.jian_ce_yuan_ = ipe.ID_ and rwz.jian_ce_xiang_mu_ = tm.id_ and rw.id_ = rwz.wai_jian_ and rw.create_time_ like '${this.month}%'`
+                // const sql1 = `select tm.jian_ce_xiang_mu_, tm.jian_ce_lei_bie_, IFNULL(rwz.create_time_, '') as qi_wang_wan_cheng, rw.zhuang_tai_, ipe.NAME_ from t_lhrwfpb rw, ibps_party_employee ipe, t_mjjcnlfw tm, t_mjrwfpzb rwz where rwz.jian_ce_yuan_ = ipe.ID_ and rwz.jian_ce_xiang_mu_ = tm.id_ and rw.id_ = rwz.wai_jian_ and rw.create_time_ like '${this.month}%'`
+                const sql1 = `select tm.jian_ce_xiang_mu_, tm.jian_ce_lei_bie_, IFNULL(jc.fu_he_ri_qi_, '') as fu_he_ri_qi_, ipe.NAME_ from ibps_party_employee ipe, t_mjjcnlfw tm, t_lhjczb jc where jc.jian_ce_yuan_ = ipe.ID_ and jc.jian_ce_xiang_mu_ = tm.id_ and jc.zhuang_tai_ = '已完成' and jc.create_time_ like '${this.month}%' order by jc.create_time_ desc`
                 // 获取检测受理类型数据
                 let sqlStr = ''
                 acceptList.forEach((item, index) => {

+ 1 - 1
src/views/system/jbdHome/board/component/CarouselTabl.vue

@@ -1,6 +1,6 @@
 <template>
   <div style="width: 100%;height: 100%;overflow: hidden;">
-    <div class="title" style="vertical-align: top; height: 10%;font-size: 16px;">{{ title }}</div>
+    <div class="title" style="vertical-align: top; height: 10%;font-size: 16px;color: white;">{{ title }}</div>
     <div style="width:100%;height: 90%;display: inline-block;background-color: #06163f;">
       <dv-scroll-board :config="info" style="width:100%;height:100%" />
     </div>

+ 2 - 2
src/views/system/jbdHome/board/component/getPieView.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="pieView">
-    <div style="height: 20%;line-height: 30px;text-align: left;padding-left: 10px;">{{info.config.title||""}}</div>   
+    <div style="height: 20%;line-height: 30px;text-align: left;padding-left: 10px;color: white;">{{info.config.title||""}}</div>   
     <div style="width:100%;height:80%;display: inline-block; overflow: hidden;">
       <div :id="info.config.idSelector" style="width:100%;height:95%;overflow: hidden;"> </div>
     </div>
@@ -87,7 +87,7 @@ export default {
 </script>
 <style lang="scss" scoped>
 .pieView{
-  display: flex;
+  // display: flex;
   width: 100%;
   height: 100%;
   overflow: hidden;

+ 27 - 16
src/views/system/jbdHome/board/component/zhuzhuangtu.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="pieView">
     <div style="height: 10%;line-height: 30px;text-align: left;padding-left: 10px;width: 100%;">{{info.config.title}}</div>   
-    <div style="width:100%;height:90%;display: inline-block;overflow: hidden;box-sizing: border-box;">
+    <div style="width:100%;height:90%;display: inline-block;">
       <div :id="info.config.idSelector" style="width:100%;height:100%;"> </div>
     </div>
   </div>
@@ -11,7 +11,9 @@
 import * as echarts from "echarts";
 export default {
   data() {
-    return {};
+    return {
+      yAxisNum:1,
+    };
   },
   props: {
     info: {
@@ -19,16 +21,28 @@ export default {
       default: {},
     },
   },
+  mounted() {
+    let this_ = this;
+    this.$nextTick(()=>{
+      this_.getMiddleLeft();
+    })
+    
+  },
   methods: {
     getMiddleLeft() {
       var chartDom = document.getElementById(this.info.config.idSelector);
       var myChart = echarts.init(chartDom);
-      const setEchartWH = {
-        //设置控制图表大小变量
-        width: 250,
-        height: 300,
-      };
-      var myChart = echarts.init(chartDom, null, setEchartWH);
+      // const setEchartWH = {
+      //   //设置控制图表大小变量
+      //   width: 250,
+      //   height: 300,
+      // };
+      let ay =this.info.data;
+      let yc;
+      ay[0] > ay[1]?yc=ay[0]:yc=ay[1];
+      this.yAxisNum =parseInt(yc / 6) ;
+      this.yAxisNum ==0? this.yAxisNum =1:'';
+      var myChart = echarts.init(chartDom);
       var option;
       option = {
         tooltip: {
@@ -47,14 +61,13 @@ export default {
           {
             type: "category",
             data: this.info.xData,
-            interval: 1,
+            interval: 2,
             axisTick: {
               alignWithLabel: false,
             },
             axisLabel: {
-              // rotate: -1,
-              // margin: 0,
               fontSize: 12,
+              rotate: 25,
               formatter:function(value){  
                 var str = ""; 
                 var num = 6; //每行显示字数 
@@ -93,7 +106,7 @@ export default {
               color: "#fff"
             }
           },
-          interval:1
+          interval:15
         },
         ],
         series: [
@@ -109,7 +122,7 @@ export default {
             itemStyle: {
             normal: {
                 color: function(params) {
-                    var colorList = ['#5c7bd9', '#9fe080', '#ffdc60', '#ff7070','#7ed3f4', '#ff915a'];
+                    var colorList = ['#5c7bd9', '#9fe080', '#339933', '#ffdc60','#f9210b', '#ff915a'];
                     return colorList[params.dataIndex]
                 }
             }
@@ -118,7 +131,7 @@ export default {
           
         ],
       };
-      option && myChart.setOption(option);
+      myChart.setOption(option);
     },
   },
 };
@@ -128,8 +141,6 @@ export default {
   display: flex;
   width: 100%;
   height: 100%;
-  box-sizing: border-box;
-  overflow: hidden;
   background-color: rgba(6,30,93,.5);
 }
 </style>

+ 36 - 10
src/views/system/jbdHome/board/equipmentBoard.vue

@@ -42,7 +42,11 @@
         </div>
         <dv-decoration-10 style="height:2%;display:flex;" />
         <div class="bottomCard">
-          <div style="width:32%;height: 100%;overflow: hidden;box-sizing: border-box;display:flex;">
+          <div style="width:24%">
+            <zhuzhuangtu v-if="sheBeiData.data.length" :info="sheBeiData" ref="sheBeiDataDataref" />
+          </div>
+          <dv-decoration-2 :reverse="true" style="width:1%;height:100%;overflow: hidden;box-sizing: border-box;" />
+          <div style="width:25%;height: 100%;overflow: hidden;box-sizing: border-box;display:flex;">
             <div class="bottomCardLeft0">
               <middleCard v-if="weiHuSheBeiData.data.length" :info="weiHuSheBeiData" ref="sheBeiWeiHuRef" />
             </div>
@@ -52,7 +56,7 @@
             </div> -->
           </div>
           <dv-decoration-2 :reverse="true" style="width:1%;height:100%;overflow: hidden;box-sizing: border-box;" />
-          <div style="width:34%;display:flex;">
+          <div style="width:25%;display:flex;">
             <!-- <div style="width:40%">
               <zhuzhuangtu v-if="zhuantaiEData.data.length" :info="zhuantaiEData" ref="zhuantaiEDataref" />
             </div> -->
@@ -62,7 +66,7 @@
             </div>
           </div>
           <dv-decoration-2 :reverse="true" style="width:1%;height:100%;overflow: hidden;box-sizing: border-box;" />
-          <div style="width:32%;overflow: hidden;box-sizing: border-box;display:flex;">
+          <div style="width:24%;overflow: hidden;box-sizing: border-box;display:flex;">
             <div class="bottomCardLeft">
               <middleCard v-if="sheBeiHeChaData.data.length" :info="sheBeiHeChaData" ref="sheBeiHeChaRef"/>
             </div>
@@ -107,13 +111,15 @@ export default {
       jianDingjiaoZhunSheBeiData: {},
       weiHuSheBeiData: {},
       shiyonglvConfig: {
-        header: ["设备名称","使用人", "使用时间","存放位置", "状态", "频率"],
+        header: ["名称","编号","部门","使用人","使用时间","存放位置", "状态", "频率"],
         data: [],
-        columnWidth: ["130", "90","110","120", "100", "70"],
+        columnWidth: ["130","120","120","90","110","120"],
         rowNum: 6,
       },
       bottomData: {},
       zhuantaiEData: {},
+      sheBeiData: { xData: [], data: [], config: { idSelector: "" } },
+      sheBeiDataShow:false,
       sheBeiweiHuData: {},
       config: {},
       zichan: 0,
@@ -155,9 +161,11 @@ export default {
         rowNum: 6,
         color: [],
       };
+      this_.sheBeiDataShow = false;
       this.eBgRateData = { data: [], config: {} };
       this.sheBeiHeChaData = { data: [], config: {} };
       this.jianDingjiaoZhunSheBeiData = { data: [], config: {} };
+      this.sheBeiData={ xData: [], data: [], config: { idSelector: "" } };
       this.weiHuSheBeiData = { data: [], config: {} };
       this.bottomData = { xData: [], data: [], config: { idSelector: "" } };
       this.zhuantaiEData = { xData: [], data: [], config: { idSelector: "" } };
@@ -331,6 +339,23 @@ export default {
               ],
             },
           ];
+          //设备数量统计
+          this_.sheBeiData.xData = [
+            "设备总数",
+            "新增数",
+            "良好数",
+            "受限数",
+            "报废停用数",
+          ];
+          
+          this_.sheBeiData.data.push(data[0].Equipments);
+          this_.sheBeiData.data.push(data[0].addEquipments);
+          this_.sheBeiData.data.push(data[0].goodEquipments);
+          this_.sheBeiData.data.push(data[0].limitedEquipments);
+          this_.sheBeiData.data.push(data[0].scrapEquipments);
+          this_.sheBeiData.config.title = "设备数量情况一览";
+          this_.sheBeiData.config.idSelector = "main8";
+          this_.sheBeiDataShow = true;
           //
           this_.bottomData.xData = ["本月计划核查数", "本月已核查数"];
           this_.bottomData.data.push(data[0].checkNoEquipments);
@@ -431,9 +456,8 @@ export default {
     },
     async getCarouselShiYonglvTable() {
       let this_ = this;
-      // const sql = `select she_bei_ming_chen,she_bei_bian_hao_ ,create_time_,she_bei_zhuang_ku,COUNT(*) AS pinlv FROM t_mjsbsy GROUP BY she_bei_bian_hao_  HAVING create_time_ LIKE '${this.month}%' ORDER BY pinlv DESC`;
-      const sql = `select a.she_bei_ming_chen ,a.create_time_,a.shi_yong_qian_qin,b.name_,c.cun_fang_di_dian_,COUNT(*) AS pinlv FROM  t_yqsbsydjb as a join ibps_party_employee as b on a.shi_yong_ren_ = b.ID_ join t_sbdj as c on a.yi_qi_bian_hao_ = c.id_ GROUP BY create_time_  HAVING create_time_ LIKE '${this.month}%' ORDER BY pinlv DESC`;
-      console.log(sql, "设备使用");
+      // const sql = `select she_bei_ming_chen,she_bei_bian_hao_ ,create_time_,she_bei_zhuang_ku,d.name_ as bumen ,COUNT(*) AS pinlv FROM t_mjsbsy GROUP BY she_bei_bian_hao_  HAVING create_time_ LIKE '${this.month}%' ORDER BY pinlv DESC`;
+      const sql = `select a.she_bei_ming_chen ,a.create_time_,a.shi_yong_qian_qin,b.name_,c.cun_fang_di_dian_,c.she_bei_shi_bie_h,d.name_ as bumen,COUNT(*) AS pinlv FROM  t_yqsbsydjb as a join ibps_party_employee as b on a.shi_yong_ren_ = b.ID_ join t_sbdj as c on a.yi_qi_bian_hao_ = c.id_ join ibps_party_org as d on d.id_ = a.bian_zhi_bu_men_ GROUP BY create_time_  HAVING create_time_ LIKE '${this.month}%' ORDER BY pinlv DESC`;
       let data1 = [];
       let res1 = [];
       this_.shiyonglvConfig.data = [];
@@ -443,6 +467,8 @@ export default {
           result.forEach((item) => {
             data1 = [];
             data1.push(item.she_bei_ming_chen);
+            data1.push(item.she_bei_shi_bie_h);
+            data1.push(item.bumen);
             data1.push(item.name_);
             data1.push(this_.timestampToTime(item.create_time_ / 1000));
             data1.push(item.cun_fang_di_dian_);
@@ -655,13 +681,13 @@ export default {
     //   overflow: hidden;
     // }
     .middleCardRight {
-      width: 26%;
+      width: 22%;
       height: 100%;
       box-sizing: border-box;
       overflow: hidden;
     }
     .middleCardRight1 {
-      width: 44%;
+      width: 48%;
       height: 100%;
       box-sizing: border-box;
       overflow: hidden;

+ 8 - 1
src/views/system/jbdHome/yangPinShuJu/AnnualStatus.vue

@@ -6,7 +6,7 @@
         <span class="annualStatus">年度检测情况统计</span>
         <el-date-picker
           class="chooseMonth"
-          v-model="NowTime"
+          v-model="NowTime1"
           type="year"
           @change="changeTime"
           format="yyyy" 
@@ -29,6 +29,12 @@ export default {
       NowTime:''
     }
   },
+  props:{
+    NowTime1:{
+      type:String,
+      default:""
+    }
+  },
   created(){
     this.getNowTime()
   },
@@ -230,6 +236,7 @@ export default {
       font-weight:600;
     }
     .chooseMonth{
+      display: none;
       width: 120px;
       line-height: 50px;
       margin-left: 10px;

+ 7 - 7
src/views/system/jbdHome/yangPinShuJu/EntrustNumber.vue

@@ -3,7 +3,7 @@
   <!-- 委托样品情况 -->
       <dv-border-box-7  backgroundColor="rgba(6, 30, 93, 0.5)" >
         <div class="entrustNumber_title">
-          <span class="demonstration">委托样品情况</span>
+          <span class="demonstration">委托样品收样情况</span>
           <el-date-picker
             class="chooseMonth"
             v-model="NowTime"
@@ -269,7 +269,7 @@ export default {
           series: [
             {
               type:"bar",
-              name:'外部送检已收到样品',
+              name:'客户送检样品数',
               //显示数字的颜色
               label: {
                 show: true,
@@ -285,7 +285,7 @@ export default {
             },
             {
               type:"bar",
-              name:'内部委托已收到样品',
+              name:'内部送检样品数',
               //显示数字的颜色
               label: {
                 show: true,
@@ -305,12 +305,12 @@ export default {
               label: {
                 show: true,
                 position: 'top',
-                color:'#f5f12a'
+                color:'#f52aa0'
               },
               //柱子的颜色
               itemStyle:{
                 show:true,
-                color:'rgba(245, 241, 42, 0.4)',
+                color:'rgba(245, 41, 160,0.4)',
               },
               data:unqualifiedData 
             },
@@ -320,12 +320,12 @@ export default {
               label: {
                 show: true,
                 position: 'top',
-                color:'#f52aa0'
+                color:'#7FFF00'
               },
               //柱子的颜色
               itemStyle:{
                 show:true,
-                color:'rgba(245, 41, 160,0.4)',
+                color:'rgba(127,255,0,0.4)',
               },
               data:retentionData 
             },

+ 7 - 6
src/views/system/jbdHome/yangPinShuJu/headerContent.vue

@@ -6,15 +6,16 @@
         <div class="number">{{EntrustedTotal}}个</div>
       </div>
       <div class="totalNumber">
-        <div>委托样品内部总数</div>
-        <div class="number">{{EntrustedTotalN}}个</div>
+        <div>客户委托样品总数</div>
+        <div class="number">{{EntrustedTotalW}}个</div>
       </div>
       <div class="totalNumber">
-        <div>委托样品外部总数</div>
-        <div class="number">{{EntrustedTotalW}}个</div>
+        <div>内部委托样品总数</div>
+        <div class="number">{{EntrustedTotalN}}个</div>
       </div>
+      
       <div class="notReceived">
-        <div>待收样数量(已委托未收样)</div>
+        <div>待收样数量</div>
         <div class="number">{{NotReceiveNumber}}个</div>
       </div>
       <div class="received">
@@ -22,7 +23,7 @@
         <div class="number">{{ReceiveNumber}}个</div>
       </div>
       <div class="staging">
-        <div>待检样品数</div>
+        <div>待检样品数</div>
         <div class="number">{{StagingNumber}}个</div>
       </div>
       <div class="unqualified">

+ 4 - 4
src/views/system/jbdHome/yangPinShuJu/index.vue

@@ -13,7 +13,7 @@
             line-height: 2.825rem;
             text-align:center;
             position: absolute;
-            left: 20%;
+            left: 4%;
             top:3.8%;" >
             <el-date-picker
               class="chooseMonth"
@@ -40,7 +40,7 @@
             <dv-border-box-8>返回</dv-border-box-8>
           </div>
           <!-- 显示数据上一次更新的时间 -->
-          <div
+          <!-- <div
             class="changeTime"
             style="width: 18%;
             cursor: pointer;
@@ -52,7 +52,7 @@
             top:4%;
             color: #FFFFFF;">
               <dv-border-box-8 >上一次更新时间:{{this.sendTime}}</dv-border-box-8>
-          </div>
+          </div> -->
           <!-- 样品头部数据总览 -->
           <div class="overView">
             <headerContent  @getUpdateTime="getTime" :NowTime1="NowTime1+'-01'"></headerContent>
@@ -70,7 +70,7 @@
           </div>
           <div class="detection">
             <div class="monthlyS" ref="MonthlyStatus_refs"><monthlyStatus  :NowTime1="NowTime1"/></div>
-            <div class="annualS" ref="AnnualStatus_refs"><annualStatus/></div>
+            <div class="annualS" ref="AnnualStatus_refs"><annualStatus :NowTime1="NowTime1"/></div>
             <div class="monthlyN" ref="MonthlyNumber_refs"><monthlyNumber  :NowTime1="NowTime1"/></div>
           </div>
         </div>