qymljy 2 роки тому
батько
коміт
824c47981d

+ 176 - 96
package-lock.json

@@ -2659,18 +2659,6 @@
         "@uppy/core": "^2.3.1"
       }
     },
-    "node_modules/@vitejs/plugin-vue": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-1.9.3.tgz",
-      "integrity": "sha512-yW6H/q+4Mc2PcVjSOelcsMrg/k15DnMUz8jyCFsI04emc3aLwo4AoofUfGnjHUkgirrDxSJLVqQVGhonQ3yykA==",
-      "dev": true,
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "peerDependencies": {
-        "vite": "^2.5.10"
-      }
-    },
     "node_modules/@vitejs/plugin-vue-jsx": {
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.2.0.tgz",
@@ -6489,32 +6477,14 @@
       }
     },
     "node_modules/esbuild": {
-      "version": "0.13.15",
-      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.13.15.tgz",
-      "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==",
+      "version": "0.8.57",
+      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.8.57.tgz",
+      "integrity": "sha512-j02SFrUwFTRUqiY0Kjplwjm1psuzO1d6AjaXKuOR9hrY0HuPsT6sV42B6myW34h1q4CRy+Y3g4RU/cGJeI/nNA==",
       "dev": true,
       "hasInstallScript": true,
+      "peer": true,
       "bin": {
         "esbuild": "bin/esbuild"
-      },
-      "optionalDependencies": {
-        "esbuild-android-arm64": "0.13.15",
-        "esbuild-darwin-64": "0.13.15",
-        "esbuild-darwin-arm64": "0.13.15",
-        "esbuild-freebsd-64": "0.13.15",
-        "esbuild-freebsd-arm64": "0.13.15",
-        "esbuild-linux-32": "0.13.15",
-        "esbuild-linux-64": "0.13.15",
-        "esbuild-linux-arm": "0.13.15",
-        "esbuild-linux-arm64": "0.13.15",
-        "esbuild-linux-mips64le": "0.13.15",
-        "esbuild-linux-ppc64le": "0.13.15",
-        "esbuild-netbsd-64": "0.13.15",
-        "esbuild-openbsd-64": "0.13.15",
-        "esbuild-sunos-64": "0.13.15",
-        "esbuild-windows-32": "0.13.15",
-        "esbuild-windows-64": "0.13.15",
-        "esbuild-windows-arm64": "0.13.15"
       }
     },
     "node_modules/esbuild-android-arm64": {
@@ -13008,40 +12978,25 @@
       }
     },
     "node_modules/vite": {
-      "version": "2.6.7",
-      "resolved": "https://registry.npmmirror.com/vite/-/vite-2.6.7.tgz",
-      "integrity": "sha512-ewk//jve9k6vlU8PfJmWUHN8k0YYdw4VaKOMvoQ3nT2Pb6k5OSMKQi4jPOzVH/TlUqMsCrq7IJ80xcuDDVyigg==",
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/vite/-/vite-2.0.5.tgz",
+      "integrity": "sha512-QTgEDbq1WsTtr6j+++ewjhBFEk6c8v0xz4fb/OWJQKNYU8ZZtphOshwOqAlnarSstPBtWCBR0tsugXx6ajfoUg==",
       "dev": true,
+      "peer": true,
       "dependencies": {
-        "esbuild": "^0.13.2",
-        "postcss": "^8.3.8",
-        "resolve": "^1.20.0",
-        "rollup": "^2.57.0"
+        "esbuild": "^0.8.52",
+        "postcss": "^8.2.1",
+        "resolve": "^1.19.0",
+        "rollup": "^2.38.5"
       },
       "bin": {
         "vite": "bin/vite.js"
       },
       "engines": {
-        "node": ">=12.2.0"
+        "node": ">=12.0.0"
       },
       "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      },
-      "peerDependencies": {
-        "less": "*",
-        "sass": "*",
-        "stylus": "*"
-      },
-      "peerDependenciesMeta": {
-        "less": {
-          "optional": true
-        },
-        "sass": {
-          "optional": true
-        },
-        "stylus": {
-          "optional": true
-        }
+        "fsevents": "~2.3.1"
       }
     },
     "node_modules/vite-plugin-checker": {
@@ -13563,6 +13518,7 @@
       "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.77.0.tgz",
       "integrity": "sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==",
       "dev": true,
+      "peer": true,
       "bin": {
         "rollup": "dist/bin/rollup"
       },
@@ -13772,6 +13728,18 @@
         "vls": "0.7.4"
       }
     },
+    "node_modules/vue-cli-plugin-vite/node_modules/@vitejs/plugin-vue": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-1.9.3.tgz",
+      "integrity": "sha512-yW6H/q+4Mc2PcVjSOelcsMrg/k15DnMUz8jyCFsI04emc3aLwo4AoofUfGnjHUkgirrDxSJLVqQVGhonQ3yykA==",
+      "dev": true,
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^2.5.10"
+      }
+    },
     "node_modules/vue-cli-plugin-vite/node_modules/ansi-styles": {
       "version": "4.3.0",
       "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -13815,6 +13783,35 @@
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
       "dev": true
     },
+    "node_modules/vue-cli-plugin-vite/node_modules/esbuild": {
+      "version": "0.13.15",
+      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.13.15.tgz",
+      "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "optionalDependencies": {
+        "esbuild-android-arm64": "0.13.15",
+        "esbuild-darwin-64": "0.13.15",
+        "esbuild-darwin-arm64": "0.13.15",
+        "esbuild-freebsd-64": "0.13.15",
+        "esbuild-freebsd-arm64": "0.13.15",
+        "esbuild-linux-32": "0.13.15",
+        "esbuild-linux-64": "0.13.15",
+        "esbuild-linux-arm": "0.13.15",
+        "esbuild-linux-arm64": "0.13.15",
+        "esbuild-linux-mips64le": "0.13.15",
+        "esbuild-linux-ppc64le": "0.13.15",
+        "esbuild-netbsd-64": "0.13.15",
+        "esbuild-openbsd-64": "0.13.15",
+        "esbuild-sunos-64": "0.13.15",
+        "esbuild-windows-32": "0.13.15",
+        "esbuild-windows-64": "0.13.15",
+        "esbuild-windows-arm64": "0.13.15"
+      }
+    },
     "node_modules/vue-cli-plugin-vite/node_modules/has-flag": {
       "version": "4.0.0",
       "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
@@ -13824,6 +13821,21 @@
         "node": ">=8"
       }
     },
+    "node_modules/vue-cli-plugin-vite/node_modules/rollup": {
+      "version": "2.79.1",
+      "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz",
+      "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+      "dev": true,
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
     "node_modules/vue-cli-plugin-vite/node_modules/semver": {
       "version": "7.3.5",
       "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz",
@@ -13851,6 +13863,43 @@
         "node": ">=8"
       }
     },
+    "node_modules/vue-cli-plugin-vite/node_modules/vite": {
+      "version": "2.6.7",
+      "resolved": "https://registry.npmmirror.com/vite/-/vite-2.6.7.tgz",
+      "integrity": "sha512-ewk//jve9k6vlU8PfJmWUHN8k0YYdw4VaKOMvoQ3nT2Pb6k5OSMKQi4jPOzVH/TlUqMsCrq7IJ80xcuDDVyigg==",
+      "dev": true,
+      "dependencies": {
+        "esbuild": "^0.13.2",
+        "postcss": "^8.3.8",
+        "resolve": "^1.20.0",
+        "rollup": "^2.57.0"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": ">=12.2.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      },
+      "peerDependencies": {
+        "less": "*",
+        "sass": "*",
+        "stylus": "*"
+      },
+      "peerDependenciesMeta": {
+        "less": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/vue-countupjs": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/vue-countupjs/-/vue-countupjs-1.0.0.tgz",
@@ -16810,13 +16859,6 @@
         "nanoid": "^3.1.25"
       }
     },
-    "@vitejs/plugin-vue": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-1.9.3.tgz",
-      "integrity": "sha512-yW6H/q+4Mc2PcVjSOelcsMrg/k15DnMUz8jyCFsI04emc3aLwo4AoofUfGnjHUkgirrDxSJLVqQVGhonQ3yykA==",
-      "dev": true,
-      "requires": {}
-    },
     "@vitejs/plugin-vue-jsx": {
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.2.0.tgz",
@@ -20014,29 +20056,11 @@
       }
     },
     "esbuild": {
-      "version": "0.13.15",
-      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.13.15.tgz",
-      "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==",
+      "version": "0.8.57",
+      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.8.57.tgz",
+      "integrity": "sha512-j02SFrUwFTRUqiY0Kjplwjm1psuzO1d6AjaXKuOR9hrY0HuPsT6sV42B6myW34h1q4CRy+Y3g4RU/cGJeI/nNA==",
       "dev": true,
-      "requires": {
-        "esbuild-android-arm64": "0.13.15",
-        "esbuild-darwin-64": "0.13.15",
-        "esbuild-darwin-arm64": "0.13.15",
-        "esbuild-freebsd-64": "0.13.15",
-        "esbuild-freebsd-arm64": "0.13.15",
-        "esbuild-linux-32": "0.13.15",
-        "esbuild-linux-64": "0.13.15",
-        "esbuild-linux-arm": "0.13.15",
-        "esbuild-linux-arm64": "0.13.15",
-        "esbuild-linux-mips64le": "0.13.15",
-        "esbuild-linux-ppc64le": "0.13.15",
-        "esbuild-netbsd-64": "0.13.15",
-        "esbuild-openbsd-64": "0.13.15",
-        "esbuild-sunos-64": "0.13.15",
-        "esbuild-windows-32": "0.13.15",
-        "esbuild-windows-64": "0.13.15",
-        "esbuild-windows-arm64": "0.13.15"
-      }
+      "peer": true
     },
     "esbuild-android-arm64": {
       "version": "0.13.15",
@@ -25137,16 +25161,17 @@
       "dev": true
     },
     "vite": {
-      "version": "2.6.7",
-      "resolved": "https://registry.npmmirror.com/vite/-/vite-2.6.7.tgz",
-      "integrity": "sha512-ewk//jve9k6vlU8PfJmWUHN8k0YYdw4VaKOMvoQ3nT2Pb6k5OSMKQi4jPOzVH/TlUqMsCrq7IJ80xcuDDVyigg==",
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/vite/-/vite-2.0.5.tgz",
+      "integrity": "sha512-QTgEDbq1WsTtr6j+++ewjhBFEk6c8v0xz4fb/OWJQKNYU8ZZtphOshwOqAlnarSstPBtWCBR0tsugXx6ajfoUg==",
       "dev": true,
+      "peer": true,
       "requires": {
-        "esbuild": "^0.13.2",
-        "fsevents": "~2.3.2",
-        "postcss": "^8.3.8",
-        "resolve": "^1.20.0",
-        "rollup": "^2.57.0"
+        "esbuild": "^0.8.52",
+        "fsevents": "~2.3.1",
+        "postcss": "^8.2.1",
+        "resolve": "^1.19.0",
+        "rollup": "^2.38.5"
       },
       "dependencies": {
         "rollup": {
@@ -25154,6 +25179,7 @@
           "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.77.0.tgz",
           "integrity": "sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==",
           "dev": true,
+          "peer": true,
           "requires": {
             "fsevents": "~2.3.2"
           }
@@ -25747,6 +25773,13 @@
         "vls": "0.7.4"
       },
       "dependencies": {
+        "@vitejs/plugin-vue": {
+          "version": "1.9.3",
+          "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-1.9.3.tgz",
+          "integrity": "sha512-yW6H/q+4Mc2PcVjSOelcsMrg/k15DnMUz8jyCFsI04emc3aLwo4AoofUfGnjHUkgirrDxSJLVqQVGhonQ3yykA==",
+          "dev": true,
+          "requires": {}
+        },
         "ansi-styles": {
           "version": "4.3.0",
           "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -25781,12 +25814,46 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
+        "esbuild": {
+          "version": "0.13.15",
+          "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.13.15.tgz",
+          "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==",
+          "dev": true,
+          "requires": {
+            "esbuild-android-arm64": "0.13.15",
+            "esbuild-darwin-64": "0.13.15",
+            "esbuild-darwin-arm64": "0.13.15",
+            "esbuild-freebsd-64": "0.13.15",
+            "esbuild-freebsd-arm64": "0.13.15",
+            "esbuild-linux-32": "0.13.15",
+            "esbuild-linux-64": "0.13.15",
+            "esbuild-linux-arm": "0.13.15",
+            "esbuild-linux-arm64": "0.13.15",
+            "esbuild-linux-mips64le": "0.13.15",
+            "esbuild-linux-ppc64le": "0.13.15",
+            "esbuild-netbsd-64": "0.13.15",
+            "esbuild-openbsd-64": "0.13.15",
+            "esbuild-sunos-64": "0.13.15",
+            "esbuild-windows-32": "0.13.15",
+            "esbuild-windows-64": "0.13.15",
+            "esbuild-windows-arm64": "0.13.15"
+          }
+        },
         "has-flag": {
           "version": "4.0.0",
           "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
           "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
           "dev": true
         },
+        "rollup": {
+          "version": "2.79.1",
+          "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz",
+          "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+          "dev": true,
+          "requires": {
+            "fsevents": "~2.3.2"
+          }
+        },
         "semver": {
           "version": "7.3.5",
           "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz",
@@ -25804,6 +25871,19 @@
           "requires": {
             "has-flag": "^4.0.0"
           }
+        },
+        "vite": {
+          "version": "2.6.7",
+          "resolved": "https://registry.npmmirror.com/vite/-/vite-2.6.7.tgz",
+          "integrity": "sha512-ewk//jve9k6vlU8PfJmWUHN8k0YYdw4VaKOMvoQ3nT2Pb6k5OSMKQi4jPOzVH/TlUqMsCrq7IJ80xcuDDVyigg==",
+          "dev": true,
+          "requires": {
+            "esbuild": "^0.13.2",
+            "fsevents": "~2.3.2",
+            "postcss": "^8.3.8",
+            "resolve": "^1.20.0",
+            "rollup": "^2.57.0"
+          }
         }
       }
     },

+ 134 - 0
src/HDrpManagement/prodectFileData/components/add.vue

@@ -0,0 +1,134 @@
+<template>
+  <div>
+    <el-button size="small" type="primary"  @click="onShow">新增关联商品</el-button>
+    <el-dialog
+        :visible.sync="drawer"
+        width="1100px"
+        @close="onClose"
+    >
+      <div>
+        <el-table
+            ref="multipleTable"
+            :data="productsList"
+            tooltip-effect="dark"
+            style="width: 100%"
+            @selection-change="handleSelectionChange"
+           >
+          <el-table-column
+              type="selection"
+              width="55">
+          </el-table-column>
+          <el-table-column
+              label="商品名称"
+              width="260">
+            <template slot-scope="scope">{{ scope.row.itemname }}</template>
+          </el-table-column>
+          <el-table-column
+              label="商品编号"
+              width="260">
+            <template slot-scope="scope">{{ scope.row.itemno }}</template>
+          </el-table-column>
+          <el-table-column
+              label="商品型号"
+              width="260">
+            <template slot-scope="scope">{{ scope.row.model }}</template>
+          </el-table-column>
+          <el-table-column
+              label="商品规格"
+              >
+            <template slot-scope="scope">{{ scope.row.spec }}</template>
+          </el-table-column>
+        </el-table>
+        <div style="margin-top: 20px">
+          <el-button type="primary" @click="onSubmit">确定</el-button>
+          <el-button @click="toggleSelection()">取消选择</el-button>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "add",
+  props:["plm_technicalinfoid"],
+  data(){
+    return {
+      drawer:false,
+      add:false,
+      form:{
+        itemid:''
+      },
+      rules:{
+        itemid: [
+          { required: true, message: '档案名称不可为空', trigger: 'blur' },
+        ],
+      },
+      productsList:[],
+      multipleSelection: [],
+    }
+  },
+  mounted() {
+
+  },
+  methods: {
+    onShow(){
+      this.drawer = true
+      this.queryProducts()
+    },
+    onClose(){
+      this.drawer = false
+      this.form.itemid=''
+    },
+    async queryProducts(){
+      const res = await this.$api.requested({
+        "id": 20220923140602,
+        "content": {
+          "where": {
+            "condition": ""
+          }
+        },
+      })
+      console.log(res)
+      this.productsList = res.data
+    },
+    toggleSelection(rows) {
+      if (rows) {
+        rows.forEach(row => {
+          this.$refs.multipleTable.toggleRowSelection(row);
+        });
+      } else {
+        this.$refs.multipleTable.clearSelection();
+      }
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    async onSubmit(){
+      console.log(this.multipleSelection)
+      let arr = this.multipleSelection.map(e=>{
+        return {
+          plm_technicalinfo_itemid:0,
+          itemid:e.itemid
+        }
+      })
+      const res = await this.$api.requested({
+        "id": "20220926102003",
+        "version":1,
+        "content": {
+          "plm_technicalinfoid":this.plm_technicalinfoid,
+          "iteminfos":arr
+        }
+      })
+      this.tool.showMessage(res, () => {
+        this.drawer = false
+        this.$emit('addSuccess')
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 34 - 0
src/HDrpManagement/prodectFileData/components/fileDel.vue

@@ -0,0 +1,34 @@
+<template>
+  <div class="inline-16">
+    <el-popconfirm
+        title="确定删除此附件资料吗?"
+        @confirm="deleteRow()">
+      <el-button slot="reference" size="small" type="text">删 除</el-button>
+    </el-popconfirm>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "fileDel",
+  props:['data'],
+  methods:{
+    async deleteRow(){
+      console.log(this.data.linksid)
+      const res = await this.$api.requested({
+        "classname": "system.attachment.Attachment",
+        "method": "deleteFileLink",
+        "content": {
+          "linksids": [this.data.linksid]
+        }
+      })
+      console.log(res)
+      this.$emit('deleteSuccess')
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 54 - 0
src/HDrpManagement/prodectFileData/components/fileTable.vue

@@ -0,0 +1,54 @@
+<template>
+  <div>
+    <tableLayout :layout="tablecols" :data="list" :opwidth="200" :custom="true" :height="tableHieght">
+      <template v-slot:customcol="scope">
+        <p >{{scope.column.data[scope.column.columnname]}}</p>
+      </template>
+      <template v-slot:opreation="scope">
+        <div>
+          <slot name="del" :data="scope.data"></slot>
+        </div>
+      </template>
+    </tableLayout>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "fileTable",
+  props:["id"],
+  data(){
+    return {
+      tableHieght:420,
+      tablecols:[],
+      list:[]
+    }
+  },
+  mounted() {
+    this.listData()
+  },
+  methods:{
+    async listData(){
+      const res = await this.$api.requested({
+        "classname": "system.attachment.Attachment",
+        "method": "queryFileLink",
+        "content": {
+          "ownertable": "plm_technicalinfo",
+          "ownerid": this.id,
+          "usetype":"default"//传空返回有所
+        }
+      })
+      console.log("附件列表")
+      console.log(res)
+      this.list = res.data
+    }
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).fileTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 34 - 0
src/HDrpManagement/prodectFileData/components/relationDel.vue

@@ -0,0 +1,34 @@
+<template>
+  <div class="inline-16">
+    <el-popconfirm
+        title="确定删除此产品技术资料档案吗?"
+        @confirm="deleteRow()">
+      <el-button slot="reference" size="small" type="text">删 除</el-button>
+    </el-popconfirm>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "relationDel",
+  props:['data'],
+  methods:{
+    async deleteRow() {
+      const res = await this.$api.requested({
+        "id": "20220926102203",
+        "version":1,
+        "content": {
+          "plm_technicalinfo_itemid":this.data.plm_technicalinfo_itemid
+        }
+      })
+      this.tool.showMessage(res, () => {
+        this.$emit('deleteSuccess')
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 90 - 0
src/HDrpManagement/prodectFileData/components/relationList.vue

@@ -0,0 +1,90 @@
+<template>
+  <div>
+    <tableLayout :layout="tablecols" :data="list" :opwidth="200" :custom="true" :height="tableHieght">
+      <template v-slot:customcol="scope">
+        <div v-if="scope.column.columnname === 'isonsale' ">
+          <span v-if="scope.column.data[scope.column.columnname] === 0"
+          >下架
+          </span>
+          <span v-if="scope.column.data[scope.column.columnname] === 1"
+          >上架
+          </span>
+        </div>
+        <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+      </template>
+      <template v-slot:opreation="scope">
+        <div>
+          <slot name="del" :data="scope.data"></slot>
+        </div>
+      </template>
+    </tableLayout>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="currentPage"
+          :page-size="params.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "relationList",
+  props:["id"],
+  data(){
+    return {
+      tableHieght:420,
+      list:[],
+      tablecols:[],
+      total:0,
+      currentPage:0,
+      params:{
+        "id": "20220926102103",
+        "version":1,
+        "content": {
+          "plm_technicalinfoid":this.id,
+          "where":{
+            "condition":"",
+            "itemid":""
+          }
+        }
+      }
+    }
+  },
+  mounted() {
+    this.listData()
+  },
+  methods:{
+    async listData(){
+      const res = await this.$api.requested(this.params)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageTotal
+      console.log(res)
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).relationProductTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 47 - 0
src/HDrpManagement/prodectFileData/index.vue

@@ -0,0 +1,47 @@
+<template>
+  <div>
+    <div class="container normal-panel normal-margin">
+      <add @addSuccess="onSuccess"></add>
+    </div>
+    <div class="container normal-panel ">
+      <list ref="list">
+        <template v-slot:edit="scope">
+          <edit v-if="tool.checkAuth($route.name,'update')"  :data="scope.data"   :type="'text'" @updateSuccess="onSuccess"></edit>
+        </template>
+        <template v-slot:del="scope">
+          <file_del v-if="tool.checkAuth($route.name,'delete')" :data="scope.data" :type="'text'" @deleteSuccess="onSuccess"></file_del>
+        </template>
+        <template v-slot:bind="scope">
+          <el-button  :type="'text'" @click="$router.push({path:'/relation',query:{id:scope.data.plm_technicalinfoid}})">关联商品</el-button>
+        </template>
+      </list>
+    </div>
+  </div>
+</template>
+
+<script>
+import list from './modules/list'
+import add from './modules/add'
+import edit from './modules/edit'
+import file_del from './modules/fileDel'
+import relation from "./modules/relation"
+export default {
+  name: "index",
+  components: {
+    list,
+    add,
+    edit,
+    file_del,
+    relation
+  },
+  methods: {
+    onSuccess(){
+      this.$refs.list.listData()
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 84 - 0
src/HDrpManagement/prodectFileData/modules/add.vue

@@ -0,0 +1,84 @@
+<template>
+  <div>
+    <el-button size="small" type="primary" @click="onShow" >新增产品技术资料</el-button>
+    <el-dialog
+        :visible.sync="drawer"
+        width="450px"
+        @close="onClose"
+    >
+      <div>
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules"  ref="form"  size="mini" label-position="right" label-width="90px">
+            <el-col :span="20">
+              <el-form-item prop="type"  label="档案名称:">
+                <el-input v-model="form.type" placeholder="输入档案名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="20">
+              <el-form-item  label="档案备注:">
+                <el-input type="textarea" autosize v-model="form.remarks" placeholder="输入档案备注"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="dialog-footer">
+        <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit"   class="normal-btn-width btn-primary">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "add",
+  data() {
+    return {
+      drawer:false,
+      form:{
+        type:'',
+        remarks:''
+      },
+      rules:{
+        type: [
+          { required: true, message: '档案名称不可为空', trigger: 'blur' },
+        ],
+      },
+    }
+  },
+  methods:{
+    onShow() {
+      this.drawer = true
+    },
+    onClose() {
+      this.form = {
+        type:''
+      }
+    },
+    onSubmit(){
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20220926095703",
+          "version":1,
+          "content": {
+            "plm_technicalinfoid":0,
+            "type":this.form.type,
+            "remarks":this.form.remarks
+          }
+        })
+        this.tool.showMessage(res,() => {
+          this.drawer = false
+          this.$emit('addSuccess')
+        })
+      })
+    }
+  }
+
+}
+</script>
+
+<style scoped>
+
+</style>

+ 136 - 0
src/HDrpManagement/prodectFileData/modules/edit.vue

@@ -0,0 +1,136 @@
+<template>
+  <div class="inline-16">
+    <el-button size="small" type="text" @click="onShow">编辑</el-button>
+    <el-dialog
+        :visible.sync="drawer"
+        width="950px"
+        @close="onClose"
+    >
+      <div>
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules"  ref="form"  size="mini" label-position="left" label-width="90px">
+            <el-col :span="20">
+              <el-form-item prop="type"  label="档案名称:">
+                <el-input v-model="form.type" placeholder="输入档案名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="20">
+              <el-form-item  label="档案备注:">
+                <el-input type="textarea" autosize v-model="form.remarks" placeholder="输入档案备注"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="20">
+              <el-form-item  label="上传附件">
+                <uploadFile ref="upload" style="margin-top:10px" :folderid="folderid" accept=".text,.doc,.xls" :bindData="{ownertable:'plm_technicalinfo',ownerid:form.plm_technicalinfoid,usetype:'default'}" @onSuccess="uploadSuccess"></uploadFile>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div>
+        <file_table ref="list" :id="form.plm_technicalinfoid">
+          <template v-slot:del="scope">
+            <file_delete v-if="tool.checkAuth($route.name,'delete')" :data="scope.data" :type="'text'" @deleteSuccess="onSuccess"></file_delete>
+          </template>
+        </file_table>
+      </div>
+
+      <div class="dialog-footer">
+        <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit"   class="normal-btn-width btn-primary">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import uploadFile from '../../../components/upload/hw_obs_upload.vue'
+import file_table from "../components/fileTable";
+import file_delete from "../components/fileDel"
+export default {
+  props:['data'],
+  name: "edit",
+  data() {
+    return {
+      drawer:false,
+      form:[],
+      rules:{
+        type: [
+          { required: true, message: '档案名称不可为空', trigger: 'blur' },
+        ],
+      },
+      folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
+      attachmentids:[]
+    }
+  },
+  components:{
+    uploadFile,
+    file_table,
+    file_delete
+  },
+  mounted() {
+
+  },
+  methods: {
+    onShow(){
+      this.drawer = true
+      this.form = this.data
+      console.log(this.form)
+    },
+    onClose(){
+      this.drawer = false
+    },
+    async onSubmit(){
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20220926095703",
+          "version":1,
+          "content": {
+            "plm_technicalinfoid":this.form.plm_technicalinfoid,
+            "type":this.form.type,
+            "remarks":this.form.remarks
+          }
+        })
+        this.tool.showMessage(res,() => {
+          this.drawer = false
+
+          this.$emit('updateSuccess')
+        })
+      })
+    },
+    uploadSuccess(res){
+      console.log("输出")
+      console.log(res)
+      this.bindEnclosure(res.data.attachmentids)
+      this.form.attinfos = JSON.parse(res.attinfos).data
+      this.$refs['upload'].dialogUploadVisible = false
+
+    },
+    async bindEnclosure(attachmentids){
+      const res = await this.$api.requested({
+        "classname": "system.attachment.Attachment",
+        "method": "createFileLink",
+        "content": {
+          "ownertable": "plm_technicalinfo",
+          "ownerid": this.form.plm_technicalinfoid,
+          "usetype": "default",
+          "attachmentids": attachmentids
+        }
+      })
+      this.tool.showMessage(res,() => {
+        console.log(res)
+        console.log("上传查询")
+        this.$refs.list.listData()
+      })
+    },
+    onSuccess(){
+      this.$refs.list.listData()
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 35 - 0
src/HDrpManagement/prodectFileData/modules/fileDel.vue

@@ -0,0 +1,35 @@
+<template>
+  <div class="inline-16">
+    <el-popconfirm
+        title="确定删除此产品技术资料档案吗?"
+        @confirm="deleteRow()">
+      <el-button slot="reference" size="small" type="text">删 除</el-button>
+    </el-popconfirm>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "fileDel",
+  props:['data'],
+  methods: {
+    async deleteRow(){
+      const res = await this.$api.requested({
+        "id": "20220926095903",
+        "version":1,
+        "content": {
+          "plm_technicalinfoid":this.data.plm_technicalinfoid
+        }
+      })
+      this.tool.showMessage(res, ()=> {
+        console.log(res)
+        this.$emit('deleteSuccess')
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 81 - 0
src/HDrpManagement/prodectFileData/modules/list.vue

@@ -0,0 +1,81 @@
+<template>
+  <div>
+    <tableLayout :layout="tablecols" :data="list" :opwidth="200" :custom="true" :height="tableHieght">
+      <template v-slot:customcol="scope">
+        <p>{{scope.column.data[scope.column.columnname]}}</p>
+      </template>
+      <template v-slot:opreation="scope">
+        <slot name="edit" :data="scope.data"></slot>
+        <slot name="del" :data="scope.data"></slot>
+        <slot name="bind" :data="scope.data"></slot>
+      </template>
+    </tableLayout>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="currentPage"
+          :page-size="params.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "list",
+  data(){
+    return {
+      tableHieght:420,
+      tablecols:[],
+      list:[],
+      total:0,
+      currentPage:0,
+      params:{
+        "id": "20220926095803",
+        "version":1,
+        "content": {
+          pageSize:10,
+          pageNumber:1,
+          "where":{
+            "condition":""
+          }
+        }
+      }
+    }
+  },
+  mounted() {
+    this.listData()
+  },
+  methods: {
+    async listData(){
+      const res = await this.$api.requested(this.params)
+      console.log(res)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageTotal
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).prodectFileTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 42 - 0
src/HDrpManagement/prodectFileData/modules/relation.vue

@@ -0,0 +1,42 @@
+<template>
+  <div >
+    <div class="container normal-panel normal-margin">
+      <add :plm_technicalinfoid="this.$route.query.id" @addSuccess="onSuccess"></add>
+    </div>
+    <div class="container normal-panel ">
+      <relation_list ref="list" :id="this.$route.query.id">
+        <template v-slot:del="scope">
+          <relationDel v-if="tool.checkAuth($route.name,'delete')" :data="scope.data" :type="'text'" @deleteSuccess="onSuccess"></relationDel>
+        </template>
+      </relation_list>
+    </div>
+  </div>
+</template>
+
+<script>
+import relation_list from '../components/relationList'
+import add from '../components/add'
+import relationDel from '../components/relationDel'
+export default {
+  name: "relation",
+  data() {
+    return {
+
+    }
+  },
+  components:{
+    relation_list,
+    add,
+    relationDel
+  },
+  methods:{
+    onSuccess(){
+      this.$refs.list.listData()
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 37 - 18
src/router/HDrpManagement.js

@@ -1,12 +1,12 @@
 const HDrpManagement = [
   {
-      path: '/brandmag',
-      name: 'brandmag',
-      meta: {
-          title: '品牌管理',
-          ast_nav: true
-      },
-      component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/BrandManage/index')
+    path: '/brandmag',
+    name: 'brandmag',
+    meta: {
+      title: '品牌管理',
+      ast_nav: true,
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/BrandManage/index'),
   },
   {
     path: '/sm_unit',
@@ -14,9 +14,9 @@ const HDrpManagement = [
     meta: {
       title: '计量单位',
       ast_nav: true,
-      keeproute: true
+      keeproute: true,
     },
-    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/unit/index')
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/unit/index'),
   },
   {
     path: '/productgroupmag',
@@ -24,9 +24,9 @@ const HDrpManagement = [
     meta: {
       title: '商品组管理',
       ast_nav: true,
-      keeproute: true
+      keeproute: true,
     },
-    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/ProductGroupMag/index')
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/ProductGroupMag/index'),
   },
   {
     path: '/productmag',
@@ -34,18 +34,37 @@ const HDrpManagement = [
     meta: {
       title: '商品管理',
       ast_nav: true,
-      keeproute: true
+      keeproute: true,
     },
-    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/ProductMag/index')
-  },{
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/ProductMag/index'),
+  }, {
     path: '/sm_saleclass',
     name: 'saleclass',
     meta: {
       title: '营销类别管理',
       ast_nav: true,
-      keeproute: true
+      keeproute: true,
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/saleclass/index'),
+  },{
+    path: '/prodectFileData',
+    name: 'prodectFileData',
+    meta: {
+      title: '产品技术资料管理',
+      ast_nav: true,
+      keeproute: true,
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/prodectFileData/index'),
+  },{
+    path: '/relation',
+    name:'prodectFileData',
+    meta: {
+      title: '技术资料关联商品',
+      ast_nav: true,
+      keeproute: true,
     },
-    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/saleclass/index')
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/prodectFileData/modules/relation')
   }
-]
-export default HDrpManagement
+
+];
+export default HDrpManagement;