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

Merge branch 'master' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend-wt into test

yusheng 11 месяцев назад
Родитель
Сommit
315d0ab4e3

+ 312 - 0
src/BIZComponents/seekPage.vue

@@ -0,0 +1,312 @@
+<template>
+  <div class="index_box">
+    <el-form label-width="90px" :inline="true">
+      <el-form-item v-for="(item, i) in seekList" :key="i">
+        <el-form-item
+          :label="item.label"
+          :label-width="item.labelWidth + 'px'"
+          v-if="i <= formLength - 1"
+        >
+          <!-- input 输入 -->
+          <div>
+            <div v-if="item.type == 'input'">
+              <el-input
+                clearable
+                v-model="defaultWhere[item.value]"
+                :placeholder="item.placeholder || '请输入内容'"
+                :style="{ width: item.width ? item.width + 'px' : '220px' }"
+              />
+            </div>
+            <div v-if="item.type == 'select'">
+              <el-select
+                clearable
+                v-model="defaultWhere[item.value]"
+                :placeholder="item.placeholder || '请输入内容'"
+                :multiple="item.multiple ? item.multiple : false"
+                :filterable="item.filterable ? item.filterable : true"
+                :style="{ width: item.width ? item.width + 'px' : '220px' }"
+              >
+                <el-option
+                  v-for="(op, i) in item.planList"
+                  :label="op.label"
+                  :value="op.value"
+                  :key="i"
+                ></el-option>
+              </el-select>
+            </div>
+            <div v-if="item.type == 'date'">
+              <el-date-picker
+                v-model="defaultWhere[item.value]"
+                @visible-change="change"
+                :type="item.dateType || 'daterange'"
+                range-separator="至"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                value-format="yyyy-MM-dd"
+                :style="{ width: item.width ? item.width + 'px' : '220px' }"
+              >
+              </el-date-picker>
+            </div>
+            <div v-if="item.type == 'DictSelection'">
+              <DictSelection
+                v-model="defaultWhere[item.value]"
+                :placeholder="item.placeholder || '请选择内容'"
+                :multiple="item.multiple ? item.multiple : false"
+                :style="{ width: item.width ? item.width + 'px' : '220px' }"
+                :dictName="item.dictName"
+              />
+            </div>
+          </div>
+        </el-form-item>
+      </el-form-item>
+
+      <el-form-item>
+        <el-dropdown
+          ref="dropdownref"
+          trigger="click"
+          :hide-on-click="false"
+          v-model="dropdownVisible"
+        >
+          <div v-if="seekList.length > formLength">
+            <span class="el-dropdown-link">
+              更多选项<i class="el-icon-arrow-down el-icon--right"></i>
+            </span>
+            <el-dropdown-menu slot="dropdown">
+              <div class="padding">
+                <el-form label-position="left">
+                  <el-form-item
+                    v-for="(item, i) in deboListRow"
+                    :key="i"
+                    :inline="true"
+                    label-position="left"
+                  >
+                    <el-form-item
+                      :label-width="
+                        item.labelWidth ? item.labelWidth : '90' + 'px'
+                      "
+                      :inline="true"
+                      :label="item.label"
+                    >
+                      <div v-if="item.type == 'input'">
+                        <el-input
+                          clearable
+                          v-model="defaultWhere[item.value]"
+                          :placeholder="item.placeholder || '请输入内容'"
+                          :style="{
+                            width: item.width ? item.width + 'px' : '220px'
+                          }"
+                        />
+                      </div>
+                      <div v-if="item.type == 'select'">
+                        <el-select
+                          clearable
+                          v-model="defaultWhere[item.value]"
+                          :multiple="item.multiple ? item.multiple : false"
+                          :filterable="item.filterable ? item.filterable : true"
+                          :placeholder="item.placeholder || '请输入内容'"
+                          :style="{
+                            width: item.width ? item.width + 'px' : '220px'
+                          }"
+                          @visible-change="change"
+                          @change="handerChange"
+                        >
+                          <el-option
+                            v-for="(op, i) in item.planList"
+                            :label="op.label"
+                            :value="op.value"
+                            :key="i"
+                          ></el-option>
+                        </el-select>
+                      </div>
+
+                      <div v-if="item.type == 'date'">
+                        <el-date-picker
+                          v-model="defaultWhere[item.value]"
+                          @blur="change"
+                          :type="item.dateType || 'daterange'"
+                          range-separator="至"
+                          start-placeholder="开始日期"
+                          end-placeholder="结束日期"
+                          value-format="yyyy-MM-dd"
+                          :style="{
+                            width: item.width ? item.width + 'px' : '220px'
+                          }"
+                        >
+                        </el-date-picker>
+                      </div>
+                      <div v-if="item.type == 'DictSelection'">
+                        <DictSelection
+                          v-model="defaultWhere[item.value]"
+                          :placeholder="item.placeholder || '请选择内容'"
+                          :multiple="item.multiple ? item.multiple : false"
+                          :style="{
+                            width: item.width ? item.width + 'px' : '220px'
+                          }"
+                          :dictName="item.dictName"
+                        />
+                      </div>
+                      <div v-if="item.type == 'picker'">
+                        <el-date-picker
+                          v-model="defaultWhere[item.value]"
+                          @blur="change"
+                          value-format="yyyy-MM-dd"
+                          :style="{
+                            width: item.width ? item.width + 'px' : '220px'
+                          }"
+                        >
+                        </el-date-picker>
+                      </div>
+                    </el-form-item>
+                  </el-form-item>
+                </el-form>
+              </div>
+            </el-dropdown-menu>
+          </div>
+        </el-dropdown>
+      </el-form-item>
+
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          class="ele-btn-icon"
+          @click="search"
+        >
+          查询
+        </el-button>
+        <el-button @click="reset" icon="el-icon-refresh-left" type="primary"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      seekList: {
+        type: Array,
+        default: () => []
+      },
+      formLength: {
+        type: [Number],
+        default: 3
+      },
+      keyValue: ''
+    },
+    mounted() {
+      let whereObj = sessionStorage[this.keyValue];
+      if (whereObj) {
+        this.defaultWhere = JSON.parse(whereObj);
+        this.search();
+      }
+    },
+    components: {},
+    watch: {
+      seekList: {
+        handler(val) {
+          this.$nextTick(() => {
+            if (Array.isArray(val) && val.length <= this.formLength) {
+              this.seekListRow = val;
+            } else if (Array.isArray(val) && val.length >= this.formLength) {
+              this.seekListRow = val.slice(0, this.formLength);
+              this.deboListRow = val.slice(this.formLength);
+            }
+          });
+        },
+        deep: true,
+        immediate: true
+      },
+      defaultWhere: {
+        handler(val) {
+          if (this.keyValue) {
+            sessionStorage[this.keyValue] = JSON.stringify(val);
+            if (Object.keys(val).length === 0) {
+              sessionStorage.removeItem(this.keyValue);
+            }
+          }
+        },
+        deep: true
+        // immediate: true
+      }
+    },
+
+    data() {
+      return {
+        defaultWhere: {},
+        dropdownVisible: true,
+        deboListRow: [],
+        seekListRow: []
+      };
+    },
+
+    computed: {
+      info() {
+        return this.$store.state.user.info;
+      }
+    },
+
+    created() {},
+    methods: {
+      change(visible) {
+        this.dropdownVisible = visible;
+        this.$refs.dropdownref.show();
+      },
+      handerChange() {
+        this.$refs.dropdownref.show();
+      },
+      // changeDate(val, prop) {
+      //   console.log(val);
+      //   console.log(prop);
+
+      //   if (!val) {
+      //     this.defaultWhere[prop] = ['', ''];
+      //     console.log(this.defaultWhere);
+      //   }
+      // },
+
+      search() {
+        let valueAr = this.seekList.filter((item) => item.valueAr);
+        console.log(valueAr);
+
+        valueAr.forEach((item) => {
+          let data = this.defaultWhere[item.value];
+          if (data) {
+            this.defaultWhere[item.valueAr[0]] = data[0];
+            this.defaultWhere[item.valueAr[1]] = data[1];
+          }
+          if (!data) {
+            this.defaultWhere[item.valueAr[0]] = '';
+            this.defaultWhere[item.valueAr[1]] = '';
+          }
+          delete this.defaultWhere[item.value];
+        });
+
+        console.log(this.defaultWhere);
+
+        this.$emit('search', this.defaultWhere);
+      },
+      // 重置
+      reset() {
+        this.defaultWhere = {};
+        this.search();
+      }
+
+      //  折叠悬浮中样式调整
+    }
+  };
+</script>
+
+<style scoped lang="scss">
+  .index_box {
+    display: flex;
+  }
+
+  .padding {
+    padding: 20px;
+  }
+  :deep(.el-form-item) {
+    margin-bottom: 5px !important;
+  }
+</style>

+ 49 - 44
src/api/bpm/components/inspectionManage/index.js

@@ -37,50 +37,55 @@ export async function getList(params) {
 export async function statistics(params) {
   const res = await request.get('/eam/PdaWorkOrder/statistics', { params });
   if (res.data.code == 0) {
-    console.log('-----statistics---user--------');
-    console.log(store.state.user);
-    if (store.state.user.menus?.length) {
-      for (const p of store.state.user.menus) {
-        console.log('statistics----------------------');
-        console.log(p);
-        if (p.path === '/tickets') {
-          console.log('进来了!~~~~~');
-          store.dispatch('user/setMenuBadge', {
-            path: '/tickets',
-            value: res.data.data.total || 0,
-            color: 'danger'
-          });
-          break;
-        }
-      }
-    } else {
-      const unwatch = Vue.prototype.$watch(
-        '$store.state.user.menus',
-        () => {
-          console.log('-----statistics---user--------');
-          console.log(store.state.user);
-          if (store.state.user.menus?.length) {
-            for (const p of store.state.user.menus) {
-              console.log('statistics----------------------');
-              console.log(p);
-              if (p.path === '/tickets') {
-                console.log('进来了!~~~~~');
-                store.dispatch('user/setMenuBadge', {
-                  path: '/tickets',
-                  value: res.data.data.total || 0,
-                  color: 'danger'
-                });
-                break;
-              }
-            }
-            unwatch();
-          }
-        },
-        {
-          immediate: true
-        }
-      );
-    }
+    store.dispatch('user/setMenuBadge', {
+      path: '/tickets',
+      value: res.data.data.total || 0,
+      color: 'danger'
+    });
+    // console.log('-----statistics---user--------');
+    // console.log(store.state.user);
+    // if (store.state.user.menus?.length) {
+    //   for (const p of store.state.user.menus) {
+    //     console.log('statistics----------------------');
+    //     console.log(p);
+    //     if (p.path === '/tickets') {
+    //       console.log('进来了!~~~~~');
+    //       store.dispatch('user/setMenuBadge', {
+    //         path: '/tickets',
+    //         value: res.data.data.total || 0,
+    //         color: 'danger'
+    //       });
+    //       break;
+    //     }
+    //   }
+    // } else {
+    //   const unwatch = Vue.prototype.$watch(
+    //     '$store.state.user.menus',
+    //     () => {
+    //       console.log('-----statistics---user--------');
+    //       console.log(store.state.user);
+    //       if (store.state.user.menus?.length) {
+    //         for (const p of store.state.user.menus) {
+    //           console.log('statistics----------------------');
+    //           console.log(p);
+    //           if (p.path === '/tickets') {
+    //             console.log('进来了!~~~~~');
+    //             store.dispatch('user/setMenuBadge', {
+    //               path: '/tickets',
+    //               value: res.data.data.total || 0,
+    //               color: 'danger'
+    //             });
+    //             break;
+    //           }
+    //         }
+    //         unwatch();
+    //       }
+    //     },
+    //     {
+    //       immediate: true
+    //     }
+    //   );
+    // }
     return res.data.data;
   }
   return Promise.reject(new Error(res.data.message));

+ 46 - 47
src/api/bpm/task.js

@@ -9,50 +9,51 @@ export async function getTodoTaskPage(query) {
     data: query
   });
   if (res.data.code == 0) {
-    console.log('-----getTodoTaskPage---user--------');
-    console.log(store.state.user);
-    if (store.state.user.menus?.length) {
-      for (const p of store.state.user.menus) {
-        console.log('getTodoTaskPage----------------------');
-        console.log(p);
-        if (p.path === '/todo') {
-          console.log('进来了2~~~');
-          store.dispatch('user/setMenuBadge', {
-            path: '/todo',
-            value: res.data.data.count || 0,
-            color: 'danger'
-          });
-          break;
-        }
-      }
-    } else {
-      const unwatch = Vue.prototype.$watch(
-        '$store.state.user.menus',
-        () => {
-          console.log('-----getTodoTaskPage---user--------');
-          console.log(store.state.user);
-          if (store.state.user.menus?.length) {
-            for (const p of store.state.user.menus) {
-              console.log('getTodoTaskPage----------------------');
-              console.log(p);
-              if (p.path === '/todo') {
-                console.log('进来了2~~~');
-                store.dispatch('user/setMenuBadge', {
-                  path: '/todo',
-                  value: res.data.data.count || 0,
-                  color: 'danger'
-                });
-                break;
-              }
-            }
-            unwatch();
-          }
-        },
-        {
-          immediate: true
-        }
-      );
-    }
+    store.dispatch('user/setMenuBadge', {
+      path: '/todo',
+      value: res.data.data.count || 0,
+      color: 'danger'
+    });
+    // console.log('-----getTodoTaskPage---user--------');
+    // console.log(store.state.user);
+    // if (store.state.user.menus?.length) {
+    //   for (const p of store.state.user.menus) {
+    //     console.log('getTodoTaskPage----------------------');
+    //     console.log(p);
+    //     if (p.path === '/todo') {
+    //       console.log('进来了2~~~');
+
+    //       break;
+    //     }
+    //   }
+    // } else {
+    //   const unwatch = Vue.prototype.$watch(
+    //     '$store.state.user.menus',
+    //     () => {
+    //       console.log('-----getTodoTaskPage---user--------');
+    //       console.log(store.state.user);
+    //       if (store.state.user.menus?.length) {
+    //         for (const p of store.state.user.menus) {
+    //           console.log('getTodoTaskPage----------------------');
+    //           console.log(p);
+    //           if (p.path === '/todo') {
+    //             console.log('进来了2~~~');
+    //             store.dispatch('user/setMenuBadge', {
+    //               path: '/todo',
+    //               value: res.data.data.count || 0,
+    //               color: 'danger'
+    //             });
+    //             break;
+    //           }
+    //         }
+    //         unwatch();
+    //       }
+    //     },
+    //     {
+    //       immediate: true
+    //     }
+    //   );
+    // }
     return res.data.data;
   }
   return Promise.reject(new Error(res.data.message));
@@ -71,7 +72,6 @@ export async function getDoneTaskPage(query) {
   return Promise.reject(new Error(res.data.message));
 }
 
-
 export function completeTask(data) {
   return request({
     url: '/bpm/task/complete',
@@ -323,7 +323,6 @@ export async function getProcessInstanceNoticePage(query) {
   return Promise.reject(new Error(res.data.message));
 }
 
-
 // 我的抄送分页
 export async function ccPage(data) {
   const res = await request({
@@ -335,4 +334,4 @@ export async function ccPage(data) {
     return res.data.data;
   }
   return Promise.reject(new Error(res.data.message));
-}
+}

+ 20 - 6
src/enum/dict.js

@@ -85,11 +85,10 @@ export default {
   协同办公分类: 'collaborative_type',
   市场活动类型: 'activity_type',
   客户联系人状态: 'contact_link_status',
-  产地:'purchase_origin',
+  产地: 'purchase_origin',
   管理类别: 'manage_type',
   商品价格类型: 'goods_price_type',
-  文档类型: 'doc_type',
-
+  文档类型: 'doc_type'
 };
 
 export const numberList = [
@@ -140,11 +139,10 @@ export const proStatusEnum = [
   { value: 4, label: '已终止' }
 ];
 // 计价方式
-export const pricingWayList= [
+export const pricingWayList = [
   { id: 1, name: '按数量计费' },
   { id: 2, name: '按重量计费' }
-
-]
+];
 //来源类型
 export const relationTypeOption = {
   1: '发货确认单',
@@ -180,3 +178,19 @@ export const levelList = [
 ];
 //变更类型
 export const relationTypeList = [{ value: 100, label: '采购订单' }];
+
+//销售订单整体进度
+export const saleOrderProgressStatusEnum = [
+  { value: 0, label: '未开始' },
+  { value: 100, label: '待排程' },
+  { value: 200, label: '已排程' },
+  { value: 300, label: '待派单' },
+  { value: 400, label: '已派单' },
+  { value: 500, label: '生产执行中' },
+  { value: 501, label: '部分入库' },
+  { value: 600, label: '已入库' },
+  { value: 700, label: '待发货' },
+  { value: 701, label: '部分发货' },
+  { value: 800, label: '全部发货' },
+  { value: 1000, label: '完成' }
+];

+ 2 - 0
src/main.js

@@ -37,6 +37,8 @@ import '@/assets/font_icon/iconfont.css';
 import fileMain from '@/components/addDoc/index.vue';
 
 import './directives';
+import seekPage from '@/BIZComponents/seekPage';
+Vue.component('seekPage', seekPage);
 
 import Tooltip from './utils/tooltip'; // 引入封装的工具
 Vue.prototype.$tooltip = Tooltip;

+ 70 - 1
src/views/boss/orderTracking/columns.js

@@ -1,3 +1,4 @@
+import { saleOrderProgressStatusEnum } from '@/enum/dict';
 export const getColumns = (vm) => {
   console.log(vm);
 
@@ -60,6 +61,13 @@ export const getColumns = (vm) => {
       align: 'center',
       showOverflowTooltip: true
     },
+    {
+      prop: 'createTime',
+      label: '销售订单\n创建时间',
+      width: 170,
+      align: 'center',
+      showOverflowTooltip: true
+    },
     {
       prop: 'productionPlanNo',
       label: '生产计划编号',
@@ -163,7 +171,11 @@ export const getColumns = (vm) => {
       align: 'center',
       showOverflowTooltip: true,
       formatter: (row) => {
-        return vm.orderObj[row.orderStatus] || '';
+        return (
+          saleOrderProgressStatusEnum.find(
+            (val) => val.value == row.orderStatus
+          )?.label ?? ''
+        );
       }
     },
     {
@@ -281,10 +293,12 @@ export const getColumns = (vm) => {
       align: 'center'
     },
     {
+      slot: 'date01',
       prop: 'date01',
       label: '1日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -296,6 +310,7 @@ export const getColumns = (vm) => {
       width: 120,
       align: 'center',
       showOverflowTooltip: true,
+      className: 'date-box0',
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
       }
@@ -306,6 +321,7 @@ export const getColumns = (vm) => {
       width: 120,
       align: 'center',
       showOverflowTooltip: true,
+      className: 'date-box1',
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
       }
@@ -315,6 +331,7 @@ export const getColumns = (vm) => {
       label: '4日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -325,6 +342,8 @@ export const getColumns = (vm) => {
       label: '5日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -335,6 +354,8 @@ export const getColumns = (vm) => {
       label: '6日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -345,6 +366,8 @@ export const getColumns = (vm) => {
       label: '7日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -355,6 +378,8 @@ export const getColumns = (vm) => {
       label: '8日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -365,6 +390,8 @@ export const getColumns = (vm) => {
       label: '9日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -375,6 +402,8 @@ export const getColumns = (vm) => {
       label: '10日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -385,6 +414,8 @@ export const getColumns = (vm) => {
       label: '11日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -395,6 +426,8 @@ export const getColumns = (vm) => {
       label: '12日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -405,6 +438,8 @@ export const getColumns = (vm) => {
       label: '13日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -415,6 +450,8 @@ export const getColumns = (vm) => {
       label: '14日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -425,6 +462,8 @@ export const getColumns = (vm) => {
       label: '15日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -435,6 +474,8 @@ export const getColumns = (vm) => {
       label: '16日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -445,6 +486,8 @@ export const getColumns = (vm) => {
       label: '17日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -455,6 +498,8 @@ export const getColumns = (vm) => {
       label: '18日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -465,6 +510,8 @@ export const getColumns = (vm) => {
       label: '19日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -475,6 +522,8 @@ export const getColumns = (vm) => {
       label: '20日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -485,6 +534,8 @@ export const getColumns = (vm) => {
       label: '21日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -496,6 +547,8 @@ export const getColumns = (vm) => {
       label: '22日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -506,6 +559,7 @@ export const getColumns = (vm) => {
       label: '23日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -516,6 +570,7 @@ export const getColumns = (vm) => {
       label: '24日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -526,6 +581,8 @@ export const getColumns = (vm) => {
       label: '25日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -536,6 +593,8 @@ export const getColumns = (vm) => {
       label: '26日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -546,6 +605,8 @@ export const getColumns = (vm) => {
       label: '27日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -556,6 +617,8 @@ export const getColumns = (vm) => {
       label: '28日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -566,6 +629,8 @@ export const getColumns = (vm) => {
       label: '29日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -576,6 +641,8 @@ export const getColumns = (vm) => {
       label: '30日',
       width: 120,
       align: 'center',
+      className: 'date-box0',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);
@@ -586,6 +653,8 @@ export const getColumns = (vm) => {
       label: '31日',
       width: 120,
       align: 'center',
+      className: 'date-box1',
+
       showOverflowTooltip: true,
       formatter: (row, column, cellValue, index) => {
         return getDeliveryCount(row, column.property);

+ 62 - 8
src/views/boss/orderTracking/components/produceRouting.vue

@@ -21,7 +21,7 @@
         ></el-step>
       </el-steps>
 
-      <div class="ele-table-container" style="height: 100%">
+      <div class="ele-table-container" style="height: calc(100% - 110px)">
         <ele-pro-table
           :loading="loading"
           ref="table"
@@ -29,7 +29,7 @@
           :datasource="datasource"
           :pageSizes="[10, 20, 50, 100]"
           :pageSize="20"
-          height="calc(100% - 120px )"
+          height="calc(100% - 30px )"
           :needPage="false"
         >
         </ele-pro-table>
@@ -72,6 +72,8 @@
           label: item.name,
           align: 'center',
           showOverflowTooltip: true,
+          className: 'date-box' + (index % 2),
+
           formatter(row) {
             let info = row[index + item.code];
             if (!info) {
@@ -79,14 +81,55 @@
             }
 
             return h('div', { class: 'box', style: 'text-align: left;' }, [
-              h('div', {}, '投料时间:' + (info?.feedTime ?? '')),
-              h('div', {}, '投料数量:' + (info?.feedQuantity ?? '')),
+              h(
+                'div',
+                {
+                  class: 'box-item',
+                  style:
+                    'white-space: nowrap;text-overflow: ellipsis;overflow: hidden;'
+                },
+
+                '投料时间:' + (info?.feedTime ?? '')
+              ),
+              h(
+                'div',
+                {
+                  class: 'box-item',
+                  style:
+                    'white-space: nowrap;text-overflow: ellipsis;overflow: hidden;'
+                },
+                '投料数量:' + (info?.feedQuantity ?? '')
+              ),
 
-              h('div', {}, '报工时间:' + (info?.reportTime ?? '')),
+              h(
+                'div',
+                {
+                  class: 'box-item',
+                  style:
+                    'white-space: nowrap;text-overflow: ellipsis;overflow: hidden;'
+                },
+                '报工时间:' + (info?.reportTime ?? '')
+              ),
 
-              h('div', {}, '报工数量:' + (info?.reportQuantity ?? '')),
+              h(
+                'div',
+                {
+                  class: 'box-item',
+                  style:
+                    'white-space: nowrap;text-overflow: ellipsis;overflow: hidden;'
+                },
+                '报工数量:' + (info?.reportQuantity ?? '')
+              ),
 
-              h('div', {}, '工时:' + (info?.workHour ?? ''))
+              h(
+                'div',
+                {
+                  class: 'box-item',
+                  style:
+                    'white-space: nowrap;text-overflow: ellipsis;overflow: hidden;'
+                },
+                '工时:' + (info?.workHour ?? '')
+              )
             ]);
           }
         }));
@@ -170,7 +213,12 @@
 
   .box {
     display: flex;
-    text-align: left !important;
+
+    .box-item {
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      overflow: hidden;
+    }
   }
 
   .ele-table-container {
@@ -208,4 +256,10 @@
     border-color: #ffa929;
     color: #ffffff; /* 图标文字颜色 */
   }
+
+  .box-item {
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    overflow: hidden;
+  }
 </style>

+ 68 - 0
src/views/boss/orderTracking/components/searchTable.vue

@@ -0,0 +1,68 @@
+<!-- 搜索表单 -->
+<template>
+  <seekPage
+    ref="seekPage"
+    v-if="seekList.length"
+    :seekList="seekList"
+    :formLength="4"
+    @search="search"
+  ></seekPage>
+</template>
+<script>
+  import { reviewStatusSelect, saleOrderProgressStatusEnum } from '@/enum/dict';
+  export default {
+    data() {
+      return {};
+    },
+    computed: {
+      // 表格列配置
+      seekList() {
+        return [
+          {
+            label: '销售订单号:',
+            value: 'orderNo',
+            type: 'input',
+            placeholder: '',
+          },
+          {
+            label: '项目名称:',
+            value: 'projectName',
+            type: 'input',
+            placeholder: ''
+          },
+          {
+            label: '客户名称:',
+            value: 'customerName',
+            type: 'input',
+            placeholder: ''
+          },
+          {
+            label: '创建时间:',
+            value: 'createTime',
+            type: 'date',
+            dateType: 'daterange',
+            placeholder: '',
+            width: 380,
+            valueAr: ['startDate', 'endDate']
+          },
+          {
+            label: '订单状态',
+            value: 'progress',
+            type: 'select',
+            planList: saleOrderProgressStatusEnum,
+            width: 380,
+            placeholder: ''
+          }
+        ];
+      }
+    },
+    methods: {
+      /* 搜索 */
+      search(e) {
+        this.$emit('search', {
+          ...e
+        });
+      }
+    }
+  };
+</script>

+ 75 - 79
src/views/boss/orderTracking/index.vue

@@ -2,60 +2,7 @@
   <div class="ele-body">
     <el-card shadow="never">
       <div class="filter-container">
-        <el-form
-          label-width="100px"
-          class="ele-form-search"
-          @keyup.enter.native="reload"
-          @submit.native.prevent
-        >
-          <el-row :gutter="15">
-            <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
-              <el-form-item label="销售订单号:" prop="orderNo">
-                <el-input v-model="params.orderNo" clearable></el-input>
-              </el-form-item>
-            </el-col>
-
-            <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
-              <el-form-item label="项目名称:" prop="projectName">
-                <el-input v-model="params.projectName" clearable></el-input>
-              </el-form-item>
-            </el-col>
-
-            <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
-              <el-form-item label="客户名称:" prop="customerName">
-                <el-input v-model="params.customerName" clearable></el-input>
-              </el-form-item>
-            </el-col>
-
-            <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
-              <el-form-item label="创建时间:" prop="createTime">
-                <el-date-picker
-                  v-model="timeSearch"
-                  style="width: 100%"
-                  value-format="yyyy-MM-dd"
-                  type="daterange"
-                  range-separator="-"
-                  start-placeholder="开始日期"
-                  end-placeholder="结束日期"
-                  :default-time="['00:00:00', '23:59:59']"
-                />
-              </el-form-item>
-            </el-col>
-            <el-col v-bind="styleResponsive ? { lg: 4, md: 24 } : { span: 4 }">
-              <div class="ele-form-actions">
-                <el-button
-                  type="primary"
-                  icon="el-icon-search"
-                  class="ele-btn-icon"
-                  @click="reload('search')"
-                >
-                  查询
-                </el-button>
-                <el-button @click="reload('reset')">重置</el-button>
-              </div>
-            </el-col>
-          </el-row>
-        </el-form>
+        <search-table @search="reload" ref="search"></search-table>
       </div>
     </el-card>
 
@@ -69,6 +16,7 @@
         height="calc(100% - 80px)"
         @columns-change="handleColumnChange"
         :cache-key="cacheKeyUrl"
+        :cell-class-name="setCellClass"
       >
         <template v-slot:firstProcessDeliveryTime="{ row, $index }">
           <el-date-picker
@@ -124,6 +72,13 @@
             <span> 数量:{{ row.deliveryQuantity }} </span>
           </div>
         </template>
+
+        <!-- <template v-slot:date01="{ row }">
+          
+          <div class="date-box">
+            <span> {{ 123 }} </span>
+          </div>
+        </template> -->
       </ele-pro-table>
     </div>
 
@@ -133,6 +88,7 @@
 <script>
   import tabMixins from '@/mixins/tableColumnsMixin';
   import produceRouting from './components/produceRouting.vue';
+  import searchTable from './components/searchTable.vue';
   import {
     getList,
     getListPage,
@@ -141,11 +97,12 @@
   } from '@/api/boss/index.js';
   import { mapGetters } from 'vuex';
   import { getColumns } from './columns.js';
-  import { getRecords } from '@/utils/util';
   import { getByCode } from '@/api/system/dictionary-data';
+  import { re } from 'mathjs';
   export default {
     mixins: [tabMixins],
     components: {
+      searchTable,
       produceRouting
     },
     data() {
@@ -176,7 +133,9 @@
           2: '全部发货'
         },
         firstTime: '',
-        records: []
+        records: [],
+        pendingSearchParams: null,
+        today: []
       };
     },
     computed: {
@@ -192,24 +151,44 @@
     },
 
     methods: {
-      reload(type) {
-        if (this.timeSearch) {
-          this.params.startDate = this.timeSearch[0];
-          this.params.endDate = this.timeSearch[1];
-        }
-        if (type == 'reset') {
-          this.params = {
-            startDate: '',
-            endDate: '',
-            customerId: '',
-            projectId: '',
-            orderNo: ''
-          };
+      getDateProductNum(row, columnKey) {
+        if (!row.deliveryTime) {
+          return false;
         }
-        this.$refs.table.reload({ page: 1, where: this.params });
+        const res = row.deliveryTime.split(' ')[0].split('-');
+        const day = 'date' + res[2];
+        return columnKey === day;
+      },
+
+      reload(where) {
+        this.$nextTick(() => {
+          if (this.$refs.table) {
+            // 确保 ref 存在后执行 reload
+            this.$refs.table.reload({ page: 1, where: where });
+          }
+        });
+      },
+      getDate() {
+        let year = new Date().getFullYear();
+        let month = new Date().getMonth() + 1;
+        month = String(month).padStart(2, '0');
+        let days = new Date(year, month, 0).getDate();
+
+        this.today = [`${year}-${month}-01`, `${year}-${month}-${days}`];
+
+        return {
+          startDate: `${year}-${month}-01`,
+          endDate: `${year}-${month}-${days}`
+        };
       },
+
       datasource({ page, where, limit, ...row }) {
+        console.log(where);
+
+        let params = this.getDate();
+
         return getListPage({
+          ...params,
           ...where,
           pageNum: page,
           size: limit
@@ -230,6 +209,12 @@
         this.$refs.table.reload({ where: this.params });
       },
 
+      setCellClass({ row, column, rowIndex, columnIndex }) {
+        return this.getDateProductNum(row, column.property)
+          ? 'content-num'
+          : '';
+      },
+
       //打开工艺路线详情
       async produceRouting(row) {
         const res = await getProduceRoutingDetail({
@@ -248,6 +233,11 @@
 
     mounted() {
       this.$store.dispatch('theme/setBodyFullscreen', true);
+      this.$set(
+        this.$refs.search.$refs.seekPage.defaultWhere,
+        'createTime',
+        this.today
+      );
     },
     beforeDestroy() {
       this.$store.dispatch('theme/setBodyFullscreen', false);
@@ -365,14 +355,20 @@
     white-space: pre;
   }
 
-  :deep(
-      .el-date-editor
-        el-input
-        el-input--medium
-        el-input--prefix
-        el-input--suffix
-        el-date-editor--date
-    ) {
-    width: 100%;
+  :deep(.ele-pro-table-header-ellipsis > .el-table th.el-table__cell) {
+    background-color: #75bd42;
+  }
+
+  :deep(.date-box1) {
+    // background-color: #f0f9eb;
+  }
+
+  :deep(.date-box0) {
+    // background-color: rgba(215, 234, 255);
+  }
+
+  :deep(.content-num) {
+    color: #000;
+    background-color: #53c77f !important;
   }
 </style>

+ 5 - 2
src/views/bpm/done/index.vue

@@ -73,7 +73,8 @@
         ref="table"
         :columns="columns"
         :datasource="datasource"
-        cache-key="systemRoleTable5"
+        @columns-change="handleColumnChange"
+        :cache-key="cacheKeyUrl"
       >
         <template v-slot:result="{ row }">
           <el-tag
@@ -114,6 +115,7 @@
   import { getDoneTaskPage } from '@/api/bpm/task';
   import { getDate } from '@/utils/dateUtils';
   import detail from './detailDialog.vue';
+  import tabMixins from '@/mixins/tableColumnsMixin';
 
   // 默认表单数据
   const defaultParams = {
@@ -123,9 +125,10 @@
   export default {
     name: 'BpmDoneTask',
     components: { detail },
-    mixins: [dictMixins],
+    mixins: [dictMixins,tabMixins],
     data() {
       return {
+        cacheKeyUrl:'wt-done',
         // 遮罩层
         loading: true,
         params: { ...defaultParams },

+ 8 - 4
src/views/bpm/todo/index.vue

@@ -75,7 +75,8 @@
         ref="table"
         :columns="columns"
         :datasource="datasource"
-        cache-key="systemRoleTable5"
+        @columns-change="handleColumnChange"
+        :cache-key="cacheKeyUrl"
       >
         <template v-slot:status="{ row }">
           <el-tag type="success" v-if="row.suspensionState === 1">激活</el-tag>
@@ -148,7 +149,8 @@
   import handleFormParserTask from '@/views/bpm/handleTask/formParser/formParserDialog.vue'; //处理
   import detail from '@/views/bpm/done/detailDialog.vue';
   import inOut from '../outgoingManagement/add.vue';
-  // import {getDate} from "@/utils/dateUtils";
+  import tabMixins from '@/mixins/tableColumnsMixin';
+
   // 默认表单数据
   const defaultParams = {
     status: '',
@@ -164,8 +166,11 @@
         return this.$store.state.theme.styleResponsive;
       }
     },
+    mixins: [tabMixins],
+
     data() {
       return {
+        cacheKeyUrl: 'wt-todo',
         dialogVisible: false,
         formParserDialogFlag: false,
         // 遮罩层
@@ -289,7 +294,7 @@
         // return
 
         if (type == 'audit') {
-          if (row.formJson&&Object.keys(row.formJson).length) {
+          if (row.formJson && Object.keys(row.formJson).length) {
             console.log('处理1');
             this.formParserDialogFlag = true;
             this.$nextTick(() => {
@@ -315,7 +320,6 @@
             });
           }
         } else {
-
           this.$refs.detailRef.open(row);
         }
       }