k94314517
2025-04-11 4d4394311a96e15ea204e2cae03dda00750d0fdd
admin/src/components/business/OperaCategoryWindow.vue
@@ -6,47 +6,22 @@
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入名称" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="form.remark" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0启用 1禁用" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0启用 1禁用" v-trim/>
      <el-form-item label="选择父级" prop="parentId">
        <el-cascader  v-model="form.categoryList" :options="categorys" @change="handleChangeCategory" :show-all-levels="false"
                      clearable filterable :props="categoryprops"  >
          <template slot-scope="{ node, data }">
            <span>{{ data.name }}</span> <!-- 自定义显示内容 -->
          </template>
        </el-cascader>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
        <el-input v-model="form.sortnum" placeholder="请输入排序码(升序)" v-trim/>
      </el-form-item>
      <el-form-item label="图标" prop="imgurl">
        <el-input v-model="form.imgurl" placeholder="请输入图标" v-trim/>
      </el-form-item>
      <el-form-item label="类型 0SHE伤害类型 1安全风险伤害类型 2安全风险发生地点 3DCA位置 4DCA问题 5SHE风险地点" prop="type">
        <el-input v-model="form.type" placeholder="请输入类型 0SHE伤害类型 1安全风险伤害类型 2安全风险发生地点 3DCA位置 4DCA问题 5SHE风险地点" v-trim/>
      </el-form-item>
      <el-form-item label="父级编码(自关联)" prop="parentId">
        <el-input v-model="form.parentId" placeholder="请输入父级编码(自关联)" v-trim/>
      </el-form-item>
      <el-form-item label="名称路径" prop="namePath">
        <el-input v-model="form.namePath" placeholder="请输入名称路径" v-trim/>
      </el-form-item>
      <el-form-item label="编码路径" prop="idPath">
        <el-input v-model="form.idPath" placeholder="请输入编码路径" v-trim/>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="form.remark" type="textarea" placeholder="请输入备注" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
@@ -64,23 +39,23 @@
      // 表单数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        name: '',
        remark: '',
        status: '',
        sortnum: '',
        imgurl: '',
        type: '',
        parentId: '',
        namePath: '',
        idPath: ''
        remark: '',
        categoryList: [],
        sortnum: null,
        parentId: null
      },
      categoryprops: {
        label: 'name',
        value: 'id',
        checkStrictly: true,
        lazyLoad: this.lazyLoad
      },
      categorys: [],
      // 验证规则
      rules: {
        name: [{ required: true, message: '请输入名称', trigger: 'blur' }]
      }
    }
  },
@@ -89,6 +64,81 @@
      api: '/business/category',
      'field.id': 'id'
    })
  },
  methods: {
    handleChangeCategory (value) {
      if (this.form.categoryList && this.form.categoryList.length >= 1) {
        this.form.parentId = this.form.categoryList[this.form.categoryList.length - 1]
      }
    },
    getTreeData (data) {
      if (!data) {
        return data
      }
      for (let i = 0; i < data.length; i++) {
        console.log(data)
        if (data[i].childList) {
          if (data[i].childList.length < 1) {
            data[i].childList = [] // children若为空数组,则将children设为undefined
            data[i].childern = [] // children若为空数组,则将children设为undefined
          } else {
            this.getTreeData(data[i].childList) // children若不为空数组,则继续 递归调用 本方法
          }
        }
      }
      return data
    },
    open (title, target, categorys, categoryType, parentIdPath) {
      this.title = title
      this.categorys = categorys || []
      this.categorys = this.getTreeData(this.categorys)
      console.log(this.categorys)
      this.visible = true
      this.form = {
        id: null,
        name: '',
        type: '',
        remark: '',
        categoryList: [],
        sortnum: null,
        parentId: null
      }
      this.form.type = categoryType
      // 新建
      var that = this
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
          this.form.categoryList = []
          if (parentIdPath && parentIdPath != null) {
            var array = parentIdPath.split('/')
            array.forEach(item => {
              if (item && item != null && item !== '') {
                that.form.categoryList.push(parseInt(item))
              }
            })
            that.handleChangeCategory()
          }
        })
        return
      }
      // 编辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
        this.form.categoryList = []
        if (target.parentId && target.idParentPath) {
          var array = target.idParentPath.split('/')
          array.forEach(item => {
            if (item && item != null && item !== '') {
              that.form.categoryList.push(parseInt(item))
            }
          })
        }
      })
    }
  }
}
</script>