Blame view

src/components/work/chooseSingleResource.vue 9.24 KB
b25b036d   wuxw   v1.9 优化日期
1
  <template>
72de60dc   wuxw   优化报修完成
2
3
4
    <el-dialog :title="$t('chooseSingleResource.title')" :visible.sync="dialogVisible" width="60%" @close="handleClose">
  
      <el-form :model="form" label-width="120px">
4927ce37   wuxw   开发完成报修功能
5
        <el-form-item :label="$t('chooseSingleResource.goodsType')">
72de60dc   wuxw   优化报修完成
6
7
8
9
          <el-select v-model="form.rsId" :placeholder="$t('chooseSingleResource.selectGoodsType')" style="width:100%"
            @change="handleRsIdChange">
            <el-option v-for="item in resourceStoreTypes" :key="item.rstId" :label="item.name" :value="item.rstId">
            </el-option>
4927ce37   wuxw   开发完成报修功能
10
11
12
13
14
          </el-select>
        </el-form-item>
  
        <template v-if="form.isCustom">
          <el-form-item :label="$t('chooseSingleResource.goodsName')">
72de60dc   wuxw   优化报修完成
15
16
17
18
19
20
21
22
            <el-input v-model="form.customGoodsName" :placeholder="$t('chooseSingleResource.inputGoodsName')">
            </el-input>
          </el-form-item>
  
          <el-form-item :label="$t('chooseSingleResource.customPrice')" v-if="form.maintenanceType === '1001'">
            <el-input-number v-model="form.price" :placeholder="$t('chooseSingleResource.inputPrice')" :min="0"
              style="width:100%">
            </el-input-number>
4927ce37   wuxw   开发完成报修功能
23
24
          </el-form-item>
        </template>
72de60dc   wuxw   优化报修完成
25
  
4927ce37   wuxw   开发完成报修功能
26
        <template v-else>
72de60dc   wuxw   优化报修完成
27
28
29
30
31
          <el-form-item :label="$t('chooseSingleResource.subCategory')">
            <el-select v-model="form.rstId" :placeholder="$t('chooseSingleResource.selectSubCategory')" style="width:100%"
              @change="handleRstIdChange">
              <el-option v-for="item in sonResourceStoreTypes" :key="item.rstId" :label="item.name" :value="item.rstId">
              </el-option>
4927ce37   wuxw   开发完成报修功能
32
33
34
            </el-select>
          </el-form-item>
  
72de60dc   wuxw   优化报修完成
35
36
37
38
39
          <el-form-item :label="$t('chooseSingleResource.goods')" v-if="form.rstId">
            <el-select v-model="form.resId" :placeholder="$t('chooseSingleResource.selectGoods')" style="width:100%"
              @change="handleResIdChange">
              <el-option v-for="item in resourceStores" :key="item.resId" :label="item.resName" :value="item.resId">
              </el-option>
4927ce37   wuxw   开发完成报修功能
40
41
            </el-select>
          </el-form-item>
4927ce37   wuxw   开发完成报修功能
42
  
72de60dc   wuxw   优化报修完成
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
          <template v-if="form.resId">
            <el-form-item :label="$t('chooseSingleResource.goodsPrice')"
              v-if="form.maintenanceType === '1001' && form.outLowPrice === form.outHighPrice">
              <el-input-number v-model="form.price" disabled style="width:100%">
              </el-input-number>
            </el-form-item>
  
            <el-form-item :label="$t('chooseSingleResource.customPrice')"
              v-if="form.maintenanceType === '1001' && form.outLowPrice !== form.outHighPrice">
              <el-input-number v-model="form.price" :min="form.outLowPrice" :max="form.outHighPrice" style="width:100%">
              </el-input-number>
              <span>{{ $t('chooseSingleResource.priceRange') }} {{ form.outLowPrice }}-{{ form.outHighPrice }}</span>
            </el-form-item>
  
            <el-form-item :label="$t('chooseSingleResource.spec')">
              <el-input v-model="form.selectedGoodsInfo.specName" disabled>
              </el-input>
            </el-form-item>
          </template>
4927ce37   wuxw   开发完成报修功能
62
        </template>
72de60dc   wuxw   优化报修完成
63
64
65
66
67
  
        <el-form-item :label="$t('chooseSingleResource.quantity')">
          <el-input-number v-model="form.useNumber" :min="1" @change="handleQuantityChange">
          </el-input-number>
        </el-form-item>
4927ce37   wuxw   开发完成报修功能
68
69
      </el-form>
  
72de60dc   wuxw   优化报修完成
70
71
72
73
74
75
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">{{ $t('common.cancel') }}</el-button>
        <el-button type="primary" @click="handleConfirm" :loading="loading">
          {{ $t('common.confirm') }}
        </el-button>
      </span>
4927ce37   wuxw   开发完成报修功能
76
77
78
79
    </el-dialog>
  </template>
  
  <script>
72de60dc   wuxw   优化报修完成
80
81
82
  //import { getDict } from '@/api/community/communityApi'
  import { getCommunityId } from '@/api/community/communityApi'
  import { listResourceStoreTypes, listUserStorehouses } from '@/api/work/finishRepairApi'
4927ce37   wuxw   开发完成报修功能
83
84
85
  
  export default {
    name: 'ChooseSingleResource',
4927ce37   wuxw   开发完成报修功能
86
87
    data() {
      return {
72de60dc   wuxw   优化报修完成
88
89
        dialogVisible: false,
        loading: false,
4927ce37   wuxw   开发完成报修功能
90
91
92
93
        form: {
          maintenanceType: '',
          resourceStoreTypes: [],
          sonResourceStoreTypes: [],
4927ce37   wuxw   开发完成报修功能
94
          rsId: '',
72de60dc   wuxw   优化报修完成
95
          rstId: '',
4927ce37   wuxw   开发完成报修功能
96
97
98
99
100
101
102
103
104
105
106
          resId: '',
          repairId: '',
          selectedGoodsInfo: {},
          resourceStores: [],
          isCustom: false,
          customGoodsName: '',
          price: '',
          outLowPrice: '',
          outHighPrice: '',
          useNumber: 1,
          sign: ''
72de60dc   wuxw   优化报修完成
107
108
109
110
111
        },
        resourceStoreTypes: [],
        sonResourceStoreTypes: [],
        resourceStores: [],
        communityId: ''
4927ce37   wuxw   开发完成报修功能
112
113
      }
    },
4927ce37   wuxw   开发完成报修功能
114
    methods: {
72de60dc   wuxw   优化报修完成
115
116
117
118
119
120
      open(params) {
        this.resetForm()
        this.communityId = getCommunityId()
        this.form.maintenanceType = params.maintenanceType
        if (params.sign) {
          this.form.sign = params.sign
4927ce37   wuxw   开发完成报修功能
121
        }
72de60dc   wuxw   优化报修完成
122
123
124
125
126
        if (params.repairId) {
          this.form.repairId = params.repairId
        }
        this.dialogVisible = true
        this.loadResourceStoreTypes()
4927ce37   wuxw   开发完成报修功能
127
      },
72de60dc   wuxw   优化报修完成
128
      async loadResourceStoreTypes() {
4927ce37   wuxw   开发完成报修功能
129
        try {
72de60dc   wuxw   优化报修完成
130
131
132
133
134
135
136
137
138
139
140
141
142
143
          const params = {
            page: 1,
            row: 100,
            communityId: this.communityId,
            parentId: '0',
            giveType: 1
          }
          const { data } = await listResourceStoreTypes(params)
          this.resourceStoreTypes = data
          // 添加自定义选项
          this.resourceStoreTypes.push({
            rstId: 'custom',
            name: this.$t('chooseSingleResource.custom')
          })
4927ce37   wuxw   开发完成报修功能
144
        } catch (error) {
72de60dc   wuxw   优化报修完成
145
          console.error('加载商品类型失败:', error)
4927ce37   wuxw   开发完成报修功能
146
147
        }
      },
72de60dc   wuxw   优化报修完成
148
149
150
151
152
153
154
      async handleRsIdChange(val) {
        this.form.rstId = ''
        this.sonResourceStoreTypes = []
        this.form.resId = ''
        this.resourceStores = []
  
        if (val === 'custom') {
4927ce37   wuxw   开发完成报修功能
155
156
157
          this.form.isCustom = true
          return
        }
72de60dc   wuxw   优化报修完成
158
  
4927ce37   wuxw   开发完成报修功能
159
160
        this.form.isCustom = false
        try {
72de60dc   wuxw   优化报修完成
161
162
163
164
165
166
167
168
          const params = {
            page: 1,
            row: 100,
            parentId: val,
            communityId: this.communityId
          }
          const { data } = await listResourceStoreTypes(params)
          this.sonResourceStoreTypes = data
4927ce37   wuxw   开发完成报修功能
169
        } catch (error) {
72de60dc   wuxw   优化报修完成
170
          console.error('加载二级分类失败:', error)
4927ce37   wuxw   开发完成报修功能
171
172
        }
      },
72de60dc   wuxw   优化报修完成
173
174
175
176
      async handleRstIdChange(val) {
        this.form.resId = ''
        this.resourceStores = []
  
4927ce37   wuxw   开发完成报修功能
177
178
        try {
          const params = {
72de60dc   wuxw   优化报修完成
179
180
            page: 1,
            row: 100,
4927ce37   wuxw   开发完成报修功能
181
            repairId: this.form.repairId,
72de60dc   wuxw   优化报修完成
182
183
184
185
186
187
188
            rstId: val,
            resId: this.form.resId,
            communityId: this.communityId,
            chooseType: "repair",
            flag: 1,
            sign: this.form.sign,
            giveType: 1
4927ce37   wuxw   开发完成报修功能
189
          }
72de60dc   wuxw   优化报修完成
190
191
          const { data } = await listUserStorehouses(params)
          this.resourceStores = data
4927ce37   wuxw   开发完成报修功能
192
        } catch (error) {
72de60dc   wuxw   优化报修完成
193
          console.error('加载商品失败:', error)
4927ce37   wuxw   开发完成报修功能
194
195
        }
      },
72de60dc   wuxw   优化报修完成
196
197
198
199
200
201
202
203
204
205
206
      handleResIdChange(val) {
        this.resourceStores.forEach(item => {
          if (item.resId === val) {
            this.form.selectedGoodsInfo = item
            if (item.outLowPrice === item.outHighPrice) {
              this.form.price = item.outLowPrice
            } else {
              this.form.price = ''
            }
            this.form.outLowPrice = item.outLowPrice
            this.form.outHighPrice = item.outHighPrice
4927ce37   wuxw   开发完成报修功能
207
          }
72de60dc   wuxw   优化报修完成
208
209
210
211
212
        })
      },
      handleQuantityChange(val) {
        if (val < 1) {
          this.form.useNumber = 1
4927ce37   wuxw   开发完成报修功能
213
214
        }
      },
72de60dc   wuxw   优化报修完成
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
      handleClose() {
        this.resetForm()
      },
      resetForm() {
        this.form = {
          maintenanceType: '',
          resourceStoreTypes: [],
          sonResourceStoreTypes: [],
          rsId: '',
          rstId: '',
          resId: '',
          repairId: '',
          selectedGoodsInfo: {},
          resourceStores: [],
          isCustom: false,
          customGoodsName: '',
          price: '',
          outLowPrice: '',
          outHighPrice: '',
          useNumber: 1,
          sign: ''
4927ce37   wuxw   开发完成报修功能
236
237
238
239
240
        }
      },
      validateForm() {
        if (this.form.isCustom) {
          if (!this.form.customGoodsName) {
72de60dc   wuxw   优化报修完成
241
            this.$message.error(this.$t('chooseSingleResource.validate.goodsNameRequired'))
4927ce37   wuxw   开发完成报修功能
242
243
244
            return false
          }
          if (this.form.maintenanceType === '1001' && !this.form.price) {
72de60dc   wuxw   优化报修完成
245
            this.$message.error(this.$t('chooseSingleResource.validate.priceRequired'))
4927ce37   wuxw   开发完成报修功能
246
247
248
249
            return false
          }
        } else {
          if (!this.form.rsId) {
72de60dc   wuxw   优化报修完成
250
            this.$message.error(this.$t('chooseSingleResource.validate.goodsTypeRequired'))
4927ce37   wuxw   开发完成报修功能
251
252
253
            return false
          }
          if (!this.form.rstId) {
72de60dc   wuxw   优化报修完成
254
            this.$message.error(this.$t('chooseSingleResource.validate.subCategoryRequired'))
4927ce37   wuxw   开发完成报修功能
255
256
257
            return false
          }
          if (!this.form.resId) {
72de60dc   wuxw   优化报修完成
258
259
260
261
262
            this.$message.error(this.$t('chooseSingleResource.validate.goodsRequired'))
            return false
          }
          if (this.form.maintenanceType === '1001' && !this.form.price) {
            this.$message.error(this.$t('chooseSingleResource.validate.priceRequired'))
4927ce37   wuxw   开发完成报修功能
263
264
265
266
            return false
          }
        }
        return true
72de60dc   wuxw   优化报修完成
267
268
269
270
271
272
273
274
275
      },
      handleConfirm() {
        if (!this.validateForm()) return
  
        const selectedGoods = {
          ...this.form.selectedGoodsInfo,
          price: this.form.price,
          useNumber: this.form.useNumber,
          isCustom: this.form.isCustom,
0b10c798   wuxw   v1.9 优化报修相关bug
276
277
          customGoodsName: this.form.customGoodsName,
          resName:this.form.customGoodsName
72de60dc   wuxw   优化报修完成
278
279
280
281
282
283
284
285
        }
  
        if (this.form.isCustom) {
          selectedGoods.rstName = this.$t('chooseSingleResource.custom')
        }
  
        this.$emit('choose-single-resource', selectedGoods)
        this.dialogVisible = false
4927ce37   wuxw   开发完成报修功能
286
287
288
      }
    }
  }
72de60dc   wuxw   优化报修完成
289
290
291
292
293
294
295
  </script>
  
  <style scoped>
  .el-input-number {
    width: 100%;
  }
  </style>