haoyahui
2023-11-11 332c012e7336f2996c4fe5c8c110d00713c1bde2
admin-web/src/views/foundation/store/edit.vue
@@ -1,19 +1,27 @@
<template>
  <win-sm :title="setting.title" @close="close" :width="'800px'">
    <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
      <el-form-item label="编号" prop="code">
        <el-input disabled v-model="formData.code" clearable maxlength="20" show-word-limit style="width: 100%"/>
      <el-form-item label="编号" prop="warehouseCode">
        <el-input disabled v-model="formData.warehouseCode" clearable maxlength="20" show-word-limit style="width: 100%" />
      </el-form-item>
      <el-form-item label="仓库名称" prop="warehouseName">
        <el-input v-model="formData.warehouseName" clearable maxlength="20" show-word-limit style="width: 100%"/>
        <el-input v-model="formData.warehouseName" clearable maxlength="20" show-word-limit style="width: 100%" />
      </el-form-item>
      <el-form-item label="仓库类型" prop="classificationCode">
        <el-select v-model="formData.classificationCode" clearable placeholder="请选择"  style="width: 100%">
          <el-option v-for="item in classList" :key="item.dict_code" :label="item.dict_label" :value="item.dict_code"></el-option>
        <el-select v-model="formData.classificationCode" clearable placeholder="请选择" style="width: 100%">
          <el-option
            v-for="item in classList"
            :key="item.dict_code"
            :label="item.dict_label"
            :value="item.dict_code"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="地址" >
        <el-input v-model="formData.adress" clearable maxlength="20" show-word-limit style="width: 100%"/>
      <el-form-item label="所属机构" prop="agencyIds">
          <el-cascader v-model="formData.agencyIds" :options="treeList" :props="{checkStrictly: true,value:'id'}" @change="handleChange" style="width: 100%"></el-cascader>
      </el-form-item>
      <el-form-item label="地址">
        <el-input v-model="formData.adress" clearable maxlength="20" show-word-limit style="width: 100%" />
      </el-form-item>
      <el-form-item label="状态" prop="states">
        <el-radio-group v-model="formData.states">
@@ -23,100 +31,145 @@
      </el-form-item>
    </el-form>
    <div slot="footer" align="center" class="dialog-footer">
      <my-button name="取消" site="form" @click="close"/>
      <my-button name="保存" site="form" @click="save"/>
      <my-button name="取消" site="form" @click="close" />
      <my-button name="保存" site="form" @click="save" />
    </div>
  </win-sm>
</template>
<script>
import winSm from '@/components/win/win-sm'
import myButton from '@/components/myButton/myButton'
import * as finsystenant from '@/api/baseSetting/finsystenant'
import winSm from '@/components/win/win-sm';
import myButton from '@/components/myButton/myButton';
import * as finsystenant from '@/api/baseSetting/finsystenant';
export default {
  components: {winSm, myButton},
  components: { winSm, myButton },
  props: {
    setting: {
      type: Object,
      default: () => {
      }
    }
      default: () => {},
    },
  },
  data() {
    return {
      classList:[],
      classList: [],
      treeList: [],
      checkAll: false,
      checkedList: [],
      formData: {
        warehouseCode:null,
        classificationId: null,
        classificationCode:null,
        states: 1,
        agencyIds:[],
        agencyId:''
      },
      rules: {
        warehouseName: [
          {required: true, message: '请输入', trigger: 'blur'}
        ],
        name: [
          {required: true, message: '请输入', trigger: 'blur'}
        ],
        states: [
          {required: true, message: '请选择状态', trigger: 'blur'}
        ]
      }
    }
        warehouseName: [{ required: true, message: '请输入', trigger: 'blur' }],
        classificationCode: [{ required: true, message: '请选择', trigger: 'blur' }],
        agencyIds: [{ required: true, message: '请选择', trigger: 'blur' }],
        states: [{ required: true, message: '请选择状态', trigger: 'blur' }],
      },
    };
  },
  created() {
    this.class_List()
    if(this.setting.info){
      this.formData = Object.assign({},JSON.parse(this.setting.info))
    this.class_List();
    this.tree_List();
    if (this.setting.info) {
      this.formData = Object.assign({}, JSON.parse(this.setting.info));
    }
  },
  methods: {
    class_List (){
      finsystenant.classList().then(res => {
    class_List() {
      finsystenant.classList().then((res) => {
        if (res) {
          console.log(res,'res');
          this.classList = res
          console.log(res, 'res');
          this.classList = res;
        }
      })
      });
    },
    getEditInfo(id){
    tree_List() {
      finsystenant.getTree().then((res) => {
        if (res) {
          this.treeList = res;
          this.$set(this.formData,'agencyIds',this.findParentIds(this.treeList,this.formData.agencyId))
        }
      });
    },
    handleChange(e){
      this.formData.agencyId = e[e.length-1]
    },
    getEditInfo(id) {},
    close() {
      this.$emit('close')
      this.$emit('close');
    },
    save() {
      this.$refs.ruleForm.validate((valid) => {
        if (valid) {
          const params = Object.assign({}, this.formData)
          if(this.setting.id){
          const params = Object.assign({}, this.formData);
          if (this.setting.id) {
            // 编辑接口
            finsystenant.editstore(params).then(res => {
            finsystenant.editstore(params).then((res) => {
              if (res) {
                this.$message.success('保存成功!')
                this.close()
                this.$emit('search')
                this.$message.success('保存成功!');
                this.close();
                this.$emit('search');
              } else {
                this.$message.error('保存失败')
                this.$message.error('保存失败');
              }
            })
          }else{
            params.orgId = this.setting.orgId
            finsystenant.addstore(params).then(res => {
            });
          } else {
            params.orgId = this.setting.orgId;
            finsystenant.addstore(params).then((res) => {
              if (res) {
                this.$message.success('保存成功!')
                this.close()
                this.$emit('search')
                this.$message.success('保存成功!');
                this.close();
                this.$emit('search');
              } else {
                this.$message.error('保存失败')
                this.$message.error('保存失败');
              }
            })
            });
          }
        } else {
          this.$message.error('校验未通过,请检查。')
          this.$message.error('校验未通过,请检查。');
        }
      })
    }
  }
}
      });
    },
    // 通过子集id查到所以相关父级id并返回数组
    findParentIds(dataSource, nodeId) {
      const parentIds = [nodeId]; // 用于存储所有父节点ID的数组
      // 定义一个递归函数,用于遍历整棵树并查找子节点的所有父节点
      function traverse(node, nodeId) {
        if (node.id === nodeId) {
          // 如果当前节点的ID等于子节点的ID,则表示已经找到了子节点,可以开始向上查找父节点
          return true; // 返回true表示已经找到了子节点
        }
        if (node.children) {
          // 如果当前节点有子节点,则继续遍历子节点
          for (const childNode of node.children) {
            if (traverse(childNode, nodeId)) {
              // 如果在子节点中找到了子节点的父节点,则将当前节点的ID添加到父节点ID数组中,并返回true表示已经找到了子节点
              parentIds.unshift(node.id);
              return true;
            }
          }
        }
        return false; // 如果当前节点不是子节点的父节点,则返回false
      }
      // 从根节点开始遍历整棵树,并调用递归函数查找子节点的所有父节点
      for (const node of dataSource) {
        if (traverse(node, nodeId)) {
          // 如果在当前节点的子树中找到了子节点的父节点,则直接退出循环
          break;
        }
      }
      return parentIds; // 返回所有父节点ID的数组
    },
  },
};
</script>