소스 검색

JLHWEB: 1、修改床垫清单物料选择组件

JohnnyChan 2 일 전
부모
커밋
f8af759544
3개의 변경된 파일111개의 추가작업 그리고 38개의 파일을 삭제
  1. 5 2
      JLHWEB/src/styles/index.scss
  2. 20 36
      JLHWEB/src/views/erpapi/mattressInterface/hooks/index.tsx
  3. 86 0
      JLHWEB/src/views/system/selector/mtrldefErp/input.vue

+ 5 - 2
JLHWEB/src/styles/index.scss

@@ -34,7 +34,7 @@ code {
   background-color: var(--lj-color-dust-red-1);
 }
 .vxecol-danger {
-  color: var(--lj-color-dust-red-5);
+  color: var(--lj-color-dust-red-5) !important;
 }
 .vxecol-purple {
   color: var(--lj-color-golden-purple-6);
@@ -43,7 +43,10 @@ code {
   color: var(--lj-color-geek-blue-6);
 }
 .vxecol-green {
-  color: var(--lj-color-polar-green-7);
+  color: var(--lj-color-polar-green-7) !important;
+}
+.vxecol-gray {
+  color: var(--lj-color-gray-7) !important;
 }
 .vxecol-bg-green {
   background-color: var(--lj-color-polar-green-1);

+ 20 - 36
JLHWEB/src/views/erpapi/mattressInterface/hooks/index.tsx

@@ -17,6 +17,7 @@ import {
 import { transformTreeData, autoMergeCells, isFilterPrice } from "@/utils/index";
 import { floatSub, floatAdd, floatMul, floatDiv, formatFixedNumber } from "@/utils/index";
 import MtrldefErpSelect from "@/views/system/selector/mtrldefErp/select.vue";
+import MtrldefErpInput from "@/views/system/selector/mtrldefErp/Input.vue";
 import CodemxSelect from "@/views/system/selector/codemx/select.vue";
 import { isFixedColumn } from "element-plus/es/components/table/src/util";
 import * as Exceljs from "exceljs";
@@ -399,15 +400,15 @@ export const useHooks = (t?: any) => {
     });
   };
 
-  const rModelSetMtrlErp = (data: any, item: any) => {
+  const rModelSetMtrlErp = (data: any, item: any, attrStr: string = "") => {
     console.log("rModelSetMtrlErp item :>> ", item);
     if (item) {
       data.erp_mtrlid = item.mtrlid;
       data.erp_mtrlname = item.mtrlname;
       data.erp_mtrlmode = item.mtrlmode;
-      data.erp_mtrlcode = item.mtrlcode;
+      attrStr != "erp_mtrlcode" && (data.erp_mtrlcode = item.mtrlcode);
       data.erp_unit = item.unit;
-      data.erp_mtrlengname = item.zxmtrlmode;
+      attrStr != "erp_mtrlengname" && (data.erp_mtrlengname = item.zxmtrlmode);
     }
   };
 
@@ -1178,33 +1179,21 @@ export const useHooks = (t?: any) => {
         autoFocus: "input"
       },
       editColRender: (scope: any) => {
-        // console.log("mtrlname hooks render scope :>> ", scope);
-        // console.log("mtrlname hooks render LjDetailRef.value._mainData :>> ", state.LjDetailRef);
         const { $table, column, row, status } = scope;
-        let field = column.field;
-        let _label = column.title;
-        // if (column?.format) {
-        //   _label = handleRowAccordingToProp(searchParam, field, column?.format);
-        // }
 
         let params = {
           keyword: row.erp_mtrlcode
         };
 
         return (
-          <MtrldefErpSelect
-            value={row.erp_mtrlid}
-            {...params}
-            clearable
-            placeholder={_label}
+          <MtrldefErpInput
+            v-model={row.erp_mtrlcode}
+            valueKey="erp_mtrlcode"
+            row={row}
+            setMtrlerp={rModelSetMtrlErp}
             onOpenModal={() => fModelChoseMtrlErp(row, params)}
-            onSelect={val => rModelSetMtrlErp(row, val)}
             onClear={() => rModelClearMtrlErp(row, 2)}
-          >
-            {{
-              label: () => row.erp_mtrlcode
-            }}
-          </MtrldefErpSelect>
+          ></MtrldefErpInput>
         );
       }
     },
@@ -1224,23 +1213,16 @@ export const useHooks = (t?: any) => {
       editRender: {},
       editColRender: (scope: any) => {
         const { $table, column, row, status } = scope;
-        let field = column.field;
-        let _label = column.title;
 
         return (
-          <MtrldefErpSelect
-            value={row.erp_mtrlid}
-            searchKey="mtrlengname"
-            clearable
-            placeholder={_label}
+          <MtrldefErpInput
+            v-model={row.erp_mtrlengname}
+            valueKey="erp_mtrlengname"
+            row={row}
+            setMtrlerp={rModelSetMtrlErp}
             onOpenModal={() => fModelChoseMtrlErp(row, {})}
-            onSelect={val => rModelSetMtrlErp(row, val)}
             onClear={() => rModelClearMtrlErp(row, 2)}
-          >
-            {{
-              label: () => row.erp_mtrlengname
-            }}
-          </MtrldefErpSelect>
+          ></MtrldefErpInput>
         );
       }
     },
@@ -2087,12 +2069,14 @@ export const useHooks = (t?: any) => {
    * @param status 当前订单状态
    * @returns Promise
    */
-  const fModelChoseMattress = (label?: string) => {
+  const fModelChoseMattress = (label?: string, params?: any, multipleLimit: number = 1) => {
     return new Promise((resolve, reject) => {
       let _params = {
-        arg_deptid: state.mainData[0].deptid
+        arg_deptid: state.mainData[0].deptid,
+        ...params
       };
       state.MattressDialogProps = {
+        multipleLimit: multipleLimit,
         onSubmit: (res: any) => {
           // submit
           console.log("openCustDialog res", res);

+ 86 - 0
JLHWEB/src/views/system/selector/mtrldefErp/input.vue

@@ -0,0 +1,86 @@
+<template>
+  <el-input v-model="inputValue" @input="disshow">
+    <template #suffix>
+      <el-icon class="el-input__icon" v-if="loading">
+        <Loading />
+      </el-icon>
+      <el-icon v-else-if="successState" class="vxecol-green"><CircleCheckFilled /></el-icon>
+      <el-icon v-else-if="errorState" class="vxecol-danger"><CircleCloseFilled /></el-icon>
+      <el-icon v-else class="vxecol-gray" @click="openModal"><Search /></el-icon>
+    </template>
+  </el-input>
+</template>
+
+<script lang="ts" setup name="SelectorMtrldefSelect">
+import { ref, computed, nextTick } from "vue";
+import { GetERPMtrldefList } from "@/api/modules/common";
+import { ElInput, ElIcon } from "element-plus";
+import { Search, Loading, CircleCheckFilled, CircleCloseFilled } from "@element-plus/icons-vue";
+
+import { useUserStore } from "@/stores/modules/user";
+import { throttle } from "lodash-es";
+
+interface ProTableProps {
+  value?: any;
+  valueKey?: string;
+  searchKey?: any;
+  row?: any;
+  setMtrlerp?: any;
+}
+
+// 默认值
+const props = withDefaults(defineProps<ProTableProps>(), {
+  // valueKey: "mtrlid"
+});
+
+const inputValue = computed({
+  get: () => props.value,
+  set: val => emit("update:value", val)
+});
+
+const { userInfo } = useUserStore();
+const emit = defineEmits(["select", "update:value", "openModal"]);
+const loading = ref(false);
+const successState = ref(false);
+const errorState = ref(false);
+
+const disshow = throttle(async (queryString: any) => {
+  console.log("disshow props :>> ", props, queryString);
+  loading.value = true;
+  errorState.value = false;
+  successState.value = false;
+
+  let newParams: any = {};
+  newParams.pageindex = 1;
+  newParams.pagesize = 5;
+  // newParams.mtrlid = props.mtrlid;
+  if (props.searchKey) {
+    newParams[props.searchKey] = queryString;
+  } else {
+    newParams.keyword = queryString;
+  }
+  console.log("newParams :>> ", newParams);
+  let result = await GetERPMtrldefList(newParams);
+
+  console.log("result.datatable :>> ", result.mtrldefList);
+
+  loading.value = false;
+
+  if (result.mtrldefList.length == 1) {
+    // emit("select", result.mtrldefList[0]);
+    props.setMtrlerp(props.row, result.mtrldefList[0], props.valueKey);
+    successState.value = true;
+    setTimeout(() => {
+      successState.value = false;
+    }, 1200);
+  } else {
+    props.setMtrlerp(props.row, {}, props.valueKey);
+    // emit("select", {});
+    errorState.value = true;
+  }
+}, 1500);
+
+const openModal = (e: any) => {
+  emit("openModal", e);
+};
+</script>