|
@@ -0,0 +1,227 @@
|
|
|
+<template>
|
|
|
+ <el-dialog
|
|
|
+ title="编号配置"
|
|
|
+ :visible.sync="dialogVisible"
|
|
|
+ width="70%"
|
|
|
+ append-to-body
|
|
|
+ >
|
|
|
+
|
|
|
+ <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
|
|
|
+ <el-tab-pane v-for="item in activeOptions" :label="item.label" :name="item.value">
|
|
|
+ <div class="file-rule-container">
|
|
|
+
|
|
|
+ <div class="header-box">
|
|
|
+ <div class="preview-box">
|
|
|
+ <span>生成预览</span>
|
|
|
+ <el-input v-model="dataNumber" placeholder="请输入生成的预览编号" style="width: 300px; margin-left: 10px;" disabled size="small"></el-input>
|
|
|
+ </div>
|
|
|
+ <div class="header-tools">
|
|
|
+
|
|
|
+ <el-button type="text" icon="el-icon-plus" @click="addRow">新增</el-button>
|
|
|
+ <el-button type="text" icon="el-icon-sort" @click="refreshData">排序</el-button>
|
|
|
+ <el-button type="text" icon="el-icon-delete" @click="refreshData" style="color: #F56C6C;">删除</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <el-table
|
|
|
+ :data="tableData"
|
|
|
+ style="width: 100%"
|
|
|
+ v-loading="loading"
|
|
|
+ >
|
|
|
+ <el-table-column label="序号" type="index" width="50"></el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="流水号">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-select
|
|
|
+ v-if="scope.row.isEdit"
|
|
|
+ v-model="scope.row.number"
|
|
|
+ @change="handleNumberChange($event,scope.row)"
|
|
|
+ placeholder="请选择"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in numberOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <span v-else>{{ scope.row.numberName }}</span>
|
|
|
+
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="数据填充">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="scope.row.isEdit">
|
|
|
+ <el-input v-model="scope.row.data" placeholder="输入生成编号时包含的固定字符" v-if="scope.row.number==='1'"></el-input>
|
|
|
+ <el-input v-model="scope.row.data" placeholder="*自动获取当前合同段编号" v-if="scope.row.number==='2'" disabled></el-input>
|
|
|
+ <el-input v-model="scope.row.data" placeholder="*自动获取各试验参数掩码" v-if="scope.row.number==='3'" disabled></el-input>
|
|
|
+ <el-input v-model="scope.row.data" placeholder="*自动获取当前年份" v-if="scope.row.number==='4'" disabled></el-input>
|
|
|
+ <el-input v-model="scope.row.data" placeholder="*自动获取当前月份" v-if="scope.row.number==='5'" disabled></el-input>
|
|
|
+ <el-input v-model="scope.row.data" placeholder="输入子增长的起始值和位数" v-if="scope.row.number==='6'"></el-input>
|
|
|
+ </div>
|
|
|
+ <span v-else>{{ scope.row.data }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="是否自增">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-checkbox v-model="scope.row.isAutoAdd" v-if="scope.row.number==='6'"></el-checkbox>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" width="150">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ @click="handleEdit(scope.$index, scope.row)"
|
|
|
+ v-if="!scope.row.isEdit"
|
|
|
+ >
|
|
|
+ 编辑
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ @click="handleSave(scope.$index, scope.row)"
|
|
|
+ v-else
|
|
|
+ >
|
|
|
+ 保存
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ @click="handleDelete(scope.$index, scope.row)"
|
|
|
+ >
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ </el-tabs>
|
|
|
+
|
|
|
+
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="handleSubmit">保 存</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+export default {
|
|
|
+ name: 'FileRuleDialog',
|
|
|
+
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ dialogVisible: false,
|
|
|
+ loading: false,
|
|
|
+ tableData: [],
|
|
|
+ numberOptions: [
|
|
|
+ { value: '1', label: '固定字符' },
|
|
|
+ { value: '2', label: '合同段编号' },
|
|
|
+ { value: '3', label: '参数掩码' },
|
|
|
+ { value: '4', label: '年份' },
|
|
|
+ { value: '5', label: '月份' },
|
|
|
+ { value: '6', label: '流水号' },
|
|
|
+ ],
|
|
|
+ dataNumber: 'BG-20243W-00001',
|
|
|
+ activeName:'1',
|
|
|
+ activeOptions: [
|
|
|
+ { value: '1', label: '材料编号' },
|
|
|
+ { value: '2', label: '样品编号' },
|
|
|
+ { value: '3', label: '委托单编号' },
|
|
|
+ { value: '4', label: '记录表编号' },
|
|
|
+ { value: '5', label: '报告表编号' }
|
|
|
+ ]
|
|
|
+
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ methods: {
|
|
|
+ show() {
|
|
|
+ this.dialogVisible = true
|
|
|
+ // this.loadData()
|
|
|
+ },
|
|
|
+ addRow() {
|
|
|
+ this.tableData.unshift({
|
|
|
+ isEdit: true,
|
|
|
+
|
|
|
+
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ refreshData() {
|
|
|
+ this.loading = true
|
|
|
+ // TODO: 调用接口刷新数据
|
|
|
+ setTimeout(() => {
|
|
|
+ this.loading = false
|
|
|
+ }, 500)
|
|
|
+ },
|
|
|
+
|
|
|
+ handleEdit(index, row) {
|
|
|
+ this.$set(row, 'isEdit', true)
|
|
|
+ },
|
|
|
+
|
|
|
+ handleSave(index, row) {
|
|
|
+
|
|
|
+ row.isEdit = false
|
|
|
+ },
|
|
|
+
|
|
|
+ handleDelete(index, row) {
|
|
|
+ this.$confirm('确认删除该规则?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ this.tableData.splice(index, 1)
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ handleNumberChange(data,row) {
|
|
|
+ console.log(data,'data');
|
|
|
+ console.log(row,'row');
|
|
|
+ this.numberOptions.forEach(item => {
|
|
|
+ if (item.value === data) {
|
|
|
+ row.numberName = item.label
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // 处理节点选择变化
|
|
|
+ // row.numberName=
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ handleSubmit() {
|
|
|
+ // TODO: 提交保存
|
|
|
+ this.dialogVisible = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.file-rule-container {
|
|
|
+ .header-box{
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ margin-right: 10px;
|
|
|
+ }
|
|
|
+ .header-tools {
|
|
|
+ // display: flex;
|
|
|
+
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+
|
|
|
+ .node-tree {
|
|
|
+ margin-top: 10px;
|
|
|
+ max-height: 200px;
|
|
|
+ overflow-y: auto;
|
|
|
+ border: 1px solid #EBEEF5;
|
|
|
+ padding: 10px;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|