@@ -20,7 +20,7 @@ | |||
<el-col v-for="(col, colIndex) in row" :key="colIndex" :span="24 / row.length"> | |||
<!-- 通过多个 col === null 可以控制更灵活的 span 大小 --> | |||
<el-form-item v-if="col !== null" :label="col.label" :prop="col.prop" :rules="col.rules || null"> | |||
<el-input v-if="col.input" v-model="dataForm[col.prop]" clearable :disabled="detailMode" v-bind="col.elparams" /> | |||
<el-input v-if="col.input" v-model="dataForm[col.prop]" clearable :disabled="IsNotAvaliable(col)" v-bind="col.elparams" /> | |||
<el-input v-if="col.forceDisabled && col.eraseOnSubmit" v-model="shadowDataForm[col.prop]" disabled v-bind="col.elparams" /> | |||
<el-input v-if="col.forceDisabled && !col.eraseOnSubmit" v-model="dataForm[col.prop]" disabled v-bind="col.elparams" /> | |||
<el-button type="" plain v-if="col.button" v-bind="col.elparams" style="width: 100%" @click="handleButtonClick(col)">{{ | |||
@@ -30,7 +30,7 @@ | |||
v-if="col.cascader" | |||
v-model="dataForm[col.prop]" | |||
:options="col.options" | |||
:disabled="detailMode" | |||
:disabled="IsNotAvaliable(col)" | |||
v-bind="col.elparams" | |||
></el-cascader> | |||
<el-select v-if="col.forceDisabledSelect" disabled v-model="dataForm[col.prop]" clearable v-bind="col.elparams"> | |||
@@ -40,7 +40,7 @@ | |||
v-if="col.select" | |||
v-model="dataForm[col.prop]" | |||
clearable | |||
:disabled="detailMode" | |||
:disabled="IsNotAvaliable(col)" | |||
v-bind="col.elparams" | |||
@change="handleSelectChange(col, $event)" | |||
> | |||
@@ -54,14 +54,14 @@ | |||
@change="handleSwitchChange" | |||
:disabled="detailMode" | |||
/> | |||
<el-input v-if="col.textarea" type="textarea" v-model="dataForm[col.prop]" :disabled="detailMode" v-bind="col.elparams" /> | |||
<el-date-picker v-if="col.datetime" v-model="dataForm[col.prop]" :disabled="detailMode" v-bind="col.elparams" /> | |||
<el-input v-if="col.textarea" type="textarea" v-model="dataForm[col.prop]" :disabled="IsNotAvaliable(col)" v-bind="col.elparams" /> | |||
<el-date-picker v-if="col.datetime" v-model="dataForm[col.prop]" :disabled="IsNotAvaliable(col)" v-bind="col.elparams" /> | |||
<uploadBtn | |||
v-if="col.upload" | |||
:key="'upload_' + rowIndex + colIndex" | |||
:action="col.actionUrl" | |||
:file-list="dataForm['files']" | |||
:disabled="detailMode" | |||
:disabled="IsNotAvaliable(col)" | |||
v-bind="col.elparams" | |||
@update-file-list="handleFilelistUpdate" | |||
/> | |||
@@ -72,7 +72,7 @@ | |||
v-model="dataForm[col.prop]" | |||
:options="col.quillConfig ?? defaultQuillConfig" | |||
style="margin-top: 42px" | |||
:disabled="detailMode" | |||
:disabled="IsNotAvaliable(col)" | |||
/> | |||
<div class="" v-if="col.component" style="margin: 42px 0 0"> | |||
@@ -384,6 +384,9 @@ export default { | |||
}, | |||
}, | |||
methods: { | |||
IsNotAvaliable(col) { | |||
return this.detailMode || (col.disableOnEdit && this.editMode); | |||
}, | |||
handleFilelistUpdate(newFilelist) { | |||
// TODO: 直接访问 .files 可能不太合适 | |||
this.dataForm.files = newFilelist.map((file) => ({ | |||
@@ -104,6 +104,7 @@ export default function () { | |||
optionValue: 'carId', | |||
fetchData: () => this.$http.post("/pms/carHandle/pageView", { page: 1, limit: 999 }), | |||
disableWatcherOnEdit: true, | |||
disableOnEdit: true, // 编辑模式下不可编辑 | |||
rules: { required: true, message: "必填项不能为空", trigger: "blur" }, | |||
elparams: { placeholder: "请输入窑车号", filterable: true }, | |||
injectTo: [ | |||
@@ -117,6 +118,7 @@ export default function () { | |||
label: "当前位置", | |||
// options: getDictDataList(), | |||
prop: "posCode", | |||
elparams: { placeholder: "-" }, | |||
}, | |||
{ | |||
forceDisabledSelect: true, | |||
@@ -130,6 +132,7 @@ export default function () { | |||
{ label: '摆渡车', value: '3' }, | |||
{ label: '空窑车', value: '4' }, | |||
], | |||
elparams: { placeholder: "-" }, | |||
}, | |||
{ | |||
select: true, | |||
@@ -139,7 +142,8 @@ export default function () { | |||
{ label: '是', value: 'yes' }, | |||
{ label: '否', value: 'no', default: true }, | |||
], | |||
// rules: { required: true, message: "必选项不能为空", trigger: "blur" }, | |||
default: 'no', | |||
rules: { required: true, message: "必选项不能为空", trigger: "blur" }, | |||
elparams: { placeholder: "请选择报废状态" }, | |||
}, | |||
], | |||
@@ -154,7 +158,8 @@ export default function () { | |||
hasPrev: 'carId', // 当 carId 改变的时候,也会 fetchData | |||
fetchDataParam: { search: 'carId', get: 'id' }, // 伴随着 hasPrev 出现 | |||
fetchData: (hisId) => this.$http.get(`/pms/carHandle/${hisId}`), | |||
disableWatcherOnEdit: true, | |||
disableWatcherOnEdit: true, // 编辑模式下关闭 watcher | |||
disableOnEdit: true, // 编辑模式下不可编辑 | |||
rules: { required: true, message: "必选项不能为空", trigger: "blur" }, | |||
elparams: { placeholder: "请选择订单" }, | |||
injectTo: [ | |||
@@ -167,19 +172,19 @@ export default function () { | |||
forceDisabled: true, | |||
label: "子号", | |||
prop: "orderCate", | |||
elparams: { placeholder: "无" }, | |||
elparams: { placeholder: "-" }, | |||
}, | |||
{ | |||
forceDisabled: true, | |||
label: "砖型", | |||
prop: "shapeCode", | |||
elparams: { placeholder: "无" }, | |||
elparams: { placeholder: "-" }, | |||
}, | |||
{ | |||
forceDisabled: true, | |||
label: "订单砖数", | |||
prop: "orderQty", | |||
elparams: { placeholder: "无" }, | |||
elparams: { placeholder: "-" }, | |||
}, | |||
], | |||
[ | |||
@@ -205,6 +210,7 @@ export default function () { | |||
}, | |||
{ | |||
input: true, | |||
disableOnEdit: true, // 编辑模式下不可编辑 | |||
label: "检测人", | |||
prop: "checkPerson", | |||
// rules: { required: true, message: "必填项不能为空", trigger: "blur" }, | |||
@@ -212,6 +218,7 @@ export default function () { | |||
}, | |||
{ | |||
datetime: true, | |||
disableOnEdit: true, // 编辑模式下不可编辑 | |||
label: "检测时间", | |||
prop: "checkTime", | |||
rules: { required: true, message: "必填项不能为空", trigger: "blur" }, | |||