002201 1 năm trước cách đây
mục cha
commit
a43c1b7fd2

+ 9 - 3
src/components/computed-input-v2/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <span v-on="$listeners">{{ innerValue || "- -" }}</span>
+  <span v-on="$listeners">{{ innerValue || "--" }}</span>
 </template>
 
 <script>
@@ -17,6 +17,10 @@ export default {
       default: () => {},
       require: true,
     },
+    // formatter
+    source: {
+      type: Object,
+    },
   },
   data() {
     return {};
@@ -24,13 +28,15 @@ export default {
   computed: {
     innerValue: {
       get() {
-        return this.formatter(this.value);
+        return this.formatter(this.source || this.value);
       },
     },
   },
   watch: {},
   methods: {},
-  created() {},
+  created() {
+    console.log(this, this.$props.source);
+  },
   mounted() {},
   destroyed() {},
 };

+ 3 - 1
src/components/computed-input/index.vue

@@ -42,7 +42,9 @@ export default {
     },
   },
   methods: {},
-  created() {},
+  created() {
+   
+  },
   mounted() {},
   destroyed() {},
 };

+ 78 - 63
src/views/purchase/catalogue/index.vue

@@ -122,16 +122,7 @@ export default {
 </script>
 
 <template>
-  <el-card
-    v-loading="loading"
-    style="
-      width: calc(100% - 20px);
-      height: 100%;
-      margin: 10px;
-      padding: 0 20px 20px 0;
-    "
-    :body-style="{ padding: 0 }"
-  >
+  <el-card v-loading="loading" :body-style="{ padding: 0 }">
     <see-model ref="SeeModel"></see-model>
     <export-model ref="ExportModel"></export-model>
     <invalid-model
@@ -147,61 +138,56 @@ export default {
       :model="params"
       label-width="auto"
       label-position="right"
-      style="padding: 20px 0 0"
     >
-      <el-row style="display: flex; flex-wrap: wrap">
-        <el-col :span="22">
-          <el-row :gutter="20" style="display: flex; flex-wrap: wrap">
-            <el-col
-              v-for="column in searchColumns"
-              :key="column.title"
-              :span="column.span || 6"
+      <el-row :gutter="20" style="display: flex; flex-wrap: wrap">
+        <el-col
+          v-for="column in searchColumns"
+          :key="column.title"
+          :span="column.span || 6"
+        >
+          <el-form-item :prop="column.key" :label="column.title">
+            <el-input
+              v-if="column.inputType === 'Input'"
+              v-model="params[column.key]"
+              :placeholder="column.placeholder"
+              style="width: 100%"
+              @keyup.enter.native="useQuery(params, page)"
+            ></el-input>
+            <el-select
+              v-if="column.inputType === 'Select'"
+              v-model="params[column.key]"
+              :disabled="column.disabled"
+              :clearable="column.clearable"
+              :placeholder="column.placeholder"
+              style="width: 100%"
+              @change="useQuery(params, page)"
+              @keyup.enter.native="useQuery(params, page)"
             >
-              <el-form-item :prop="column.key" :label="column.title">
-                <el-input
-                  v-if="column.inputType === 'Input'"
-                  v-model="params[column.key]"
-                  :placeholder="column.placeholder"
-                  style="width: 100%"
-                  @keyup.enter.native="useQuery(params, page)"
-                ></el-input>
-                <el-select
-                  v-if="column.inputType === 'Select'"
-                  v-model="params[column.key]"
-                  :disabled="column.disabled"
-                  :clearable="column.clearable"
-                  :placeholder="column.placeholder"
-                  style="width: 100%"
-                  @change="useQuery(params, page)"
-                  @keyup.enter.native="useQuery(params, page)"
-                >
-                  <el-option
-                    v-for="item in dict.type[column.referName]"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                  >
-                  </el-option>
-                </el-select>
-                <dr-popover-select
-                  v-if="column.inputType === 'PopoverSelect'"
-                  v-model="params[column.key]"
-                  :size="size"
-                  :source.sync="params"
-                  :title="column.title"
-                  :type="column.referName"
-                  :multiple="column.multiple"
-                  :readonly="column.readonly"
-                  :value-key="column.valueKey"
-                  :placeholder="column.placeholder"
-                  :data-mapping="column.dataMapping"
-                  @change="useQuery(params, page)"
-                  @keyup.enter.native="useQuery(params, page)"
-                >
-                </dr-popover-select>
-              </el-form-item>
-            </el-col>
-          </el-row>
+              <el-option
+                v-for="item in dict.type[column.referName]"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+            <dr-popover-select
+              v-if="column.inputType === 'PopoverSelect'"
+              v-model="params[column.key]"
+              :size="size"
+              :source.sync="params"
+              :title="column.title"
+              :type="column.referName"
+              :multiple="column.multiple"
+              :readonly="column.readonly"
+              :value-key="column.valueKey"
+              :placeholder="column.placeholder"
+              :data-mapping="column.dataMapping"
+              @change="useQuery(params, page)"
+              @keyup.enter.native="useQuery(params, page)"
+            >
+            </dr-popover-select>
+          </el-form-item>
         </el-col>
       </el-row>
     </el-form>
@@ -236,6 +222,7 @@ export default {
       </el-button>
     </el-row>
     <el-table
+      v-if="tableData.length"
       :size="size"
       :data="tableData"
       highlight-current-row
@@ -284,6 +271,7 @@ export default {
         </template>
       </el-table-column>
     </el-table>
+    <el-empty v-else :image-size="200"></el-empty>
     <pagination
       :total="page.total"
       :page.sync="page.pageNum"
@@ -292,3 +280,30 @@ export default {
     />
   </el-card>
 </template>
+<style scoped lang="scss">
+.el-card {
+  width: calc(100% - 20px);
+  height: 100%;
+  margin: 10px;
+  padding: 0 0 20px 0;
+  .el-form {
+    padding: 20px 0 0;
+  }
+  .el-row {
+    display: flex;
+    flex-wrap: wrap;
+    padding: 0 20px;
+  }
+  ::v-deep .el-table--mini {
+    width: 100%;
+    margin: 20px 0 0 0;
+    .el-table__cell {
+      height: 50px;
+    }
+    td.el-table__cell {
+      border-right: 0;
+      // border-bottom: 0;
+    }
+  }
+}
+</style>

+ 7 - 5
src/views/purchase/contract/add/column.js

@@ -406,7 +406,7 @@ export default function useColumns() {
           item: { title: "含税金额合计", key: "taxMoney" },
           attr: {
             is: "el-computed-input-v2",
-            computed: (prop) => {
+            formatter: (prop) => {
               const { qty = 0, taxPrice = 0 } = prop;
               return (qty * taxPrice * 1).toFixed(CONFIG.precision);
             },
@@ -416,7 +416,7 @@ export default function useColumns() {
           item: { title: "无税单价", key: "taxFreePrice" },
           attr: {
             is: "el-computed-input-v2",
-            computed: (prop) => {
+            formatter: (prop) => {
               const { tax = 0, taxPrice = 0 } = prop;
               return ((taxPrice / (tax / 100 + 1)) * 1).toFixed(
                 CONFIG.precision
@@ -428,9 +428,11 @@ export default function useColumns() {
           item: { title: "无税金额合计", key: "taxFreeMoney" },
           attr: {
             is: "el-computed-input-v2",
-            computed: (prop) => {
-              const { qty = 0, taxFreePrice = 0 } = prop;
-              return (qty * taxFreePrice * 1).toFixed(CONFIG.precision);
+            formatter: (prop) => {
+              const { qty = 0, tax = 0, taxPrice = 0 } = prop;
+              return (qty * (taxPrice / (tax / 100 + 1)) * 1).toFixed(
+                CONFIG.precision
+              );
             },
           },
         },

+ 8 - 6
src/views/purchase/contract/edit/column.js

@@ -382,7 +382,7 @@ export default function useColumns() {
           item: { title: "税率%", key: "tax" },
           attr: {
             is: "el-popover-select-v2",
-            valueKey: "name",
+            valueKey: "ntaxrate",
             referName: "TAX_RATE_PARAM",
             dataMapping: {
               tax: "ntaxrate",
@@ -406,7 +406,7 @@ export default function useColumns() {
           item: { title: "含税金额合计", key: "taxMoney" },
           attr: {
             is: "el-computed-input-v2",
-            computed: (prop) => {
+            formatter: (prop) => {
               const { qty = 0, taxPrice = 0 } = prop;
               return (qty * taxPrice * 1).toFixed(CONFIG.precision);
             },
@@ -416,7 +416,7 @@ export default function useColumns() {
           item: { title: "无税单价", key: "taxFreePrice" },
           attr: {
             is: "el-computed-input-v2",
-            computed: (prop) => {
+            formatter: (prop) => {
               const { tax = 0, taxPrice = 0 } = prop;
               return ((taxPrice / (tax / 100 + 1)) * 1).toFixed(
                 CONFIG.precision
@@ -428,9 +428,11 @@ export default function useColumns() {
           item: { title: "无税金额合计", key: "taxFreeMoney" },
           attr: {
             is: "el-computed-input-v2",
-            computed: (prop) => {
-              const { qty = 0, taxFreePrice = 0 } = prop;
-              return (qty * taxFreePrice * 1).toFixed(CONFIG.precision);
+            formatter: (prop) => {
+              const { qty = 0, tax = 0, taxPrice = 0 } = prop;
+              return (qty * (taxPrice / (tax / 100 + 1)) * 1).toFixed(
+                CONFIG.precision
+              );
             },
           },
         },

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

@@ -69,6 +69,7 @@ export default {
           if (code === 200) {
             const [{ ntaxrate }] = rows;
             source.tax = ntaxrate === "0E-8" ? "0.00000000" : ntaxrate;
+            console.log("ntaxrate", ntaxrate);
           }
         } catch (err) {
           // catch

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

@@ -51,7 +51,7 @@ export default {
         const rule5 = pigeonhole === "Y";
         return {
           // 修 改
-          edit: rule1 && !rule4,
+          edit: rule1 && rule3,
           // 删 除
           delt: rule1 && rule3,
           // 终 止

+ 5 - 5
src/views/purchase/contract/see/column.js

@@ -209,7 +209,7 @@ export default function useColumns() {
           item: { title: "采购数量", key: "qty" },
           attr: {
             is: "el-computed-input-v2",
-            formatter: (prop) => {
+            formatter: (prop = 0) => {
               return (prop * 1).toFixed(CONFIG.precision);
             },
           },
@@ -218,7 +218,7 @@ export default function useColumns() {
           item: { title: "含税单价", key: "taxPrice" },
           attr: {
             is: "el-computed-input-v2",
-            formatter: (prop) => {
+            formatter: (prop = 0) => {
               return (prop * 1).toFixed(CONFIG.precision);
             },
           },
@@ -227,7 +227,7 @@ export default function useColumns() {
           item: { title: "含税金额合计", key: "taxMoney" },
           attr: {
             is: "el-computed-input-v2",
-            formatter: (prop) => {
+            formatter: (prop = 0) => {
               return (prop * 1).toFixed(CONFIG.precision);
             },
           },
@@ -236,7 +236,7 @@ export default function useColumns() {
           item: { title: "无税单价", key: "taxFreePrice" },
           attr: {
             is: "el-computed-input-v2",
-            formatter: (prop) => {
+            formatter: (prop = 0) => {
               return (prop * 1).toFixed(CONFIG.precision);
             },
           },
@@ -245,7 +245,7 @@ export default function useColumns() {
           item: { title: "无税金额合计", key: "taxFreeMoney" },
           attr: {
             is: "el-computed-input-v2",
-            formatter: (prop) => {
+            formatter: (prop = 0) => {
               return (prop * 1).toFixed(CONFIG.precision);
             },
           },

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

@@ -81,28 +81,8 @@ export default {
       this.tabName = tabName;
       this.params = initParams([...TabColumns, ...FormColumns]);
     },
-    // //
-    // async useDelete(prop) {
-    //   await this.root
-    //     .useDelete(prop)
-    //     .then(() => {
-    //       this.hide();
-    //     })
-    //     .catch(() => {});
-    // },
-    // //
-    // async useTermination(prop) {
-    //   await this.root
-    //     .useTermination(prop)
-    //     .then(() => {
-    //       this.fetchItem(this.params.id);
-    //     })
-    //     .catch(() => {});
-    // },
-  },
-  created() {
-    console.log(this);
   },
+  created() {},
   mounted() {},
   destroyed() {},
 };
@@ -117,84 +97,6 @@ export default {
     <template slot="title">
       <span>{{ title }}</span>
       <span>
-        <!-- <el-tooltip
-          v-if="root.hasPowerDelete([params])"
-          effect="dark"
-          content="删 除"
-          placement="bottom-end"
-        >
-          <el-button
-            :size="size"
-            circle
-            icon="el-icon-delete"
-            @click="useDelete([params])"
-          ></el-button>
-        </el-tooltip>
-        <el-tooltip
-          v-if="root.hasPowerAlteration([params])"
-          effect="dark"
-          content="变 更"
-          placement="bottom-end"
-        >
-          <el-button
-            :size="size"
-            circle
-            icon="el-icon-edit"
-            @click="root.useEdit([params])"
-          ></el-button>
-        </el-tooltip>
-        <el-tooltip
-          v-if="root.hasPowerEdit([params])"
-          effect="dark"
-          content="编 辑"
-          placement="bottom-end"
-        >
-          <el-button
-            :size="size"
-            circle
-            icon="el-icon-edit"
-            @click="root.useEdit([params])"
-          ></el-button>
-        </el-tooltip>
-        <el-tooltip
-          v-if="root.hasPowerTermination([params])"
-          effect="dark"
-          content="终 止"
-          placement="bottom-end"
-        >
-          <el-button
-            :size="size"
-            circle
-            icon="el-icon-light-rain"
-            @click="useTermination([params])"
-          ></el-button>
-        </el-tooltip>
-        <el-tooltip
-          v-if="root.hasPowerPigeonhole([params])"
-          effect="dark"
-          content="归 档"
-          placement="bottom-end"
-        >
-          <el-button
-            :size="size"
-            circle
-            icon="el-icon-lightning"
-            @click="root.usePigeonhole([params])"
-          ></el-button>
-        </el-tooltip>
-        <el-tooltip
-          v-if="root.hasPowerSubmit([params])"
-          effect="dark"
-          content="提交OA"
-          placement="bottom-end"
-        >
-          <el-button
-            :size="size"
-            circle
-            icon="el-icon-heavy-rain"
-            @click="root.useSubmit([params])"
-          ></el-button>
-        </el-tooltip> -->
         <el-button
           :size="size"
           circle

+ 6 - 11
src/views/purchase/task/first-direct/column.js

@@ -26,11 +26,11 @@ export const TableColumns = [
     attr: {},
   },
   {
-    item: { key: "tax", title: "税率" },
+    item: { key: "tax", title: "税率 (%)" },
     attr: {
       component: "el-computed-input-v2",
       formatter: (prop) => {
-        return (prop * 1).toFixed(CONFIG.precision) + "%";
+        return (prop.tax * 1).toFixed(CONFIG.precision);
       },
     },
   },
@@ -38,13 +38,8 @@ export const TableColumns = [
     item: { key: "taxFreePrice", title: "无税单价" },
     attr: {
       component: "el-computed-input-v2",
-      formatter: (prop) => {
-        return (prop * 1).toFixed(CONFIG.precision);
-      },
-    },
-    listeners: {
-      click: (prop) => {
-        console.log("prop", prop);
+      formatter: (prop = 0) => {
+        return (prop.tax * 1).toFixed(CONFIG.precision);
       },
     },
   },
@@ -52,8 +47,8 @@ export const TableColumns = [
     item: { key: "taxPrice", title: "主含税单价" },
     attr: {
       component: "el-computed-input-v2",
-      formatter: (prop) => {
-        return (prop * 1).toFixed(CONFIG.precision);
+      formatter: (prop = 0) => {
+        return (prop.tax * 1).toFixed(CONFIG.precision);
       },
     },
   },