Ver Fonte

customFrom

codeMan há 10 meses atrás
pai
commit
0bcd5b9754

+ 78 - 0
src/optionSystem/attriteManage/index.vue

@@ -0,0 +1,78 @@
+<template>
+  <normalLayout>
+    <div slot="content" class=" normal-panel el-row" >
+      <div class="borderRight el-col el-col-12">
+        <list ref="list" @rowShow="rowShow">
+        </list>
+      </div>
+      <div class="el-col el-col-12">
+        <div >
+          <add :disabled="disabled" :data="list" @addSuccess="onSuccess" style="margin-left: 2%"></add>
+        </div>
+        <div>
+          <details_list ref="listDetails" :id="optiontypeid">
+            <template v-slot:edit="scope">
+              <edit v-if="tool.checkAuth($route.name,'update') && scope.data.siteid"  :data="scope.data" :classname="classname" @updateSuccess="onSuccess" :type="'text'" ></edit>
+            </template>
+            <template v-slot:del="scope">
+              <del_option v-if="tool.checkAuth($route.name,'delete') && scope.data.siteid"  :data="scope.data"   :type="'text'" @delSuccess="onSuccess" ></del_option>
+            </template>
+          </details_list>
+        </div>
+      </div>
+    </div>
+  </normalLayout>
+</template>
+
+<script>
+import {mapGetters} from 'vuex'
+
+import normalLayout from '@/components/normal-basic-layout/normal.vue'
+import list from './modules/list.vue'
+import edit from './modules/edit'
+import del_option from './modules/delete'
+import details_list from './modules/detailsList'
+import add from './modules/add'
+import { log } from '@antv/g2plot/lib/utils'
+export default {
+  data(){
+    return {
+      optiontypeid:'',
+      disabled:true,
+      list:[],
+      classname:'',
+    }
+  },
+  components:{
+    normalLayout,
+    list,
+    edit,
+    del_option,
+    details_list,
+    add
+  },
+  computed:{
+    ...mapGetters({
+      activeApp:'activeApp',
+    })
+  },
+  methods:{
+    onSuccess () {
+     this.$refs.list.queryOptions(true)
+      this.$refs.listDetails.detailsList()
+    },
+    rowShow(row){
+      this.optiontypeid = row.optiontypeid
+      this.disabled = false
+      this.list = row
+      this.classname = row.remarks
+    }
+  }
+}
+
+</script>
+<style>
+  .borderRight{
+    border-right: 1px solid #ccc;;
+  }
+</style>

+ 88 - 0
src/optionSystem/attriteManage/modules/add.vue

@@ -0,0 +1,88 @@
+<template>
+  <div class="inline-16">
+    <el-button type="primary" size="small" @click="show" class="el-icon-plus" :disabled="disabled"> 新增分类明细</el-button>
+    <el-dialog append-to-body  :visible.sync="drawer" width="500px" >
+      <div slot="title" style="font-size: 15px">
+        自定义分类/
+        <el-tag size="mini" >{{data.remarks}}</el-tag>
+      </div>
+      <div>
+        <el-row :gutter="20">
+          <el-form :model="form"   ref="form" :rules="rules"  size="mini" label-position="right" label-width="90px">
+            <el-col :span="20">
+              <el-form-item  label="分类名称:" prop="value">
+                <el-input type="textarea" autosize v-model="form.value" placeholder="输入分类名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="20">
+              <el-form-item  label="描述:" prop="remarks">
+                <el-input type="text" 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="close" 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 {
+  props:["data","disabled"],
+  data () {
+    return {
+      drawer:false,
+      form:{
+        "optiontypeid": '',
+        "optiontypemxid":0,
+        "isused": "1",
+        "value":"",
+        "remarks":"",
+        "sequence":2
+      },
+      rules:{
+        value:[
+          { required: true, message: '请输入标签名', trigger: 'blur'},
+        ],
+      }
+    }
+  },
+  watch: {
+    drawer (val) {
+      !val && this.$refs.form.resetFields()
+    }
+  },
+  methods:{
+    show(){
+      this.drawer = true
+      console.log("参数")
+      console.log(this.data)
+    },
+    async onSubmit  () {
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        this.form.optiontypeid = this.data.optiontypeid
+        const res = await this.$api.requested({ "id": 20220901092601,content:this.form})
+        this.tool.showMessage(res,()=>{
+          this.drawer = false
+          this.$emit('addSuccess')
+        })
+      });
+    },
+    close() {
+      this.drawer = false
+      this.form.remarks = ''
+    }
+  },
+}
+
+</script>
+<style scoped>
+/deep/.el-dialog {
+  transform: translateY(50%);
+}
+</style>

+ 38 - 0
src/optionSystem/attriteManage/modules/delete.vue

@@ -0,0 +1,38 @@
+<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: "delete",
+  props:["data"],
+  mounted() {
+
+  },
+  methods:{
+    async deleteRow(){
+        console.log(this.data)
+        const res = await this.$api.requested({
+          "id":20220901092701,
+          "content": {
+            "optiontypemxid": this.data.optiontypemxid
+          }
+        })
+        this.tool.showMessage(res,() => {
+          this.$emit("delSuccess")
+        })
+      }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 101 - 0
src/optionSystem/attriteManage/modules/detailsList.vue

@@ -0,0 +1,101 @@
+<template>
+  <div class="container normal-panel">
+    <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>
+      </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="param.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div> -->
+  </div>
+</template>
+
+<script>
+export default {
+  name: "detailsList",
+  props:["id"],
+  data(){
+    return {
+      tableHieght:560,
+      tablecols:[],
+      list:[],
+      total:0,
+      currentPage:0,
+      // param:{
+      //   "classname": "sysmanage.develop.optiontype.optiontype",
+      //   "method": "optiontypeselect",
+      //   "content": {
+      //     "pageNumber": 1,
+      //     "pageSize": 20,
+      //     "typename": '',
+      //     "parameter": {
+      //       "siteid": "YOSTEST2"
+      //     }
+      //   }
+      // }
+      param:{
+        "id": 20220901092501,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 9999999,
+          "optiontypeid":''
+        }
+      }
+    }
+  },
+  methods:{
+    async detailsList(){
+      console.log("输出")
+      this.param.content.optiontypeid = this.id
+      const res = await this.$api.requested(this.param)
+      console.log(res)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.detailsList()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.detailsList()
+    },
+  },
+  mounted() {
+
+  },
+  watch:{
+    id:function (val){
+      console.log("输出")
+      console.log(val)
+      if (val != ''){
+        this.detailsList()
+      }
+    }
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).optionDetailsTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 87 - 0
src/optionSystem/attriteManage/modules/edit.vue

@@ -0,0 +1,87 @@
+<template>
+  <div class="inline-16">
+    <el-button size="small" type="text" @click="show">编 辑</el-button>
+    <el-dialog append-to-body :visible.sync="drawer" width="500px" >
+      <div slot="title" style="font-size: 15px">
+        自定义分类/
+        <el-tag size="mini" >{{classname}}</el-tag>
+      </div>
+      <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  label="分类名称:" prop="value">
+                <el-input type="textarea" autosize v-model="form.value" placeholder="输入分类名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="20">
+              <el-form-item  label="描述:">
+                <el-input type="text" 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="close" 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: "edit",
+  props:["data","classname"],
+  data(){
+    return {
+      drawer:false,
+      form:{
+        optiontypeid: '',
+        optiontypemxid:'',
+        isused: "1",
+        value:'',
+        remarks:'',
+        sequence:2
+      },
+      rules:{
+        value:[
+          { required: true, message: '请输入标签名', trigger: 'blur'},
+        ],
+      }
+    }
+  },
+  methods:{
+    show(){
+      this.drawer = true
+      this.form.optiontypemxid = this.data.optiontypemxid
+      this.form.optiontypeid = this.data.optiontypeid
+      this.form.value = this.data.value
+      this.form.remarks = this.data.remarks
+
+    },
+    onSubmit(){
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({ "id": 20220901092601,content:this.form})
+        this.tool.showMessage(res,()=>{
+          this.drawer = false
+          this.$refs.form.resetFields()
+          this.$emit('updateSuccess')
+        })
+      });
+    },
+    close(){
+      this.drawer = false
+    }
+  }
+}
+</script>
+
+<style scoped>
+/deep/.el-dialog {
+  transform: translateY(50%);
+}
+</style>

+ 167 - 0
src/optionSystem/attriteManage/modules/list.vue

@@ -0,0 +1,167 @@
+<template>
+  <div class="container normal-panel">
+    <div class="flex-align-center flex-between mt-10">
+      <el-input
+        style="width: 200px"
+        size="small"
+        suffix-icon="el-icon-search"
+        v-model="param.content.where.condition"
+        placeholder="搜索"
+        @keyup.enter.native="queryOptions()"
+        @clear="queryOptions()"
+        clearable
+      ></el-input>
+    </div>
+    <tableLayout
+      ref="table"
+      :layout="tablecols"
+      :data="list"
+      :opwidth="200"
+      :custom="true"
+      :height="tableHieght"
+      @rowClick="rowShow"
+    >
+      <template v-slot:customcol="scope">
+        <p>{{ scope.column.data[scope.column.columnname] }}</p>
+      </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="param.content.pageSize"
+        layout="total, prev, pager, next, jumper"
+        :total="total">
+      </el-pagination>
+    </div> -->
+  </div>
+</template>
+
+<script>
+import add from "./add";
+import { log } from "@antv/g2plot/lib/utils";
+export default {
+  data() {
+    return {
+      param: {
+        id: 2024062015443902,
+        content: {
+          clazz: "属性管理",
+          pageNumber: 1,
+          pageSize: 99999999,
+          where: {
+            condition: "",
+          },
+        },
+      },
+      tableHieght: 560,
+      tablecols: [],
+      // optionmxlist:[],
+      // expands: [],
+      list: [],
+      total: 0,
+      currentPage: 0,
+      row: [],
+      currentRow: "",
+      // optiontypeid:0,
+    };
+  },
+  components: {
+    add,
+  },
+  methods: {
+    async queryOptions(setRow) {
+      const res = await this.$api.requested(this.param);
+      this.list = res.data;
+      console.log(this.list);
+
+      this.total = res.total;
+      this.currentPage = res.pageNumber;
+      this.$nextTick(() => {
+        if (setRow) {
+          if (this.currentRow) {
+            this.currentRow = this.list.find(
+              (item) => item.optiontypeid == this.currentRow.optiontypeid
+            );
+          }
+          this.$refs.table.$refs.table.setCurrentRow(
+            setRow ? (this.currentRow ? this.currentRow : this.list[0]) : ""
+          );
+        }
+      });
+      this.$emit(
+        "rowShow",
+        setRow
+          ? this.currentRow
+            ? this.currentRow
+            : this.list[0]
+          : this.list[0]
+      );
+      console.log(res);
+    },
+    rowShow(row) {
+      this.currentRow = row;
+      this.$emit("rowShow", row);
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val;
+      this.queryOptions();
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val;
+      this.queryOptions();
+    },
+    // async queryoptionmx (id) {
+    //   const res = await this.$api.requested({
+    //     "id": 20220901092501,
+    //     "content": {
+    //       "optiontypeid":id
+    //     }
+    //   })
+    //   this.optionmxlist = res.data
+    // },
+    // getRowKeys: function (row) {
+    //   return row.optiontypeid
+    // },
+    // handleExpandChange (row, expandedRows) {
+    //   var that = this
+    //   this.queryoptionmx(row.optiontypeid)
+    //   this.optiontypeid = row.optiontypeid
+    //   if (expandedRows.length) {
+    //     that.expands = []
+    //     if (row) {
+    //       that.expands.push(row.optiontypeid)
+    //     }
+    //   } else {
+    //     that.expands = []
+    //   }
+    // },
+    // async deleteRow (item) {
+    //   const res = await this.$api.requested({
+    //     "id":20220901092701,
+    //     "content": {
+    //         "optiontypemxid": item.optiontypemxid
+    //     }
+    //   })
+    //   this.tool.showMessage(res,()=>{
+    //     this.queryoptionmx (this.optiontypeid)
+    //   })
+    // }
+  },
+  mounted() {
+    this.queryOptions(true);
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(
+      this.$route.name
+    ).optiontTable.tablecols;
+  },
+};
+</script>
+<style>
+</style>

+ 5 - 66
src/optionSystem/itemManage/detail/index.vue

@@ -59,13 +59,6 @@ export default {
       mainAreaData: {},
       detailInfo: [],
       typeList: [],
-      caliber: [],
-      pressure: [],
-      connection: [],
-      bodymaterial: [],
-      valveplatematerial: [],
-      stemmaterial: [],
-      plinthmaterial: [],
     };
   },
   provide() {
@@ -73,27 +66,6 @@ export default {
       itemTypeList: () => {
         return this.typeList;
       },
-      caliber: () => {
-        return this.caliber;
-      },
-      pressure: () => {
-        return this.pressure;
-      },
-      connection: () => {
-        return this.connection;
-      },
-      bodymaterial: () => {
-        return this.bodymaterial;
-      },
-      valveplatematerial: () => {
-        return this.valveplatematerial;
-      },
-      stemmaterial: () => {
-        return this.stemmaterial;
-      },
-      plinthmaterial: () => {
-        return this.plinthmaterial;
-      },
     };
   },
   components: {
@@ -112,46 +84,10 @@ export default {
       this.changeDataStructure();
     },
     optionList() {
-      this.$store.dispatch("optiontypeselect", "famentype").then((res) => {
+      this.$store.dispatch("optiontypeselect", "itemstype").then((res) => {
         this.typeList = res.data;
         console.log(this.typeList, "阀门类型");
       });
-      this.$store.dispatch("optiontypeselect", "caliber").then((res) => {
-        this.caliber = res.data;
-        console.log(this.caliber, "公称通径");
-      });
-
-      this.$store.dispatch("optiontypeselect", "pressure").then((res) => {
-        this.pressure = res.data;
-        console.log(this.pressure, "公称压力");
-      });
-
-      this.$store.dispatch("optiontypeselect", "connection").then((res) => {
-        this.connection = res.data;
-        console.log(this.connection, "连接方式");
-      });
-
-      this.$store.dispatch("optiontypeselect", "bodymaterial").then((res) => {
-        this.bodymaterial = res.data;
-        console.log(this.bodymaterial, "阀体材质");
-      });
-
-      this.$store
-        .dispatch("optiontypeselect", "valveplatematerial")
-        .then((res) => {
-          this.valveplatematerial = res.data;
-          console.log(this.valveplatematerial, "阀板材质");
-        });
-
-      this.$store.dispatch("optiontypeselect", "stemmaterial").then((res) => {
-        this.stemmaterial = res.data;
-        console.log(this.stemmaterial, "阀杆材质");
-      });
-
-      this.$store.dispatch("optiontypeselect", "plinthmaterial").then((res) => {
-        this.plinthmaterial = res.data;
-        console.log(this.plinthmaterial, "阀座材质");
-      });
     },
     changeDataStructure() {
         let that = this
@@ -202,12 +138,15 @@ export default {
             { label: "公称压力", value: this.mainData.pressure },
             { label: "连接方式", value: this.mainData.connection },
             { label: "阀体材质", value: this.mainData.bodymaterial },
-            { label: "板材质", value: this.mainData.valveplatematerial },
+            { label: "板材质", value: this.mainData.valveplatematerial },
             { label: "阀杆材质", value: this.mainData.stemmaterial },
             { label: "阀座材质", value: this.mainData.plinthmaterial },
             { label: "阀门扭矩", value: this.mainData.torque },
+            { label: "驱动方式", value: this.mainData.drivetype },
             { label: "法兰号", value: this.mainData.flh },
             { label: "阀杆尺寸", value: this.mainData.stemsize },
+            { label: "圆阀杆最大直径", value: this.mainData.maxrounddiameter },
+            { label: "方阀杆最大宽度", value: this.mainData.maxsquarewidth },
             { label: "价格", value: this.mainData.marketprice },
           ],
         },

+ 1 - 65
src/optionSystem/itemManage/index.vue

@@ -106,13 +106,6 @@ export default {
       },
       dateSelect: "",
       typeList: [],
-      caliber: [],
-      pressure: [],
-      connection: [],
-      bodymaterial: [],
-      valveplatematerial: [],
-      stemmaterial: [],
-      plinthmaterial: [],
       errorUrl:null,
     };
   },
@@ -121,27 +114,6 @@ export default {
       itemTypeList: () => {
         return this.typeList;
       },
-      caliber: () => {
-        return this.caliber;
-      },
-      pressure: () => {
-        return this.pressure;
-      },
-      connection: () => {
-        return this.connection;
-      },
-      bodymaterial: () => {
-        return this.bodymaterial;
-      },
-      valveplatematerial: () => {
-        return this.valveplatematerial;
-      },
-      stemmaterial: () => {
-        return this.stemmaterial;
-      },
-      plinthmaterial: () => {
-        return this.plinthmaterial;
-      },
     };
   },
   methods: {
@@ -184,46 +156,10 @@ export default {
       this.$refs.basicLayout.listData();
     },
     optionList() {
-      this.$store.dispatch("optiontypeselect", "famentype").then((res) => {
+      this.$store.dispatch("optiontypeselect", "itemstype").then((res) => {
         this.typeList = res.data;
         console.log(this.typeList, "阀门类型");
       });
-      this.$store.dispatch("optiontypeselect", "caliber").then((res) => {
-        this.caliber = res.data;
-        console.log(this.caliber, "公称通径");
-      });
-
-      this.$store.dispatch("optiontypeselect", "pressure").then((res) => {
-        this.pressure = res.data;
-        console.log(this.pressure, "公称压力");
-      });
-
-      this.$store.dispatch("optiontypeselect", "connection").then((res) => {
-        this.connection = res.data;
-        console.log(this.connection, "连接方式");
-      });
-
-      this.$store.dispatch("optiontypeselect", "bodymaterial").then((res) => {
-        this.bodymaterial = res.data;
-        console.log(this.bodymaterial, "阀体材质");
-      });
-
-      this.$store
-        .dispatch("optiontypeselect", "valveplatematerial")
-        .then((res) => {
-          this.valveplatematerial = res.data;
-          console.log(this.valveplatematerial, "阀板材质");
-        });
-
-      this.$store.dispatch("optiontypeselect", "stemmaterial").then((res) => {
-        this.stemmaterial = res.data;
-        console.log(this.stemmaterial, "阀杆材质");
-      });
-
-      this.$store.dispatch("optiontypeselect", "plinthmaterial").then((res) => {
-        this.plinthmaterial = res.data;
-        console.log(this.plinthmaterial, "阀座材质");
-      });
     },
   },
   created() {

+ 266 - 0
src/optionSystem/itemManage/modules/add copy.vue

@@ -0,0 +1,266 @@
+<template>
+  <div>
+    <el-drawer
+      title="新建主阀"
+      :visible.sync="drawer"
+      size="664px"
+      direction="rtl"
+      append-to-body
+      :show-close="false">
+      <div class="drawer__panel">
+        <el-row>
+          <el-form :model="form" :rules="rules" ref="form"  size="mini" label-position="right">
+            <el-col :span="24">
+              <el-form-item label="主阀料号" label-width="80px" prop="itemno">
+                <el-input v-model="form.itemno" autocomplete="off" placeholder="请输入主阀料号"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="名称" label-width="80px" prop="itemname">
+                <el-input  v-model="form.itemname" autocomplete="off" placeholder="请输入名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="阀门类型" label-width="80px" prop="valvetype">
+                <el-select v-model="form.valvetype" style="width:100%" placeholder="请选择">
+                  <el-option
+                    v-for="item in itemTypeList()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="公称通径" label-width="80px" prop="caliber">
+                <el-select v-model="form.caliber" style="width:100%" placeholder="请选择">
+                  <el-option
+                    v-for="item in caliber()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="公称压力" label-width="80px" prop="pressure">
+                <el-select v-model="form.pressure" style="width:100%" placeholder="请选择">
+                  <el-option
+                    v-for="item in pressure()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="连接方式" label-width="80px" prop="connection">
+                <el-select v-model="form.connection" style="width:100%" placeholder="请选择">
+                  <el-option
+                    v-for="item in connection()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="阀体材质" label-width="80px" prop="bodymaterial">
+                <el-select v-model="form.bodymaterial" style="width:100%" placeholder="请选择">
+                  <el-option
+                    v-for="item in bodymaterial()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="蝶板材质" label-width="80px" prop="valveplatematerial">
+                <el-select v-model="form.valveplatematerial" style="width:100%" placeholder="请选择">
+                  <el-option
+                    v-for="item in valveplatematerial()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="阀杆材质" label-width="80px" prop="stemmaterial">
+                <el-select v-model="form.stemmaterial" style="width:100%" placeholder="请选择">
+                  <el-option
+                    v-for="item in stemmaterial()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="阀座材质" label-width="80px" prop="plinthmaterial">
+                <el-select v-model="form.plinthmaterial" style="width:100%" placeholder="请选择">
+                  <el-option
+                    v-for="item in plinthmaterial()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="阀门扭矩" label-width="80px" prop="torque">
+                <el-input  v-model="form.torque" autocomplete="off" placeholder="请输入阀门扭矩"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="法兰号" label-width="80px" prop="flh">
+                <el-input  v-model="form.flh" autocomplete="off" placeholder="请输入法兰号"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="阀杆尺寸" label-width="80px" prop="stemsize">
+                <el-input  v-model="form.stemsize" autocomplete="off" placeholder="请输入阀杆尺寸"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="价格" label-width="80px" prop="marketprice">
+                <el-input  v-model="form.marketprice" autocomplete="off" placeholder="请输入价格"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" :loading="loading" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import {mapGetters} from "vuex";
+export default {
+  inject:['itemTypeList','caliber','pressure','connection','bodymaterial','valveplatematerial','stemmaterial','plinthmaterial'],
+  data () {
+    return {
+      drawer:false,
+      visible1:false,
+      timer:null,
+      isDisabled:false,
+      isSelectPhone:'',
+      selectType:[],
+      rules:{
+        itemno: [
+          { required: true, message: '请输入主阀料号', trigger: 'blur' },
+        ],
+        marketprice: [
+          { required: true, message: '请输入价格', trigger: 'blur' },
+          { pattern:/^([1-9][0-9]*)+(\.[0-9]{1,2})?$/,message:'请输入数字(最多两位小数)',trigger:'blur'}
+        ],
+        itemname: [
+          { required: true, message: '请输入名称', trigger: 'blur' }
+        ],
+        valvetype: [
+          { required: true, message: '请选择阀门类型', trigger: 'change' }
+        ],
+        caliber: [
+          { required: true, message: '请选择公称通径', trigger: 'change' },
+        ],
+        pressure: [
+          { required: true, message: '请选择公称压力', trigger: 'change' }
+        ],
+        connection: [
+          { required: true, message: '请选择连接方式', trigger: 'change' }
+        ],
+        bodymaterial: [
+          { required: true, message: '请选择阀体材质', trigger: 'change' }
+        ],
+        valveplatematerial: [
+          { required: true, message: '请选择阀板材质', trigger: 'change' }
+        ],
+        stemmaterial: [
+          { required: true, message: '请选择阀杆材质', trigger: 'change' }
+        ],
+        plinthmaterial: [
+          { required: true, message: '请选择阀座材质', trigger: 'change' }
+        ],
+      },
+      form:{
+        "itemid": 0,
+        "plm_itemextendid": 0,
+        "itemno": "",
+        "itemname": "",
+        "marketprice": '',
+        "valvetype": "",
+        "caliber": "", //公称通径
+        "pressure": "", //公称压力
+        "connection": "",
+        "bodymaterial": "",
+        "valveplatematerial": "",
+        "stemmaterial": "",
+        "plinthmaterial": "",
+        "torque": "",
+        "flh": "",
+        "stemsize": ""
+      },
+      options:[],
+    }
+  },
+  computed:{
+    ...mapGetters({
+      loading:'loading'
+    })
+  },
+  watch: {
+    drawer (val) {
+      if (!val) {
+        this.$refs.form.resetFields()
+        this.isSelectPhone = ''
+      }
+    }
+  },
+  methods:{
+    onShow () {
+      this.drawer = true
+    },
+    onSubmit () {
+      this.$refs['form'].validate((valid) => {
+        if (!valid) return false
+        this.$store.commit('setLoading',true)
+        this.$api.requested({
+            id:2024060116124902,
+            content: this.form
+        }).then(res=>{
+            this.tool.showMessage(res,() => {
+                this.$refs.form.resetFields()
+                this.$store.dispatch('changeDetailDrawer',true)
+                this.$router.push({path:'/itemDetail',query:{id:res.data.itemid,rowindex:res.data.rowindex}})
+                this.drawer = false
+                this.$emit('onSuccess',res.data)
+
+            })
+            this.$store.commit('setLoading',false)
+        })
+      });
+    },
+    },
+    
+}
+
+</script>
+<style scoped>
+.dialog-footer{
+  margin-top:32px;
+  text-align: center;
+}
+</style>

+ 24 - 201
src/optionSystem/itemManage/modules/add.vue

@@ -1,6 +1,13 @@
 <template>
   <div>
-    <el-button size="small" type="primary" @click="onShow">新 建</el-button>
+    <el-dropdown  @command="onShow">
+      <el-button type="primary" size="small">
+        新建
+      </el-button>
+      <el-dropdown-menu slot="dropdown">
+        <el-dropdown-item :command="item.value" v-for="item in itemTypeList()" :key="item.value">{{ item.remarks }}</el-dropdown-item>
+      </el-dropdown-menu>
+    </el-dropdown>
     <el-drawer
       title="新建主阀"
       :visible.sync="drawer"
@@ -9,136 +16,7 @@
       append-to-body
       :show-close="false">
       <div class="drawer__panel">
-        <el-row>
-          <el-form :model="form" :rules="rules" ref="form"  size="mini" label-position="right">
-            <el-col :span="24">
-              <el-form-item label="主阀料号" label-width="80px" prop="itemno">
-                <el-input v-model="form.itemno" autocomplete="off" placeholder="请输入主阀料号"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="名称" label-width="80px" prop="itemname">
-                <el-input  v-model="form.itemname" autocomplete="off" placeholder="请输入名称"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="阀门类型" label-width="80px" prop="valvetype">
-                <el-select v-model="form.valvetype" style="width:100%" placeholder="请选择">
-                  <el-option
-                    v-for="item in itemTypeList()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="公称通径" label-width="80px" prop="caliber">
-                <el-select v-model="form.caliber" style="width:100%" placeholder="请选择">
-                  <el-option
-                    v-for="item in caliber()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="公称压力" label-width="80px" prop="pressure">
-                <el-select v-model="form.pressure" style="width:100%" placeholder="请选择">
-                  <el-option
-                    v-for="item in pressure()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="连接方式" label-width="80px" prop="connection">
-                <el-select v-model="form.connection" style="width:100%" placeholder="请选择">
-                  <el-option
-                    v-for="item in connection()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="阀体材质" label-width="80px" prop="bodymaterial">
-                <el-select v-model="form.bodymaterial" style="width:100%" placeholder="请选择">
-                  <el-option
-                    v-for="item in bodymaterial()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="阀板材质" label-width="80px" prop="valveplatematerial">
-                <el-select v-model="form.valveplatematerial" style="width:100%" placeholder="请选择">
-                  <el-option
-                    v-for="item in valveplatematerial()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="阀杆材质" label-width="80px" prop="stemmaterial">
-                <el-select v-model="form.stemmaterial" style="width:100%" placeholder="请选择">
-                  <el-option
-                    v-for="item in stemmaterial()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="阀座材质" label-width="80px" prop="plinthmaterial">
-                <el-select v-model="form.plinthmaterial" style="width:100%" placeholder="请选择">
-                  <el-option
-                    v-for="item in plinthmaterial()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="阀门扭矩" label-width="80px" prop="torque">
-                <el-input  v-model="form.torque" autocomplete="off" placeholder="请输入阀门扭矩"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="法兰号" label-width="80px" prop="flh">
-                <el-input  v-model="form.flh" autocomplete="off" placeholder="请输入法兰号"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="阀杆尺寸" label-width="80px" prop="stemsize">
-                <el-input  v-model="form.stemsize" autocomplete="off" placeholder="请输入阀杆尺寸"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="价格" label-width="80px" prop="marketprice">
-                <el-input  v-model="form.marketprice" autocomplete="off" placeholder="请输入价格"></el-input>
-              </el-form-item>
-            </el-col>
-          </el-form>
-        </el-row>
+        <customForm ref="form" :formname="type" v-if="drawer"></customForm>
       </div>
       <div class="fixed__btn__panel">
         <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
@@ -149,72 +27,16 @@
 </template>
 
 <script>
+import customForm from '@/components/customForm/customForm'
 import {mapGetters} from "vuex";
 export default {
-  inject:['itemTypeList','caliber','pressure','connection','bodymaterial','valveplatematerial','stemmaterial','plinthmaterial'],
+  components:{customForm},
+  inject:['itemTypeList'],
   data () {
     return {
       drawer:false,
-      visible1:false,
-      timer:null,
-      isDisabled:false,
-      isSelectPhone:'',
-      selectType:[],
-      rules:{
-        itemno: [
-          { required: true, message: '请输入主阀料号', trigger: 'blur' },
-        ],
-        marketprice: [
-          { required: true, message: '请输入价格', trigger: 'blur' },
-          { pattern:/^([1-9][0-9]*)+(\.[0-9]{1,2})?$/,message:'请输入数字(最多两位小数)',trigger:'blur'}
-        ],
-        itemname: [
-          { required: true, message: '请输入名称', trigger: 'blur' }
-        ],
-        valvetype: [
-          { required: true, message: '请选择阀门类型', trigger: 'change' }
-        ],
-        caliber: [
-          { required: true, message: '请选择公称通径', trigger: 'change' },
-        ],
-        pressure: [
-          { required: true, message: '请选择公称压力', trigger: 'change' }
-        ],
-        connection: [
-          { required: true, message: '请选择连接方式', trigger: 'change' }
-        ],
-        bodymaterial: [
-          { required: true, message: '请选择阀体材质', trigger: 'change' }
-        ],
-        valveplatematerial: [
-          { required: true, message: '请选择阀板材质', trigger: 'change' }
-        ],
-        stemmaterial: [
-          { required: true, message: '请选择阀杆材质', trigger: 'change' }
-        ],
-        plinthmaterial: [
-          { required: true, message: '请选择阀座材质', trigger: 'change' }
-        ],
-      },
-      form:{
-        "itemid": 0,
-        "plm_itemextendid": 0,
-        "itemno": "",
-        "itemname": "",
-        "marketprice": '',
-        "valvetype": "",
-        "caliber": "", //公称通径
-        "pressure": "", //公称压力
-        "connection": "",
-        "bodymaterial": "",
-        "valveplatematerial": "",
-        "stemmaterial": "",
-        "plinthmaterial": "",
-        "torque": "",
-        "flh": "",
-        "stemsize": ""
-      },
-      options:[],
+      type:'',
+      valvetype:''
     }
   },
   computed:{
@@ -225,25 +47,26 @@ export default {
   watch: {
     drawer (val) {
       if (!val) {
-        this.$refs.form.resetFields()
-        this.isSelectPhone = ''
       }
+    },
+    type (val) {
+      this.valvetype = this.itemTypeList().filter(v => v.value == val)[0].remarks
     }
   },
   methods:{
-    onShow () {
+    onShow (type) {
+      this.type = type
       this.drawer = true
     },
     onSubmit () {
-      this.$refs['form'].validate((valid) => {
-        if (!valid) return false
+      this.$refs.form.validateFields(()=>{
+        let form = Object.assign({},this.$refs.form.form,{"itemid": 0,"plm_itemextendid": 0,valvetype:this.valvetype})
         this.$store.commit('setLoading',true)
         this.$api.requested({
             id:2024060116124902,
-            content: this.form
+            content: form
         }).then(res=>{
             this.tool.showMessage(res,() => {
-                this.$refs.form.resetFields()
                 this.$store.dispatch('changeDetailDrawer',true)
                 this.$router.push({path:'/itemDetail',query:{id:res.data.itemid,rowindex:res.data.rowindex}})
                 this.drawer = false
@@ -252,9 +75,9 @@ export default {
             })
             this.$store.commit('setLoading',false)
         })
-      });
-    },
+      })
     },
+  },
     
 }
 

+ 378 - 0
src/optionSystem/itemManage/modules/edit copy.vue

@@ -0,0 +1,378 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="onShow" :disabled="data.status == '审核'"
+      >编辑</el-button
+    >
+    <el-drawer
+      title="编辑主阀"
+      :visible.sync="drawer"
+      size="664px"
+      direction="rtl"
+      append-to-body
+      :show-close="false"
+    >
+      <div class="drawer__panel">
+        <el-row>
+          <el-form
+            :model="form"
+            :rules="rules"
+            ref="form"
+            size="mini"
+            label-position="right"
+          >
+            <el-col :span="24">
+              <el-form-item label="主阀料号" label-width="80px" prop="itemno">
+                <el-input
+                  v-model="form.itemno"
+                  autocomplete="off"
+                  placeholder="请输入主阀料号"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="名称" label-width="80px" prop="itemname">
+                <el-input
+                  v-model="form.itemname"
+                  autocomplete="off"
+                  placeholder="请输入名称"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item
+                label="阀门类型"
+                label-width="80px"
+                prop="valvetype"
+              >
+                <el-select
+                  v-model="form.valvetype"
+                  style="width: 100%"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in itemTypeList()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="公称通径" label-width="80px" prop="caliber">
+                <el-select
+                  v-model="form.caliber"
+                  style="width: 100%"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in caliber()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="公称压力" label-width="80px" prop="pressure">
+                <el-select
+                  v-model="form.pressure"
+                  style="width: 100%"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in pressure()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item
+                label="连接方式"
+                label-width="80px"
+                prop="connection"
+              >
+                <el-select
+                  v-model="form.connection"
+                  style="width: 100%"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in connection()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item
+                label="阀体材质"
+                label-width="80px"
+                prop="bodymaterial"
+              >
+                <el-select
+                  v-model="form.bodymaterial"
+                  style="width: 100%"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in bodymaterial()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item
+                label="蝶板材质"
+                label-width="80px"
+                prop="valveplatematerial"
+              >
+                <el-select
+                  v-model="form.valveplatematerial"
+                  style="width: 100%"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in valveplatematerial()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item
+                label="阀杆材质"
+                label-width="80px"
+                prop="stemmaterial"
+              >
+                <el-select
+                  v-model="form.stemmaterial"
+                  style="width: 100%"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in stemmaterial()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item
+                label="阀座材质"
+                label-width="80px"
+                prop="plinthmaterial"
+              >
+                <el-select
+                  v-model="form.plinthmaterial"
+                  style="width: 100%"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in plinthmaterial()"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="阀门扭矩" label-width="80px" prop="torque">
+                <el-input
+                  v-model="form.torque"
+                  autocomplete="off"
+                  placeholder="请输入阀门扭矩"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="法兰号" label-width="80px" prop="flh">
+                <el-input
+                  v-model="form.flh"
+                  autocomplete="off"
+                  placeholder="请输入法兰号"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="阀杆尺寸" label-width="80px" prop="stemsize">
+                <el-input
+                  v-model="form.stemsize"
+                  autocomplete="off"
+                  placeholder="请输入阀杆尺寸"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="价格" label-width="80px" prop="marketprice">
+                <el-input
+                  v-model="form.marketprice"
+                  autocomplete="off"
+                  placeholder="请输入价格"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="drawer = false" class="normal-btn-width"
+          >取 消</el-button
+        >
+        <el-button
+          size="small"
+          type="primary"
+          @click="onSubmit"
+          :loading="loading"
+          class="normal-btn-width"
+          >确 定</el-button
+        >
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+export default {
+  props: ["data"],
+  inject: [
+    "itemTypeList",
+    "caliber",
+    "pressure",
+    "connection",
+    "bodymaterial",
+    "valveplatematerial",
+    "stemmaterial",
+    "plinthmaterial",
+  ],
+  data() {
+    return {
+      drawer: false,
+      visible1: false,
+      timer: null,
+      isDisabled: false,
+      isSelectPhone: "",
+      selectType: [],
+      rules: {
+        itemno: [
+          { required: true, message: "请输入主阀料号", trigger: "blur" },
+        ],
+        marketprice: [
+          { required: true, message: "请输入价格", trigger: "blur" },
+          {
+            pattern: /^([1-9][0-9]*)+(\.[0-9]{1,2})?$/,
+            message: "请输入数字(最多两位小数)",
+            trigger: "blur",
+          },
+        ],
+        itemname: [{ required: true, message: "请输入名称", trigger: "blur" }],
+        valvetype: [
+          { required: true, message: "请选择阀门类型", trigger: "change" },
+        ],
+        caliber: [
+          { required: true, message: "请选择公称通径", trigger: "change" },
+        ],
+        pressure: [
+          { required: true, message: "请选择公称压力", trigger: "change" },
+        ],
+        connection: [
+          { required: true, message: "请选择连接方式", trigger: "change" },
+        ],
+        bodymaterial: [
+          { required: true, message: "请选择阀体材质", trigger: "change" },
+        ],
+        valveplatematerial: [
+          { required: true, message: "请选择阀板材质", trigger: "change" },
+        ],
+        stemmaterial: [
+          { required: true, message: "请选择阀杆材质", trigger: "change" },
+        ],
+        plinthmaterial: [
+          { required: true, message: "请选择阀座材质", trigger: "change" },
+        ],
+      },
+      form: {
+        itemid: 0,
+        plm_itemextendid: 0,
+        itemno: "",
+        itemname: "",
+        marketprice: "",
+        valvetype: "",
+        caliber: "", //公称通径
+        pressure: "", //公称压力
+        connection: "",
+        bodymaterial: "",
+        valveplatematerial: "",
+        stemmaterial: "",
+        plinthmaterial: "",
+        torque: "",
+        flh: "",
+        stemsize: "",
+      },
+      options: [],
+    };
+  },
+  computed: {
+    ...mapGetters({
+      loading: "loading",
+    }),
+  },
+  watch: {
+    drawer(val) {
+      if (!val) {
+        this.$refs.form.resetFields();
+      }
+    },
+  },
+  methods: {
+    onShow() {
+      this.form = Object.assign({},this.form,this.data)
+      this.drawer = true;
+    },
+    onSubmit() {
+      this.$refs["form"].validate((valid) => {
+        if (!valid) return false;
+        this.$store.commit("setLoading", true);
+        this.$api
+          .requested({
+            id: 2024060116124902,
+            content: this.form,
+          })
+          .then((res) => {
+            this.tool.showMessage(res, () => {
+              this.$store.dispatch("changeDetailDrawer", true);
+              this.$router.push({
+                path: "/itemDetail",
+                query: { id: res.data.itemid, rowindex: res.data.rowindex },
+              });
+              this.drawer = false;
+              this.$emit("onSuccess", res.data);
+            });
+            this.$store.commit("setLoading", false);
+          });
+      });
+    },
+  },
+};
+</script>
+<style scoped>
+.dialog-footer {
+  margin-top: 32px;
+  text-align: center;
+}
+</style>

+ 55 - 341
src/optionSystem/itemManage/modules/edit.vue

@@ -9,370 +9,84 @@
       size="664px"
       direction="rtl"
       append-to-body
-      :show-close="false"
-    >
+      :show-close="false">
       <div class="drawer__panel">
-        <el-row>
-          <el-form
-            :model="form"
-            :rules="rules"
-            ref="form"
-            size="mini"
-            label-position="right"
-          >
-            <el-col :span="24">
-              <el-form-item label="主阀料号" label-width="80px" prop="itemno">
-                <el-input
-                  v-model="form.itemno"
-                  autocomplete="off"
-                  placeholder="请输入主阀料号"
-                ></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="名称" label-width="80px" prop="itemname">
-                <el-input
-                  v-model="form.itemname"
-                  autocomplete="off"
-                  placeholder="请输入名称"
-                ></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item
-                label="阀门类型"
-                label-width="80px"
-                prop="valvetype"
-              >
-                <el-select
-                  v-model="form.valvetype"
-                  style="width: 100%"
-                  placeholder="请选择"
-                >
-                  <el-option
-                    v-for="item in itemTypeList()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="公称通径" label-width="80px" prop="caliber">
-                <el-select
-                  v-model="form.caliber"
-                  style="width: 100%"
-                  placeholder="请选择"
-                >
-                  <el-option
-                    v-for="item in caliber()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="公称压力" label-width="80px" prop="pressure">
-                <el-select
-                  v-model="form.pressure"
-                  style="width: 100%"
-                  placeholder="请选择"
-                >
-                  <el-option
-                    v-for="item in pressure()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item
-                label="连接方式"
-                label-width="80px"
-                prop="connection"
-              >
-                <el-select
-                  v-model="form.connection"
-                  style="width: 100%"
-                  placeholder="请选择"
-                >
-                  <el-option
-                    v-for="item in connection()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item
-                label="阀体材质"
-                label-width="80px"
-                prop="bodymaterial"
-              >
-                <el-select
-                  v-model="form.bodymaterial"
-                  style="width: 100%"
-                  placeholder="请选择"
-                >
-                  <el-option
-                    v-for="item in bodymaterial()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item
-                label="阀板材质"
-                label-width="80px"
-                prop="valveplatematerial"
-              >
-                <el-select
-                  v-model="form.valveplatematerial"
-                  style="width: 100%"
-                  placeholder="请选择"
-                >
-                  <el-option
-                    v-for="item in valveplatematerial()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item
-                label="阀杆材质"
-                label-width="80px"
-                prop="stemmaterial"
-              >
-                <el-select
-                  v-model="form.stemmaterial"
-                  style="width: 100%"
-                  placeholder="请选择"
-                >
-                  <el-option
-                    v-for="item in stemmaterial()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item
-                label="阀座材质"
-                label-width="80px"
-                prop="plinthmaterial"
-              >
-                <el-select
-                  v-model="form.plinthmaterial"
-                  style="width: 100%"
-                  placeholder="请选择"
-                >
-                  <el-option
-                    v-for="item in plinthmaterial()"
-                    :label="item.remarks"
-                    :value="item.value"
-                    :key="item.index"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="阀门扭矩" label-width="80px" prop="torque">
-                <el-input
-                  v-model="form.torque"
-                  autocomplete="off"
-                  placeholder="请输入阀门扭矩"
-                ></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="法兰号" label-width="80px" prop="flh">
-                <el-input
-                  v-model="form.flh"
-                  autocomplete="off"
-                  placeholder="请输入法兰号"
-                ></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="阀杆尺寸" label-width="80px" prop="stemsize">
-                <el-input
-                  v-model="form.stemsize"
-                  autocomplete="off"
-                  placeholder="请输入阀杆尺寸"
-                ></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="价格" label-width="80px" prop="marketprice">
-                <el-input
-                  v-model="form.marketprice"
-                  autocomplete="off"
-                  placeholder="请输入价格"
-                ></el-input>
-              </el-form-item>
-            </el-col>
-          </el-form>
-        </el-row>
+        <customForm ref="form" :formname="type" v-if="drawer"></customForm>
       </div>
       <div class="fixed__btn__panel">
-        <el-button size="small" @click="drawer = false" class="normal-btn-width"
-          >取 消</el-button
-        >
-        <el-button
-          size="small"
-          type="primary"
-          @click="onSubmit"
-          :loading="loading"
-          class="normal-btn-width"
-          >确 定</el-button
-        >
+        <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" :loading="loading" class="normal-btn-width">确 定</el-button>
       </div>
     </el-drawer>
   </div>
 </template>
 
 <script>
-import { mapGetters } from "vuex";
+import customForm from '@/components/customForm/customForm'
+import {mapGetters} from "vuex";
 export default {
+  components:{customForm},
+  inject:['itemTypeList'],
   props: ["data"],
-  inject: [
-    "itemTypeList",
-    "caliber",
-    "pressure",
-    "connection",
-    "bodymaterial",
-    "valveplatematerial",
-    "stemmaterial",
-    "plinthmaterial",
-  ],
-  data() {
+  data () {
     return {
-      drawer: false,
-      visible1: false,
-      timer: null,
-      isDisabled: false,
-      isSelectPhone: "",
-      selectType: [],
-      rules: {
-        itemno: [
-          { required: true, message: "请输入主阀料号", trigger: "blur" },
-        ],
-        marketprice: [
-          { required: true, message: "请输入价格", trigger: "blur" },
-          {
-            pattern: /^([1-9][0-9]*)+(\.[0-9]{1,2})?$/,
-            message: "请输入数字(最多两位小数)",
-            trigger: "blur",
-          },
-        ],
-        itemname: [{ required: true, message: "请输入名称", trigger: "blur" }],
-        valvetype: [
-          { required: true, message: "请选择阀门类型", trigger: "change" },
-        ],
-        caliber: [
-          { required: true, message: "请选择公称通径", trigger: "change" },
-        ],
-        pressure: [
-          { required: true, message: "请选择公称压力", trigger: "change" },
-        ],
-        connection: [
-          { required: true, message: "请选择连接方式", trigger: "change" },
-        ],
-        bodymaterial: [
-          { required: true, message: "请选择阀体材质", trigger: "change" },
-        ],
-        valveplatematerial: [
-          { required: true, message: "请选择阀板材质", trigger: "change" },
-        ],
-        stemmaterial: [
-          { required: true, message: "请选择阀杆材质", trigger: "change" },
-        ],
-        plinthmaterial: [
-          { required: true, message: "请选择阀座材质", trigger: "change" },
-        ],
-      },
-      form: {
-        itemid: 0,
-        plm_itemextendid: 0,
-        itemno: "",
-        itemname: "",
-        marketprice: "",
-        valvetype: "",
-        caliber: "", //公称通径
-        pressure: "", //公称压力
-        connection: "",
-        bodymaterial: "",
-        valveplatematerial: "",
-        stemmaterial: "",
-        plinthmaterial: "",
-        torque: "",
-        flh: "",
-        stemsize: "",
-      },
-      options: [],
-    };
+      drawer:false,
+      type:'',
+      valvetype:''
+    }
   },
-  computed: {
+  computed:{
     ...mapGetters({
-      loading: "loading",
-    }),
+      loading:'loading'
+    })
   },
   watch: {
-    drawer(val) {
-      if (!val) {
-        this.$refs.form.resetFields();
-      }
+    data: {
+      handler (val) {
+        this.itemTypeList().forEach(v => {
+          if (v.remarks==val.valvetype) {
+            this.type = v.value
+          }
+        })
+      },
+      immediate:true,
+      deep:true
     },
   },
-  methods: {
-    onShow() {
-      this.form = Object.assign({},this.form,this.data)
-      this.drawer = true;
+  methods:{
+    onShow () {
+      this.drawer = true
+      this.$nextTick(() => {
+        this.$refs.form.form = this.data
+      })
     },
-    onSubmit() {
-      this.$refs["form"].validate((valid) => {
-        if (!valid) return false;
-        this.$store.commit("setLoading", true);
-        this.$api
-          .requested({
-            id: 2024060116124902,
-            content: this.form,
-          })
-          .then((res) => {
-            this.tool.showMessage(res, () => {
-              this.$store.dispatch("changeDetailDrawer", true);
-              this.$router.push({
-                path: "/itemDetail",
-                query: { id: res.data.itemid, rowindex: res.data.rowindex },
-              });
-              this.drawer = false;
-              this.$emit("onSuccess", res.data);
-            });
-            this.$store.commit("setLoading", false);
-          });
-      });
+    onSubmit () {
+      this.$refs.form.validateFields(()=>{
+        let form = Object.assign({},this.$refs.form.form)
+        this.$store.commit('setLoading',true)
+        this.$api.requested({
+            id:2024060116124902,
+            content: form
+        }).then(res=>{
+            this.tool.showMessage(res,() => {
+                this.$store.dispatch('changeDetailDrawer',true)
+                this.$router.push({path:'/itemDetail',query:{id:res.data.itemid,rowindex:res.data.rowindex}})
+                this.drawer = false
+                this.$emit('onSuccess',res.data)
+
+            })
+            this.$store.commit('setLoading',false)
+        })
+      })
     },
   },
-};
+    
+}
+
 </script>
 <style scoped>
-.dialog-footer {
-  margin-top: 32px;
+.dialog-footer{
+  margin-top:32px;
   text-align: center;
 }
 </style>

+ 9 - 0
src/router/optionSystem.js

@@ -98,6 +98,15 @@ const HManagement = [
           },
           component: () => import(/* webpackChunkName: "about" */ '@/optionSystem/speedBoxManage/detail/index.vue')
         },]
+    },
+    {
+      path: '/attriteManage',
+      name: 'attriteManage',
+      meta: {
+        title: '属性管理',
+        ast_nav: true
+      },
+      component: () => import(/* webpackChunkName: "about" */ '@/optionSystem/attriteManage/index.vue'),
     }
 ]
 

+ 1 - 1
vue.config.js

@@ -14,7 +14,7 @@ module.exports = {
       port: 8000,
       proxy: {
         '/apis': {
-          target: 'http://61.164.207.46:8000',
+          target: 'http://61.164.207.46:8001',
           ws: true,  // proxy websockets
           changeOrigin: true,  // needed for virtual hosted sites
           pathRewrite: {