wangyi
8 天以前 76cca4b3bd9d7a1e62f421b215ca5efd8d975ee3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
<template>
  <div v-loading="formLoading" v-if="formShow">
    <div style="margin-bottom: 10px; border-bottom: 1px solid #f6f6f6">
      <el-button type="primary" @click="submitForm" :disabled="subDisabled"
        >保 存</el-button
      >
      <el-button type="primary" @click="close">退 出</el-button>
    </div>
    
    <el-form ref="form" :model="form" :rules="rules" label-width="110px">
      <el-tabs v-model="activeName" type="card">
        <el-tab-pane label="基本信息" name="first">
          <el-row>
            <el-col :span="8">
              <el-form-item label="代码:" prop="HNumber">
                <el-input 
                  v-model="form.HNumber" 
                  placeholder="请输入货币代码"
                  :disabled="isEditMode"
                />
                <el-input v-model="form.HItemID" type="hidden" />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="名称:" prop="HName">
                <el-input 
                  v-model="form.HName" 
                  placeholder="请输入货币名称" 
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="助记码:">
                <el-input 
                  v-model="form.HHelpCode" 
                  placeholder="请输入助记码" 
                />
              </el-form-item>
            </el-col>
          </el-row>
          
          <el-row>
            <el-col :span="8">
              <el-form-item label="小数位:">
                <el-input 
                  v-model="form.HScale" 
                  type="number"
                  placeholder="请输入小数位" 
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="汇率:">
                <el-input 
                  v-model="form.HExchangeRate" 
                  type="number"
                  placeholder="请输入汇率" 
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="禁用标志:">
                <el-checkbox v-model="form.HStopflag" disabled>禁用</el-checkbox>
              </el-form-item>
            </el-col>
          </el-row>
          
          <el-row>
            <el-col :span="24">
              <el-form-item label="备注:">
                <el-input 
                  v-model="form.HRemark" 
                  type="textarea"
                  placeholder="请输入备注" 
                  :rows="3"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-tab-pane>
      </el-tabs>
    </el-form>
  </div>
</template>
 
<script>
import axios from "axios";
import dayjs from "dayjs";
 
export default {
  name: "GyCurrencyEdit",
  components: {},
  props: {
    OperationType: { type: Number }, // 1:新增, 3:编辑, 2:复制
    linterid: { type: Number }, // 编辑时的ID
    HOrgID: { type: Number }, // 组织ID
  },
  data() {
    return {
      formShow: false,
      formLoading: true,
      subDisabled: false,
      isEditMode: false,
      activeName: "first",
      isIframe: false,
      
      // 表单参数
      form: {
        HItemID: 0,
        HNumber: "",
        HName: "",
        HHelpCode: "",
        HScale: "2",
        HExchangeRate: "1",
        HStopflag: false,
        HRemark: "",
        HUserName: "",
      },
      
      // 表单校验
      rules: {
        HNumber: [{ required: true, message: "货币代码不能为空", trigger: "blur" }],
        HName: [{ required: true, message: "货币名称不能为空", trigger: "blur" }],
      },
      
      baseURL: process.env.VUE_APP_BASE_API || "http://47.96.97.237/API/",
      user: "admin",
    };
  },
  created() {
    this.reset();
    this.fetchData();
    this.checkIframe();
  },
  mounted() {
    this.user = sessionStorage["HUserName"] || "admin";
  },
  methods: {
    // 检查是否在iframe中
    checkIframe() {
      this.isIframe = window.self !== window.top;
    },
    
    fetchData() {
      // 从URL获取参数
      const urlParams = this.getUrlParams();
      const hID = urlParams.HInterID ? parseInt(urlParams.HInterID) : 0;
      const opType = urlParams.OperationType ? parseInt(urlParams.OperationType) : 1;
      
      // 如果props没有传递,使用URL参数
      const operationType = this.OperationType || opType;
      const linterid = this.linterid || hID;
      
      if (operationType !== 1 && linterid) {
        // 编辑或复制模式
        this.getDetailData(linterid, operationType);
      } else {
        // 新增模式
        this.formShow = true;
        this.formLoading = false;
        this.form.HItemID = 0;
        this.isEditMode = false;
      }
    },
    
    // 从URL获取参数
    getUrlParams() {
      const params = {};
      const queryString = window.location.search.substring(1);
      const pairs = queryString.split('&');
      
      for (let i = 0; i < pairs.length; i++) {
        const pair = pairs[i].split('=');
        if (pair.length === 2) {
          params[pair[0]] = decodeURIComponent(pair[1]);
        }
      }
      
      return params;
    },
    
    getDetailData(hID, operationType) {
      this.formLoading = true;
      axios
        .get(this.$baseUrl + "/GetGy_CurrencyDetail", {
          params: {
            HID: hID,
          },
        })
        .then((response) => {
          let result = response.data;
          if (result.code == 1) {
            var data = result.data.h_v_Edit_Gy_CurrencyList[0];
            console.log("返回的数据:", data);
            
            this.form = {
              HItemID: operationType == 2 ? 0 : data.HItemID, // 复制时ID设为0
              HNumber: data.货币代码,
              HName: data.货币名称,
              HHelpCode: data.助记代码,
              HScale: data.小数位 || "2",
              HExchangeRate: data.汇率 || "1",
              HStopflag: data.禁用标记 === "true",
              HRemark: data.备注 || "",
              HUserName: this.user,
            };
            
            this.isEditMode = operationType === 3;
          } else {
            this.$modal.msgError(result.msg || "获取数据失败");
          }
        })
        .catch((error) => {
          this.$modal.msgError("接口请求失败!");
        })
        .finally(() => {
          this.formShow = true;
          this.formLoading = false;
        });
    },
    
    // 重置表单
    reset() {
      this.form = {
        HItemID: 0,
        HNumber: "",
        HName: "",
        HHelpCode: "",
        HScale: "2",
        HExchangeRate: "1",
        HStopflag: false,
        HRemark: "",
        HUserName: this.user,
      };
      this.subDisabled = false;
    },
    
    // 退出
    close() {
      if (this.isIframe) {
        // 在iframe中,通知父窗口关闭或返回
        if (window.parent.editGyClose) {
          window.parent.editGyClose();
        } else {
          // 尝试关闭iframe
          try {
            const index = parent.layer && parent.layer.getFrameIndex ? parent.layer.getFrameIndex(window.name) : null;
            if (index !== null && index !== undefined) {
              parent.layer.close(index);
            } else {
              // 如果没有layer,使用其他方式
              window.parent.postMessage({ action: 'closeIframe' }, '*');
            }
          } catch (e) {
            console.log("关闭iframe失败:", e);
            this.$router.back();
          }
        }
      } else {
        // 不在iframe中,使用路由返回或跳转
        if (this.$route) {
          this.$router.back();
        } else if (this.OperationType === 1) {
          // 新增模式,返回首页
          window.location.href = "/index.html";
        } else {
          window.history.back();
        }
      }
    },
    
    // 提交保存
 // 提交保存
    submitForm() {
        this.$refs["form"].validate((valid) => {
            if (valid) {
            this.subDisabled = true;
            
            // 准备数据
            const formData = {
                ...this.form,
                HStopflag: this.form.HStopflag ? "true" : "false",
                HUserName: this.user,
            };
            
            const sMainStr = JSON.stringify(formData);
            
            // 直接发送JSON数据,不要使用FormData
            const requestData = {
                msg: sMainStr + ';' + this.user,
            };
            
            axios({
                method: "POST",
                url: this.$baseUrl + "/SaveGy_CurrencyList",
                data: requestData,  // 直接发送JSON对象
                headers: {
                'Content-Type': 'application/json',  // 使用JSON格式
                },
            })
                .then((response) => {
                if (response.data.count == 1) {
                    this.$modal.msgSuccess(response.data.Message || "保存成功");
                    this.subDisabled = true;
                    
                    // 保存成功后,如果是新增模式,可以继续添加,或者提示用户
                  
                } else {
                    this.$modal.msgError(response.data.Message || "保存失败");
                    this.subDisabled = false;
                }
                })
                .catch((error) => {
                this.$modal.msgError("保存失败: " + (error.message || "未知错误"));
                this.subDisabled = false;
                });
            }
        });
    }
  },
};
</script>
 
<style scoped>
.el-form-item {
  margin-bottom: 22px;
}
 
.el-row {
  margin-bottom: 10px;
}
 
.hidden-input {
  display: none;
}
</style>