|
|
@@ -21,7 +21,7 @@
|
|
|
group="project1"
|
|
|
:animation="300"
|
|
|
handle=".sort-handle"
|
|
|
- style="flex: 1;max-height:calc(100vh - 500px);overflow: auto;"
|
|
|
+ style="flex: 1; max-height: calc(100vh - 500px); overflow: auto"
|
|
|
>
|
|
|
<div
|
|
|
class="demo-drag-list-item ele-cell"
|
|
|
@@ -95,6 +95,33 @@
|
|
|
@change="editInputChange"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="字段类型:" prop="fieldType" v-if="domObj.mode=='person'">
|
|
|
+ <el-select
|
|
|
+ v-model="domObj.fieldType"
|
|
|
+ placeholder="请选择"
|
|
|
+ @change="onFieldTypeChange"
|
|
|
+ clearable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="opt in fieldTypeOptions"
|
|
|
+ :key="opt.value"
|
|
|
+ :label="opt.label"
|
|
|
+ :value="opt.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- 🆕 对齐方式下拉 -->
|
|
|
+ <el-form-item label="对齐方式:" prop="textAlign">
|
|
|
+ <el-select
|
|
|
+ v-model="domObj.textAlign"
|
|
|
+ placeholder="请选择"
|
|
|
+ @change="editInputChange"
|
|
|
+ >
|
|
|
+ <el-option label="左对齐" value="left"></el-option>
|
|
|
+ <el-option label="居中对齐" value="center"></el-option>
|
|
|
+ <el-option label="右对齐" value="right"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="是否只读:" prop="readonly">
|
|
|
<el-select
|
|
|
v-model="domObj.readonly"
|
|
|
@@ -275,6 +302,13 @@
|
|
|
templateDivRef: '',
|
|
|
domObj: { units: {} },
|
|
|
idList: [],
|
|
|
+ fieldTypeOptions: [
|
|
|
+ { label: '作业负责人', value: 'work_leader' },
|
|
|
+ { label: '监护人', value: 'guardian' },
|
|
|
+ { label: '作业人', value: 'worker' },
|
|
|
+ { label: '安全交底人', value: 'safety_briefer' },
|
|
|
+ { label: '接受交底人', value: 'safety_receiver' }
|
|
|
+ ],
|
|
|
opSelectOptions: ['+', '-', '*', '/', '%', '(', ')'],
|
|
|
equationUnit: {
|
|
|
equation: [],
|
|
|
@@ -342,7 +376,47 @@
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
+ onFieldTypeChange(val) {
|
|
|
+ const oldId = this.domObj.id;
|
|
|
+ const oldFieldType = this.domObj.fieldType;
|
|
|
|
|
|
+ if (val) {
|
|
|
+ // 获取当前编辑的 customTable 子组件实例
|
|
|
+ const childRef = this.$refs[this.templateDivRef];
|
|
|
+ // if (
|
|
|
+ // !childRef ||
|
|
|
+ // !childRef[0] ||
|
|
|
+ // typeof childRef[0].isIdDuplicate !== 'function'
|
|
|
+ // ) {
|
|
|
+ // // 若组件未加载或方法不存在,直接允许修改(降级)
|
|
|
+ // this.domObj.id = val;
|
|
|
+ // this.domObj.fieldType = val;
|
|
|
+ // this.editInputChange();
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // 调用子组件的重复检查方法
|
|
|
+
|
|
|
+ const isDuplicate = childRef[0].isIdDuplicate(val, this.domObj.id);
|
|
|
+ if (isDuplicate) {
|
|
|
+ this.$message.warning(
|
|
|
+ '该字段类型在当前表格中已被使用,请选择其他类型'
|
|
|
+ );
|
|
|
+ this.domObj.fieldType = '';
|
|
|
+ } else {
|
|
|
+ // 唯一,允许修改
|
|
|
+ this.domObj.id = val;
|
|
|
+ this.domObj.fieldType = val;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.editInputChange();
|
|
|
+ } else {
|
|
|
+ // 取消选择:随机生成 id,清空类型
|
|
|
+ this.domObj.id = generateRandomString(6);
|
|
|
+ this.domObj.fieldType = '';
|
|
|
+ this.editInputChange();
|
|
|
+ }
|
|
|
+ },
|
|
|
truncateToFixedManual(num, decimalPlaces) {
|
|
|
let factor = Math.pow(10, decimalPlaces);
|
|
|
return Math.floor(num * factor) / factor;
|
|
|
@@ -476,10 +550,15 @@
|
|
|
}
|
|
|
},
|
|
|
editShowFn({ templateDivRef, domObj }) {
|
|
|
- if (!this.edit) {
|
|
|
- return;
|
|
|
- }
|
|
|
+ if (!this.edit) return;
|
|
|
this.templateDivRef = templateDivRef;
|
|
|
+ // 根据 id 匹配类型(若 id 为预设值则回显,否则置空)
|
|
|
+ const found = this.fieldTypeOptions.find(
|
|
|
+ (opt) => opt.value === domObj.id
|
|
|
+ );
|
|
|
+ domObj.fieldType = found ? found.value : '';
|
|
|
+ // 确保 domObj 有 textAlign 默认值(若没有则设置)
|
|
|
+ if (!domObj.textAlign) domObj.textAlign = 'center';
|
|
|
this.$set(this, 'domObj', domObj);
|
|
|
this.editShow = true;
|
|
|
},
|