koushanshan 1 год назад
Родитель
Сommit
19a388b83d

+ 23 - 0
src/api/pages/app_menu/index.js

@@ -0,0 +1,23 @@
+/**
+ *   @desc   : 首页查询
+ *   @date   : 2024/4/28 14:37
+ *   @author : 寇珊珊
+ */
+export default {
+  appMenuService: {
+    prefix: '/mdm-server/mst/comMenu/',
+    selectMenu: 'select_menu',
+    save: 'save',
+  }
+}
+
+/**
+ *   @desc   : 首页路由
+ *   @date   : 2024/4/28 14:37
+ *   @author : 寇珊珊
+ */
+export const routeUrl = {
+  appMenu: {
+
+  }
+}

+ 2 - 0
src/api/pages/fin/account.js

@@ -8,6 +8,8 @@ export default {
     prefix: '/mdm-server/mac/account/',
     getReceivableAccountItem: 'get_receivable_account_item',
     getPayableAccountItem: 'get_payable_account_item',
+    //首页-查询账款-待办事项个数
+    getReceivableAccountItemCount: 'get_account_item_count',
   }
 }
 

+ 2 - 0
src/api/pages/ivt/otherInbound.js

@@ -24,6 +24,8 @@ export default {
     inboundUpdate: 'inbound_update',
     //作废
     outboundRepeal: 'repeal',
+    //首页-查询入库-待办事项个数
+    selectWaitInboundCount: 'select_wait_inbound_count',
   }
 }
 

+ 2 - 0
src/api/pages/ivt/out-handle.js

@@ -24,6 +24,8 @@ export default {
     outboundUpdate: 'outbound_update',
     //作废
     outboundRepeal: 'repeal',
+    //首页-查询出库-待办事项个数
+    selectWaitOutboundCount: 'select_wait_outbound_count',
   }
 }
 

+ 2 - 1
src/api/pages/sale/order.js

@@ -10,7 +10,8 @@ export default {
     getOrderForUpdate: 'get_order_for_update',
     getOrderForOut: 'get_order_for_out',
     getOrderForReturn: 'get_order_for_return',
-    getOrderTrackReport:'get_order_track_report',
+    //首页-查询订单-待办事项个数
+    countOrderByCond:'count_order_by_cond',
   }
 }
 

BIN
src/assets/images/menu-image/customer.png


BIN
src/assets/images/menu-image/web-collection.png


BIN
src/assets/images/menu-image/web-fund-pending.png


BIN
src/assets/images/menu-image/web-into-pending.png


BIN
src/assets/images/menu-image/web-order-pending.png


BIN
src/assets/images/menu-image/web-out-pending.png


BIN
src/assets/images/menu-image/web-payment.png


BIN
src/assets/images/menu-image/web-purchase-into.png


BIN
src/assets/images/menu-image/web-purchase-order.png


BIN
src/assets/images/menu-image/web-purchase-return.png


BIN
src/assets/images/menu-image/web-sale-order.png


BIN
src/assets/images/menu-image/web-sale-out.png


BIN
src/assets/images/menu-image/web-sale-return.png


BIN
src/assets/images/menu-image/web-transfer-into.png


BIN
src/assets/images/menu-image/web-transfer-out.png


+ 10 - 0
src/config/index.js

@@ -526,6 +526,16 @@ export default {
   },
 
   /**
+   *   @desc   : 账款类型
+   *   @date   : 2024/4/29 10:53
+   *   @author : 寇珊珊
+   */
+  fundType: {
+    yingShou: '账款类型-应收',
+  },
+
+
+  /**
    * @desc   : 查询的类型
    * @author : 周兴
    * @date   : 2022/6/29 8:28

+ 7 - 0
src/locale/lang/zh-CN.js

@@ -627,6 +627,13 @@ export const columns = {
   amtRecTotal:'收款总额',
   ordchase:'销售订单',
   outbound:'出库单',
+  sale:'销售',
+  inventory:'库存',
+  fund:'资金',
+  salePending:'待发货',
+  intoPending:'待入库',
+  outPending:'待出库',
+  fundPending:'待收款',
 }
 
 /**

+ 1251 - 1075
src/view/single-page/home/home.vue

@@ -1,1152 +1,1328 @@
 <!-- @desc:首页工作台  @auth:洪旭东  @time:2022-05-02 10:28 -->
 <template>
-  <div class="main-div">
-<!--    &lt;!&ndash;    待办&ndash;&gt;-->
-<!--    <Card class="card card-upcoming" @contextmenu.native.prevent>-->
-<!--      <p slot="title">-->
-<!--        今日产量-->
-<!--      </p>-->
-<!--      <Tooltip style="cursor: pointer" slot="extra" :content="$t('refresh')" theme="light"-->
-<!--               v-if="flgWarning">-->
-<!--        <Button icon="md-refresh" shape="circle" class="circle-button" @click="refreshWaitCenter"></Button>-->
-<!--      </Tooltip>-->
-<!--      &lt;!&ndash;      预警设置按钮&ndash;&gt;-->
-<!--      &lt;!&ndash;      <Tooltip style="cursor: pointer" slot="extra" :content="$t('earlyWarningSetting')" theme="light">&ndash;&gt;-->
-<!--      &lt;!&ndash;        <Button icon="md-settings" shape="circle" class="circle-button" @click="setHomeWarning"></Button>&ndash;&gt;-->
-<!--      &lt;!&ndash;      </Tooltip>&ndash;&gt;-->
-<!--      <Button icon="md-settings" slot="extra" shape="circle" class="circle-button" @click="setHomeWarning"></Button>-->
-<!--      <div style="display: flex;align-items: center;">-->
-<!--        <div class="upcoming" :style="{padding: (flgWarning?'':0)}">-->
-<!--          &lt;!&ndash;成型产量&ndash;&gt;-->
-<!--          <div class="upcoming-card" v-for="(item,index) in homeWarningData_quan" :key="'quan'+index"-->
-<!--               @click="openDrawer(item)">-->
-<!--            <div class="upcoming-card-right">-->
-<!--              <div class="upcoming-card-last">昨日{{ item.lastCount }}-->
-<!--                <Icon v-if="item.currentCount<item.lastCount" type="iconfont iconfont icon-down"-->
-<!--                      style="color: #191A23"/>-->
-<!--                <Icon v-else-if="item.currentCount>item.lastCount" type="iconfont iconfont icon-up"-->
-<!--                      style="color: #EE6666"/>-->
-<!--              </div>-->
-<!--              <div class="upcoming-card-number">{{ item.currentCount }}</div>-->
-<!--              <div class="upcoming-card-text">{{ item.warningName }}</div>-->
-<!--            </div>-->
-<!--          </div>-->
-<!--          &lt;!&ndash;质量&ndash;&gt;-->
-<!--          <div class="upcoming-card" v-for="(item,index) in homeWarningData_qa" :key="'qa'+index"-->
-<!--               @click="openDrawer(item)"-->
-<!--               style="background-color: #70AD47 !important;">-->
-<!--            <div class="upcoming-card-right">-->
-<!--              <div class="upcoming-card-last">昨日{{ item.lastCount }}%-->
-<!--                <Icon v-if="item.currentCount<item.lastCount" type="iconfont iconfont icon-down"-->
-<!--                      style="color: #191A23"/>-->
-<!--                <Icon v-else-if="item.currentCount>item.lastCount" type="iconfont iconfont icon-up"-->
-<!--                      style="color: #EE6666"/>-->
-<!--              </div>-->
-<!--              <div class="upcoming-card-number">{{ item.currentCount }}%</div>-->
-<!--              <div class="upcoming-card-text">{{ item.warningName }}</div>-->
-<!--            </div>-->
-<!--          </div>-->
-<!--        </div>-->
-<!--      </div>-->
-<!--    </Card>-->
-
-<!--    &lt;!&ndash;产量分析&ndash;&gt;-->
-<!--    <Card class="card card-upcoming" @contextmenu.native.prevent>-->
-<!--      <p slot="title">-->
-<!--        产量分析-->
-<!--      </p>-->
-<!--      <div slot="extra">-->
-<!--        <DateWeek @time="getWeekOutPutTime" ref="weekOutPutTime" init/>-->
-<!--      </div>-->
-<!--      <Echarts type="bar" :table-columns="tableWeekOutPutColumns" ref="chart_quantity" title="一周产量分析"-->
-<!--               :style="'height: 300px;width: 100%'" :row-field-keys="tableQualityRowFields"-->
-<!--               :table-data="tableWeekOutputData"/>-->
-<!--    </Card>-->
-
-<!--    &lt;!&ndash;质量分析&ndash;&gt;-->
-<!--    <Card class="card card-upcoming" @contextmenu.native.prevent>-->
-<!--      <p slot="title">-->
-<!--        质量分析-->
-<!--      </p>-->
-<!--      <div slot="extra">-->
-<!--        <DateWeek @time="getWeekQualityTime" ref="weekQualityTime" init/>-->
-<!--      </div>-->
-<!--      <Echarts type="line" :table-columns="tableWeekQualityColumns" ref="chart_quality" title="一周质量分析"-->
-<!--               :style="'height: 300px;width: 100%'" :row-field-keys="tableQualityRowFields"-->
-<!--               :table-data="tableWeekQualityData"/>-->
-<!--    </Card>-->
-
-<!--    <div style="display: flex">-->
-<!--      &lt;!&ndash;半检缺陷TOP5&ndash;&gt;-->
-<!--      <Card class="card card-upcoming" style="width: 50%" @contextmenu.native.prevent>-->
-<!--        <p slot="title">-->
-<!--          半检缺陷TOP5-->
-<!--        </p>-->
-<!--        <div slot="extra">-->
-<!--          <DateWeek @time="getHalfCheckTime"/>-->
-<!--        </div>-->
-<!--        <Echarts type="bar" :table-columns="tableHalfCheckColumns" ref="halfCheckTopDefect" title="半检缺陷TOP5"-->
-<!--                 :style="'height: 300px;width: 100%'" :table-data="tableHalfCheckData" x-value/>-->
-<!--      </Card>-->
-<!--      &lt;!&ndash;成检缺陷TOP5&ndash;&gt;-->
-<!--      <Card class="card card-upcoming" style="width: 49.5%;margin-left: 0.5%" @contextmenu.native.prevent>-->
-<!--        <p slot="title">-->
-<!--          成检缺陷TOP5-->
-<!--        </p>-->
-<!--        <div slot="extra">-->
-<!--          <DateWeek @time="getCheckTime"/>-->
-<!--        </div>-->
-<!--        <Echarts type="bar" :table-columns="tableCheckColumns" ref="checkTopDefect" title="成检缺陷TOP5"-->
-<!--                 :style="'height: 300px;width: 100%'" :table-data="tableCheckData" x-value/>-->
-<!--      </Card>-->
-<!--    </div>-->
-
-<!--    &lt;!&ndash;月订单达成率&ndash;&gt;-->
-<!--    <Card class="card card-upcoming" @contextmenu.native.prevent>-->
-<!--      <p slot="title">-->
-<!--        月订单达成率-->
-<!--      </p>-->
-<!--      <div slot="extra">-->
-<!--        <DateWeek @time="getTime"/>-->
-<!--      </div>-->
-<!--      <Echarts type="bar" :table-columns="tableOrderColumns" ref="chart_quantity" title="月订单达成率"-->
-<!--               subTitle="2023-08-01~2023-08-07"-->
-<!--               :style="'height: 300px;width: 100%'" :row-field-keys="tableOrderRowFields" :table-data="tableOrderData"-->
-<!--               :data-type="['bar', 'line']"/>-->
-<!--    </Card>-->
-
-
-<!--    <Drawer :closable="false" placement="bottom" v-model="drawerShow" :height="drawerHeight" style="overflow-y:hidden">-->
-<!--      &lt;!&ndash;预警中心&ndash;&gt;-->
-<!--      <Card :bordered="false">-->
-<!--        <p slot="title">{{ drawTitle }}-->
-<!--          <Tooltip :content="!drawerMax?$t('max'):$t('close')" theme="light"-->
-<!--                   style="float: right;margin-right: 10px;cursor: pointer">-->
-<!--            <Icon v-if="!drawerMax" type="ios-expand" size="18" @click="maxDrawer"/>-->
-<!--            <Icon v-else type="md-close" size="18" @click="drawerShow = false;"/>-->
-<!--          </Tooltip>-->
-<!--        <div style="clear: both;"></div>-->
-<!--        </p>-->
-<!--        <DkTable :id="'table-'+$options.name" ref="table-select" :data="homeWarningItemData"-->
-<!--                 :pageFlag="false"-->
-<!--                 :choose-flag="false"-->
-<!--                 :show-setting-flag="false"-->
-<!--                 :auto-width-flag="false"-->
-<!--                 :height="drawerHeight - 94">-->
-<!--          <DkTableColumn field="nodeName"></DkTableColumn>-->
-<!--          <DkTableColumn field="modelCodeName" :title="$t('pdtModel')"></DkTableColumn>-->
-<!--          <DkTableColumn field="logoCodeName" :title="$t('productLogo')"></DkTableColumn>-->
-<!--          <DkTableColumn field="colourCodeName" :title="$t('productColour')"></DkTableColumn>-->
-<!--          <DkTableColumn field="gradeName"></DkTableColumn>-->
-<!--          <DkTableColumn field="prodUserCodeName" :title="$t('prodUserCode')"></DkTableColumn>-->
-<!--          <DkTableColumn field="opnTime" :dataType="$config.dataType.dateTime"></DkTableColumn>-->
-<!--          <DkTableColumn field="pdtProdQty" :dataType="$config.dataType.number"></DkTableColumn>-->
-<!--        </DkTable>-->
-<!--      </Card>-->
-<!--    </Drawer>-->
-<!--    &lt;!&ndash;预警设置modal&ndash;&gt;-->
-<!--    <DkModal-->
-<!--      :loading="settingModalLoading"-->
-<!--      v-model="settingModal"-->
-<!--      ref="modal_setting"-->
-<!--      :title="$t('earlyWarningSetting')"-->
-<!--      :save-flag="true"-->
-<!--      @on-visible-change="onVisibleChange"-->
-<!--      @modalOk="saveData()"-->
-<!--      width="900px"-->
-<!--    >-->
-<!--      <DkTabs v-model="currentWarningType" :options="tabsOptions"></DkTabs>-->
-<!--      &lt;!&ndash;     预警     &ndash;&gt;-->
-<!--      <div :style="'height: ' + (tableHeight )+ 'px'" class="split-div-class"-->
-<!--           v-show="currentWarningType == 0">-->
-<!--        <DkSplit v-model="split">-->
-<!--          <EditTable slot="left" ref="warnTable_quantity"-->
-<!--                     :data="warningSettingFormData"-->
-<!--                     :height="tableHeight"-->
-<!--                     :choose-flag="false"-->
-<!--                     :auto-focus="false"-->
-<!--                     :enabledRepeat=true-->
-<!--                     majorField="setId"-->
-<!--                     :columns="warningSettingTableColumn"-->
-<!--                     :show-setting-flag="false"-->
-<!--                     @delRow="warnDelRow"-->
-<!--                     @current-change="currentFlow"-->
-<!--          ></EditTable>-->
-<!--          &lt;!&ndash; 工序行切换&ndash;&gt;-->
-<!--          <EditTable slot="right" ref="flowNode"-->
-<!--                     :data="warningSettingFormData[currentRowIndex]?.flowList"-->
-<!--                     :height="tableHeight"-->
-<!--                     control-id="nodeId"-->
-<!--                     :choose-flag="false"-->
-<!--                     :columns="flowNodeColumn"-->
-<!--                     :show-setting-flag="false"-->
-<!--                     :enabled-repeat="false"-->
-<!--                     enabled-repeat-id="nodeId"-->
-<!--                     @delRow="flowDelRow"-->
-<!--                     @chooseData="chooseFlowValue"-->
-
-<!--          ></EditTable>-->
-<!--        </DkSplit>-->
-<!--      </div>-->
-
-<!--      &lt;!&ndash;     预警 2    &ndash;&gt;-->
-<!--      <EditTable ref="warnTable_quality" v-show="currentWarningType == 1"-->
-<!--                 :data="warningSettingFormData_qa"-->
-<!--                 :height="tableHeight"-->
-<!--                 :choose-flag="false"-->
-<!--                 :auto-focus="false"-->
-<!--                 :columns="warningSettingTableColumn_qa"-->
-<!--                 :enabled-repeat="false"-->
-<!--                 enabled-repeat-id="kindCode"-->
-<!--                 majorField="setId"-->
-<!--                 control-id="qualityType"-->
-<!--                 :show-setting-flag="false"-->
-<!--                 @chooseData="chooseQualityType"-->
-<!--                 @delRow="warnDelRow"></EditTable>-->
-<!--    </DkModal>-->
-<!--    &lt;!&ndash;    底部留白&ndash;&gt;-->
-<!--    <div style="width: 100%; height: 20px"></div>-->
+  <div class="main-div" style="background-color: #fff">
+    <!--常用功能自定义弹窗 -->
+    <DkModal
+      @contextmenu.native.prevent
+      @modalCancel="closeCommonUse"
+      @modalOk="saveCommonUse"
+      :loading="funcModalLoading"
+      v-model="funcModal"
+      width="1000"
+      title="设置常用功能">
+      <div style="width: 100%;display: flex;">
+        <div class="modal-left-div" style="width: 50%;height: 600px;overflow: auto;padding-right: 5px;">
+          <div v-for="(fItem,fIndex) in funcList" :key="fIndex" style="width: 100%">
+            <Divider orientation="left">{{ fItem.meta.title }}</Divider>
+            <div style="display: flex;width: 100%;flex-wrap: wrap;">
+              <div v-for="(f2Item,f2Index) in fItem.children" :key="f2Index" :style="{marginTop:f2Index>4?'10px':'0'}"
+                   style="position:relative;width: 20%;text-align: center;">
+                <Checkbox @on-change="funcCheckBoxChange($event,f2Item)" :ref="'name-'+f2Item.menuUuid" class="ttt" v-model="f2Item._checked">
+                  <div style="width: 40px;height: 40px;position: relative;margin: auto">
+                    <img :src="require('@/assets/images/menu-image/' + (f2Item.meta.icon ? f2Item.meta.icon + '.png':'customer.png') )" style="width: 40px;height: 40px;"/>
+                  </div>
+                  <div class="func-item-title">{{ f2Item.meta.title }}</div>
+                </Checkbox>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="modal-right-div" style="width: 50%;height: 600px;overflow: auto;padding-right: 5px;">
+          <div style="height: 56px;display: flex;justify-content: center;align-items: center;">
+            <div v-show="rightFuncList.length>0" class="clear-btn" @click="clearAll">全部清空</div>
+          </div>
+          <draggable v-if="rightFuncList.length>0" :animation="300" v-model="rightFuncList" style="display: flex;width: 100%;flex-wrap: wrap;">
+            <div v-for="(rfItem,rfIndex) in rightFuncList" class="draggable-div" :key="rfIndex"
+                 style="position:relative;width: 20%;margin-bottom:10px;text-align: center;">
+              <div style="width: 40px;height: 40px;position: relative;margin: auto">
+                <img :src="require('@/assets/images/menu-image/' +( rfItem.meta.icon ? rfItem.meta.icon + '.png':'customer.png') )" style="width: 40px;height: 40px;"/>
+                <div @click="funcCheckBoxChangeRight('name-'+rfItem.menuUuid)" style="cursor:pointer;display:flex;justify-content:center;font-size:14px;align-items:center;position: absolute;top: -7px;right: -7px;padding: 2px;background-color: red;border: 1px solid #fff;border-radius: 50%;height: 20px;width:20px;color:#fff;font-weight: bold;">
+                  <div style="width: 75%;height: 2px;background-color: #fff;"></div>
+                </div>
+              </div>
+              <div class="func-item-title">{{ rfItem.meta.title }}</div>
+            </div>
+          </draggable>
+          <div v-else style="width: 100%;text-align: center;">
+            <div style="margin-top: 100px;">
+              <Icon type="logo-dropbox" color="#b6b6b6" size="42" />
+              <span style="display: block;color:#b6b6b6;margin-top: 5px;">请从左侧勾选以选择常用功能</span>
+            </div>
+          </div>
+        </div>
+      </div>
+    </DkModal>
+    <!--    常用功能-->
+    <Card class="card" style="margin-top: 0" @contextmenu.native.prevent>
+      <p slot="title">
+        常用功能
+      </p>
+      <Button slot="extra" icon="md-create" @click="openFuncModal">
+        自定义
+      </Button>
+      <div style="width: 100%;display: flex;align-items: center;justify-content: space-between;">
+        <div style="width: 25px;" v-if="homeCommonUseList && homeCommonUseList.length > 0">
+          <Icon type="ios-arrow-dropleft" style="cursor: pointer" @click.native="scrollCommonUseCard('left')"
+                size="25"/>
+        </div>
+        <div class="common-use-scroll" style="width: calc(100% - 70px);overflow: hidden;">
+          <div v-if="homeCommonUseList && homeCommonUseList.length>0" style="display:flex;width: max-content;">
+            <div v-for="(hcuItem,hcuIndex) in homeCommonUseList" :key="hcuIndex" style="width: 92px;text-align: center;">
+              <div @click="toPage(hcuItem)" style="cursor: pointer;">
+                <div>
+                  <img style="width: 40px;height: 40px" :src="require('@/assets/images/menu-image/' + hcuItem.menuTag.image )" />
+                </div>
+                <div style="font-size: 13px">{{ hcuItem.menuName }}</div>
+              </div>
+            </div>
+          </div>
+
+          <div v-else style="display:flex;width: max-content;">
+            <div @click="openFuncModal" style="cursor:pointer;border: 1px #d5d5d5 dashed;color:#b1b1b1;font-size:16px;height: 60px;width: 200px;background:#eaf9ff;border-radius: 10px;display: flex;align-items: center;justify-content: center;">添加常用功能</div>
+          </div>
+        </div>
+        <div style="width: 25px;" v-if="homeCommonUseList && homeCommonUseList.length > 0">
+          <Icon type="ios-arrow-dropleft" style="transform: rotate(180deg);cursor: pointer;"
+                @click.native="scrollCommonUseCard('right')" size="25"/>
+        </div>
+      </div>
+    </Card>
+
+    <!--    待办-->
+    <Card class="card card-upcoming" @contextmenu.native.prevent>
+      <div style="display: flex">
+        <div style="font-size: 16px;font-weight:500;color:#17233d;margin-right: 40px">
+          待办中心
+        </div>
+        <Tabs value="name1"  v-model="detailModel" @on-click="detailTabsClick">
+          <TabPane v-for="(item,index) in detailOptions"  :key="index" :label="item.label" :name="item.name"></TabPane>
+        </Tabs>
+      </div>
+      <Tooltip style="cursor: pointer" slot="extra" :content="$v('refresh')" theme="light" >
+        <Button icon="md-refresh" shape="circle" class="circle-button" @click="refreshWaitCenter"></Button>
+      </Tooltip>
+      <div style="display: flex;align-items: center;">
+        <div class="upcoming">
+          <!--销售-->
+          <div class="upcoming-card" v-if="saleFlag"  @click="openDrawer($config.homeDrawType.waitAudit)">
+            <Row>
+              <Col span="6" class="upcoming-card-icon">
+                <img :src="require('@/assets/images/menu-image/' + 'web-order-pending.png')" style="width: 40px;height: 40px;"/>
+              </Col>
+              <Col span="18">
+                <Row class="upcoming-card-number">
+                  {{ orderCount }}
+                </Row>
+              </Col>
+              <Col span="18">
+                <Row class="upcoming-card-text" style="margin: 5px 0px 0px 5px">
+                  {{ $t('salePending') }}
+                </Row>
+              </Col>
+            </Row>
+          </div>
+          <!--库存-->
+          <div class="upcoming-card" v-if="inventoryFlag"  @click="openDrawer($config.homeDrawType.waitAudit)">
+            <Row>
+              <Col span="6" class="upcoming-card-icon">
+                <img :src="require('@/assets/images/menu-image/' + 'web-into-pending.png')" style="width: 40px;height: 40px;"/>
+              </Col>
+              <Col span="18">
+                <Row class="upcoming-card-number">
+                  {{ intoCount }}
+                </Row>
+              </Col>
+              <Col span="18">
+                <Row class="upcoming-card-text" style="margin: 5px 0px 0px 5px">
+                  {{ $t('intoPending') }}
+                </Row>
+              </Col>
+            </Row>
+          </div>
+          <div class="upcoming-card" v-if="inventoryFlag"  @click="openDrawer($config.homeDrawType.waitAudit)">
+            <Row>
+              <Col span="6" class="upcoming-card-icon">
+                <img :src="require('@/assets/images/menu-image/' + 'web-out-pending.png')" style="width: 40px;height: 40px;"/>
+              </Col>
+              <Col span="18">
+                <Row class="upcoming-card-number">
+                  {{ outCount }}
+                </Row>
+              </Col>
+              <Col span="18">
+                <Row class="upcoming-card-text" style="margin: 5px 0px 0px 5px">
+                  {{ $t('outPending') }}
+                </Row>
+              </Col>
+            </Row>
+          </div>
+          <!--资金-->
+          <div class="upcoming-card" v-if="fundFlag"  @click="openDrawer($config.homeDrawType.waitAudit)">
+            <Row>
+              <Col span="6" class="upcoming-card-icon">
+                <img :src="require('@/assets/images/menu-image/' + 'web-fund-pending.png')" style="width: 40px;height: 40px;"/>
+              </Col>
+              <Col span="18">
+                <Row class="upcoming-card-number">
+                  {{ fundCount }}
+                </Row>
+              </Col>
+              <Col span="18">
+                <Row class="upcoming-card-text" style="margin: 5px 0px 0px 5px">
+                  {{ $t('fundPending') }}
+                </Row>
+              </Col>
+            </Row>
+          </div>
+        </div>
+      </div>
+    </Card>
+
+    <!--    底部留白-->
+    <div style="width: 100%; height: 20px"></div>
   </div>
 </template>
 
 <script>
-import funcIcon from '../../../assets/images/func-icon.png'
-import Echarts from '@/components/sub/echarts/echarts'
-import DateWeek from '_c/base/date-week/index'
-
-export default {
-  name: 'home',
-  components: {Echarts, DateWeek},
-  data() {
-    let self = this
-    return {
-      split: 0.8,
-      settingModalLoading: false,
-      warningSettingFormData: [],  // 产量数据
-      warningSettingFormData_qa: [],// 质量数据
-      tableHeight: 438,
-      //预警列表
-      warningSettingTableColumn: [
-        {
-          field: 'warningName',
-          type: 'text'
-        },
-        {field: 'remarks', type: 'text', width: 'auto'},
-        {field: 'displayNo', type: 'number', width: 80},
-      ],
-      warningSettingTableColumn_qa: [
-        {
-          field: 'qualityType',
-          type: 'select',
-          controlId: 'qualityType',
-          title: this.$t('qualityType'),
-          labelKey: 'kindName',
-          valueKey: 'kindCode',
-          options: () => this.qualityTypeData,
-        },
-        {field: 'remarks', type: 'text', width: 'auto'},
-        {field: 'displayNo', type: 'number', width: 'auto'},
-      ],
-      flowNodeColumn: [
-        {
-          field: 'nodeName',
-          width: 'auto',
-          controlId: 'nodeId',
-          type: 'tableSelect',
-          dataType: self.$config.tableSelectType.processNode,
-          fieldUpdate: self.$updateColumns.outKilnStrategyStatsNodes,
-        }
-      ],
-      currentWarningType: '0',// 默认在产量
-      settingModal: false,//是否显示预警界面
-      drawType: self.$config.homeDrawType.waitAudit, // 首页抽屉类型
-      drawerHeight: 350,   // 抽屉的高度
-      funcIcon,
-      funcModal: false,
-      funcModalLoading: false,
-      flgWarning: false,// 是否有预警数据
-      homeWarningData_quan: [],// 预警数据-数量
-      homeWarningData_qa: [],// 预警数据-质量
-      homeWarningItemData: [],// 预警明细数据
-      drawTitle: null,
-      funcList: [],
-      rightFuncList: [],
-      homeCommonUseList: [],
-      earlySettingList: [],//预警表单数据
-      qualityTypeData: [],//质量类型可选项
-      tabsOptions: [
-        {label: self.$t('产量'), name: '0'},
-        {label: self.$t('质量'), name: '1'},
-      ],
-      currentRowIndex: 0,// 当前行号
-      tableQualityData: [
-        {date: '2023-08-01', 注浆: 10, 精坯: 18, 釉坯: 15, 烧成: 18, 成检: 19, 包装: 18},
-        {date: '2023-08-02', 注浆: 15, 精坯: 17, 釉坯: 18, 烧成: 17, 成检: 16, 包装: 22},
-        {date: '2023-08-03', 注浆: 18, 精坯: 18, 釉坯: 15, 烧成: 19, 成检: 19, 包装: 21},
-        {date: '2023-08-04', 注浆: 12, 精坯: 20, 釉坯: 14, 烧成: 20, 成检: 28, 包装: 18},
-        {date: '2023-08-05', 注浆: 22, 精坯: 28, 釉坯: 27, 烧成: 27, 成检: 29, 包装: 23},
-        {date: '2023-08-06', 注浆: 20, 精坯: 22, 釉坯: 22, 烧成: 22, 成检: 22, 包装: 22},
-        {date: '2023-08-07', 注浆: 18, 精坯: 17, 釉坯: 18, 烧成: 11, 成检: 17, 包装: 11},
-      ],
-
-      tableQualityRowFields: [
-        'date'
-      ],
-
-      tableQualityColumns: [
-        {field: 'date', title: '日期'},
-        {field: '注浆', title: '注浆'},
-        {field: '精坯', title: '精坯'},
-        {field: '釉坯', title: '釉坯'},
-        {field: '烧成', title: '烧成'},
-        {field: '成检', title: '成检'},
-        {field: '包装', title: '包装'},
-      ],
-
-      tableCheckColumns: [],
-      tableHalfCheckColumns: [],
-      tableWeekOutPutColumns: [],
-      tableWeekQualityColumns: [],
-
-
-      tableCheckData: [],
-      tableHalfCheckData: [],
-      tableWeekOutputData: [],
-      tableWeekQualityData: [],
-
-      halfCheckTimeStart: null,
-      halfCheckTimeEnd: null,
-      checkTimeStart: null,
-      checkTimeEnd: null,
-
-      weekQualityTimeStart: null,
-      weekQualityTimeEnd: null,
-
-      weekOutputTimeStart: null,
-      weekOutputTimeEnd: null,
-
-      tableOrderColumns: [
-        {field: 'date', title: '日期'},
-        {field: '实际产量', title: '实际产量'},
-        {field: '计划产量', title: '计划产量'},
-      ],
-
-      tableOrderData: [
-        {date: '2023-08-01', 实际产量: 10, 计划产量: 18},
-        {date: '2023-08-02', 实际产量: 17, 计划产量: 22},
-        {date: '2023-08-03', 实际产量: 22, 计划产量: 21},
-        {date: '2023-08-04', 实际产量: 18, 计划产量: 24},
-        {date: '2023-08-05', 实际产量: 21, 计划产量: 23},
-        {date: '2023-08-06', 实际产量: 13, 计划产量: 18},
-        {date: '2023-08-07', 实际产量: 14, 计划产量: 17},
-      ],
-
-      tableOrderRowFields: [
-        'date'
-      ],
-      // 抽屉
-      drawerShow: false,
-      // 抽屉最大化
-      drawerMax: false,
-    }
-  },
-  watch: {
-    drawerShow(n, o) {
-      // 抽屉关闭后,进行初始化操作
-      if (!n) {
-        this.drawerHeight = 300;
-        this.drawerMax = false;
-      }
-    }
-  },
-  mounted() {
-    // 监听页面,如果大小变化,抽屉关闭
-    let self = this
-    window.addEventListener('resize', function (e) {
-      self.drawerShow = false;
-    })
-  },
-  methods: {
-    /**
-     * @desc   : 最大化drawer组件
-     * @author : 周兴
-     * @date   : 2023/9/5 9:39
-     */
-    maxDrawer() {
-      this.drawerMax = true;
-      this.drawerHeight = document.documentElement.clientHeight;
+  import funcIcon from '../../../assets/images/func-icon.png'
+  import draggable from "vuedraggable"
+  export default {
+    name: 'home',
+    components: {
+      draggable,
     },
-    toPage(menu) {
-      this.$router.push({path: menu.menuTag.path})
-    },
-    getMonthDays(date) {
-      date = date || new Date()
-      const temp = new Date(date.getFullYear(), date.getMonth() + 1, 0)
-      const days = temp.getDate()
-      return days
-    },
-    /**
-     * @desc   : 打开抽屉
-     * @author : 洪旭东
-     * @date   : 2022-05-02 17:27
-     */
-    openDrawer(item) {
-      let drawer = document.getElementsByClassName('ivu-drawer-bottom')
-      let leftSider = document.getElementsByClassName('left-sider')
-      if (drawer && leftSider && drawer[0] && leftSider[0]) {
-        drawer[0].style.width = (document.body.clientWidth - leftSider[0].getBoundingClientRect().width) + 'px'
-      }
-      // 获取明细数据
-      if (item) {
-        this.drawTitle = item.warningName
-        this.getHomeWarningItem(item);
-      }
-      this.drawerShow = true
-    },
-    /**
-     * @desc   : 待办滚动
-     * @author : 洪旭东
-     * @date   : 2022-05-03 17:21
-     */
-    scrollUpcomingCard(e) {
-      for (let i = 0; i < 701; i++) {
-        setTimeout(function () {
-          if (e == 'left') {
-            document.getElementsByClassName('upcoming')[0].scrollLeft--
-          } else {
-            document.getElementsByClassName('upcoming')[0].scrollLeft++
-          }
-        }, 100 + i)
+    data() {
+      let self = this
+      return {
+        drawType: self.$config.homeDrawType.waitAudit, // 首页抽屉类型
+        approvalCount: null , // 待审条数
+        unReadNoticeCount: null, // 未读公告条数
+        waitApprovalRight:false,// 待审中心权限
+        approveSplit: 0.6,
+        funcIcon,
+        /*****************常用功能*****************/
+        funcModal: false,
+        funcModalLoading: false,
+        funcList: [],
+        rightFuncList: [],
+        homeCommonUseList: [],
+        /*****************常用功能*****************/
+
+        /*****************待办*****************/
+        detailModel: 'sale',
+        detailOptions: [
+          {label: self.$t('sale'), name: 'sale'}, //销售
+          {label: self.$t('inventory'), name: 'inventory'},//库存
+          {label: self.$t('fund'), name: 'fund'},//资金
+        ],
+        saleFlag:true,
+        inventoryFlag:false,
+        fundFlag:false,
+        fundCount:0,
+        outCount:0,
+        intoCount:0,
+        orderCount:0,
+        /*****************待办*****************/
+
+        //公告
+        managementTableData: [],
+        //图表颜色
+        colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],
+        // 日期配置
+        dateOptions: {
+          shortcuts: [
+            {
+              text: '一月',
+              value() {
+                return self.getThisMonth(1)
+              }
+            },
+            {
+              text: '二月',
+              value() {
+                return self.getThisMonth(2)
+              }
+            },
+            {
+              text: '三月',
+              value() {
+                return self.getThisMonth(3)
+              }
+            },
+            {
+              text: '四月',
+              value() {
+                return self.getThisMonth(4)
+              }
+            },
+            {
+              text: '五月',
+              value() {
+                return self.getThisMonth(5)
+              }
+            },
+            {
+              text: '六月',
+              value() {
+                return self.getThisMonth(6)
+              }
+            },
+            {
+              text: '七月',
+              value() {
+                return self.getThisMonth(7)
+              }
+            },
+            {
+              text: '八月',
+              value() {
+                return self.getThisMonth(8)
+              }
+            },
+            {
+              text: '九月',
+              value() {
+                return self.getThisMonth(9)
+              }
+            },
+            {
+              text: '十月',
+              value() {
+                return self.getThisMonth(10)
+              }
+            },
+            {
+              text: '十一月',
+              value() {
+                return self.getThisMonth(11)
+              }
+            },
+            {
+              text: '十二月',
+              value() {
+                return self.getThisMonth(12)
+              }
+            },
+            {
+              text: '一季度',
+              value() {
+                return self.getThisQuarter(1)
+              }
+            },
+            {
+              text: '二季度',
+              value() {
+                return self.getThisQuarter(2)
+              }
+            },
+            {
+              text: '三季度',
+              value() {
+                return self.getThisQuarter(3)
+              }
+            },
+            {
+              text: '四季度',
+              value() {
+                return self.getThisQuarter(4)
+              }
+            },
+          ]
+        },
+        // 抽屉
+        drawerShow: false,
+        // 抽屉标题
+        drawerTitle: null,
+        // 抽屉表格
+        drawerTableData: [],
+        // 抽屉表格列
+        drawerTableColumn: [],
+        // 业绩日期范围
+        performanceDate: self.getThisMonth(),
+        // 业务门店select v-model
+        performanceStore: '全部门店',
+        // 门店
+        performanceStoreList: [
+          {
+            value: '全部门店',
+            label: '全部门店'
+          },
+          {
+            value: 'A门店',
+            label: 'A门店'
+          },
+          {
+            value: 'B门店',
+            label: 'B门店'
+          },
+        ],
+        // 销售简报页面类型
+        salesReportType: 1,
+        // 销售简报公司select v-model
+        salesReportCompany: 'A公司',
+        salesReportCompanyList: [
+          {
+            value: 'A公司',
+            label: 'A公司'
+          },
+          {
+            value: 'B公司',
+            label: 'B公司'
+          },
+        ],
+        // 销售简报人员 v-model
+        salesReportStaff: 'A员工',
+        // 销售简报人员List
+        salesReportStaffList: [
+          {
+            value: 'A员工',
+            label: 'A员工'
+          },
+          {
+            value: 'B员工',
+            label: 'B员工'
+          },
+        ],
+        // 销售简报radio
+        salesReportRadio: '销售情况',
+        // 销售助手天数list
+        salesHelperDaysList: [
+          {
+            value: '7',
+            label: '7天'
+          },
+          {
+            value: '15',
+            label: '15天'
+          },
+          {
+            value: '30',
+            label: '30天'
+          },
+        ],
+        // 销售助手天数1
+        salesHelperDays1: '7',
+        // 销售助手天数2
+        salesHelperDays2: '15',
+        // 销售助手天数3
+        salesHelperDays3: '30',
       }
     },
-    /**
-     * @desc   : 刷新预警中心数据
-     * @author : 周兴
-     * @date   : 2022/8/20 17:22
-     */
-    refreshWaitCenter() {
-      this.getHomeWarning();  // 查询预警数据
-    },
-
-    getTime(e) {
-      console.log(e.start, e.end)
-    },
-    /**
-     * @desc   : 半检时间选择
-     * @author : 洪旭东
-     * @date   : 2023-09-08 15:20
-     */
-    getHalfCheckTime ({start, end}) {
-      this.halfCheckTimeStart = start
-      this.halfCheckTimeEnd = end
-      this.getTopFiveHalfCheckDefect()
-    },
-    /**
-     * @desc   : 成检时间选择
-     * @author : 洪旭东
-     * @date   : 2023-09-08 15:20
-     */
-    getCheckTime ({start, end}) {
-      this.checkTimeStart = start
-      this.checkTimeEnd = end
-      this.getTopFiveCheckDefect()
-    },
-    /**
-     * @desc   : 一周产量分析时间选择
-     * @author : 洪旭东
-     * @date   : 2023-09-12 16:37
-     */
-    getWeekOutPutTime ({start, end}) {
-      this.weekOutputTimeStart = start
-      this.weekOutputTimeEnd = end
-      this.getWeekOutPut()
-    },
-    /**
-     * @desc   : 一周质量分析时间选择
-     * @author : 洪旭东
-     * @date   : 2023-09-13 11:38
-     */
-    getWeekQualityTime ({start, end}) {
-      this.weekQualityTimeStart = start
-      this.weekQualityTimeEnd = end
-      this.getWeekQuality()
-    },
-    // region 预警信息
-    /**
-     * @desc   : 获取预警信息
-     * @author : 周兴
-     * @date   : 2023/9/1 11:35
-     */
-    getHomeWarning() {
-      let params = {
-        ftyId: this.$store.state.user.ftyId,
-        date: new Date()
-      }
-      this.excute(this.$service.homeReportService, this.$service.homeReportService.getHomeWarning, params).then(res => {
-        if (res.code === this.$config.SUCCESS_CODE) {
-          if (res.data && res.data.length > 0) {
-            // 数量
-            this.homeWarningData_quan = res.data.filter(it => it.warningType === 0)
-            // 质量
-            this.homeWarningData_qa = res.data.filter(it => it.warningType === 1)
-            this.flgWarning = true;
-          } else {
-            this.homeWarningData_quan = []
-            this.homeWarningData_qa = []
-            this.flgWarning = false;
-          }
-        }
+    mounted() {
+      // 监听页面,如果大小变化,抽屉关闭
+      let self = this
+      window.addEventListener('resize', function (e) {
+        self.drawerShow = false;
       })
     },
-    /**
-     * @desc   : 获取明细数据
-     * @author : 周兴
-     * @date   : 2023/9/1 13:50
-     */
-    getHomeWarningItem(item) {
-      let params = {
-        ftyId: this.$store.state.user.ftyId,
-        warningSetId: item.warningSetId,
-        date: item.date
-      }
-      this.excute(this.$service.homeReportService, this.$service.homeReportService.getHomeWarningItem, params).then(res => {
-        if (res.code === this.$config.SUCCESS_CODE) {
-          this.homeWarningItemData = res.data
-        }
-      })
-    },
-    /**
-     * @desc   : 查询成检缺陷TOP5
-     * @author : 洪旭东
-     * @date   : 2023-09-08 14:45
-     */
-    getTopFiveCheckDefect() {
-      let params = {
-        ftyId: this.$store.state.user.ftyId,
-        nodeKind: this.$config.nodeKind.finishCheck,
-        timeStart: this.checkTimeStart,
-        timeEnd: this.checkTimeEnd
-      }
-      this.excute(this.$service.homeReportService, this.$service.homeReportService.getTopFiveDefect, params).then(res => {
-        if (res.code === this.$config.SUCCESS_CODE) {
-          this.tableCheckColumns = res.data.map(m => {return {
-            field: m.defectName, title: m.defectName
-          }})
-          let data = {}
-          for (let it of res.data) {
-            data = Object.assign(data, it.res)
+    methods: {
+      /****************************************常用功能****************************************/
+      /**
+       *   @desc   : 常用功能弹窗查询数据
+       *   @date   : 2024/4/28 15:02
+       *   @author : 寇珊珊
+       */
+      openFuncModal() {
+        this.funcModal = true
+        let hadMenuUuidList = this.homeCommonUseList.map(it => it.menuUuid)
+        let rightFuncList = []
+        this.funcList.forEach(it => {
+          if (it.children && it.children.length > 0) {
+            it.children.forEach(it2 => {
+              this.$set(it2, '_checked', false)
+              if (hadMenuUuidList.indexOf(it2.menuUuid) !== -1) {
+                rightFuncList.push(Object.assign(it2, {displayNo: hadMenuUuidList.indexOf(it2.menuUuid)}))
+                this.$set(it2, '_checked', true)
+              }
+            })
           }
-          this.tableCheckData = [data]
-        }
-      })
-    },
-    /**
-     * @desc   : 查询半检缺陷TOP5
-     * @author : 洪旭东
-     * @date   : 2023-09-08 15:19
-     */
-    getTopFiveHalfCheckDefect() {
-      let params = {
-        ftyId: this.$store.state.user.ftyId,
-        nodeKind: this.$config.nodeKind.halfCheck,
-        timeStart: this.halfCheckTimeStart,
-        timeEnd: this.halfCheckTimeEnd
-      }
-      this.excute(this.$service.homeReportService, this.$service.homeReportService.getTopFiveDefect, params).then(res => {
-        if (res.code === this.$config.SUCCESS_CODE) {
-          this.tableHalfCheckColumns = res.data.map(m => {return {
-            field: m.defectName, title: m.defectName
-          }})
-          let data = {}
-          for (let it of res.data) {
-            data = Object.assign(data, it.res)
+        })
+        this.rightFuncList = rightFuncList.sort((x, y) => {
+          return x.displayNo - y.displayNo
+        })
+      },
+      /**
+       * @desc   : 关闭常用功能界面
+       * @author : 周兴
+       * @date   : 2022/8/22 14:38
+       */
+      closeCommonUse() {
+        this.funcModal = false
+      },
+      /**
+       * @desc   : 保存常用功能
+       * @author : 周兴
+       * @date   : 2022/8/22 14:25
+       */
+      saveCommonUse() {
+        this.funcModalLoading = true
+        let params = this.rightFuncList.map((it, index) => {
+          return {userId: this.$store.state.user.id, displayNo: index, menuUuid: it.menuUuid, menuName:it.meta.title}
+        })
+        console.log("保存常用功能",params )
+        let excute =  this.excute(this.$service.appMenuService, this.$service.appMenuService.save, params)
+        excute.then(res => {
+          this.funcModalLoading = false
+          this.funcModal = false
+          if (res.code === this.$config.SUCCESS_CODE) {
+            this.selectCommonUse()
           }
-          this.tableHalfCheckData = [data]
+        })
+        return excute;
+      },
+      /**
+       * @desc   : 查询常用功能
+       * @author : 周兴
+       * @date   : 2022/8/22 14:16
+       */
+      selectCommonUse() {
+        let params = {
+          appCode:this.$config.appCode.WEB,
+          staffId:this.$store.state.user.staffId,
         }
-      })
-    },
-    /**
-     * @desc   : 一周产量分析
-     * @author : 洪旭东
-     * @date   : 2023-09-12 15:58
-     */
-    getWeekOutPut() {
-      let params = {
-        ftyId: this.$store.state.user.ftyId,
-        timeStart: this.weekOutputTimeStart,
-        timeEnd: this.weekOutputTimeEnd
-      }
-      this.excute(this.$service.homeReportService, this.$service.homeReportService.getWeekOutPut, params).then(res => {
-        if (res.code === this.$config.SUCCESS_CODE) {
-          let col = []
-          let list = []
-          let data = {}
-          for (let it of res.data) {
-            data.date = it.opDate
-            for (let item of it.res) {
-              data = Object.assign(data, item)
-            }
-            list.push(data)
-            col = col.concat(Object.keys(data))
-            data = {}
+        this.excute(this.$service.appMenuService, this.$service.appMenuService.selectMenu,params).then(res => {
+          if (res.code === this.$config.SUCCESS_CODE) {
+            this.homeCommonUseList = res.data
           }
-          this.tableWeekOutputData = list
-          this.tableWeekOutPutColumns = col.unique().map(m => {return {
-            field: m, title: m === 'date' ? '日期':m
-          }})
+        })
+      },
+      toPage(menu) {
+        this.$router.push({path: menu.menuTag.path})
+      },
+      /**
+       * @desc   : 滚动菜单
+       * @author : 周兴
+       * @date   : 2022/8/30 18:53
+       */
+      scrollCommonUseCard(e) {
+        for (let i = 0; i < 701; i++) {
+          setTimeout(function () {
+            if (e == 'left') {
+              document.getElementsByClassName('common-use-scroll')[0].scrollLeft--
+            } else {
+              document.getElementsByClassName('common-use-scroll')[0].scrollLeft++
+            }
+          }, 100 + i)
         }
-      })
-    },
-    /**
-     * @desc   : 一周质量分析
-     * @author : 洪旭东
-     * @date   : 2023-09-12 16:02
-     */
-    getWeekQuality () {
-      let params = {
-        ftyId: this.$store.state.user.ftyId,
-        timeStart: this.weekQualityTimeStart,
-        timeEnd: this.weekQualityTimeEnd
-      }
-      this.excute(this.$service.homeReportService, this.$service.homeReportService.getWeekQuality, params).then(res => {
-        if (res.code === this.$config.SUCCESS_CODE) {
-          let col = []
-          let list = []
-          let data = {}
-          for (let it of res.data) {
-            data.date = it.opDate
-            for (let item of it.res) {
-              data = Object.assign(data, item)
+      },
+      /**
+       * @desc   : 获取常用功能的菜单
+       * @author : 周兴
+       * @date   : 2022/8/22 10:47
+       */
+      getCommonMenu(){
+        if(this.$store.state.app.menuList && this.$store.state.app.menuList.length > 0){
+          let menuList = [...this.$store.state.app.menuList]
+          let funcList = []
+          menuList.forEach(it =>{
+            let funcItem = {}
+            // 不包括首页
+            if(it.name != 'home'){
+              funcItem.name = it.name;
+              funcItem.menuUuid = it.menuUuid;
+              funcItem.parentUuid = it.parentUuid;
+              funcItem.meta = it.meta;
             }
-            list.push(data)
-            col = col.concat(Object.keys(data))
-            data = {}
-          }
-          this.tableWeekQualityData = list
-          this.tableWeekQualityColumns = col.unique().map(m => {return {
-            field: m, title: m === 'date' ? '日期':m
-          }})
+            // 查询子级
+            if(it.children && it.children.length > 0){
+              let funcListChilds = this.getCommonChild(it.children);
+              if(funcListChilds && funcListChilds.length > 0){
+                funcItem.children = funcListChilds;
+                funcList.push(funcItem);
+              }
+            }
+          })
+          this.funcList = funcList;
         }
-      })
-    },
-    /**
-     * @desc   : 设置预警信息
-     * @author : 王曦平
-     * @date   : 2023/8/30 9:27
-     */
-    setHomeWarning() {
-      this.settingModal = true
-    },
-    /**
-     * @desc   : 加载预警设置信息
-     * @author : 王曦平
-     * @date   : 2023/8/30 13:35
-     */
-    getHomeWarningSet() {
-      let param = {
-        ftyId: this.$store.state.user.ftyId
-      }
-      this.settingModalLoading = true;
-      this.excute(this.$service.homeWarningSetService, this.$service.homeWarningSetService.selectByCond, param).then(res => {
-        if (res.code === this.$config.SUCCESS_CODE) {
-          if (res.data && res.data.list) {
-            // 产量数据源
-            this.warningSettingFormData = res.data.list.filter(it => it.warningType === 0);
-            // 质量数据
-            this.warningSettingFormData_qa = res.data.list.filter(it => it.warningType === 1);
-            // 质量需要设置名称
-            this.warningSettingFormData_qa.forEach(it => {
-              this.$set(it, 'qualityType_Name', it.qualityKindName)
-            })
-            this.currentRowIndex = 0;
-          } else {
-            this.warningSettingFormData = []
-            this.warningSettingFormData_qa = []
-          }
+      },
+      /**
+       * @desc   : 获取子级的菜单
+       * @author : 周兴
+       * @date   : 2022/8/22 11:11
+       */
+      getCommonChild(children){
+        let funcList = []
+        if(children && children.length > 0){
+          children.forEach(it=>{
+            // 说明要需要进行快捷的菜单
+              let funcItem = {}
+              funcItem.name = it.name;
+              funcItem.meta = it.meta;
+              funcItem.menuUuid = it.menuUuid;
+              funcItem.parentUuid = it.parentUuid;
+              funcList.push(funcItem);
+            // 如果还有子级,需要去查询子级
+            if(it.children && it.children.length > 0){
+              let funcListChilds = this.getCommonChild(it.children);
+              if(funcListChilds && funcListChilds.length > 0){
+                funcListChilds.forEach(c=>{
+                  if(c.parentUuid){
+                    let index = funcList.findIndex(item => c.parentUuid === item.menuUuid);
+                    if(index >= 0){
+                      funcList.splice(index + 1,0,c);
+                    }else{
+                      funcList.push(c);
+                    }
+                  }else{
+                    funcList.push(c);
+                  }
+                })
+              }
+            }
+          })
         }
-        this.settingModalLoading = false;
-      })
-    },
-    /**
-     * @desc   : 获取质量
-     * @author : 周兴
-     * @date   : 2023/9/6 17:04
-     */
-    getQualityTypeData() {
-      // 读取系统字典
-      let dataKindList =this.$store.state.user.dataKindList
-      let data = dataKindList.filter(it=>it.kindType == this.$config.kindType.qualityType)
-      this.qualityTypeData = data;
-    },
-    /**
-     * @desc   : 行切换
-     * @author : 王曦平
-     * @date   : 2023/9/1 16:41
-     */
-    warnCurrentChange({row}) {
-      if (row != null) {
-        this.currentWarningType = row.warningType;
-        this.currentRowIndex = 0;
-        // 结束编辑状态
-        if (row.warningType === 0) {
-          this.$refs['warnTable_quality'].$refs['xTable'].clearActived();
-          this.$refs['warnTable_quality'].$refs['xTable'].clearCurrentRow();
+        return funcList;
+      },
+      /**
+       *   @desc   : 常用功能弹窗全部清空
+       *   @date   : 2024/4/29 13:58
+       *   @author : 寇珊珊
+       */
+      clearAll(){
+        this.rightFuncList.forEach(it=>{
+          this.funcCheckBoxChangeRight('name-'+it.menuUuid)
+        })
+      },
+      funcCheckBoxChangeRight(name){
+        this.$refs[name][0].$el.click()
+      },
+      /**
+       *   @desc   : 常用功能弹窗左侧选择事件
+       *   @date   : 2024/4/29 14:00
+       *   @author : 寇珊珊
+       */
+      funcCheckBoxChange(flag, item) {
+        // menuUuid
+        if (flag) {
+          this.rightFuncList.push(item)
         } else {
-          this.$refs['warnTable_quantity'].$refs['xTable'].clearActived();
-          this.$refs['warnTable_quantity'].$refs['xTable'].clearCurrentRow();
+          this.rightFuncList = this.rightFuncList.filter(it => it.menuUuid !== item.menuUuid)
         }
-      }
-    },
-    /**
-     * @desc   : 校验数据
-     * @author : 周兴
-     * @date   : 2023/9/6 15:57
-     */
-    validData() {
-      // 产量类型的预警,预警名称必须填写,工序必须选择
-      return new Promise(resolve => {
-        let table = this.$refs['warnTable_quantity'].getTableDataFilter();
-        let filters = table.filter(it => !it.warningName);
-        // 名称有为空
-        if (filters && filters.length > 0) {
-          this.$Message.warning(this.$t('W_042', {'param': this.$t('warningName')}))
-          resolve(false)
-          return;
+      },
+      /****************************************常用功能****************************************/
+
+      /****************************************待办功能****************************************/
+      /**
+       *   @desc   : 待办切换
+       *   @date   : 2024/4/28 17:01
+       *   @author : 寇珊珊
+       */
+      detailTabsClick(val) {
+        this.detailModel= val
+        //销售
+        if (val === 'sale') {
+          this.saleFlag = true
+          this.inventoryFlag = false
+          this.fundFlag = false
         }
-        // 工序为空
-        filters = table.filter(it => !it.flowList || it.flowList.length === 0);
-        if (filters && filters.length > 0) {
-          this.$Message.warning(this.$t('W_069', {'param': this.$t('flowNodeName')}))
-          resolve(false)
-          return;
+        //库存
+        else if (val === 'inventory') {
+          this.saleFlag = false
+          this.inventoryFlag = true
+          this.fundFlag = false
         }
-        resolve(true)
-      })
-    },
-    /**
-     * @desc   : 给参数赋值
-     * @author : 周兴
-     * @date   : 2023/9/6 16:24
-     */
-    setParams() {
-      let table_quantity = this.$refs['warnTable_quantity'].getTableDataFilter();//0
-      let table_quality = this.$refs['warnTable_quality'].getTableDataFilter();//1
-      if (table_quantity && table_quantity.length > 0) {
-        table_quantity.forEach(it => {
-          it.warningType = 0;
-          it.ftyId = this.$store.state.user.ftyId;
+        //资金
+        else if(val === 'fund'){
+          this.saleFlag = false
+          this.inventoryFlag = false
+          this.fundFlag = true
+        }
+        //查询待办个数
+        this.selectPending()
+      },
+      /**
+       *   @desc   : 刷新待办中心数据
+       *   @date   : 2024/4/29 11:04
+       *   @author : 寇珊珊
+       */
+      refreshWaitCenter(){
+        //查询待办个数
+       this.selectPending()
+      },
+      /**
+       *   @desc   : 查询待办个数
+       *   @date   : 2024/4/28 17:25
+       *   @author : 寇珊珊
+       */
+      selectPending(){
+        //订单
+       if(this.detailModel ==='sale'){
+         let params = {
+           appCode:this.$config.appCode.WEB,
+           orderStatusList:[this.$config.outStatus.daiChuKu,this.$config.outStatus.chuKuZhong],
+         }
+         this.excute(this.$service.orderService, this.$service.orderService.countOrderByCond,params).then(res => {
+           if (res.code === this.$config.SUCCESS_CODE) {
+             this.orderCount = res.data
+           }
+         })
+       }
+       //出入库
+       else if(this.detailModel ==='inventory'){
+         //入库
+         let intoParams = {
+           appCode:this.$config.appCode.WEB,
+         }
+         this.excute(this.$service.otherInboundService, this.$service.otherInboundService.selectWaitInboundCount,intoParams).then(res => {
+           if (res.code === this.$config.SUCCESS_CODE) {
+             this.intoCount = res.data
+           }
+         })
+         //出库
+         let outParams = {
+           appCode:this.$config.appCode.WEB,
+         }
+         this.excute(this.$service.otherOutboundService, this.$service.otherOutboundService.selectWaitOutboundCount,outParams).then(res => {
+           if (res.code === this.$config.SUCCESS_CODE) {
+             this.outCount = res.data
+           }
+         })
+       }
+       //资金
+       else if(this.detailModel ==='fund'){
+         let params = {
+           appCode: this.$config.appCode.WEB,
+           amtResidueZeroFlg: true,
+           accItemType: this.$config.fundType.yingShou,
+         }
+         this.excute(this.$service.accountService, this.$service.accountService.getReceivableAccountItemCount, params).then(res => {
+           if (res.code === this.$config.SUCCESS_CODE) {
+             this.fundCount = res.data
+           }
+         })
+       }
+      },
+      /**
+       * @desc   : 打开抽屉
+       * @author : 洪旭东
+       * @date   : 2022-05-02 17:27
+       */
+      openDrawer(type) {
+        let drawer = document.getElementsByClassName('ivu-drawer-bottom')
+        let leftSider = document.getElementsByClassName('left-sider')
+        if (drawer && leftSider && drawer[0] && leftSider[0]) {
+          // console.log(document.body.clientWidth, leftSider[0].getBoundingClientRect().width)
+          drawer[0].style.width = (document.body.clientWidth - leftSider[0].getBoundingClientRect().width) + 'px'
+        }
+        if (type === this.$config.homeDrawType.notice) {
+          // 获取未读公告
+          this.selectManagement();
+        }
+        // let self = this;
+        // switch (type){
+        //   case self.$config.homeDrawType.waitAudit:
+        //     this.drawerTitle = "待审中心";
+        //     break;
+        //   case self.$config.homeDrawType.notice:
+        //     this.drawerTitle = "系统公告";
+        //     break;
+        // }
+        this.drawType = type;
+        this.drawerShow = true
+      },
+      /****************************************待办功能****************************************/
+
+      /**
+       * @desc   : 打开审批一览页面
+       * @author : 周兴
+       * @date   : 2022/9/2 14:15
+       */
+      openApprovalIndex(){
+        this.$router.push('/approval/waiting-for-approval/index');
+      },
+      /**
+       * @desc   : 过滤需要显示的菜单
+       * @author : 周兴
+       * @date   : 2022/8/22 9:49
+       */
+      filterShowMenu(arr, list) {
+        arr.children = list.filter(it => it.meta && !it.meta.hideInMenu)
+        arr.children.forEach(it => {
+          // it.meta.url = '../../../assets/images/' +  (it.meta.image?it.meta.image:'func-icon.png');
+          if(!it.meta.image){
+            it.meta.image = 'func-icon.png';
+          }
+          if (it.children && it.children.length > 0) {
+            this.filterShowMenu(it, it.children)
+          }
         })
-      }
-      if (table_quality && table_quality.length > 0) {
-        table_quality.forEach(it => {
-          // 质量的工序为空
-          it.flowList = []
-          it.warningType = 1;
-          it.ftyId = this.$store.state.user.ftyId;
+        return arr
+      },
+      /**
+       * @desc   : 切换销售简报模式
+       * @author : 洪旭东
+       * @date   : 2022-05-02 15:32
+       */
+      changeSalesReportModel() {
+        this.salesReportType = this.salesReportType == 1 ? 2 : 1
+      },
+      /**
+       * @desc   : 我的业绩目标
+       * @author : 洪旭东
+       * @date   : 2022-05-02 14:09
+       */
+      drawPerformance1() {
+        let echarts = require('echarts')
+        let echarts1 = echarts.init(document.getElementById('echarts1'))
+        echarts1.setOption(
+          {
+            tooltip: {
+              trigger: 'item',
+              // formatter: '{a} <br/>{b}: {c} ({d}%)'
+            },
+            title: {
+              show: true,
+              text: '报备客户'
+            },
+            series: [
+              {
+                center: ['50%', '80%'],
+                axisLabel: {
+                  formatter: '{value}%'
+                },
+                axisTick: {
+                  splitNumber: 2
+                },
+                axisLine: {
+                  lineStyle: {
+                    color: [
+                      [1, '#3cd343']
+                    ]
+                  }
+                },
+                pointer: {
+                  length: '60%',
+                  width: 4
+                },
+                itemStyle: {
+                  color: '#3cd343',
+                  borderColor: 'lightgreen',
+                },
+                splitNumber: 4,
+                radius: '100%',
+                startAngle: 180,
+                endAngle: 0,
+                name: '报备客户',
+                type: 'gauge',
+                process: {
+                  show: true
+                },
+                detail: {
+                  show: false,
+                  valueAnimation: true,
+                  // formatter: '{value}%'
+                },
+                data: [
+                  {value: 100, name: ''},
+                ],
+              }
+            ]
+          }
+        )
+      },
+      /**
+       * @desc   : 我的业绩目标
+       * @author : 洪旭东
+       * @date   : 2022-05-02 14:09
+       */
+      drawPerformance2() {
+        let echarts = require('echarts')
+        let echarts1 = echarts.init(document.getElementById('echarts2'))
+        echarts1.setOption(
+          {
+            tooltip: {
+              trigger: 'item',
+              // formatter: '{a} <br/>{b}: {c} ({d}%)'
+            },
+            title: {
+              show: true,
+              text: '订货额'
+            },
+            series: [
+              {
+                center: ['50%', '80%'],
+                axisLabel: {
+                  formatter: '{value}%'
+                },
+                axisTick: {
+                  splitNumber: 2
+                },
+                axisLine: {
+                  lineStyle: {
+                    color: [
+                      [1, '#3cd343']
+                    ]
+                  }
+                },
+                pointer: {
+                  length: '60%',
+                  width: 4
+                },
+                itemStyle: {
+                  color: '#3cd343',
+                  borderColor: 'lightgreen',
+                },
+                splitNumber: 4,
+                radius: '100%',
+                startAngle: 180,
+                endAngle: 0,
+                name: '订货额',
+                type: 'gauge',
+                process: {
+                  show: true
+                },
+                detail: {
+                  show: false,
+                  valueAnimation: true,
+                  // formatter: '{value}%'
+                },
+                data: [
+                  {value: 100, name: ''},
+                ],
+              }
+            ]
+          }
+        )
+      },
+      /**
+       * @desc   : 我的业绩目标
+       * @author : 洪旭东
+       * @date   : 2022-05-02 14:09
+       */
+      drawPerformance3() {
+        let echarts = require('echarts')
+        let echarts1 = echarts.init(document.getElementById('echarts3'))
+        echarts1.setOption(
+          {
+            tooltip: {
+              trigger: 'item',
+              // formatter: '{a} <br/>{b}: {c} ({d}%)'
+            },
+            title: {
+              show: true,
+              text: '回款额'
+            },
+            series: [
+              {
+                center: ['50%', '80%'],
+                axisLabel: {
+                  formatter: '{value}%'
+                },
+                axisTick: {
+                  splitNumber: 2
+                },
+                axisLine: {
+                  lineStyle: {
+                    color: [
+                      [1, '#3cd343']
+                    ]
+                  }
+                },
+                pointer: {
+                  length: '60%',
+                  width: 4
+                },
+                itemStyle: {
+                  color: '#3cd343',
+                  borderColor: 'lightgreen',
+                },
+                splitNumber: 4,
+                radius: '100%',
+                startAngle: 180,
+                endAngle: 0,
+                name: '回款额',
+                type: 'gauge',
+                process: {
+                  show: true
+                },
+                detail: {
+                  show: false,
+                  valueAnimation: true,
+                  // formatter: '{value}%'
+                },
+                data: [
+                  {value: 100, name: ''},
+                ],
+              }
+            ]
+          }
+        )
+      },
+      /**
+       * @desc   : 跳页
+       * @author : 洪旭东
+       * @date   : 2022-05-02 11:51
+       */
+      jumpTo() {
+        this.$router.push('/sale/order')
+      },
+      getMonthDays(date) {
+        date = date || new Date()
+        const temp = new Date(date.getFullYear(), date.getMonth() + 1, 0)
+        const days = temp.getDate()
+        return days
+      },
+      /**
+       * @desc   : 待办滚动
+       * @author : 洪旭东
+       * @date   : 2022-05-03 17:21
+       */
+      scrollUpcomingCard(e) {
+        for (let i = 0; i < 701; i++) {
+          setTimeout(function () {
+            if (e == 'left') {
+              document.getElementsByClassName('upcoming')[0].scrollLeft--
+            } else {
+              document.getElementsByClassName('upcoming')[0].scrollLeft++
+            }
+          }, 100 + i)
+        }
+      },
+      getText(str) {
+        let words = str.replace(/<[^<>]+>/g, "").replace(/&nbsp;/gi, ""); //这里是去除标签
+        return words.replace(/\s/g, "") //这里是去除空格
+      },
+      /**
+       *   @desc   : 跳转到公告
+       *   @date   : 2022/8/16 10:29
+       *   @author : 寇珊珊
+       */
+      returnMessage() {
+        this.$router.push('../../mst/notice-list/index')
+      },
+      /**
+       *   @desc   : 跳转公告明细
+       *   @date   : 2022/8/16 11:48
+       *   @author : 寇珊珊
+       */
+      returnMessageDetail(value) {
+        this.$router.push('../../mst/notice-list/detail/' + value.noticeId)
+      },
+      /**
+       * @desc   : 获取待审中心条数
+       * @author : 周兴
+       * @date   : 2022/8/20 14:50
+       */
+      getApprovalCount() {
+        // 参数设置
+        let params = {
+          cpId: this.$store.state.user.cpId,
+          userId: this.$store.state.user.id,
+          querys: Object.assign({treeFlag: true}, this.searchList)
+        }
+        waitingForApprovalService.getApprovalCount(params).then(res => {
+          if (res.code === 200) {
+            this.approvalCount = res.data;
+          } else {
+            this.$message.error(res.message)
+          }
         })
-      }
-      let columns = ['setId', 'warningType', 'warningName', 'qualityType', 'flowNodeId', 'remarks', 'displayNo', 'ftyId']
-      let table = table_quantity.union(table_quality)?.filterColumns(columns);//新建编辑
-      let del0 = this.$refs['warnTable_quantity'].getDeleteData()
-      let del1 = this.$refs['warnTable_quality'].getDeleteData()
-      let delTable = del0.union(del1)?.filterColumns(['setId'])
-      let params = {}
-      params.updateList = table;
-      params.delList = delTable;
-      return params;
-    },
-    /**
-     * @desc   : 保存
-     * @author : 王曦平
-     * @date   : 2023/9/1 16:41
-     */
-    saveData() {
-      this.validData().then(res => {
-        if (!res) {
-          return;
+      },
+      /**
+       *   @desc   : 查询公告
+       *   @date   : 2022/8/16 9:50
+       *   @author : 寇珊珊
+       */
+      selectManagement() {
+        // 参数设置
+        let params = {}
+        if (this.$store.state.user.sysId != this.$config.sysType.SYS_HEGII) {
+          params.cpId = this.$store.state.user.cpId
+          params.sysId = this.$store.state.user.sysId
         }
-        this.settingModalLoading = true;
-        let params = this.setParams();
-        this.excute(this.$service.homeWarningSetService, this.$service.homeWarningSetService.insertOrUpdate, params).then(res => {
-          if (res.code === this.$config.SUCCESS_CODE) {
-            this.$Message.success(this.$t('I_002'))
-            // 重新调取查询方法
-            this.getHomeWarningSet();
-            // 查询预警数据
-            this.getHomeWarning();
+        params.limit = 5; // 限制公告条数
+        params.userId = this.$store.state.user.id
+        // 查询公告分类接口
+        noticeManagementService.getNotice(params).then(res => {
+          if (res.code === 200) {
+            this.managementTableData = res.data
           } else {
-            this.$Message.warning(res.message)
+            this.$message.error(res.message)
           }
-          this.settingModalLoading = false;
         })
-      })
-    },
-    /**
-     * @desc   : 打开modal
-     * @author : 周兴
-     * @date   : 2023/9/6 14:40
-     */
-    onVisibleChange(e) {
-      if (e) {
-        // 获取预警设置信息
-        this.getHomeWarningSet();
-        // 获取质量类型
-        this.getQualityTypeData();
-      }
-    }
-    ,
-    /**
-     * @desc   : 工序行切换
-     * @author : 王曦平
-     * @date   : 2023/9/4 15:46
-     */
-    currentFlow(e) {
-      this.currentRowIndex = e.rowIndex;
-    }
-    ,
-    /**
-     * @desc   : 工序改变值
-     * @author : 王曦平
-     * @date   : 2023/9/5 9:01
-     */
-    chooseFlowValue() {
-      this.$nextTick(() => {
-        let table = this.$refs.flowNode.getTableDataFilter();
-        let filters = table.map(it => it.nodeId);
-        this.$set(this.warningSettingFormData[this.currentRowIndex], 'flowList', table);
-        this.$set(this.warningSettingFormData[this.currentRowIndex], 'flowNodeId', filters);
-      })
-    }
-    ,
-    /**
-     * @desc   : 选择质量类型
-     * @author : 周兴
-     * @date   : 2023/9/7 15:50
-     */
-    chooseQualityType(row, rowIndex) {
-      this.$set(this.warningSettingFormData_qa[rowIndex], 'warningName', row['qualityType_Name'])
+      },
+      /**
+       * @desc   : 获取未读公告数量
+       * @author : 周兴
+       * @date   : 2022/8/20 14:50
+       */
+      getUnreadNoticeCount() {
+        // 参数设置
+        let params = {}
+        if (this.$store.state.user.sysId != this.$config.sysType.SYS_HEGII) {
+          params.cpId = this.$store.state.user.cpId
+          params.sysId = this.$store.state.user.sysId
+        }
+        params.userId = this.$store.state.user.id
+        noticeManagementService.getUnreadNoticeCount(params).then(res => {
+          if (res.code === 200) {
+            this.unReadNoticeCount = res.data;
+          } else {
+            this.$message.error(res.message)
+          }
+        })
+      },
     },
-    /**
-     * @desc   : 删除工序事件
-     * @author : 王曦平
-     * @date   : 2023/9/5 13:27
-     */
-    flowDelRow(row, rowIndex) {
-      this.chooseFlowValue();     // 重新给产量工序赋值
-    }
-    ,
-    /**
-     * @desc   : 删除预警行
-     * @author : 周兴
-     * @date   : 2023/9/7 15:18
-     */
-    warnDelRow(row, rowIndex) {
-      this.warningSettingFormData = this.warningSettingFormData.filter((it, index) => index != rowIndex);
-      let table = this.$refs['warnTable_quantity'].getTableData();
-      if (table && this.currentRowIndex >= table.length) {
-        this.currentRowIndex = this.currentRowIndex - 1;
-      }
+    created() {
+      this.routeObjName = 'appMenu'  // 设置路由名称
+      this.getCommonMenu();   // 获取常用功能的菜单
+      this.selectCommonUse();//查询常用功能
+      this.selectPending();//获取代办事项个数
+      // this.getApprovalCount();// 获取待审中心数据
+      // this.getUnreadNoticeCount();// 获取未读公告条数
+      this.waitApprovalRight =this.$libaray.checkButtonHasRight('wait-approval')
     },
-    // endregion
-  },
-  created() {
-    // this.getHomeWarning();// 获取预警数据
-    // //查询半检、成检缺陷TOP5
-    // this.getTopFiveHalfCheckDefect()
-    // this.getTopFiveCheckDefect()
-    this.routeObjName = 'home'  // 设置路由名称
-    this.primaryKey = 'setId'  // 设置主键Id
-  },
-}
+  }
 </script>
 <style lang="less" scoped>
-@cell_height: 30px;
-.func-item-title {
-  font-size: 12px;
-  margin-top: 5px;
-}
-
-/deep/ .ttt > .ivu-checkbox {
-  position: absolute !important;
-  z-index: 1;
-  right: 24%;
-  top: -8%;
-}
-
-.draggable-div[draggable=true] {
-  //opacity: 0 !important;
-}
+  .func-item-title {
+    font-size: 12px;
+    margin-top: 5px;
+  }
 
-.modal-left-div::-webkit-scrollbar {
-  width: 5px;
-}
+  /deep/.ivu-tabs-nav .ivu-tabs-tab  {
+    bottom: 5px;
+    font-size: 14px !important;
+  }
 
-.modal-left-div::-webkit-scrollbar-track {
-  width: 5px !important;
-  background: #dcdcdc;
-  border-radius: 10px;
-}
+  /deep/ .ttt > .ivu-checkbox {
+    position: absolute !important;
+    z-index: 1;
+    right: 24%;
+    top: -8%;
+  }
 
-.modal-left-div::-webkit-scrollbar-thumb {
-  width: 5px;
-  background: #b6b6b6;
-  border-radius: 10px;
-}
+  .draggable-div[draggable=true] {
+    //opacity: 0 !important;
+  }
 
-//Card标签
-.card {
-  margin-top: 8px;
-  overflow-x: auto;
-}
+  .modal-left-div::-webkit-scrollbar {
+    width: 5px;
+  }
 
-//圆形按钮
-.circle-button {
-  font-size: 20px !important;
-  margin-left: 5px;
-  margin-right: 5px;
-}
+  .modal-left-div::-webkit-scrollbar-track {
+    width: 5px !important;
+    background: #dcdcdc;
+    border-radius: 10px;
+  }
 
-//待办
-.upcoming {
-  width: 100%;
-  display: flex;
-  overflow-x: auto;
-  transition: scrollLeft 2s;
-  padding: 10px;
+  .modal-left-div::-webkit-scrollbar-thumb {
+    width: 5px;
+    background: #b6b6b6;
+    border-radius: 10px;
+  }
 
-  .upcoming-card {
-    height: 100px;
-    min-width: 140px;
-    //background-color: #f4f8ff;
-    background-color: #2D8CF0;
-    color: #fff;
-    padding: 15px 0 10px 0;
-    margin-right: 20px;
-    cursor: pointer;
-    border-radius: 15px;
-    display: flex;
-    box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.5);
-    //margin-bottom: 10px;
+  //Card标签
+  .card {
+    margin-top: 8px;
+  }
 
-    .upcoming-card-icon {
-      padding: 16px 0;
-      width: 50px;
-    }
+  //圆形按钮
+  .circle-button {
+    font-size: 20px !important;
+    margin-left: 5px;
+    margin-right: 5px;
+  }
 
-    .upcoming-card-right {
-      width: 100%;
-    }
+  //待办
+  .upcoming {
+    width: 100%;
+    display: -webkit-inline-box;
+    overflow-x: auto;
+    transition: scrollLeft 2s;
+    padding-bottom: 10px;
+
+    .upcoming-card {
+      height: 100px;
+      width: 200px;
+      background-color: #f4f8ff;
+      padding: 20px 10px 30px 10px;
+      margin-right: 20px;
+      cursor: pointer;
+      border-radius: 15px;
+      //margin-bottom: 10px;
+
+      .upcoming-card-icon {
+        //todo 2024年4月29日13:56:25  注释掉
+        /*padding: 16px 0;*/
+      }
 
-    .upcoming-card-number {
-      font-size: 26px;
-      font-weight: bolder;
-      display: flex !important;
-      justify-content: center;
-    }
+      .upcoming-card-number {
+        font-size: 26px;
+        padding-left: 10px;
+        font-weight: bolder;
+      }
 
-    .upcoming-card-text {
-      font-size: 13px;
-      font-weight: 500;
-      display: flex !important;
-      justify-content: center;
+      .upcoming-card-text {
+        font-size: 13px;
+        font-weight: 500;
+      }
     }
   }
-}
-
-.card-upcoming /deep/ .ivu-card-body {
-  padding-bottom: 0 !important;
-
-}
 
-//图表
-.echarts {
-  width: 300px;
-  height: 200px
-}
-
-// 销售简报radio数字
-.sales-report-radio-number {
-  position: relative;
-  right: 50px;
-}
-
-// 销售简报radio选中的文字
-.sales-report-radio-checked {
-  font-weight: bolder;
-}
-
-// 销售简报右侧col
-.sales-report-col {
-  padding-right: 10px;
-  padding-top: 10px;
-}
-
-// 销售简报card 个数 数字
-.sales-report-card-number {
-  color: grey;
-}
+  .upcoming::-webkit-scrollbar {
+    width: 0;
+  }
 
-// 销售简报card 钱数 数字
-.sales-report-card-money {
-  color: orange;
-}
+  .card-upcoming /deep/ .ivu-card-body {
+    padding-bottom: 0 !important;
 
-// 销售简报 简略模式card
-.sales-report-simple-card {
-  margin: 10px;
-}
+  }
 
-// 销售简报 简略模式 文字
-.sales-report-simple-card-text {
-  font-weight: bolder;
-}
+  //图表
+  .echarts {
+    width: 300px;
+    height: 200px
+  }
 
-.sales-report-simple-card-text2 {
-  color: grey;
-}
+  // 销售简报radio数字
+  .sales-report-radio-number {
+    position: relative;
+    right: 50px;
+  }
 
-.sales-report-simple-card-text3 {
-  color: orange;
-}
+  // 销售简报radio选中的文字
+  .sales-report-radio-checked {
+    font-weight: bolder;
+  }
 
-// 销售助手 card 外 col
-.sales-helper-col {
-  padding: 5px;
-}
+  // 销售简报右侧col
+  .sales-report-col {
+    padding-right: 10px;
+    padding-top: 10px;
+  }
 
-// 销售助手 card
-.sales-helper-card {
-  background-color: #f7f7f9;
-  padding: 5px;
-}
+  // 销售简报card 个数 数字
+  .sales-report-card-number {
+    color: grey;
+  }
 
-// 销售助手 card 第一行
-.sales-helper-card-icon-title {
-  display: flex;
-  align-items: center;
-}
+  // 销售简报card 钱数 数字
+  .sales-report-card-money {
+    color: orange;
+  }
 
-// 销售助手 card 标题
-.sales-helper-card-title {
-  line-height: 34px;
-  margin-left: 10px;
-}
+  // 销售简报 简略模式card
+  .sales-report-simple-card {
+    margin: 10px;
+  }
 
-// 销售助手 card 内容 蓝色
-.sales-helper-card-content {
-  margin-top: 10px;
-  color: #71a6ec;
-}
+  // 销售简报 简略模式 文字
+  .sales-report-simple-card-text {
+    font-weight: bolder;
+  }
 
-// 销售助手 card 内容 灰色
-.sales-helper-card-content2 {
-  margin-top: 10px;
-  color: grey;
-}
+  .sales-report-simple-card-text2 {
+    color: grey;
+  }
 
-// 底部抽屉
-/deep/ .ivu-drawer-bottom {
-  right: 0;
-  bottom: 0;
-  top: unset;
-}
+  .sales-report-simple-card-text3 {
+    color: orange;
+  }
 
-/deep/ .ivu-tabs-tab {
-  bottom: 10px;
-  font-size: 18px !important;
-}
+  // 销售助手 card 外 col
+  .sales-helper-col {
+    padding: 5px;
+  }
 
-.ivu-row {
-  display: flex;
-}
+  // 销售助手 card
+  .sales-helper-card {
+    background-color: #f7f7f9;
+    padding: 5px;
+  }
 
-/deep/ .ivu-list {
-  height: 245px !important;
-  overflow-y: auto;
-}
+  // 销售助手 card 第一行
+  .sales-helper-card-icon-title {
+    display: flex;
+    align-items: center;
+  }
 
-/deep/ .ivu-list-item-meta-title {
-  margin-bottom: 2px !important;
-  font-size: 15px !important;
-  cursor: pointer;
-  text-decoration: underline;
-}
+  // 销售助手 card 标题
+  .sales-helper-card-title {
+    line-height: 34px;
+    margin-left: 10px;
+  }
 
-/deep/ .ivu-list-item {
-  padding: 10px 0 0 0 !important;
-}
+  // 销售助手 card 内容 蓝色
+  .sales-helper-card-content {
+    margin-top: 10px;
+    color: #71a6ec;
+  }
 
-/deep/ .ivu-list-item-meta-content {
-  width: 100%;
-}
+  // 销售助手 card 内容 灰色
+  .sales-helper-card-content2 {
+    margin-top: 10px;
+    color: grey;
+  }
 
-/deep/ .ivu-list-item-meta {
-  margin-bottom: 6px !important;
-}
+  // 底部抽屉
+  /deep/ .ivu-drawer-bottom {
+    right: 0;
+    bottom: 0;
+    top: unset;
+  }
 
-/deep/ .ivu-list-item-meta-description {
-  //width: 253px;
-  font-size: 12px;
-  line-height: 22px;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
+  /deep/ .ivu-tabs-tab {
+    bottom: 10px;
+    font-size: 18px !important;
+  }
 
-/deep/ .ivu-checkbox-checked .ivu-checkbox-inner {
-  background-color: #1B365D !important;
-  border-color: #1B365D !important;
-}
+  .ivu-row {
+    display: flex;
+  }
 
-.clear-btn {
-  border: #b6b6b6 1px dashed;
-  color: #fff;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  width: 88%;
-  height: 30px;
-  background: #00aaed;
-  border-radius: 5px;
-  cursor: pointer;
-  transition: .3s;
-}
+  /deep/ .ivu-list {
+    height: 245px !important;
+    overflow-y: auto;
+  }
 
-.clear-btn:hover {
-  background: #4dcbff;
-}
+  /deep/ .ivu-list-item-meta-title {
+    margin-bottom: 2px !important;
+    font-size: 15px !important;
+    cursor: pointer;
+    text-decoration: underline;
+  }
 
-.upcoming-card-last {
-  width: calc(100% + 10px);
-  margin-top: -5px;
-  margin-right: -10px;
-  text-align: right;
-  height: 11px;
-  font-size: 11px;
-  transform: scale(0.75);
-}
+  /deep/ .ivu-list-item {
+    padding: 10px 0 0 0 !important;
+  }
 
-/deep/ .ivu-card-body {
-  padding: 5px;
-}
+  /deep/ .ivu-list-item-meta-content {
+    width: 100%;
+  }
 
-/deep/ .ivu-tabs-tab {
-  //width:100px!important;
-  height: @cell_height !important;
-  line-height: @cell_height !important;
-  text-align: center !important;
-  margin-top: 10px !important;
-  font-size: 14px !important;
-  padding-top: 0 !important;
-  padding-bottom: 0 !important;
-}
+  /deep/ .ivu-list-item-meta {
+    margin-bottom: 6px !important;
+  }
 
-/deep/ .ivu-card-extra {
-  top: 8px;
-}
+  /deep/ .ivu-list-item-meta-description {
+    //width: 253px;
+    font-size: 12px;
+    line-height: 22px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
 
-/deep/.ivu-card-body{
-  padding: 0 !important;
-}
+  /deep/.ivu-checkbox-checked .ivu-checkbox-inner{
+    background-color: #1B365D !important;
+    border-color:  #1B365D !important;
+  }
 
+  .clear-btn{
+    border: #b6b6b6 1px dashed;
+    color:#fff;
+    display:flex;
+    align-items:center;
+    justify-content:center;
+    width: 88%;
+    height: 30px;
+    background: #00aaed;
+    border-radius: 5px;
+    cursor: pointer;
+    transition: .3s;
+  }
+  .clear-btn:hover{
+    background: #4dcbff;
+  }
 </style>