cz il y a 1 an
Parent
commit
96e0e1498b

+ 1 - 1
.env.development

@@ -1,5 +1,5 @@
 # 页面标题
-VITE_APP_TITLE = 三梵MES制造执行系统
+VITE_APP_TITLE = SANFAN MES制造执行系统
 
 # 开发环境配置
 VITE_APP_ENV = 'development'

+ 1 - 1
.env.production

@@ -1,5 +1,5 @@
 # 页面标题
-VITE_APP_TITLE = 三梵MES制造执行系统
+VITE_APP_TITLE = SANFAN MES制造执行系统
 
 # 生产环境配置
 VITE_APP_ENV = 'production'

+ 1 - 1
.env.staging

@@ -1,5 +1,5 @@
 # 页面标题
-VITE_APP_TITLE = 三梵MES制造执行系统
+VITE_APP_TITLE = SANFAN MES制造执行系统
 
 # 生产环境配置
 VITE_APP_ENV = 'staging'

+ 1 - 1
index.html

@@ -7,7 +7,7 @@
   <meta name="renderer" content="webkit">
   <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
   <link rel="icon" href="/favicon.ico">
-  <title>三梵MES制造执行系统</title>
+  <title>SANFAN MES制造执行系统</title>
   <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
   <style>
     html,

+ 2 - 2
package.json

@@ -1,8 +1,8 @@
 {
   "name": "ruoyi",
   "version": "3.8.5",
-  "description": "三梵MES制造执行系统",
-  "author": "三梵MES制造执行系统",
+  "description": "SANFAN MES制造执行系统",
+  "author": "SANFAN MES制造执行系统",
   "license": "MIT",
   "scripts": {
     "dev": "vite",

BIN
public/img/logo3.png


+ 1 - 1
src/assets/icons/iconfont/iconfont.json

@@ -1,6 +1,6 @@
 {
   "id": "3933484",
-  "name": "三梵MES制造执行系统",
+  "name": "SANFAN MES制造执行系统",
   "font_family": "iconfont",
   "css_prefix_text": "icon-",
   "description": "",

+ 1 - 0
src/assets/icons/svg/shoucang.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 class="icon" width="16px" height="16.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#e6e6e6" d="M781.186088 616.031873q17.338645 80.573705 30.59761 145.848606 6.119522 27.537849 11.219124 55.075697t9.689243 49.976096 7.649402 38.247012 4.079681 19.888446q3.059761 20.398406-9.179283 27.027888t-27.537849 6.629482q-5.099602 0-14.788845-3.569721t-14.788845-5.609562l-266.199203-155.027888q-72.414343 42.836653-131.569721 76.494024-25.498008 14.278884-50.486056 28.557769t-45.386454 26.517928-35.187251 20.398406-19.888446 10.199203q-10.199203 5.099602-20.908367 3.569721t-19.378486-7.649402-12.749004-14.788845-2.039841-17.848606q1.01992-4.079681 5.099602-19.888446t9.179283-37.737052 11.729084-48.446215 13.768924-54.055777q15.298805-63.23506 34.677291-142.788845-60.175299-52.015936-108.111554-92.812749-20.398406-17.338645-40.286853-34.167331t-35.697211-30.59761-26.007968-22.438247-11.219124-9.689243q-12.239044-11.219124-20.908367-24.988048t-6.629482-28.047809 11.219124-22.438247 20.398406-10.199203l315.155378-28.557769 117.290837-273.338645q6.119522-16.318725 17.338645-28.047809t30.59761-11.729084q10.199203 0 17.848606 4.589641t12.749004 10.709163 8.669323 12.239044 5.609562 10.199203l114.231076 273.338645 315.155378 29.577689q20.398406 5.099602 28.557769 12.239044t8.159363 22.438247q0 14.278884-8.669323 24.988048t-21.928287 26.007968z" /></svg>

+ 1 - 0
src/assets/icons/svg/shoucang1.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 class="icon" width="16px" height="16.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#f4ea2a" d="M781.186088 616.031873q17.338645 80.573705 30.59761 145.848606 6.119522 27.537849 11.219124 55.075697t9.689243 49.976096 7.649402 38.247012 4.079681 19.888446q3.059761 20.398406-9.179283 27.027888t-27.537849 6.629482q-5.099602 0-14.788845-3.569721t-14.788845-5.609562l-266.199203-155.027888q-72.414343 42.836653-131.569721 76.494024-25.498008 14.278884-50.486056 28.557769t-45.386454 26.517928-35.187251 20.398406-19.888446 10.199203q-10.199203 5.099602-20.908367 3.569721t-19.378486-7.649402-12.749004-14.788845-2.039841-17.848606q1.01992-4.079681 5.099602-19.888446t9.179283-37.737052 11.729084-48.446215 13.768924-54.055777q15.298805-63.23506 34.677291-142.788845-60.175299-52.015936-108.111554-92.812749-20.398406-17.338645-40.286853-34.167331t-35.697211-30.59761-26.007968-22.438247-11.219124-9.689243q-12.239044-11.219124-20.908367-24.988048t-6.629482-28.047809 11.219124-22.438247 20.398406-10.199203l315.155378-28.557769 117.290837-273.338645q6.119522-16.318725 17.338645-28.047809t30.59761-11.729084q10.199203 0 17.848606 4.589641t12.749004 10.709163 8.669323 12.239044 5.609562 10.199203l114.231076 273.338645 315.155378 29.577689q20.398406 5.099602 28.557769 12.239044t8.159363 22.438247q0 14.278884-8.669323 24.988048t-21.928287 26.007968z" /></svg>

BIN
src/assets/images/img_kejifg.png


BIN
src/assets/images/login-right-bg.png


BIN
src/assets/images/logosanfan.png


+ 7 - 1
src/assets/styles/element-ui.scss

@@ -194,4 +194,10 @@
 
 .el-input-number .el-input__inner {
   text-align: left !important;
-}
+}
+
+// .el-button--primary {
+//   background-color: #1b374c !important;
+//   border-color: #1b374c !important;
+
+// }

+ 1 - 1
src/assets/styles/ruoyi.scss

@@ -107,7 +107,7 @@
  	.el-table__fixed-header-wrapper {
  		th {
  			word-break: break-word;
- 			background-color: #EEEEEE !important;
+ 			// background-color: #EEEEEE !important;
  			color: #515a6e;
  			height: 50px !important;
  			font-size: 14px;

+ 9 - 9
src/components/SvgIcon/index.vue

@@ -9,15 +9,15 @@ export default defineComponent({
   props: {
     iconClass: {
       type: String,
-      required: true
+      required: true,
     },
     className: {
       type: String,
-      default: ''
+      default: "",
     },
     color: {
       type: String,
-      default: ''
+      default: "",
     },
   },
   setup(props) {
@@ -25,13 +25,13 @@ export default defineComponent({
       iconName: computed(() => `#icon-${props.iconClass}`),
       svgClass: computed(() => {
         if (props.className) {
-          return `svg-icon ${props.className}`
+          return `svg-icon ${props.className}`;
         }
-        return 'svg-icon'
-      })
-    }
-  }
-})
+        return "svg-icon";
+      }),
+    };
+  },
+});
 </script>
 
 <style scope lang="scss">

+ 12 - 6
src/components/TitleInfo/index.vue

@@ -1,15 +1,21 @@
 <template>
   <div class="title-info">
     <div class="vertical-bar"></div>
-    <div class="content">{{ content }}</div>
+    <div class="content" :style="{fontSize:size+'px'}">{{ content }}</div>
   </div>
 </template>
 
 <script>
 export default {
   props: {
-    content: String,
-    default: "",
+    content: {
+      type: String,
+      default: "",
+    },
+    size: {
+      type: Number,
+      default: 14,
+    },
   },
 };
 </script>
@@ -19,8 +25,8 @@ export default {
   width: 100%;
   display: flex;
   align-items: center;
-  height: 24px;
-  line-height: 24px;
+  // height: 24px;
+  // line-height: 24px;
   .vertical-bar {
     width: 4px;
     height: 19px;
@@ -29,7 +35,7 @@ export default {
     // margin-top: 1px;
   }
   .content {
-    font-size: 14px;
+    // font-size: 14px;
     font-weight: 600;
     color: #333333;
   }

+ 111 - 105
src/components/headerBar/header-bar.vue

@@ -2,13 +2,13 @@
   <div id="main" class="header-bar" @click="isChildMenu = false">
     <header>
       <ul class="nav">
-        <!-- <div class="logo">三梵MES制造执行系统</div> -->
+        <!-- <div class="logo">SANFAN MES制造执行系统</div> -->
         <div class="logo" style="display: flex; align-items: center; justify-content: center">
-          <img v-if="!logoUrl" :src="'/img/logo2.png'" />
+          <img v-if="!logoUrl" :src="'/img/logo3.png'" style="width:120px;height:30px;vertical-align:middle;object-fit:contain" />
           <el-image v-else style="width: 120px; height: 30px" :src="logoUrl" fit="scale-down" />
         </div>
         <li class="header-bar-hover-warp nav-li" :class="isChildMenu ? 'active' : ''">
-          <div @click.stop="isChildMenu = !isChildMenu" class="menu-modal">
+          <div @click.stop="openMenuBox" class="menu-modal">
             <i class="iconfont icon-icomx_gongndh" style="margin: 0 5px 0 0"></i>
             {{ $t("header.functionGuide") }}
             <i class="iconfont icon-iconm_xialan1" style="margin: 0 0 0 3px"></i>
@@ -32,12 +32,8 @@
         <div class="header-bar-warp" v-if="isChildMenu" @click.stop="isChildMenu = false">
           <div class="header-bar-hover" @click.stop>
             <div class="header-bar-hover-content">
+              <!-- 左边 -->
               <div class="left-banner">
-                <!-- :style="leftBanerType == 2 ? 'color:#0084ff' : ''" -->
-                <!-- <div class="first-order" @click="leftBanerType = 2">
-                  <i class="iconfont icon-iconm_changycd" style="position: relative; top: -1px"></i>
-                  {{ $t("header.commonFunctions") }}
-                </div> -->
                 <div class="first-order">
                   <i class="iconfont icon-iconm_gongncd" style="position: relative; top: -1px"></i>
                   {{ $t("header.functionMenu") }}
@@ -52,97 +48,49 @@
                     {{ i.menuName }}
                   </li>
                 </ul>
-                <!-- <div class="first-order">
-									<el-icon size="16" color="#0084FF">
-										<edit /> 
-									</el-icon>
-									推荐服务
-								</div> -->
-              </div>
-              <div class="menu-warp" v-show="leftBanerType == 1">
-                <div class="first-order-title">{{ menuName }}</div>
-                <!-- <ul class="second-level" v-for="i in activeLeftData.children" :key="i.menuId">
-									<li class="menu-title">
-											
-											{{ i.menuName }}
-										</li>
-									<div v-for="(j, index) in i.children" :key="index">
-										<li v-if="i.isNone" class="menu-ul" style="cursor: auto"></li>
-										
-										<li class="menu-ul" @click="routerPush(i,j)" style="cursor: pointer">
-											{{ j.menuName }}
-										</li>
-									</div>
-								</ul> -->
-                <ul class="second-level">
-                  <div v-for="(i, index) in activeLeftData" :key="index">
-                    <li v-if="i.isNone" class="menu-ul" style="cursor: auto"></li>
-                    <li class="menu-title" v-else-if="i.isTitle">
-                      <a v-if="i.icon && i.icon !== '#'" :class="'iconfont icon-' + i.icon"
-                         style="margin-right: 4px"></a><span>{{ i.menuName }}</span>
-                    </li>
-                    <li v-else class="menu-ul" @click="commonsBannerToRouter(i)" style="cursor: pointer; display: flex">
-                      <a :class="'iconfont icon-' + i.icon" style="
-                          margin-right: 4px;
-                          width: 20px;
-                          min-height: 20px;
-                          display: block;
-                        "></a>
-                      <span>{{ i.menuName }}</span>
-                    </li>
-                  </div>
-                </ul>
+
               </div>
-              <div class="menu-warp" v-show="leftBanerType == 2">
+              <!-- 中间 -->
+              <div class="menu-warp">
                 <div class="first-order-title">
-                  {{ $t("header.commonFunctions") }}
+                  <TitleInfo :content="menuName" :size="16"></TitleInfo>
                 </div>
-                <div class="commons-warp">
-                  <div>
-                    <div class="header-button-box cp" v-for="(i, index) in commonsRouterList" :key="i.name" @click="commonsBannerToRouter(i)">
-                      <span>{{ i.menuName }}</span>
-                      <div class="right-icon" @click.stop="deleteCommonsRouter(i, index)">
-                        <!-- <el-icon color="#46A6FF"><CirclePlus /></el-icon> -->
-                        <el-icon color="#BBBBBB" v-show="isEidtType">
-                          <Close />
-                        </el-icon>
+                <!-- style="height:450px;overflow: auto;" -->
+                <div>
+                  <div class="aaa">
+                    <ul class="second-level bbb" v-for="i in activeLeftData.children" :key="i.menuId">
+                      <li class="menu-title">
+                        {{ i.menuName }}
+                      </li>
+                      <div v-for="(j, index) in i.children" :key="index">
+                        <li v-if="i.isNone" class="menu-ul" style="cursor: auto"></li>
+                        <li class="menu-ul" @click="commonsBannerToRouter(j)">
+                          <i style="cursor: pointer;position:relative;top:0px" @click.stop="editMenu(j)">
+                            <svg-icon :icon-class="isHaveCollect(j) ? 'shoucang1' :'shoucang'" />
+                          </i>
+                          <span style="margin-left:6px;cursor: pointer">{{ j.menuName }}</span>
+                        </li>
                       </div>
-                    </div>
-                    <div class="header-add-button-box" v-if="!isEidtType" @click="isEidtType = true">
-                      <el-icon color="#46A6FF">
-                        <CirclePlus />
-                      </el-icon>
-                      {{ $t("header.edit") }}
-                    </div>
+                    </ul>
                   </div>
                 </div>
-                <div class="first-order-title" v-if="isEidtType">
-                  {{ $t("header.toAdd") }}
+              </div>
+
+              <div class="right-banner">
+                <div class="first-order-title">
+                  <TitleInfo :content="'常用功能'" :size="16"></TitleInfo>
                 </div>
-                <div class="all-menu-warp" v-if="isEidtType">
-                  <div v-for="(i, index) in sidebarRoutersCopy" :key="i.name" v-show="i.type === 1">
-                    <div class="all-menu-title" v-for="(j, jindex) in i.children" :key="j.name">
-                      <div class="title">
-                        {{ j.menuName }}
-                      </div>
-                      <div class="all-menu-lists">
-                        <div class="header-button-box" v-for="(n, nindex) in j.children" v-show="n.visible == '0'" :key="n.name">
-                          <span>{{ n.menuName }}</span>
-
-                          <div class="right-icon" @click="addCommonsRouter(index, jindex, nindex, n)">
-                            <el-icon color="#46A6FF">
-                              <CirclePlus />
-                            </el-icon>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
+
+                <div class="collect" id="collect">
+                  <div v-for="(menu, index) in commonsRouterList" :key="menu.menuId" class="item">
+                    <span>{{menu.menuName}}</span>
+                    <span style="cursor:pointer;position:relative;top:2px;" @click="editMenu(menu)">
+                      <el-icon color="#46A6FF" :size="16">
+                        <CircleClose />
+                      </el-icon>
+                    </span>
                   </div>
                 </div>
-                <div class="btn-warp" v-if="isEidtType">
-                  <el-button type="" @click="isEidtType = false">取消</el-button>
-                  <el-button type="primary" @click="userMenuEdit">保存</el-button>
-                </div>
               </div>
             </div>
           </div>
@@ -201,6 +149,7 @@
         </el-dropdown>
       </div>
     </header>
+
     <el-drawer v-model="openDrawer" direction="rtl" :show-close="false" custom-class="drawerClass" modal-class="modelClass">
       <!-- <template #header>
         <h4>set title by slot</h4>
@@ -209,7 +158,7 @@
 
         <div class="job-box">
           <div style="margin-bottom:20px">
-            <TitleInfo :content="'工作事项'"></TitleInfo>
+            <TitleInfoOne :content="'工作事项'"></TitleInfoOne>
           </div>
           <div class="job-list">
             <div class="job-item" style="margin-right:5px" @click="handlePushRouter(1)">
@@ -323,7 +272,7 @@
 
         </div>
         <div style="margin:20px 0">
-          <TitleInfo :content="'通知提醒'"></TitleInfo>
+          <TitleInfoOne :content="'通知提醒'"></TitleInfoOne>
         </div>
         <div class="notice">
           <div class="item" v-for="(item,index) in noticeData" :key="item.id">
@@ -348,7 +297,8 @@ import { ElMessageBox, ElNotification, ElMessage } from "element-plus";
 import useUserStore from "@/store/modules/user";
 import "@/components/headerBar/header.scss";
 import notice from "@/components/notice/index";
-import TitleInfo from "@/components/TitleInfo/indexOne.vue";
+import TitleInfoOne from "@/components/TitleInfo/indexOne.vue";
+import Sortable from "sortablejs";
 
 const router = useRouter();
 const userStore = useUserStore();
@@ -359,16 +309,16 @@ const sidebarRoutersCopy = ref([]);
 const isChildMenu = ref(false);
 const autoListChidrenNum = ref(0);
 const isEidtType = ref(false);
-const leftBanerType = ref(2);
+const leftBanerType = ref(1);
 const noticeTableModal = ref(false);
 const userData = ref(Cookies.get("nickName") || "");
 const commonsRouterList = ref([]);
 const activeLeftData = ref({});
 const openLeftBaner = (i, index) => {
-  leftBanerType.value = 1;
+  // leftBanerType.value = 1;
   activeLeftData.value = i;
   menuName.value = i.menuName;
-  routerInit(i);
+  // routerInit(i);
 };
 
 const badgeNum = ref(0);
@@ -382,6 +332,40 @@ const getLogo = () => {
   });
 };
 getLogo();
+
+const openMenuBox = () => {
+  isChildMenu.value = !isChildMenu.value;
+  nextTick(() => {
+    initSort();
+  });
+};
+
+const getCollectData = () => {
+  proxy.post("/sysUserMenu/list", { type: 1 }).then((res) => {
+    commonsRouterList.value = res;
+  });
+};
+
+const initSort = () => {
+  const el = document.getElementById("collect");
+  Sortable.create(el, {
+    onEnd({ newIndex, oldIndex }) {
+      if (newIndex == oldIndex) return;
+      commonsRouterList.value.splice(
+        newIndex,
+        0,
+        commonsRouterList.value.splice(oldIndex, 1)[0]
+      );
+      let newArray = commonsRouterList.value.slice(0);
+      commonsRouterList.value = [];
+      nextTick(() => {
+        commonsRouterList.value = newArray;
+        userMenuEdit();
+      });
+    },
+  });
+};
+
 const userMenuEdit = () => {
   proxy
     .post("/sysUserMenu/edit", {
@@ -389,14 +373,34 @@ const userMenuEdit = () => {
       menuIdList: commonsRouterList.value.map((item) => item.menuId),
     })
     .then((res) => {
-      ElMessage({
-        message: "保存成功",
-        type: "success",
-      });
-      isEidtType.value = false;
+      getCollectData();
+      // ElMessage({
+      //   message: "操作成功",
+      //   type: "success",
+      // });
     });
 };
 
+const editMenu = (menu) => {
+  let menuIndex = -1;
+  const flag = commonsRouterList.value.some((item, index) => {
+    if (item.menuId == menu.menuId) {
+      menuIndex = index;
+      return true;
+    }
+  });
+  if (flag) {
+    commonsRouterList.value.splice(menuIndex, 1);
+  } else {
+    commonsRouterList.value.push(menu);
+  }
+  userMenuEdit();
+};
+
+const isHaveCollect = (menu) => {
+  return commonsRouterList.value.some((item) => item.menuId == menu.menuId);
+};
+
 const deleteCommonsRouter = (i, index) => {
   commonsRouterList.value.splice(index, 1);
 };
@@ -500,6 +504,7 @@ function logout() {
 
 //使用id计算拼接url
 const commonsBannerToRouter = (i) => {
+  console.log(i, "ss");
   sidebarRoutersCopy.value.map((item) => {
     if (item.children) {
       item.children.map((j) => {
@@ -542,6 +547,10 @@ onMounted(() => {
       };
     });
     sidebarRoutersCopy.value = proxy.handleTree(res.data, "menuId");
+    if (sidebarRoutersCopy.value && sidebarRoutersCopy.value.length > 0) {
+      openLeftBaner(sidebarRoutersCopy.value[0], 0);
+    }
+
     //循环删除 i.status != 0 || i.visible != 0 的元素
     sidebarRoutersCopy.value.map((item) => {
       if (item.children) {
@@ -557,9 +566,7 @@ onMounted(() => {
       }
     });
   });
-  proxy.post("/sysUserMenu/list", { type: 1 }).then((res) => {
-    commonsRouterList.value = res;
-  });
+  getCollectData();
   proxy.get("/statistics/workStatistics").then((res) => {
     for (const key in res.data) {
       res.data[key] = Number(res.data[key]);
@@ -602,7 +609,6 @@ const getNoticeData = () => {
     }
   });
   proxy.get("/statistics/getRecentPurchaseArrivalList").then((res) => {
-    console.log(res, "ss");
     if (res && res.data && res.data.length > 0) {
       noticeData.value = [
         ...noticeData.value,

+ 82 - 26
src/components/headerBar/header.scss

@@ -9,7 +9,7 @@
 }
 
 .header-bar {
-	background: #20222a;
+	background: #1C3144;
 	position: fixed;
 	top: 0;
 	left: 0;
@@ -57,7 +57,7 @@
 						height: 50px;
 						line-height: 50px;
 						padding: 0 50px;
-						font-size: 12px;
+						font-size: 16px;
 						cursor: pointer;
 					}
 
@@ -71,7 +71,7 @@
 					height: 50px;
 					padding: 0 20px;
 					line-height: 50px;
-					font-size: 14px;
+					font-size: 16px;
 					font-weight: bold;
 					background: #f9f9f9;
 					cursor: pointer;
@@ -84,6 +84,38 @@
 				}
 			}
 
+			.right-banner {
+				width: 300px;
+				height: 500px;
+				overflow-y: auto;
+				padding: 0 20px;
+
+				&::-webkit-scrollbar {
+					width: 2px !important;
+					height: 2px !important;
+				}
+
+				.first-order-title {
+					height: 50px;
+					line-height: 50px;
+					// color: #333333;
+					// font-size: 15px;
+					// font-weight: bold;
+				}
+
+				.collect {
+					.item {
+						margin-bottom: 10px;
+						font-size: 14px;
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						padding: 2px 5px;
+						border: 1px solid #eee;
+					}
+				}
+			}
+
 			.el-alert {
 				line-height: 20px;
 				text-align: center;
@@ -99,15 +131,19 @@
 		}
 
 		.menu-warp {
-			width: calc(100vw - 230px);
+			width: calc(100vw - 230px - 300px);
 			background: #fff;
 			// overflow: hidden;
 			box-sizing: border-box;
-			padding: 0 40px;
+			padding: 0 20px;
 			height: 500px;
 			// overflow-y: auto;
 			overflow: auto;
 
+			&::-webkit-scrollbar {
+				width: 2px !important;
+				height: 2px !important;
+			}
 
 			.btn-warp {
 				margin: 40px 0 20px;
@@ -182,21 +218,38 @@
 			}
 
 			.first-order-title {
-				height: 55px;
-				line-height: 55px;
-				color: #333333;
-				font-size: 15px;
-				font-weight: bold;
+				height: 50px;
+				line-height: 50px;
+				// color: #333333;
+				// font-size: 15px;
+				// font-weight: bold;
+			}
+
+			.aaa {
+				-moz-column-count: 4;
+				/* Firefox */
+				-webkit-column-count: 4;
+				/* Safari 和 Chrome */
+				column-count: 4;
+				-moz-column-gap: 50px;
+				-webkit-column-gap: 50px;
+				column-gap: 50px;
+
+				.bbb {
+					-moz-page-break-inside: avoid;
+					-webkit-column-break-inside: avoid;
+					break-inside: avoid;
+				}
 			}
 
 			.second-level {
-				height: 420px;
-				display: flex;
-				flex-wrap: wrap;
-				flex-direction: column;
-				flex-grow: 0;
-				flex-basis: auto;
-				float: left;
+				// height: 420px;
+				// display: flex;
+				// flex-wrap: wrap;
+				// flex-direction: column;
+				// flex-grow: 0;
+				// flex-basis: auto;
+				// float: left;
 			}
 
 			.menu-title {
@@ -205,7 +258,7 @@
 				height: 40px;
 				line-height: 40px;
 				border-bottom: 1px solid #ddd;
-				font-size: 14px;
+				font-size: 16px;
 				width: 140px;
 				margin: 0 5vw 0 0;
 
@@ -217,19 +270,22 @@
 			}
 
 			.menu-ul {
-				float: left;
-				width: 140px;
-				list-style: none;
-				margin: 0 5vw 0 0;
-				padding: 0;
+				// float: left;
+				// width: 140px;
+				// list-style: none;
+				// margin: 0 5vw 0 0;
+				// padding: 0;
+				padding-left: 10px;
+				// display: flex;
+				// align-items: center;
 				height: 36px;
 				line-height: 36px;
-				font-size: 12px;
+				font-size: 14px;
 				font-weight: 400;
-				cursor: pointer;
+				// cursor: pointer;
 			}
 
-			.menu-ul:hover {
+			.menu-ul span:hover {
 				color: #0084ff;
 			}
 		}

+ 89 - 130
src/components/process/SF/Contract.vue

@@ -126,8 +126,8 @@
 
       <template #commodity>
         <div style="width: 100%">
-          <el-button type="primary" @click="openProductCompany = true" plain v-if="!judgeStatus()">标准产品库</el-button>
-          <el-table :data="formData.data.contractProductList" style="width: 100%; margin-top: 16px">
+          <el-button type="primary" @click="openProductCompany = true" plain style="margin-bottom: 16px" v-if="!judgeStatus()">标准产品库</el-button>
+          <el-table :data="formData.data.contractProductList" style="width: 100%; ">
             <el-table-column label="商品图片" width="80">
               <template #default="{ row }">
                 <div v-if="row.fileUrl">
@@ -243,8 +243,8 @@
 
       <template #otherCharge>
         <div style="width: 100%">
-          <el-button type="primary" @click="clickAdd()" plain v-if="!judgeStatus()">添加行</el-button>
-          <el-table :data="formData.data.contractProjectList" style="width: 100%; margin-top: 16px">
+          <el-button type="primary" @click="clickAdd()" plain style="margin-bottom: 16px" v-if="!judgeStatus()">添加行</el-button>
+          <el-table :data="formData.data.contractProjectList" style="width: 100%;">
             <el-table-column label="收费项目" width="220">
               <template #default="{ row, $index }">
                 <div style="width: 100%">
@@ -334,9 +334,8 @@ const copyType = ref(1);
 const copyContract = ref(false);
 const formData = reactive({
   data: {
-    contractType: "0",
+    contractType: "2",
     rate: 1,
-    currency: currencyData.value[0].dictKey,
     contractProductList: [],
   },
 });
@@ -380,7 +379,7 @@ const formConfig = computed(() => {
       label: "合同类型",
       data: [
         {
-          dictKey: "0",
+          dictKey: "2",
           dictValue: "内销",
         },
         {
@@ -389,7 +388,7 @@ const formConfig = computed(() => {
         },
       ],
       fn: (val) => {
-        if (val == "0") {
+        if (val == "2") {
           formData.data.currency = currencyData.value[0].dictKey;
           formData.data.rate = 1;
         }
@@ -429,7 +428,7 @@ const formConfig = computed(() => {
       label: "币种",
       data: currencyData.value,
       itemWidth: 25,
-      disabled: formData.data.contractType == "0",
+      disabled: formData.data.contractType == "2",
     },
     {
       type: "number",
@@ -439,7 +438,7 @@ const formConfig = computed(() => {
       min: 0,
       controls: false,
       itemWidth: 25,
-      disabled: formData.data.contractType == "0",
+      disabled: formData.data.contractType == "2",
     },
     {
       type: "select",
@@ -528,7 +527,7 @@ const formConfig = computed(() => {
       label: "户名",
       placeholder: "请输入户名",
       itemWidth: 50,
-      isShow: formData.data.contractType == "0",
+      isShow: formData.data.contractType == "2",
     },
     {
       type: "input",
@@ -536,7 +535,7 @@ const formConfig = computed(() => {
       label: "开户行",
       placeholder: "请输入开户行",
       itemWidth: 50,
-      isShow: formData.data.contractType == "0",
+      isShow: formData.data.contractType == "2",
     },
     {
       type: "input",
@@ -544,7 +543,7 @@ const formConfig = computed(() => {
       label: "账号",
       placeholder: "请输入账号",
       itemWidth: 50,
-      isShow: formData.data.contractType == "0",
+      isShow: formData.data.contractType == "2",
     },
     // {
     //   type: "slot",
@@ -717,7 +716,7 @@ getCityData("0");
 const sellCorporationIdChange = (val) => {
   if (val) {
     proxy.post("/corporation/detail", { id: val }).then((res) => {
-      if (formData.data.contractType == "0") {
+      if (formData.data.contractType == "2") {
         formData.data.sellCountryName = res.countryName;
         formData.data.sellProvinceName = res.provinceName;
         formData.data.sellCityName = res.cityName;
@@ -1039,7 +1038,7 @@ defineExpose({
 const changeShroffAccount = (val) => {
   if (val) {
     let data = accountList.value.find((item) => item.value == val);
-    if (formData.data.contractType == "0") {
+    if (formData.data.contractType == "2") {
       if (data) {
         formData.data.beneficiaryName = "";
         formData.data.beneficiaryBank = "";
@@ -1067,131 +1066,91 @@ const changeShroffAccount = (val) => {
   }
 };
 
-onMounted(() => {
-  formOption.disabled = judgeStatus();
-  if (route.query && route.query.businessId && route.query.processType) {
-    let businessId = route.query.businessId;
-    proxy.post("/contract/detail", { id: businessId }).then((res) => {
-      res.countryId = res.buyCountryId;
-      res.provinceId = res.buyProvinceId;
-      res.cityId = res.buyCityId;
-      for (const key in res) {
-        formData.data[key] = res[key];
-      }
-      if (
-        formData.data.contractProductList &&
-        formData.data.contractProductList.length > 0
-      ) {
-        let productIds = formData.data.contractProductList.map(
-          (x) => x.productId
-        );
-        proxy
-          .post("/fileInfo/getList", {
-            businessIdList: productIds,
-          })
-          .then((fileObj) => {
-            for (let i = 0; i < formData.data.contractProductList.length; i++) {
-              const e = formData.data.contractProductList[i];
-              for (const key in fileObj) {
-                if (e.productId === key) {
-                  if (fileObj[key] && fileObj[key].length > 0) {
-                    e.fileUrl = fileObj[key][0].fileUrl;
-                  }
+const getAllData = (businessId) => {
+  proxy.post("/contract/detail", { id: businessId }).then((res) => {
+    res.countryId = res.buyCountryId;
+    res.provinceId = res.buyProvinceId;
+    res.cityId = res.buyCityId;
+    for (const key in res) {
+      formData.data[key] = res[key];
+    }
+    if (
+      formData.data.contractProductList &&
+      formData.data.contractProductList.length > 0
+    ) {
+      let productIds = formData.data.contractProductList.map(
+        (x) => x.productId
+      );
+      proxy
+        .post("/fileInfo/getList", {
+          businessIdList: productIds,
+        })
+        .then((fileObj) => {
+          for (let i = 0; i < formData.data.contractProductList.length; i++) {
+            const e = formData.data.contractProductList[i];
+            for (const key in fileObj) {
+              if (e.productId === key) {
+                if (fileObj[key] && fileObj[key].length > 0) {
+                  e.fileUrl = fileObj[key][0].fileUrl;
                 }
               }
             }
-          });
-        let ids = formData.data.contractProductList.map((x) => x.id);
-        proxy
-          .post("/fileInfo/getList", {
-            businessIdList: ids,
-          })
-          .then((fileObj) => {
-            for (let i = 0; i < formData.data.contractProductList.length; i++) {
-              const e = formData.data.contractProductList[i];
-              for (const key in fileObj) {
-                if (e.id === key) {
-                  if (fileObj[key] && fileObj[key].length > 0) {
-                    e.fileList = fileObj[key];
-                    e.imageUrl = fileObj[key][0].fileUrl;
-                  }
+          }
+        });
+      let ids = formData.data.contractProductList.map((x) => x.id);
+      proxy
+        .post("/fileInfo/getList", {
+          businessIdList: ids,
+        })
+        .then((fileObj) => {
+          for (let i = 0; i < formData.data.contractProductList.length; i++) {
+            const e = formData.data.contractProductList[i];
+            for (const key in fileObj) {
+              if (e.id === key) {
+                if (fileObj[key] && fileObj[key].length > 0) {
+                  e.fileList = fileObj[key];
+                  e.imageUrl = fileObj[key][0].fileUrl;
                 }
               }
             }
-          });
-        // changeProductPrice();
-      }
+          }
+        });
+    }
+    if (formData.data.countryId) {
+      getCityData(formData.data.countryId, "20");
+    }
+    if (formData.data.provinceId) {
+      getCityData(formData.data.provinceId, "30");
+    }
+  });
+};
 
-      if (formData.data.countryId) {
-        getCityData(formData.data.countryId, "20");
-      }
-      if (formData.data.provinceId) {
-        getCityData(formData.data.provinceId, "30");
-      }
-    });
+onMounted(() => {
+  if (currencyData.value && currencyData.value.length > 0) {
+    formData.data.currency = currencyData.value[0].dictKey;
+  }
+  formOption.disabled = judgeStatus();
+  if (route.query && route.query.businessId && route.query.processType) {
+    let businessId = route.query.businessId;
+    getAllData(businessId);
   }
 });
 
-// watch(
-//   () => props.queryData,
-//   (val) => {
-//     nextTick(() => {
-//       formOption.disabled = judgeStatusOne();
-//     });
-//     if (val.businessId && val.processType) {
-//       let businessId = val.businessId;
-//       proxy.post("/contract/detail", { id: businessId }).then((res) => {
-//         console.log(res, "asd");
-//         for (const key in res) {
-//           formData.data[key] = res[key];
-//         }
-
-//         // if (
-//         //   formData.data.contractProductList &&
-//         //   formData.data.contractProductList.length > 0
-//         // ) {
-//         //   for (let i = 0; i < formData.data.contractProductList.length; i++) {
-//         //     const e = formData.data.contractProductList[i];
-//         //     if (e.ehsdJson) {
-//         //       let obj = JSON.parse(e.ehsdJson);
-//         //       e.packMethod = obj.packMethod;
-//         //       e.tradeMethods = obj.tradeMethods;
-//         //     }
-//         //   }
-//         //   let ids = formData.data.contractProductList.map((x) => x.productId);
-//         //   proxy
-//         //     .post("/fileInfo/getList", {
-//         //       businessIdList: ids,
-//         //     })
-//         //     .then((fileObj) => {
-//         //       for (
-//         //         let i = 0;
-//         //         i < formData.data.contractProductList.length;
-//         //         i++
-//         //       ) {
-//         //         const e = formData.data.contractProductList[i];
-//         //         for (const key in fileObj) {
-//         //           if (e.productId === key) {
-//         //             e.fileList = fileObj[key] || [];
-//         //             if (e.fileList && e.fileList.length > 0) {
-//         //               e.fileUrl = e.fileList[0].fileUrl;
-//         //             }
-//         //           }
-//         //         }
-//         //       }
-//         //     });
-//         //   changeProductPrice();
-//         // }
-//         if (formData.data.countryId) {
-//           getCityData(formData.data.countryId, "20");
-//         }
-//         if (formData.data.provinceId) {
-//           getCityData(formData.data.provinceId, "30");
-//         }
-//       });
-//     }
-//   }
-// );
+watch(
+  () => props.queryData,
+  (val) => {
+    nextTick(() => {
+      formOption.disabled = judgeStatus();
+    });
+    if (val.businessId && val.processType) {
+      getAllData(val.businessId);
+    }
+  },
+  {
+    deep: true,
+    immediate: true,
+  }
+);
 const showPriceInfo = () => {
   if (props.queryData.processType) {
     return false;

+ 2 - 2
src/components/process/SendSubscribe.vue

@@ -155,7 +155,7 @@ const pushGoods = (goods) => {
       name: x.name,
       spec: x.spec,
       unit: x.unit,
-      bussinessId: x.id,
+      productId: x.id,
       count: "",
       remark: "",
     }));
@@ -253,7 +253,7 @@ const acquireSelectList = () => {
   ) {
     data = formData.data.subscribeDetailList.map((item) => {
       return {
-        id: item.bussinessId,
+        id: item.productId,
         name: item.name,
       };
     });

+ 2 - 2
src/lang/en.js

@@ -103,7 +103,7 @@ export const lang = {
 		deviceInformation: "设备信息",
 		switchLanguage: 'switch English',
 		logOut: '退出登录',
-		title: "三梵MES制造执行系统管理系统",
+		title: "SANFAN MES制造执行系统管理系统",
 		form: {
 			tenantId: "请输入租户ID",
 			username: "请输入账号",
@@ -113,7 +113,7 @@ export const lang = {
 		loginText: '登录',
 		demo: "demo",
 		agreement: {
-			text: "已阅读并同意:三梵MES制造执行系统",
+			text: "已阅读并同意:SANFAN MES制造执行系统",
 			clause: "服务条款",
 			agreement: "隐私协议",
 			and: "和"

+ 1 - 1
src/layout/components/Sidebar/Logo.vue

@@ -28,7 +28,7 @@ defineProps({
   },
 });
 
-const title = ref("三梵MES制造执行系统");
+const title = ref("SANFAN MES制造执行系统");
 const settingsStore = useSettingsStore();
 const sideTheme = computed(() => settingsStore.sideTheme);
 </script>

+ 1 - 1
src/main.js

@@ -138,7 +138,7 @@ app.use(ElementPlus, {
   size: Cookies.get('size') || 'default'
 })
 // 是否可以通过点击 modal 关闭 Dialog
-app._context.components.ElDialog.props.closeOnClickModal.default = false;
+// app._context.components.ElDialog.props.closeOnClickModal.default = false;
 // 当关闭 Dialog 时,销毁其中的元素
 app._context.components.ElDialog.props.destroyOnClose.default = true;
 app.mount('#app')

+ 3 - 0
src/views/EHSD/productLibrary/companyProduct/index.vue

@@ -758,6 +758,9 @@ const clickSelect = (item) => {
 };
 
 const handleClickUpload = () => {
+  proxy.post("/fileService/createTempFolder").then((res) => {
+    console.log(res, "asd");
+  });
   let a = document.createElement("a");
   a.href = "printer://" + "ftp://192.168.1.13/123/";
   a.style.display = "none";

Fichier diff supprimé car celui-ci est trop grand
+ 1200 - 3
src/views/JST/shopManage/index.vue


+ 83 - 71
src/views/login.vue

@@ -1,62 +1,63 @@
 <template>
   <div class="login">
-    <h1>三梵MES制造执行系统</h1>
-    <div class="content">
-      <div class="warp-bg">
-        <div class="left-bg">
-          <img src="../assets/images/login-img.png" alt="" />
-
-          <div class="swiper-text">
-            <el-carousel height="100px" direction="vertical" indicator-position="none" :autoplay="true">
-              <el-carousel-item>
-                <h3>{{ $t("login.li1H3") }}</h3>
-                <p>{{ $t("login.li1P") }}</p>
-              </el-carousel-item>
-              <el-carousel-item>
-                <h3>{{ $t("login.li2H3") }}</h3>
-                <p>{{ $t("login.li2P") }}</p>
-              </el-carousel-item>
-              <el-carousel-item>
-                <h3>{{ $t("login.li3H3") }}</h3>
-                <p>{{ $t("login.li3P") }}</p>
-              </el-carousel-item>
-            </el-carousel>
-          </div>
+    <h1>SANFAN MES制造执行系统</h1>
+    <div class="warp-bg">
+      <div class="left-bg">
+        <img src="../assets/images/img_kejifg.png" alt="" class="bk-img" />
+        <div class="left-logo">
+          <img src="../assets/images/logosanfan.png" alt="" />
+        </div>
+        <div class="swiper-text">
+          <el-carousel height="100px" direction="vertical" indicator-position="none" :autoplay="true">
+            <el-carousel-item>
+              <h3>{{ $t("login.li1H3") }}</h3>
+              <p>{{ $t("login.li1P") }}</p>
+            </el-carousel-item>
+            <el-carousel-item>
+              <h3>{{ $t("login.li2H3") }}</h3>
+              <p>{{ $t("login.li2P") }}</p>
+            </el-carousel-item>
+            <el-carousel-item>
+              <h3>{{ $t("login.li3H3") }}</h3>
+              <p>{{ $t("login.li3P") }}</p>
+            </el-carousel-item>
+          </el-carousel>
         </div>
-        <div class="right-bg">
-          <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
-            <div class="form" style="margin-top: 300px">
-              <div class="">{{ $t("login.welcomeToLogin") }}~</div>
-              <h2>三梵MES制造执行系统
-                <!-- {{ $t("login.managementSystem") }} -->
-              </h2>
-              <el-form-item prop="tenantId" style="margin-top: 30px">
-                <!-- <el-input :placeholder="$t('login.pleaseEnterTheTenantId')" prefix-icon="user" @keyup.enter="handleLogin" autocomplete="email"
+      </div>
+      <div class="right-bg">
+        <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
+          <div class="form" style="margin-top: 300px">
+            <div class="">{{ $t("login.welcomeToLogin") }}~</div>
+            <h2>SANFAN MES制造执行系统
+              <!-- {{ $t("login.managementSystem") }} -->
+            </h2>
+            <el-form-item prop="tenantId" style="margin-top: 30px">
+              <!-- <el-input :placeholder="$t('login.pleaseEnterTheTenantId')" prefix-icon="user" @keyup.enter="handleLogin" autocomplete="email"
                           v-model="loginForm.tenantId">
                 </el-input> -->
-                <div style="display:flex;width:100%;align-items:center">
-                  <div style="width:23px;text-align:right;margin-top:2px">
-                    <el-icon color="#a8abb2">
-                      <User />
-                    </el-icon>
-                  </div>
-                  <el-select v-model="loginForm.tenantId" placeholder="请选择公司" style="width:calc(100% - 23px)" filterable>
-                    <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.enterpriseName" :value="item.tenantId" />
-                  </el-select>
+              <div style="display:flex;width:100%;align-items:center">
+                <div style="width:23px;text-align:right;margin-top:2px">
+                  <el-icon color="#a8abb2">
+                    <User />
+                  </el-icon>
                 </div>
+                <el-select v-model="loginForm.tenantId" placeholder="请选择公司" style="width:calc(100% - 23px)" filterable>
+                  <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.enterpriseName" :value="item.tenantId" />
+                </el-select>
+              </div>
 
-              </el-form-item>
-              <el-form-item prop="username" style="margin-top: 30px">
-                <el-input :placeholder="$t('login.pleaseEnterYourAccountNumber')" prefix-icon="UserFilled" @keyup.enter="handleLogin"
-                          autocomplete="username" v-model="loginForm.username">
-                </el-input>
-              </el-form-item>
-              <el-form-item prop="password" style="margin-top: 30px">
-                <el-input :placeholder="$t('login.pleaseEnterYourPassword')" prefix-icon="View" type="password" v-model="loginForm.password"
-                          autocomplete="current-password" @keyup.enter="handleLogin">
-                </el-input>
-              </el-form-item>
-              <!-- <el-form-item prop="code" class="code" style="margin-top:30px">
+            </el-form-item>
+            <el-form-item prop="username" style="margin-top: 30px">
+              <el-input :placeholder="$t('login.pleaseEnterYourAccountNumber')" prefix-icon="UserFilled" @keyup.enter="handleLogin"
+                        autocomplete="username" v-model="loginForm.username">
+              </el-input>
+            </el-form-item>
+            <el-form-item prop="password" style="margin-top: 30px">
+              <el-input :placeholder="$t('login.pleaseEnterYourPassword')" prefix-icon="View" type="password" v-model="loginForm.password"
+                        autocomplete="current-password" @keyup.enter="handleLogin">
+              </el-input>
+            </el-form-item>
+            <!-- <el-form-item prop="code" class="code" style="margin-top:30px">
 								<el-input
 									placeholder="请输入验证码"
 									prefix-icon="ChatSquare"
@@ -65,13 +66,12 @@
 								</el-input>
 								<img :src="codeUrl" @click="getCode" class="login-code-img"/>
 							</el-form-item> -->
-              <div style="margin-top: 30px">
-                <el-checkbox v-model="loginForm.rememberMe" style="margin: 0px 0px 25px 0px">{{ $t("login.rememberPassword") }}</el-checkbox>
-              </div>
-              <el-button type="primary" @click="handleLogin" style="width: 100%; margin-top: 30px">{{ $t("login.login") }}</el-button>
+            <div style="margin-top: 30px">
+              <el-checkbox v-model="loginForm.rememberMe" style="margin: 0px 0px 25px 0px">{{ $t("login.rememberPassword") }}</el-checkbox>
             </div>
-          </el-form>
-        </div>
+            <el-button type="primary" @click="handleLogin" style="width: 100%; margin-top: 30px">{{ $t("login.login") }}</el-button>
+          </div>
+        </el-form>
       </div>
     </div>
   </div>
@@ -204,28 +204,40 @@ getCookie();
 
 <style lang="scss">
 .login {
+  min-width: 1200px;
+  overflow: auto;
   .warp-bg {
     background: #fff;
-    height: 100vh;
-    width: 100vw;
+    min-height: 100vh;
+    width: 100%;
     overflow: hidden;
     .left-bg {
-      width: calc(50vw + 200px);
-      background: #0084ff;
-      height: 100vh;
+      width: calc(50% + 150px);
+      background: #1b374c;
+      min-height: 100vh;
       float: left;
       overflow: hidden;
       position: relative;
-      img {
+      .bk-img {
         float: right;
-        margin-right: 75px;
-        margin-top: 120px;
+        margin-right: 5vw;
+        margin-top: 15vh;
+      }
+      .left-logo {
+        position: absolute;
+        top: 10px;
+        left: 20px;
+        img {
+          width: 100px;
+          object-fit: contain;
+          height: auto;
+          vertical-align: middle;
+        }
       }
-
       .swiper-text {
         position: absolute;
-        right: 164px;
-        top: 120px;
+        right: 5vw;
+        top: 10vh;
         color: #fff;
         overflow: hidden;
         height: 200px;
@@ -256,10 +268,10 @@ getCookie();
       }
     }
     .right-bg {
-      width: calc(50vw - 200px);
+      width: calc(50% - 150px);
       background: url(../assets/images/login-right-bg.png) no-repeat;
       background-size: cover;
-      height: 100vh;
+      min-height: 100vh;
       float: right;
       overflow: hidden;
       .form {

+ 0 - 7
src/views/process/processApproval/index.vue

@@ -574,10 +574,8 @@ const getRecords = (_id) => {
         proxy
           .post("fileInfo/getList", { businessIdList: fileIds.value })
           .then((res2) => {
-            console.log(res2);
             fileObj.value = res2;
           });
-        console.log(fileObj.value);
       });
   } else {
     proxy
@@ -720,11 +718,6 @@ watch(
         props.query.processType == 20 ||
         props.query.processType == 30
       ) {
-        // await proxy
-        //   .post("/flowProcess/getStartData", { flowId: props.query.id })
-        //   .then((res) => {
-        //     queryData.data = { ...res };
-        //   });
         queryData.data = { ...props.query };
       } else {
         queryData.data = { ...props.query };

+ 22 - 8
src/views/purchaseManage/supplier/supplyPrice/index.vue

@@ -19,7 +19,7 @@
         </template>
       </byTable>
     </div>
-    <el-dialog :title="modalType == 'add' ? '添加供应价格' : '编辑供应价格'" v-model="dialogVisible" width="800" v-loading="loading">
+    <el-dialog :title="modalType == 'add' ? '添加供应价格' : '编辑供应价格'" v-model="dialogVisible" width="60%" v-loading="loading">
       <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="byform">
         <template #details>
           <div style="width: 100%">
@@ -29,13 +29,14 @@
 
             <el-form ref="tableForm" :model="formData.data" :rules="rules" label-width="0px" style="margin-top: 15px">
               <el-table :data="formData.data.supplierPriceList">
-                <el-table-column prop="code" label="货品编码" />
+                <el-table-column prop="customCode" label="货品编码" />
                 <el-table-column prop="name" label="货品名称" min-width="150" />
                 <el-table-column prop="spec" label="规格型号" />
                 <el-table-column prop="unit" label="单位" :formatter="(row) => dictValueLabel(row.unit, productUnit)" />
                 <el-table-column prop="price" label="供应单价" min-width="150">
                   <template #default="{ row, $index }">
-                    <el-form-item :prop="'supplierPriceList.' + $index + '.price'" :rules="rules.price" :inline-message="true">
+                    <el-form-item :prop="'supplierPriceList.' + $index + '.price'" :rules="rules.price" :inline-message="true"
+                                  class="margin-b-0 wid100">
                       <el-input-number v-model="row.price" :precision="2" :controls="false" :min="1" onmousewheel="return false;" />
                     </el-form-item>
                   </template>
@@ -59,8 +60,8 @@
       </template>
     </el-dialog>
 
-    <el-dialog v-if="openProduct" v-model="openProduct" title="选择货品" width="70%" append-to-body>
-      <SelectGoods :selectList="acquireSelectList()" @cancel="openProduct = false" @pushGoods="pushGoods"></SelectGoods>
+    <el-dialog v-if="openProduct" v-model="openProduct" title="物料选择" width="80%" append-to-body>
+      <SelectMaterial @selectMaterial="selectMaterial"></SelectMaterial>
     </el-dialog>
   </div>
 </template>
@@ -72,7 +73,7 @@ import byTable from "@/components/byTable/index";
 import byForm from "@/components/byForm/index";
 import { computed, defineComponent, ref } from "vue";
 import { getToken } from "@/utils/auth";
-import SelectGoods from "@/components/product/SelectGoods";
+import SelectMaterial from "@/components/product/SelectMaterial.vue";
 
 const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/common/upload"); // 上传文件服务器地址
 const headers = ref({ Authorization: "Bearer " + getToken() });
@@ -262,7 +263,6 @@ const formOption = reactive({
   inline: true,
   labelWidth: 100,
   itemWidth: 100,
-  rules: [],
 });
 const byform = ref(null);
 const formConfig = reactive([
@@ -453,7 +453,21 @@ const handleRemove = (index) => {
     type: "success",
   });
 };
-
+const selectMaterial = (row) => {
+  let flag = formData.data.supplierPriceList.some(
+    (x) => x.productInfoId == row.id
+  );
+  if (!flag) {
+    formData.data.supplierPriceList.push({
+      ...row,
+      productInfoId: row.id,
+      price: "",
+    });
+    proxy.msgTip("选择成功");
+  } else {
+    proxy.msgTip("该物料已选择", 2);
+  }
+};
 const pushGoods = (goods) => {
   if (goods && goods.length > 0) {
     let afterFiltering = [];

+ 1 - 1
src/views/register.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="register">
     <el-form ref="registerRef" :model="registerForm" :rules="registerRules" class="register-form">
-      <h3 class="title">三梵MES制造执行系统</h3>
+      <h3 class="title">SANFAN MES制造执行系统</h3>
       <el-form-item prop="username">
         <el-input v-model="registerForm.username" type="text" size="default" auto-complete="off" placeholder="账号">
           <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template>

+ 0 - 3
src/views/systemTenant/tenant/deptTenant/index.vue

@@ -349,7 +349,4 @@ const submitTree = () => {
 .tenant {
   padding: 20px;
 }
-::v-deep(.el-input-number .el-input__inner) {
-  text-align: left;
-}
 </style>

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff