shish 2 mesiacov pred
rodič
commit
967708516c

+ 365 - 48
ghsApp/src/admin/home/member.vue

@@ -1,14 +1,24 @@
 <template>
 <template>
   <view class="app-main app-content">
   <view class="app-main app-content">
     <view class="input-wrap_box">
     <view class="input-wrap_box">
-      <view>
+      <view class="search-wrap">
         <AppSearchModule placeholder="名称 / 手机尾号" @input="searchFn"/>
         <AppSearchModule placeholder="名称 / 手机尾号" @input="searchFn"/>
       </view>
       </view>
-      <view style="padding:0 0 0 20upx;" >
-        <button class="admin-button-com middle blue" style="margin-right:10upx;" @click="getSet()">设置</button>
-        <button class="admin-button-com middle blue" style="margin-right:10upx;" @click="showAllShop()">拉取</button>
-				<button class="admin-button-com middle blue" @click="pageTo({ url: '/pagesClient/member/addCustomer' })">添加客户</button>
-			</view>
+      <view class="toolbar-actions">
+        <view class="toolbar-icon-btn" @click="openFilterPanel">
+          <image class="toolbar-action-icon" :src="iconSrc('custom-select')" mode="aspectFit" />
+          <view v-if="hasActiveFilters" class="filter-dot"></view>
+        </view>
+        <view class="toolbar-icon-btn" @click="getSet()">
+          <image class="toolbar-action-icon" :src="iconSrc('custom-setting')" mode="aspectFit" />
+        </view>
+        <view class="toolbar-icon-btn" @click="showAllShop()">
+          <image class="toolbar-action-icon" :src="iconSrc('pull-custom')" mode="aspectFit" />
+        </view>
+        <view class="toolbar-icon-btn" @click="pageTo({ url: '/pagesClient/member/addCustomer' })">
+          <image class="toolbar-action-icon" :src="iconSrc('add-custom')" mode="aspectFit" />
+        </view>
+      </view>
     </view>
     </view>
     <view class="app-tabs">
     <view class="app-tabs">
       <scrollable-tabs :tabs="tabs" :isFixed="true" :top="100" :currentTab="tabIndex" :height="104" @change="change" />
       <scrollable-tabs :tabs="tabs" :isFixed="true" :top="100" :currentTab="tabIndex" :height="104" @change="change" />
@@ -74,6 +84,101 @@
     </div>
     </div>
     <NotLogin></NotLogin>
     <NotLogin></NotLogin>
     <ShopSelect ref="shopSelectComponent" class="bar" :isShowTit="false" top="0upx" @selectShopFn="selectShopFn" />
     <ShopSelect ref="shopSelectComponent" class="bar" :isShowTit="false" top="0upx" @selectShopFn="selectShopFn" />
+
+    <view v-if="showFilterPanel" class="filter-overlay" @click="closeFilterPanel">
+      <view class="filter-panel" @click.stop>
+        <view class="filter-header">筛选客户</view>
+        <view class="filter-section">
+          <view class="filter-title">片区</view>
+          <view class="filter-options">
+            <view class="filter-option" :class="{ active: filterDistId === 0 }" @click="onSelectDist(0)">全部</view>
+            <view
+              v-for="(item, index) in distList"
+              :key="index"
+              class="filter-option"
+              :class="{ active: filterDistId === item.id }"
+              @click="onSelectDist(item.id)"
+            >
+              {{ item.name }}
+            </view>
+          </view>
+        </view>
+        <view class="filter-section">
+          <view class="filter-title">自助挂账</view>
+          <view class="filter-options">
+            <view
+              v-for="(item, index) in selfDebtOptions"
+              :key="index"
+              class="filter-option"
+              :class="{ active: filterSelfDebt === item.value }"
+              @click="onSelectSelfDebt(index)"
+            >
+              {{ item.label }}
+            </view>
+          </view>
+        </view>
+        <view class="filter-section">
+          <view class="filter-title">下单价格</view>
+          <view class="filter-options">
+            <view
+              v-for="(item, index) in levelOptions"
+              :key="index"
+              class="filter-option"
+              :class="{ active: filterLevel === item.value }"
+              @click="onSelectLevel(index)"
+            >
+              {{ item.label }}
+            </view>
+          </view>
+        </view>
+        <view class="filter-section">
+          <view class="filter-title">未下单时长</view>
+          <view class="filter-options">
+            <view
+              v-for="(item, index) in overTimeOptions"
+              :key="index"
+              class="filter-option"
+              :class="{ active: filterOverTime === item.value }"
+              @click="onSelectOverTime(index)"
+            >
+              {{ item.label }}
+            </view>
+          </view>
+        </view>
+        <view class="filter-section">
+          <view class="filter-title">黑名单</view>
+          <view class="filter-options">
+            <view
+              v-for="(item, index) in blackOptions"
+              :key="index"
+              class="filter-option"
+              :class="{ active: filterBlack === item.value }"
+              @click="onSelectBlack(index)"
+            >
+              {{ item.label }}
+            </view>
+          </view>
+        </view>
+        <view class="filter-section">
+          <view class="filter-title">删除状态</view>
+          <view class="filter-options">
+            <view
+              v-for="(item, index) in delStatusOptions"
+              :key="index"
+              class="filter-option"
+              :class="{ active: filterDelStatus === item.value }"
+              @click="onSelectDelStatus(index)"
+            >
+              {{ item.label }}
+            </view>
+          </view>
+        </view>
+        <view class="filter-actions">
+          <button class="filter-action-btn clear-btn" @click="clearFilters">重置</button>
+          <button class="filter-action-btn confirm-btn" @click="confirmFilters">确定</button>
+        </view>
+      </view>
+    </view>
   </view>
   </view>
 </template>
 </template>
 <script>
 <script>
@@ -88,6 +193,8 @@ import AppSearchModule from "@/components/module/app-search";
 import { copyCumtomer } from '@/api/custom'
 import { copyCumtomer } from '@/api/custom'
 import { list } from "@/mixins";
 import { list } from "@/mixins";
 import { getList } from "@/api/member";
 import { getList } from "@/api/member";
+import { getAllDist } from "@/api/dist";
+import { iconSrc } from "@/utils/iconSrc";
 import ShopSelect from "@/components/module/shopSelect";
 import ShopSelect from "@/components/module/shopSelect";
 import { mapGetters } from "vuex"
 import { mapGetters } from "vuex"
 export default {
 export default {
@@ -104,42 +211,64 @@ export default {
     ShopSelect
     ShopSelect
   },
   },
   mixins: [list],
   mixins: [list],
+  computed: {
+    ...mapGetters({ myShopInfo: "getMyShopInfo" }),
+    hasActiveFilters() {
+      return (
+        this.filterDistId !== 0 ||
+        this.filterSelfDebt !== -1 ||
+        this.filterLevel !== -1 ||
+        this.filterOverTime !== -1 ||
+        this.filterBlack !== -1 ||
+        this.filterDelStatus !== -1
+      );
+    }
+  },
   data() {
   data() {
     return {
     return {
       tabIndex: 0,
       tabIndex: 0,
       tabs: [
       tabs: [
-        {
-          name: "全部",
-          value: 0
-        },
-        {
-          name: "消费",
-          value: 0
-        },
-        {
-          name: "挂账",
-          value: 0
-        },
-        {
-          name: "大客",
-          value: 0
-        },
-        {
-          name: "零售",
-          value: 0
-        },
-        {
-          name: "休眠",
-          value: 0
-        },
-        {
-          name: "黑名单",
-          value: 0
-        },
-        {
-          name: "删除",
-          value: 0
-        }
+        { name: "全部", value: 0 },
+        { name: "消费", value: 0 },
+        { name: "挂账", value: 0 }
+      ],
+      showFilterPanel: false,
+      distList: [],
+      filterDistId: 0,
+      filterSelfDebt: -1,
+      filterLevel: -1,
+      filterOverTime: -1,
+      filterBlack: -1,
+      filterDelStatus: -1,
+      selfDebtOptions: [
+        { label: "全部", value: -1 },
+        { label: "允许", value: 1 },
+        { label: "禁止", value: 0 }
+      ],
+      levelOptions: [
+        { label: "全部", value: -1 },
+        { label: "零售", value: 0 },
+        { label: "批发", value: 1 },
+        { label: "大客", value: 2 },
+        { label: "成本", value: 9 }
+      ],
+      overTimeOptions: [
+        { label: "全部", value: -1 },
+        { label: "没有下过", value: 10000 },
+        { label: "1周未下", value: 7 },
+        { label: "1月未下", value: 30 },
+        { label: "半年未下", value: 180 },
+        { label: "1年未下", value: 365 }
+      ],
+      blackOptions: [
+        { label: "全部", value: -1 },
+        { label: "是", value: 2 },
+        { label: "否", value: 1 }
+      ],
+      delStatusOptions: [
+        { label: "全部", value: -1 },
+        { label: "正常", value: 0 },
+        { label: "已删除", value: 1 }
       ],
       ],
       // 搜索相关
       // 搜索相关
       seekVal: "",
       seekVal: "",
@@ -148,13 +277,14 @@ export default {
       searchTimer: null
       searchTimer: null
     };
     };
   },
   },
-	computed: {
-		...mapGetters({ myShopInfo: "getMyShopInfo" }),
-	},
+  onLoad(option) {
+    this.loadDistList();
+    this.getCustomList();
+  },
   onPullDownRefresh() {
   onPullDownRefresh() {
     this.resetList();
     this.resetList();
-    this.getCustomList()
-    uni.stopPullDownRefresh()
+    this.getCustomList();
+    uni.stopPullDownRefresh();
   },
   },
   onReachBottom() {
   onReachBottom() {
     if (!this.list.finished) {
     if (!this.list.finished) {
@@ -173,9 +303,6 @@ export default {
     } else {
     } else {
       uni.stopPullDownRefresh();
       uni.stopPullDownRefresh();
     }
     }
-  },
-  onLoad(option) {
-    this.getCustomList()
   },
   },
 	onShow(){
 	onShow(){
 		uni.removeStorageSync('newClient')
 		uni.removeStorageSync('newClient')
@@ -195,8 +322,71 @@ export default {
     }
     }
   },
   },
   methods: {
   methods: {
+    iconSrc,
     init(){
     init(){
 
 
+    },
+    loadDistList() {
+      getAllDist().then((res) => {
+        if (res.code == 1) {
+          this.distList = res.data.list || [];
+        }
+      });
+    },
+    openFilterPanel() {
+      this.showFilterPanel = true;
+    },
+    closeFilterPanel() {
+      this.showFilterPanel = false;
+    },
+    onSelectDist(id) {
+      this.filterDistId = id;
+    },
+    onSelectSelfDebt(index) {
+      const item = this.selfDebtOptions[index];
+      if (item) {
+        this.filterSelfDebt = item.value;
+      }
+    },
+    onSelectLevel(index) {
+      const item = this.levelOptions[index];
+      if (item) {
+        this.filterLevel = item.value;
+      }
+    },
+    onSelectOverTime(index) {
+      const item = this.overTimeOptions[index];
+      if (item) {
+        this.filterOverTime = item.value;
+      }
+    },
+    onSelectBlack(index) {
+      const item = this.blackOptions[index];
+      if (item) {
+        this.filterBlack = item.value;
+      }
+    },
+    onSelectDelStatus(index) {
+      const item = this.delStatusOptions[index];
+      if (item) {
+        this.filterDelStatus = item.value;
+      }
+    },
+    clearFilters() {
+      this.filterDistId = 0;
+      this.filterSelfDebt = -1;
+      this.filterLevel = -1;
+      this.filterOverTime = -1;
+      this.filterBlack = -1;
+      this.filterDelStatus = -1;
+      this.closeFilterPanel();
+      this.resetList();
+      this.getCustomList();
+    },
+    confirmFilters() {
+      this.closeFilterPanel();
+      this.resetList();
+      this.getCustomList();
     },
     },
     getSet(){
     getSet(){
       this.$util.pageTo({url: "/admin/custom/set"})
       this.$util.pageTo({url: "/admin/custom/set"})
@@ -251,7 +441,18 @@ export default {
       }
       }
     },
     },
     getCustomList() {
     getCustomList() {
-      return getList({ search: "", type:this.tabIndex, page: this.list.page, name: this.seekVal, }).then((res) => {
+      return getList({
+        search: "",
+        type: this.tabIndex,
+        page: this.list.page,
+        name: this.seekVal,
+        distId: this.filterDistId,
+        filterDebt: this.filterSelfDebt,
+        level: this.filterLevel,
+        overTimeUnExpend: this.filterOverTime,
+        filterBlack: this.filterBlack,
+        filterDelStatus: this.filterDelStatus
+      }).then((res) => {
           this.completes(res);
           this.completes(res);
           if (this.$util.isEmpty(res.data)){
           if (this.$util.isEmpty(res.data)){
             return false;
             return false;
@@ -305,8 +506,42 @@ export default {
     display: flex;
     display: flex;
     align-items: center;
     align-items: center;
     padding: 0 20upx;
     padding: 0 20upx;
-    & > view:nth-child(1) {
+    .search-wrap {
       flex: 1;
       flex: 1;
+      min-width: 0;
+    }
+    .toolbar-actions {
+      display: flex;
+      align-items: center;
+      margin-left: 12upx;
+      flex-shrink: 0;
+    }
+    .toolbar-icon-btn {
+      position: relative;
+      width: 78upx;
+      height: 78upx;
+      border-radius: 12upx;
+      background: #f2f6ff;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
+    .toolbar-icon-btn + .toolbar-icon-btn {
+      margin-left: 18upx;
+    }
+    .toolbar-action-icon {
+      width: 54upx;
+      height: 54upx;
+    }
+    .filter-dot {
+      position: absolute;
+      top: 8upx;
+      right: 8upx;
+      width: 12upx;
+      height: 12upx;
+      border-radius: 50%;
+      background-color: #ff4d4f;
+      border: 2upx solid #fff;
     }
     }
   }
   }
   .list-wrap {
   .list-wrap {
@@ -468,4 +703,86 @@ export default {
   display: inline-block;
   display: inline-block;
   font-size: 30upx;
   font-size: 30upx;
 }
 }
+.filter-overlay {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 9999999;
+  display: flex;
+  align-items: flex-start;
+  justify-content: center;
+  background-color: rgba(0, 0, 0, 0.5);
+}
+.filter-panel {
+  width: 100%;
+  max-height: 90vh;
+  overflow-y: auto;
+  border-radius: 0 0 24upx 24upx;
+  background: #fff;
+}
+.filter-header {
+  padding: 24upx 0;
+  text-align: center;
+  color: #333;
+  font-size: 32upx;
+  font-weight: 700;
+  border-bottom: 1upx solid #f0f0f0;
+}
+.filter-section {
+  padding: 30upx 40upx;
+  border-bottom: 1upx solid #f0f0f0;
+}
+.filter-title {
+  margin-bottom: 20upx;
+  color: #333;
+  font-size: 28upx;
+  font-weight: 700;
+}
+.filter-options {
+  display: flex;
+  flex-wrap: wrap;
+}
+.filter-option {
+  min-width: 120upx;
+  padding: 15upx 28upx;
+  margin-right: 18upx;
+  margin-top: 18upx;
+  border: 1upx solid #dce2e0;
+  border-radius: 28upx;
+  color: #60666d;
+  background: #fff;
+  font-size: 26upx;
+  text-align: center;
+}
+.filter-option.active {
+  color: #3385ff;
+  border-color: #3385ff;
+  background: #eef5ff;
+  font-weight: 700;
+}
+.filter-actions {
+  display: flex;
+  padding: 30upx 40upx 40upx;
+}
+.filter-action-btn {
+  flex: 1;
+  height: 80upx;
+  line-height: 80upx;
+  font-size: 28upx;
+  border-radius: 40upx;
+}
+.filter-action-btn::after {
+  border: none;
+}
+.clear-btn {
+  margin-right: 20upx;
+  color: #60666d;
+  background: #f5f5f5;
+}
+.confirm-btn {
+  color: #fff;
+  background: #3385ff;
+}
 </style>
 </style>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
ghsApp/src/static/icons/break_up.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
ghsApp/src/static/icons/breakage.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
ghsApp/src/static/icons/calculator.svg


+ 1 - 0
ghsApp/src/static/icons/check.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1779939638261" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="67073" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M413.866667 810.666667H85.333333V247.466667h682.666667v145.066666c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666666-42.666667V204.8v-4.266667-8.533333c0-4.266667-4.266667-4.266667-4.266666-8.533333v-4.266667L725.333333 17.066667c-8.533333-12.8-21.333333-17.066667-34.133333-17.066667H162.133333c-12.8 0-25.6 4.266667-34.133333 17.066667L8.533333 179.2v4.266667c0 4.266667-4.266667 4.266667-4.266666 8.533333V810.666667c0 46.933333 38.4 85.333333 85.333333 85.333333h328.533333c25.6 0 42.666667-17.066667 42.666667-42.666667s-25.6-42.666667-46.933333-42.666666zM183.466667 85.333333h482.133333L725.333333 162.133333H128L183.466667 85.333333z" p-id="67074" fill="#3385FF"></path><path d="M298.666667 401.066667c-25.6 0-42.666667 17.066667-42.666667 42.666666s17.066667 42.666667 42.666667 42.666667h256c25.6 0 42.666667-17.066667 42.666666-42.666667s-17.066667-42.666667-42.666666-42.666666H298.666667zM1011.2 951.466667l-85.333333-85.333334c59.733333-89.6 51.2-209.066667-25.6-285.866666-89.6-89.6-230.4-89.6-320 0-89.6 89.6-89.6 230.4 0 320 42.666667 42.666667 102.4 64 157.866666 64 42.666667 0 89.6-12.8 128-38.4l85.333334 85.333333c8.533333 8.533333 21.333333 12.8 29.866666 12.8s21.333333-4.266667 29.866667-12.8c17.066667-17.066667 17.066667-42.666667 0-59.733333zM640 836.266667c-55.466667-55.466667-55.466667-145.066667 0-196.266667 25.6-25.6 64-42.666667 98.133333-42.666667 34.133333 0 72.533333 12.8 98.133334 42.666667 25.6 25.6 42.666667 59.733333 42.666666 98.133333 0 38.4-12.8 72.533333-42.666666 98.133334-51.2 51.2-145.066667 51.2-196.266667 0z" p-id="67075" fill="#3385FF"></path></svg>

+ 1 - 0
ghsApp/src/static/icons/expend.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1779938875408" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31619" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M861.7472 240.256h-134.912c-19.8144-0.64-35.1744-17.8944-34.5344-37.7088a36.1472 36.1472 0 0 1 34.5344-34.5344h134.912V77.2352c0-19.84 11.52-24.9344 25.5744-10.88l112.512 113.152c14.08 14.08 14.08 37.12 0 50.5344l-113.152 113.152c-14.08 14.08-25.6 9.6-25.6-10.8544V240.256h0.6656z m-301.7984 200.1408h79.9232c19.8144 0.64 35.1744 17.8944 34.5344 37.7088a36.1472 36.1472 0 0 1-34.5344 34.5344H547.84v63.9488h92.0576c19.8144 0.64 35.1744 17.8944 34.5344 37.7088a36.1472 36.1472 0 0 1-34.5344 34.5344H547.84v137.472c-0.64 19.8144-17.92 35.1488-37.7344 34.5088a36.1472 36.1472 0 0 1-34.5344-34.5088v-137.472h-91.4176c-19.8144-0.64-35.1744-17.92-34.5344-37.7344a36.1472 36.1472 0 0 1 34.5344-34.5088h91.4176v-63.9488h-91.4176c-19.8144-0.64-35.1744-17.92-34.5344-37.7344a36.1472 36.1472 0 0 1 34.5344-34.5088h79.2832l-95.2832-99.0976c-14.0544-14.08-13.4144-37.12 0.64-51.1744 14.08-14.0544 37.0944-13.4144 51.1744 0.64L512 386.048l91.4432-95.2832a36.2752 36.2752 0 0 1 51.1488-0.64c14.0544 14.08 14.6944 36.4544 0.64 51.1744l-95.2832 99.072z m458.4448 0c39.6288 279.3984-154.7264 538.368-434.7904 577.9968C303.5648 1058.0224 45.2352 862.976 5.632 583.6032-34.0224 304.2048 161.024 45.2352 440.3968 5.632c53.7088-7.68 108.032-6.4 161.1264 2.56 19.1744 5.12 30.6688 24.32 26.2144 43.4944-5.12 19.1744-24.32 30.6688-43.4944 26.2144-239.7696-39.6544-466.0992 122.112-505.728 361.8816-39.6544 239.7696 122.112 466.0992 361.8816 505.728 239.7696 39.6544 466.0992-122.112 505.728-361.8816 7.68-45.3888 7.68-91.4176 1.28-136.832a35.8656 35.8656 0 0 1 32.6144-38.9888c19.2-1.92 36.4544 12.8 38.3744 32.6144z" fill="#3385FF" p-id="31620"></path></svg>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
ghsApp/src/static/icons/gather_code.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
ghsApp/src/static/icons/gather_record.svg


+ 1 - 0
ghsApp/src/static/icons/in_stock.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1779941548593" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="75966" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M1014.704019 547.252628l-165.113112-437.760901h-177.936931v33.73334h135.860383l111.345773 399.752954H679.482171L509.373435 700.417442l-180.563497-157.439421h-236.905899l111.551778-399.958959h138.589951v-33.733341h-175.104361L4.300357 553.535784h0.927023a16.0684 16.0684 0 0 0-0.927023 5.150129v449.451692a15.759392 15.759392 0 0 0 15.707891 15.759392h983.983504a15.759392 15.759392 0 0 0 15.707891-15.759392V558.788915a15.965398 15.965398 0 0 0-4.995624-11.536287zM588.582407 0H429.597948v221.146507H339.007192l167.84268 204.151084 172.580797-204.151084h-90.848262zM429.597948 476.335362h158.829955V448.061158H429.597948z" p-id="75967" fill="#3385FF"></path></svg>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
ghsApp/src/static/icons/item.svg


+ 1 - 0
ghsApp/src/static/icons/mall_code.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1779939055628" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="39982" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M995.547429 567.808v257.097143h-256V654.189714H654.189714v345.307429H568.905143V568.905143h256v170.642286h85.284571V567.808h85.357715z m-540.452572 1.097143v426.642286H28.525714V568.905143h426.642286z m540.525714 341.284571v85.357715h-256v-85.357715h256z m-625.810285-256h-256v256h256v-256z m-85.357715 85.357715v85.357714H199.094857V739.474286H284.525714zM455.094857 28.525714v426.642286H28.525714V28.525714h426.642286z m540.525714 0v426.642286H568.832V28.525714h426.642286zM369.737143 113.810286h-256v256h256v-256z m540.379428 0h-256v256h256v-256zM284.525714 199.094857V284.525714H199.094857V199.094857H284.525714z m540.452572 0V284.525714H739.474286V199.094857h85.357714z" fill="#3385FF" p-id="39983"></path></svg>

+ 1 - 0
ghsApp/src/static/icons/modify_price.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1779939019877" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="37700" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M469.333333 576H384a42.666667 42.666667 0 0 1 0-85.333333h76.714667l-112.213334-168.32a42.666667 42.666667 0 0 1 70.997334-47.36L512 413.738667l92.501333-138.752a42.666667 42.666667 0 0 1 70.997334 47.36l-112.213334 168.32H640a42.666667 42.666667 0 0 1 0 85.333333h-85.333333v42.666667h85.333333a42.666667 42.666667 0 0 1 0 85.333333h-85.333333V768a42.666667 42.666667 0 0 1-85.333334 0v-64H384a42.666667 42.666667 0 0 1 0-85.333333h85.333333v-42.666667zM725.333333 42.666667a42.666667 42.666667 0 0 1 0 85.333333H213.333333a128 128 0 0 0-128 128v512a128 128 0 0 0 128 128h597.333334a128 128 0 0 0 128-128V341.333333a42.666667 42.666667 0 0 1 85.333333 0v426.666667a213.333333 213.333333 0 0 1-213.333333 213.333333H213.333333a213.333333 213.333333 0 0 1-213.333333-213.333333V256a213.333333 213.333333 0 0 1 213.333333-213.333333h512z m225.834667 12.501333a42.666667 42.666667 0 0 1 60.330667 60.330667l-213.333334 213.333333a42.666667 42.666667 0 0 1-60.330666-60.330667l213.333333-213.333333z" fill="#3385FF" p-id="37701"></path></svg>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
ghsApp/src/static/icons/modify_stock.svg


+ 1 - 0
ghsApp/src/static/icons/out_stock.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1779941563824" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="76214" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M1014.704019 547.252628l-165.113112-437.760901h-177.936931v33.73334h135.860383l111.345773 399.752954H679.482171L509.373435 700.417442l-180.563497-157.439421h-236.905899l111.551778-399.958959h138.589951v-33.733341h-175.104361L4.300357 553.535784h0.927023a16.0684 16.0684 0 0 0-0.927023 5.150129v449.451692a15.759392 15.759392 0 0 0 15.707891 15.759392h983.983504a15.759392 15.759392 0 0 0 15.707891-15.759392V558.788915a15.965398 15.965398 0 0 0-4.995624-11.536287z m-426.121612-343.101544h90.74526L506.849872 0 339.007192 204.151084h90.590756v221.146507h158.829955zM429.597948 476.335362h158.829955V448.061158H429.597948z" p-id="76215" fill="#3385FF"></path></svg>

+ 1 - 0
ghsApp/src/static/icons/purchase.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1779939284134" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="45580" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M594.387 472.503l15.855-15.855c13.33-13.33 34.942-13.33 48.272 0 13.33 13.33 13.33 34.942 0 48.272l-75.425 75.425c-13.33 13.33-34.941 13.33-48.271 0l-72.824-72.824c-13.33-13.33-13.33-34.942 0-48.272 13.33-13.33 34.942-13.33 48.272 0l15.855 15.855v-128.6c0-18.852 15.282-34.134 34.133-34.134 18.851 0 34.133 15.282 34.133 34.133v126zM160.74 213.333h-51.254c-23.564 0-42.667-19.102-42.667-42.666 0-23.564 19.103-42.667 42.667-42.667h84.197c19.406 0 36.368 13.096 41.278 31.871l109.012 416.831c14.73 56.325 65.616 95.614 123.835 95.614h217.598c59.932 0 111.84-41.584 124.916-100.072l47.065-210.516a85.333 85.333 0 0 0 2.056-18.619c0-47.128-38.205-85.333-85.333-85.333H358.167c-23.564 0-42.667-19.102-42.667-42.667 0-23.564 19.103-42.666 42.667-42.666h415.942c94.256 0 170.666 76.41 170.666 170.666 0 12.526-1.378 25.014-4.111 37.237l-47.066 210.516c-21.793 97.48-108.307 166.787-208.193 166.787H467.807c-97.032 0-181.84-65.481-206.392-159.356L160.74 213.333z m262.563 691.443c-33.663 0-60.952-26.349-60.952-58.85 0-32.503 27.29-58.851 60.952-58.851 33.664 0 60.953 26.348 60.953 58.85s-27.29 58.85-60.953 58.85z m287.857 0c-33.663 0-60.952-26.349-60.952-58.85 0-32.503 27.289-58.851 60.952-58.851s60.952 26.348 60.952 58.85-27.289 58.85-60.952 58.85z" fill="#3385FF" p-id="45581"></path></svg>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
ghsApp/src/static/icons/purchase_record.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
ghsApp/src/static/icons/send_dist.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
ghsApp/src/static/icons/staff.svg


+ 1 - 0
ghsApp/src/static/icons/stock_in.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1779941704459" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="79035" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M467.2 435.2h89.6v89.6c0 19.2 19.2 38.4 38.4 38.4s32-19.2 32-38.4V435.2h89.6c19.2 0 38.4-12.8 38.4-32s-12.8-38.4-38.4-38.4H633.6V268.8c0-19.2-19.2-38.4-38.4-38.4-19.2 6.4-38.4 19.2-38.4 38.4v89.6H467.2c-19.2 0-38.4 19.2-38.4 38.4 6.4 19.2 19.2 38.4 38.4 38.4z m-166.4 377.6c-44.8 0-83.2 38.4-83.2 83.2 0 51.2 38.4 96 96 96 44.8 0 83.2-38.4 83.2-83.2 0-51.2-38.4-96-96-96z m582.4 0c-44.8 0-83.2 38.4-83.2 83.2 0 51.2 38.4 96 96 96 44.8 0 83.2-38.4 83.2-83.2 0-51.2-44.8-96-96-96z m64-236.8c0 57.6-51.2 108.8-108.8 108.8H307.2c-38.4 0-64-25.6-64-64V166.4c0-76.8-64-134.4-140.8-134.4H25.6C12.8 32 0 44.8 0 57.6v32c0 6.4 6.4 12.8 12.8 12.8h89.6c38.4 0 64 25.6 64 64v524.8c0 32 32 64 64 64h614.4c96 0 179.2-76.8 179.2-172.8V300.8c0-6.4-6.4-19.2-12.8-19.2-32-19.2-64 0-64 25.6" fill="#3385FF" p-id="79036"></path></svg>

+ 1 - 0
ghsApp/src/static/icons/stock_in_record.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1779939373595" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="47082" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M380.859 6.949h262.288c35.883 0 64.546 28.663 64.546 64.552 0 35.882-28.664 64.546-64.546 64.546H380.859c-35.887 0-64.552-28.665-64.552-64.546 0-35.778 29.232-64.552 64.552-64.552z m0 0" p-id="47083" fill="#3385FF"></path><path d="M869.741 112.464H768.739c-14.893 56.876-66.243 97.161-125.262 97.161h-262.4c-60.148 0-110.93-41.415-125.263-97.161H154.82c-35.889 0-64.552 28.663-64.552 64.546v775.495c0 35.888 28.663 64.546 64.552 64.546h714.354c35.887 0 64.551-28.658 64.551-64.546V177.01c0.562-35.883-28.664-64.546-63.984-64.546z m-202.363 717.8c0 28.45-23.063 51.513-51.513 51.513h-207.73c-28.45 0-51.513-23.063-51.513-51.513s23.063-51.513 51.513-51.513h207.729c28.451 0 51.514 23.063 51.514 51.513z m7.565-241.686L533.485 721.982c-12.133 11.196-30.836 11.196-42.976 0l-141.45-133.404c-19.168-18.021-5.589-48.911 21.484-48.911h90.872V384.49c0-30.397-4.207-55.242 28.002-55.242h45.169c32.202 0 27.996 24.871 27.996 55.242v155.177h90.87c27.073 0 40.659 30.862 21.491 48.911z" p-id="47084" fill="#3385FF"></path></svg>

+ 1 - 0
ghsApp/src/static/icons/stock_warning.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1779938853902" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="30470" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M512 80.004741c176.734815 0 320 143.265185 320 320v352.009481H192V400.004741C192 223.269926 335.265185 80.004741 512 80.004741z m-3.223704 170.704592c-5.499259 0-10.619259 2.768593-13.653333 7.35763l-128.132741 193.099852a16.554667 16.554667 0 0 0 13.653334 25.656889h100.750222v121.552592a16.402963 16.402963 0 1 0 30.094222 9.159111l128.151704-193.080888a16.554667 16.554667 0 0 0-13.672297-25.675852h-100.750222v-121.552593c0-9.102222-7.35763-16.497778-16.421926-16.497778z" fill="#3385FF" p-id="30471"></path><path d="M128 816.014222m39.992889 0l688.014222 0q39.992889 0 39.992889 39.992889l0 0.018963q0 39.992889-39.992889 39.992889l-688.014222 0q-39.992889 0-39.992889-39.992889l0-0.018963q0-39.992889 39.992889-39.992889Z" fill="#3385FF" fill-opacity=".5" p-id="30472"></path></svg>

+ 23 - 0
ghsApp/src/utils/iconSrc.js

@@ -0,0 +1,23 @@
+const ICON_ALIASES = {
+  'custom-select': 'custom_select',
+  'custom-setting': 'custom_setting',
+  'pull-custom': 'pull_custom',
+  'add-custom': 'add_custom'
+}
+
+export function iconSrc(icon) {
+  if (!icon) {
+    return ''
+  }
+  const name = ICON_ALIASES[icon] || icon
+  return `/static/icons/${name}.svg`
+}
+
+export function iconStyle(size, height) {
+  const widthValue = typeof size === 'number' ? `${size}px` : size
+  const heightValue = height == null ? widthValue : (typeof height === 'number' ? `${height}px` : height)
+  return {
+    width: widthValue,
+    height: heightValue
+  }
+}

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov