|
|
@@ -23,13 +23,16 @@
|
|
|
<template slot="right">
|
|
|
<view>分钟</view>
|
|
|
</template>
|
|
|
- </u-form-item>-->
|
|
|
+</u-form-item>-->
|
|
|
<!-- <u-form-item label="维修动作" prop="descripitionType">
|
|
|
<u-input v-model="form.descripitionType" disabled @click="descripitionState = true" type="select" />
|
|
|
<u-select v-model="descripitionState" :list="descripitionList" @confirm="descripitionSubmit"></u-select>
|
|
|
</u-form-item>-->
|
|
|
- <u-form-item label="备注">
|
|
|
+ <!-- <u-form-item label="备注">
|
|
|
<u-input v-model="form.remark" type="textarea" :height="50" />
|
|
|
+ </u-form-item> -->
|
|
|
+ <u-form-item label="维修描述" required prop="repairContent" :label-width="150">
|
|
|
+ <u-input v-model="form.repairContent" type="textarea" :height="50" placeholder="请输入维修描述" />
|
|
|
</u-form-item>
|
|
|
<!-- <u-form-item label="维修时间">
|
|
|
<u-input v-model="form.wxtime" disabled @click="wxtimeShow = true" />
|
|
|
@@ -39,36 +42,21 @@
|
|
|
<u-input v-model="category" disabled @click="categoryState = true" type="select" />
|
|
|
<u-select v-model="categoryState" :list="categoryMap" @confirm="categorySubmit"></u-select>
|
|
|
</u-form-item>
|
|
|
- <u-form-item
|
|
|
- label="是否停机"
|
|
|
- required
|
|
|
- prop="halt"
|
|
|
- :label-width="150"
|
|
|
- >
|
|
|
- <u-input
|
|
|
- v-model="form.halt"
|
|
|
- disabled
|
|
|
- @click="haltState = true"
|
|
|
- placeholder="请选择是否停机"
|
|
|
- type="select"
|
|
|
- />
|
|
|
- <u-select
|
|
|
- v-model="haltState"
|
|
|
- :list="haltList"
|
|
|
- @confirm="haltSubmit"
|
|
|
- :default-value="haltDefaultValue"
|
|
|
- ></u-select>
|
|
|
+ <u-form-item label="是否停机" required prop="halt" :label-width="150">
|
|
|
+ <u-input v-model="form.halt" disabled @click="haltState = true" placeholder="请选择是否停机"
|
|
|
+ type="select" />
|
|
|
+ <u-select v-model="haltState" :list="haltList" @confirm="haltSubmit"
|
|
|
+ :default-value="haltDefaultValue"></u-select>
|
|
|
+ </u-form-item>
|
|
|
+ <u-form-item label="完成时间" prop="repairEndTime" :label-width="150">
|
|
|
+ <u-input v-model="form.repairEndTime" disabled @click="endTimeShow = true" placeholder="请选择完成时间"
|
|
|
+ type="select" />
|
|
|
+ <u-picker mode="time" v-model="endTimeShow" :params="dateTimeParams"
|
|
|
+ @confirm="endTimeSubmit"></u-picker>
|
|
|
</u-form-item>
|
|
|
<u-form-item label="维修图片">
|
|
|
- <u-upload
|
|
|
- width="180"
|
|
|
- height="180"
|
|
|
- max-count="3"
|
|
|
- :action="action"
|
|
|
- :file-list="fileList"
|
|
|
- @on-success="uploadSuccess"
|
|
|
- @on-remove="uploadRemove"
|
|
|
- :header="header"></u-upload>
|
|
|
+ <u-upload width="180" height="180" max-count="3" :action="action" :file-list="fileList"
|
|
|
+ @on-success="uploadSuccess" @on-remove="uploadRemove" :header="header"></u-upload>
|
|
|
</u-form-item>
|
|
|
|
|
|
</u-form>
|
|
|
@@ -99,9 +87,19 @@ export default {
|
|
|
repairErrorTypeId: '',
|
|
|
repairMinutes: '',
|
|
|
repairRemark: '',
|
|
|
- repairContent: ''
|
|
|
+ repairContent: '',
|
|
|
+ repairEndTime: ''
|
|
|
},
|
|
|
wxtimeShow: false,
|
|
|
+ endTimeShow: false, // 完成时间
|
|
|
+ dateTimeParams: {
|
|
|
+ year: true,
|
|
|
+ month: true,
|
|
|
+ day: true,
|
|
|
+ hour: true,
|
|
|
+ minute: true,
|
|
|
+ second: true
|
|
|
+ },
|
|
|
badState: false,
|
|
|
categoryState: false,
|
|
|
category: '',
|
|
|
@@ -129,6 +127,20 @@ export default {
|
|
|
message: '请选择是否停机',
|
|
|
trigger: ['blur', 'change']
|
|
|
}
|
|
|
+ ],
|
|
|
+ category: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择工单类别',
|
|
|
+ trigger: ['blur', 'change']
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ repairContent: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入维修描述',
|
|
|
+ trigger: ['blur', 'change']
|
|
|
+ }
|
|
|
]
|
|
|
/* badType: [{
|
|
|
required: true,
|
|
|
@@ -181,7 +193,7 @@ export default {
|
|
|
this.getType()
|
|
|
},
|
|
|
onReady() {
|
|
|
- // this.$refs.uForm.setRules(this.rules);
|
|
|
+ this.$refs.uForm.setRules(this.rules);
|
|
|
},
|
|
|
methods: {
|
|
|
descripitionSubmit(data) {
|
|
|
@@ -197,6 +209,13 @@ export default {
|
|
|
categorySubmit(data) {
|
|
|
this.category = data[0].label;
|
|
|
this.form.category = data[0].value;
|
|
|
+ // 与 PC 端 FinishForm 联动逻辑一致:计划性维修默认停机,其余默认不停机
|
|
|
+ const needStopValue = data[0].value == 1 ? '1' : '0';
|
|
|
+ this.form.needStop = needStopValue;
|
|
|
+ const haltItem = this.haltList.find(item => item.value == needStopValue);
|
|
|
+ if (haltItem) {
|
|
|
+ this.form.halt = haltItem.label;
|
|
|
+ }
|
|
|
},
|
|
|
badSubmit(data) {
|
|
|
this.form.badType = data[0].label;
|
|
|
@@ -212,27 +231,47 @@ export default {
|
|
|
const params = {
|
|
|
...this.form
|
|
|
}
|
|
|
- params.repairFileList = this.imagesList
|
|
|
- this.$Http
|
|
|
- .finish(params)
|
|
|
- .then((res) => {
|
|
|
- uni.redirectTo({
|
|
|
- url: '/pages/service-detail/service-detail?id=' + this.detailId
|
|
|
- })
|
|
|
- })
|
|
|
+ // 维修图片按 PC 端 FinishForm 的文件 DTO 结构提交(type 12 为维修图片)
|
|
|
+ params.repairFileList = this.imagesList.map(item => ({
|
|
|
+ type: 12,
|
|
|
+ name: item.name,
|
|
|
+ fileName: item.fileName,
|
|
|
+ fileFormat: item.fileFormat,
|
|
|
+ url: item.url
|
|
|
+ }))
|
|
|
+ this.$refs.uForm.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ this.$Http
|
|
|
+ .finish(params)
|
|
|
+ .then((res) => {
|
|
|
+ uni.redirectTo({
|
|
|
+ url: '/pages/service-detail/service-detail?id=' + this.detailId
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
haltSubmit(data) {
|
|
|
this.form.halt = data[0].label;
|
|
|
this.form.needStop = data[0].value;
|
|
|
},
|
|
|
+ // 完成时间
|
|
|
+ endTimeSubmit(e) {
|
|
|
+ this.form.repairEndTime = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:${e.second}`;
|
|
|
+ },
|
|
|
// 删除成功
|
|
|
uploadRemove(index, lists, name) {
|
|
|
this.fileList = lists;
|
|
|
+ // 同步移除已收集的图片,避免删除后仍提交给后端
|
|
|
+ this.imagesList.splice(index, 1);
|
|
|
},
|
|
|
// 上传成功
|
|
|
uploadSuccess(data, index, lists, name) {
|
|
|
this.fileList = lists;
|
|
|
- this.imagesList.push(data.data)
|
|
|
+ // 后端返回 { code, data: 文件实体 },只收集文件实体,避免把响应包装对象提交给后端
|
|
|
+ if (data && data.data) {
|
|
|
+ this.imagesList.push(data.data)
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
getType() {
|
|
|
@@ -275,38 +314,38 @@ export default {
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
- .submit {
|
|
|
- align-items: center;
|
|
|
- justify-content: space-around;
|
|
|
+.submit {
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-around;
|
|
|
|
|
|
- view {
|
|
|
- width: 240rpx;
|
|
|
- padding: 15rpx 0;
|
|
|
- border-radius: 40rpx;
|
|
|
- text-align: center;
|
|
|
- }
|
|
|
- }
|
|
|
+ view {
|
|
|
+ width: 240rpx;
|
|
|
+ padding: 15rpx 0;
|
|
|
+ border-radius: 40rpx;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- .footer {
|
|
|
- bottom: 0;
|
|
|
- left: 0;
|
|
|
- right: 0;
|
|
|
- background-color: #fff;
|
|
|
- z-index: 10000;
|
|
|
- border-top: 1rpx solid #f4f4f4;
|
|
|
- height: 100rpx;
|
|
|
+.footer {
|
|
|
+ bottom: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ background-color: #fff;
|
|
|
+ z-index: 10000;
|
|
|
+ border-top: 1rpx solid #f4f4f4;
|
|
|
+ height: 100rpx;
|
|
|
|
|
|
- .common {
|
|
|
- padding: 15rpx 100rpx;
|
|
|
- border-radius: 40rpx;
|
|
|
- background-color: #0082ff;
|
|
|
- color: #fff;
|
|
|
+ .common {
|
|
|
+ padding: 15rpx 100rpx;
|
|
|
+ border-radius: 40rpx;
|
|
|
+ background-color: #0082ff;
|
|
|
+ color: #fff;
|
|
|
|
|
|
- &:last-child {
|
|
|
- background-color: #fff;
|
|
|
- color: #0082ff;
|
|
|
- border: 1rpx solid #0082ff;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ &:last-child {
|
|
|
+ background-color: #fff;
|
|
|
+ color: #0082ff;
|
|
|
+ border: 1rpx solid #0082ff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|