002201 2 éve
szülő
commit
0bf66fead1

+ 40 - 0
src/components/computed-input-v2/index.vue

@@ -0,0 +1,40 @@
+<template>
+  <span v-on="$listeners">{{ innerValue || "- -" }}</span>
+</template>
+
+<script>
+export default {
+  name: "ComputedInputV2",
+  props: {
+    // v-model
+    value: {
+      type: [Number, String],
+      require: true,
+    },
+    // formatter
+    formatter: {
+      type: Function,
+      default: () => {},
+      require: true,
+    },
+  },
+  data() {
+    return {};
+  },
+  computed: {
+    innerValue: {
+      get() {
+        return this.formatter(this.value);
+      },
+    },
+  },
+  watch: {},
+  methods: {},
+  created() {
+    console.log("formatter", this, (this.$parent.row.customerName = "D"));
+  },
+  mounted() {},
+  destroyed() {},
+};
+</script>
+<style scoped></style>

+ 7 - 2
src/components/computed-input/index.vue

@@ -35,7 +35,6 @@ export default {
     newSource: {
       handler: function (newProp) {
         const { formatter } = this.$props;
-        console.log("formatter", formatter);
         this.$emit("input", formatter(newProp));
       },
       deep: true,
@@ -43,7 +42,13 @@ export default {
     },
   },
   methods: {},
-  created() {},
+  created() {
+    console.log(
+      "formatter",
+      this.$parent,
+      (this.$parent.row.customerName = "D")
+    );
+  },
   mounted() {},
   destroyed() {},
 };

+ 6 - 0
src/config/index.js

@@ -0,0 +1,6 @@
+export default {
+  // 尺寸
+  size: "mini",
+  // 保留小数位
+  precision: 6,
+};

+ 0 - 1
src/views/purchase/apply/add/column.js

@@ -158,7 +158,6 @@ export const TabColumns = [
         attr: {
           component: "el-input-number",
           precision: 6,
-          formatter: (prop) => (prop ? (prop * 1).toFixed(6) : null),
         },
       },
       {

+ 1 - 1
src/views/purchase/catalogue/hooks/data.js

@@ -1,4 +1,4 @@
-import { initRules, initParams } from "@/utils/init";
+import { initRules, initParams } from "@/utils/init/index.js";
 
 export default function useData(prop) {
   const { FormColumns } = prop;

+ 1 - 1
src/views/purchase/catalogue/hooks/dicts.js

@@ -1,4 +1,4 @@
-import { initDicts } from "@/utils/init";
+import { initDicts } from "@/utils/init/index.js";
 
 export default function useDicts(prop) {
   const { FormColumns = [], TabColumns = [] } = prop;

+ 1 - 1
src/views/purchase/catalogue/index.vue

@@ -1,7 +1,7 @@
 <script>
 import { FormColumns, SearchColumns } from "./column";
 import { LIST } from "@/api/business/purchase/catalogue";
-import { initPage, initDicts, initParams } from "@/utils/init";
+import { initPage, initDicts, initParams } from "@/utils/init/index.js";
 export default {
   name: "PuchaseCatalogue",
   dicts: [...initDicts(SearchColumns), ...initDicts(FormColumns)],

+ 1 - 1
src/views/purchase/contract/hooks/data.js

@@ -1,4 +1,4 @@
-import { initRules, initParams } from "@/utils/init";
+import { initRules, initParams } from "@/utils/init/index.js";
 
 export default function useData(prop) {
   const { FormColumns, TabColumns } = prop;

+ 1 - 1
src/views/purchase/contract/hooks/dicts.js

@@ -1,4 +1,4 @@
-import { initDicts } from "@/utils/init";
+import { initDicts } from "@/utils/init/index.js";
 
 export default function useDicts(prop) {
   const { FormColumns = [], TabColumns = [] } = prop;

+ 1 - 1
src/views/purchase/contract/index.vue

@@ -1,7 +1,7 @@
 <script>
 import { FormColumns, SearchColumns } from "./column";
 import { LIST } from "@/api/business/purchase/contract";
-import { initPage, initDicts, initParams } from "@/utils/init";
+import { initPage, initDicts, initParams } from "@/utils/init/index.js";
 export default {
   name: "PuchaseContract",
   dicts: [...initDicts(SearchColumns), ...initDicts(FormColumns)],

+ 11 - 11
src/views/purchase/task/column.js

@@ -45,7 +45,7 @@ export const SearchColumns = [
       title: "物料分类",
     },
     attr: {
-      component: "dr-popover-tree-select",
+      is: "dr-popover-tree-select",
       referName: "MATERIALCLASSIFY_PARAM",
       multiple: true,
       valueKey: "id",
@@ -57,7 +57,7 @@ export const SearchColumns = [
       title: "物料编码",
     },
     attr: {
-      component: "el-popover-multiple-select-v2",
+      is: "el-popover-multiple-select-v2",
       valueKey: "code",
       referName: "MATERIAL_PARAM",
     },
@@ -68,7 +68,7 @@ export const SearchColumns = [
       title: "物料描述",
     },
     attr: {
-      component: "el-input",
+      is: "el-input",
     },
   },
   {
@@ -77,7 +77,7 @@ export const SearchColumns = [
       title: "单据号",
     },
     attr: {
-      component: "el-input",
+      is: "el-input",
     },
   },
   {
@@ -86,7 +86,7 @@ export const SearchColumns = [
       title: "采购组织",
     },
     attr: {
-      component: "el-popover-multiple-select-v2",
+      is: "el-popover-multiple-select-v2",
       referName: "ORG_PARAM",
       valueKey: "id",
     },
@@ -97,7 +97,7 @@ export const SearchColumns = [
       title: "状态",
     },
     attr: {
-      component: "el-select",
+      is: "el-select",
       dictName: "purchase_task_status",
       clearable: true,
     },
@@ -108,7 +108,7 @@ export const SearchColumns = [
       title: "创建时间",
     },
     attr: {
-      component: "el-date-picker",
+      is: "el-date-picker",
       type: "daterange",
       unlinkPanels: true,
       rangeSeparator: "至",
@@ -125,7 +125,7 @@ export const SearchColumns = [
       title: "采购员",
     },
     attr: {
-      component: "el-popover-multiple-select-v2",
+      is: "el-popover-multiple-select-v2",
       referName: "CONTACTS_PARAM",
       valueKey: "code",
     },
@@ -136,7 +136,7 @@ export const SearchColumns = [
       title: "生产厂家",
     },
     attr: {
-      component: "el-input",
+      is: "el-input",
     },
   },
   {
@@ -145,7 +145,7 @@ export const SearchColumns = [
       title: "收货客户",
     },
     attr: {
-      component: "el-popover-select-v2",
+      is: "el-popover-select-v2",
       referName: "CUSTOMERDEPT_PARAM",
       valueKey: "name",
     },
@@ -157,7 +157,7 @@ export const SearchColumns = [
       span: 12,
     },
     attr: {
-      component: "el-input",
+      is: "el-input",
       placeholder: "请输入来源单据号,多个用,分隔",
     },
   },

+ 17 - 13
src/views/purchase/task/first-direct/column.js

@@ -1,3 +1,5 @@
+import CONFIG from "@/config";
+
 export const TableColumns = [
   {
     item: { key: "supplierName", title: "供应商" },
@@ -13,7 +15,7 @@ export const TableColumns = [
   },
   {
     item: { key: "priceType", title: "价格类型" },
-    attr: { component: "dict-tag", dictName: "sys_price_type" },
+    attr: { component: "el-dict-tag", dictName: "sys_price_type" },
   },
   {
     item: { key: "effectiveDate", title: "价格生效日期" },
@@ -24,32 +26,34 @@ export const TableColumns = [
     attr: {},
   },
   {
-    item: { key: "newTax", title: "税率" },
+    item: { key: "tax", title: "税率" },
     attr: {
-      component: "dr-computed-input",
+      component: "el-computed-input-v2",
       formatter: (prop) => {
-        const { tax } = prop;
-        return (tax * 1).toFixed(6) + "%";
+        return (prop * 1).toFixed(CONFIG.precision) + "%";
       },
     },
   },
   {
     item: { key: "taxFreePrice", title: "无税单价" },
     attr: {
-      component: "dr-computed-input",
+      component: "el-computed-input-v2",
       formatter: (prop) => {
-        const { taxFreePrice } = prop;
-        return (taxFreePrice * 1).toFixed(6);
+        return (prop * 1).toFixed(CONFIG.precision);
+      },
+    },
+    listeners: {
+      click: (prop) => {
+        console.log("prop", prop);
       },
     },
   },
   {
     item: { key: "taxPrice", title: "主含税单价" },
     attr: {
-      component: "dr-computed-input",
+      component: "el-computed-input-v2",
       formatter: (prop) => {
-        const { taxPrice } = prop;
-        return (taxPrice * 1).toFixed(6);
+        return (prop * 1).toFixed(CONFIG.precision);
       },
     },
   },
@@ -59,7 +63,8 @@ export const TableColumns = [
       component: "el-input-number",
       min: () => 0,
       max: (prop) => {
-        return prop.puQty - (prop.executeQty || 0);
+        const { puQty = 0, executeQty = 0 } = prop;
+        return puQty - executeQty;
       },
       controlsPosition: "right",
     },
@@ -69,7 +74,6 @@ export const TableColumns = [
     attr: {
       component: "el-date-picker",
       valueFormat: "yyyy-MM-dd",
-      width: 300,
       pickerOptions: {
         disabledDate(time) {
           return time.getTime() < Date.now();

+ 11 - 7
src/views/purchase/task/first-direct/index.vue

@@ -3,7 +3,10 @@ import { TableColumns } from "./column";
 import { FIRSTDIRECT, ADD } from "@/api/business/purchase/task";
 export default {
   name: "FirstDirectPurchaseDrawer",
-  components: {},
+  components: {
+    ElDictTag: () => import("@/components/DictTag/index.vue"),
+    ElComputedInputV2: () => import("@/components/computed-input-v2/index.vue"),
+  },
   data() {
     return {
       size: "mini",
@@ -155,7 +158,7 @@ export default {
         >
           <template slot-scope="scope">
             <el-input-number
-              v-if="cItem.attr.component === 'el-input-number'"
+              v-if="cItem.item.key === 'el-input-number'"
               v-model="scope.row[cItem.item.key]"
               :size="size"
               :min="cItem.attr.min(item)"
@@ -180,15 +183,16 @@ export default {
               type="textarea"
               style="width: 90%"
             ></el-input>
-            <dr-computed-input
-              v-else-if="cItem.attr.component === 'dr-computed-input'"
+            <el-computed-input-v2
+              v-else-if="cItem.attr.component === 'el-computed-input-v2'"
+              v-on="cItem.listeners"
               v-model="scope.row[cItem.item.key]"
               :source="scope.row"
               :formatter="cItem.attr.formatter"
               style="width: 100%"
-            ></dr-computed-input>
-            <dict-tag
-              v-else-if="cItem.attr.component === 'dict-tag'"
+            ></el-computed-input-v2>
+            <el-dict-tag
+              v-else-if="cItem.attr.component === 'el-dict-tag'"
               :size="size"
               :value="scope.row[cItem.item.key]"
               :options="$dicts[cItem.attr.dictName]"

+ 0 - 1
src/views/purchase/task/index.vue

@@ -188,7 +188,6 @@ export default {
               v-bind="column.attr"
               v-model="params[column.item.key]"
               :source.sync="params"
-              :is="column.attr.component"
               @change="useQuery(params, page)"
               @keyup.enter.native="useQuery(params, page)"
               style="width: 100%"