factory_web/src/views/wf/field.vue

261 lines
7.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<el-container>
<el-header>
<div class="left-panel">
<el-button type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable ref="table" :data="list" row-key="id" stripe highlightCurrentRow hidePagination>
<el-table-column type="index" width="50"/>
<el-table-column label="字段标识" prop="field_key"></el-table-column>
<el-table-column label="字段名称" prop="field_name"></el-table-column>
<el-table-column label="字段类型" prop="field_type"></el-table-column>
<el-table-column label="顺序ID" prop="sort"></el-table-column>
<el-table-column label="字段描述" prop="description"></el-table-column>
<el-table-column label="创建时间" prop="create_time"></el-table-column>
<el-table-column label="操作" fixed="right" align="right" width="120">
<template #default="scope">
<el-button link size="small" @click="handleEdit(scope.row)">编辑</el-button>
<el-popconfirm title="确定删除吗?">
<template #reference>
<el-button link size="small">删除</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</scTable>
<el-dialog
v-model="dialogVisible"
:title="titleMap[type]">
<el-form
ref="Form"
:model="addForm"
label-width="80px"
label-position="right"
:rules="rule">
<el-form-item label="字段标识" prop="field_key">
<el-input v-model="addForm.field_key" placeholder="字段标识"/>
</el-form-item>
<el-form-item label="字段名称" prop="field_name">
<el-input v-model="addForm.field_name" placeholder="字段名称"/>
</el-form-item>
<el-form-item label="字段描述" prop="description">
<el-input v-model="addForm.description" placeholder="字段描述"/>
</el-form-item>
<el-form-item label="占位符" prop="placeholder">
<el-input v-model="addForm.placeholder" placeholder="占位符"/>
</el-form-item>
<el-form-item label="展示标签" prop="field_type">
<el-select style="width: 100%" v-model="addForm.field_type" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="字段标签" v-show="addForm.field_type=='select'||addForm.field_type=='selects'">
<el-input v-model="addForm.label" placeholder="选项类型"/>
</el-form-item>
<el-form-item label="选项" v-show="addForm.field_type=='select'||addForm.field_type=='selects'">
<el-button @click.prevent="addDomain" style="border: none;">
<i class="el-icon-circle-plus-outline"></i>
<span style="font-size:14px;">添加</span>
</el-button>
<el-row v-for="(domain, $index) in choiceOption" :key='$index+1' style="margin-bottom: 10px">
<el-col :span="10">
<template>
<el-form-item label="id">
<el-input type="number" v-model="domain.id" auto-complete="off"
placeholder="id为整数"></el-input>
</el-form-item>
</template>
</el-col>
<el-col :span="10">
<template>
<el-form-item label="name">
<el-input v-model="domain.name" auto-complete="off"></el-input>
</el-form-item>
</template>
</el-col>
<el-col :span="3" style="text-align: center" v-if="$index!==0">
<i
class="el-icon-remove-outline"
style="color: red;font-size: 16px;"
@click.prevent="removeDomain($index,'1')"
></i>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="顺序ID">
<el-input v-model="addForm.sort" type="number" placeholder="顺序"/>
</el-form-item>
<el-form-item label="默认值">
<el-input v-model="addForm.default_value" placeholder="默认值"/>
</el-form-item>
<el-form-item label="模板">
<el-input v-model="addForm.field_template" placeholder="你有一个待办工单:{title}"/>
</el-form-item>
<el-form-item label="是否隐藏">
<el-radio-group v-model="addForm.is_hidden">
<el-radio :label="false">显示</el-radio>
<el-radio :label="true">隐藏</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div style="text-align: right">
<el-button type="danger" @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="submitHandle('Form')">确认</el-button>
</div>
</el-dialog>
</el-main>
</el-container>
</template>
<script>
export default {
name: "field",
data() {
return {
id: sessionStorage.getItem('jinYuWorkflowId'),
list: [],
type: "add",
titleMap: {
add: '新增',
edit: '编辑',
show: '查看'
},
//表单数据
addForm: {
field_key: '',
field_name: '',
placeholder: '',
field_type: '',
sort: '',
label: 'name',
default_value: '',
field_template: '',
field_choice: [],
is_hidden: false,
},
//验证规则
rules: {
name: [
{required: true, message: '请输入工作流名称'}
]
},
choiceOption: [{id: null, name: ""}],
labels: [{
label: '常规',
value: 'name'
}, {
label: '名称|id',
value: 'name|id'
}, {
label: '人员选择',
value: 'user'
}],
options: [{
value: 'string',
label: '文本'
}, {
value: 'int',
label: '整数'
}, {
value: 'float',
label: '小数'
}, {
value: 'date',
label: '日期'
}, {
value: 'datetime',
label: '日期时间'
}, {
value: 'select',
label: '单选'
}, {
value: 'selects',
label: '多选'
}, {
value: 'textarea',
label: '文本域'
}, {
value: 'file',
label: '附件'
}],
editId: null,
dialogVisible: false,
}
},
mounted() {
this.getList();
},
methods: {
//添加字段选项
addDomain() {
this.choiceOption.push({id: null, name: ""})
},
//删除字段选项
removeDomain(index) {
this.choiceOption.splice(index, 1)
},
handleAdd() {
this.type = 'add';
this.dialogVisible = true;
},
submitHandle() {
let that = this, choiceArr = [];
debugger;
this.$refs.Form.validate((valid) => {
if (valid) {
if (that.choiceOption[0] && that.choiceOption[0].name !== '' && that.choiceOption[0].name !== null && that.choiceOption[0].name !== undefined) {
that.choiceOption.forEach((item) => {
let obj = new Object();
obj.id = parseInt(item.id);
obj.name = item.name;
choiceArr.push(obj);
})
}
that.addForm.field_choice = choiceArr;
that.isSaveing = true;
let res = null;
if (that.type === 'add') {
debugger;
that.addForm.workflow = this.id;
res = that.$API.wf.customfield.create.req(that.addForm);
} else {
res = that.$API.wf.customfield.update.req(that.editId, that.addForm);
}
if (res.err_msg) {
this.$message.error(res.err_msg)
} else {
that.isSaveing = false;
that.limitedVisible = false;
that.$refs.table.refresh();
}
}
})
},
handleEdit(row) {
this.type = 'edit';
this.editId = row.id;
this.dialogVisible = true;
this.addForm = Object.assign({}, row);
},
async getList() {
let res = await this.$API.wf.workflow.customfields.req(this.id);
this.list = res;
},
},
}
</script>
<style scoped>
</style>