|
@@ -1,95 +1,104 @@
|
|
|
<template>
|
|
|
<m-card shadow="never">
|
|
|
- <el-form-item label="参数配置" class="mb-3">
|
|
|
- <m-table
|
|
|
- shadow="naver"
|
|
|
- clearHeader
|
|
|
- :items="formQuery.items"
|
|
|
- :headers="[
|
|
|
- { label: '参数', prop: 'label' },
|
|
|
- { label: '数值', prop: 'value' },
|
|
|
- { label: '操作', prop: 'actions' }
|
|
|
- ]"
|
|
|
- >
|
|
|
- <div class="text-center mt-3">
|
|
|
- <m-button icon="el-icon-plus" type="orange" size="small" @click="onAdd">添加一行</m-button>
|
|
|
- </div>
|
|
|
- <template #label="scope">
|
|
|
- <el-form-item
|
|
|
- :prop="`items.${scope.$index}.label`"
|
|
|
- :rules="{ required: true, message: '请输入参数名称', trigger: 'blur' }"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- size="small"
|
|
|
- v-model="formQuery.items[scope.$index].label"
|
|
|
- placeholder="请输入值"
|
|
|
- type="textarea"
|
|
|
- :autosize="{ minRows: 1, maxRows: 4}"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </template>
|
|
|
- <template #value="scope">
|
|
|
- <el-form-item
|
|
|
- :prop="`items.${scope.$index}.value`"
|
|
|
- :rules="{ required: true, message: '请输入值', trigger: 'blur' }"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- size="small"
|
|
|
- v-model="formQuery.items[scope.$index].value"
|
|
|
- placeholder="参数名称"
|
|
|
- ></el-input-number>
|
|
|
- </el-form-item>
|
|
|
- </template>
|
|
|
- <template #actions="scope">
|
|
|
- <m-button size="small" text type="danger" @click="onDelete(scope)">删除</m-button>
|
|
|
- </template>
|
|
|
- </m-table>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="计算公式">
|
|
|
- <m-card shadow="never">
|
|
|
- <el-tree
|
|
|
- :data="formulaData"
|
|
|
- node-key="uuid"
|
|
|
- ref="formulaTreeRefs"
|
|
|
- default-expand-all
|
|
|
- :expand-on-click-node="false"
|
|
|
+ <el-form ref="form" :model="formQuery">
|
|
|
+ <el-form-item label="参数配置" class="mb-3">
|
|
|
+ <m-table
|
|
|
+ shadow="naver"
|
|
|
+ clearHeader
|
|
|
+ :items="formQuery.items"
|
|
|
+ :headers="[
|
|
|
+ { label: '参数', prop: 'label' },
|
|
|
+ { label: '数值', prop: 'value' },
|
|
|
+ { label: '操作', prop: 'actions' }
|
|
|
+ ]"
|
|
|
>
|
|
|
- <div class="custom-tree-node" slot-scope="{ data, node }">
|
|
|
- <el-input size="small" v-model="data.content" style="width: 300px" placeholder="描述文字"></el-input>
|
|
|
- <template v-if="node.level > 6">
|
|
|
- <el-dropdown @command="e => onCommon(e, data)">
|
|
|
- <m-button size="small" class="ml-3">
|
|
|
- 查看更多
|
|
|
- </m-button>
|
|
|
- <el-dropdown-menu slot="dropdown">
|
|
|
- <el-dropdown-item
|
|
|
- v-for="(item, index) in btnList"
|
|
|
- :key="item.label"
|
|
|
- :command="index"
|
|
|
- >{{ item.label }}</el-dropdown-item>
|
|
|
- </el-dropdown-menu>
|
|
|
- </el-dropdown>
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- <el-button
|
|
|
- v-for="item in btnList"
|
|
|
- :key="item.label"
|
|
|
- class="ml-3"
|
|
|
- size="small"
|
|
|
- @click="item.click(data)">
|
|
|
- {{ item.label }}
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
+ <div class="text-center mt-3">
|
|
|
+ <m-button icon="el-icon-plus" type="orange" size="small" @click="onAdd">添加一行</m-button>
|
|
|
</div>
|
|
|
- </el-tree>
|
|
|
- </m-card>
|
|
|
- </el-form-item>
|
|
|
+ <template #label="scope">
|
|
|
+ <el-form-item
|
|
|
+ :prop="`items.${scope.$index}.label`"
|
|
|
+ :rules="{ required: true, message: '请输入参数名称', trigger: 'blur' }"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ size="small"
|
|
|
+ v-model="formQuery.items[scope.$index].label"
|
|
|
+ placeholder="请输入参数"
|
|
|
+ type="textarea"
|
|
|
+ :autosize="{ minRows: 1, maxRows: 4}"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ <template #value="scope">
|
|
|
+ <el-form-item
|
|
|
+ :prop="`items.${scope.$index}.value`"
|
|
|
+ :rules="{ required: true, message: '请输入值', trigger: 'blur' }"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ size="small"
|
|
|
+ v-model="formQuery.items[scope.$index].value"
|
|
|
+ placeholder="参数名称"
|
|
|
+ ></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ <template #actions="scope">
|
|
|
+ <m-button size="small" text type="danger" @click="onDelete(scope)">删除</m-button>
|
|
|
+ </template>
|
|
|
+ </m-table>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="计算公式">
|
|
|
+ <m-card shadow="never">
|
|
|
+ <el-tree
|
|
|
+ :data="formulaData"
|
|
|
+ node-key="uuid"
|
|
|
+ ref="formulaTreeRefs"
|
|
|
+ default-expand-all
|
|
|
+ :expand-on-click-node="false"
|
|
|
+ >
|
|
|
+ <div class="custom-tree-node" slot-scope="{ data, node }">
|
|
|
+ <el-input size="small" v-model="data.content" style="width: 300px" placeholder="描述文字"></el-input>
|
|
|
+ <template v-if="node.level > 6">
|
|
|
+ <el-dropdown @command="e => onCommon(e, data)">
|
|
|
+ <m-button size="small" class="ml-3">
|
|
|
+ 查看更多
|
|
|
+ </m-button>
|
|
|
+ <el-dropdown-menu slot="dropdown">
|
|
|
+ <el-dropdown-item
|
|
|
+ v-for="(item, index) in btnList"
|
|
|
+ :key="item.label"
|
|
|
+ :command="index"
|
|
|
+ >{{ item.label }}</el-dropdown-item>
|
|
|
+ </el-dropdown-menu>
|
|
|
+ </el-dropdown>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <el-button
|
|
|
+ v-for="item in btnList"
|
|
|
+ :key="item.label"
|
|
|
+ class="ml-3"
|
|
|
+ size="small"
|
|
|
+ @click="item.click(data)">
|
|
|
+ {{ item.label }}
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </el-tree>
|
|
|
+ </m-card>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ </el-form>
|
|
|
</m-card>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
export default {
|
|
|
name: 'salarySolutionRulesEdit',
|
|
|
+ props: {
|
|
|
+ item: {
|
|
|
+ type: Object,
|
|
|
+ default: () => ({})
|
|
|
+ }
|
|
|
+ },
|
|
|
data () {
|
|
|
return {
|
|
|
formQuery: {
|
|
@@ -134,6 +143,56 @@ export default {
|
|
|
},
|
|
|
onCommon (index, data) {
|
|
|
this.btnList[index].click(data)
|
|
|
+ },
|
|
|
+ valid () {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ this.$refs.form.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ resolve(this.getValue())
|
|
|
+ } else {
|
|
|
+ const obj = {
|
|
|
+ data: this.item,
|
|
|
+ $refs: this.$refs.form
|
|
|
+ }
|
|
|
+ reject(obj)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ setValue (data) {
|
|
|
+ this.formQuery.items = data.calculateConfigurations.map(e => {
|
|
|
+ return {
|
|
|
+ label: e.name,
|
|
|
+ value: e.value
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.formulaData = data.calculateFormulas
|
|
|
+ },
|
|
|
+ getValue () {
|
|
|
+ const calculateFormulas = removeUuidFromArrayTree(this.formulaData)
|
|
|
+ function removeUuidFromArrayTree (treeArray) {
|
|
|
+ return treeArray.map(node => {
|
|
|
+ // 删除当前节点的uuid
|
|
|
+ const { uuid, children, ...rest } = node
|
|
|
+
|
|
|
+ // 如果有子节点,递归处理
|
|
|
+ const cleanedNode = { ...rest }
|
|
|
+ if (children && Array.isArray(children) && children.length > 0) {
|
|
|
+ cleanedNode.children = removeUuidFromArrayTree(children)
|
|
|
+ }
|
|
|
+ return cleanedNode
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ category: this.item.title,
|
|
|
+ calculateConfigurations: this.formQuery.items.map(e => {
|
|
|
+ return {
|
|
|
+ name: e.label,
|
|
|
+ value: e.value
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ calculateFormulas
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|