whistle.mockbubu 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "whistle.mockbubu",
3
- "version": "2.1.1",
3
+ "version": "2.1.2",
4
4
  "description": "mock response data",
5
5
  "scripts": {
6
6
  "lint": "eslint . --ext .js",
package/public/js/app.js CHANGED
@@ -1613,8 +1613,6 @@ const __default__ = {
1613
1613
 
1614
1614
  // 解析 payload 为 JSON 对象供 jsoneditor 使用
1615
1615
  const parsedPayloadData = (0,vue__WEBPACK_IMPORTED_MODULE_6__.computed)(() => {
1616
- console.log('%c [ parsedPayloadData 计算属性触发 ]-126', 'font-size:13px; background:yellow; color:black;', 'computed 被调用');
1617
- console.log('%c [ props.currentRow ]-131', 'font-size:13px; background:pink; color:#bf2c9f;', props.currentRow);
1618
1616
  if (!props.currentRow?.payload) {
1619
1617
  return null;
1620
1618
  }
@@ -1965,6 +1963,7 @@ const __default__ = {
1965
1963
  const currentFile = (0,vue__WEBPACK_IMPORTED_MODULE_9__.ref)({
1966
1964
  content: {}
1967
1965
  });
1966
+ const hasJsonError = (0,vue__WEBPACK_IMPORTED_MODULE_9__.ref)(false); // JSON 格式错误标志
1968
1967
  const versionModal = (0,vue__WEBPACK_IMPORTED_MODULE_9__.reactive)({
1969
1968
  visible: false,
1970
1969
  status: 'create',
@@ -2502,6 +2501,12 @@ const __default__ = {
2502
2501
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().warning('原始响应数据为只读,不可修改');
2503
2502
  return;
2504
2503
  }
2504
+
2505
+ // 如果 JSON 格式错误,禁止保存
2506
+ if (hasJsonError.value) {
2507
+ element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error('JSON 格式错误,请修正后再保存');
2508
+ return;
2509
+ }
2505
2510
  if (currentFile.value.type === 'history') {
2506
2511
  updateHistory();
2507
2512
  } else {
@@ -2735,6 +2740,7 @@ const __default__ = {
2735
2740
  versionNameInput,
2736
2741
  responseList,
2737
2742
  currentFile,
2743
+ hasJsonError,
2738
2744
  versionModal,
2739
2745
  fullScreenModal,
2740
2746
  name,
@@ -4492,6 +4498,7 @@ var render = function render() {
4492
4498
  }, [_c("i", {
4493
4499
  staticClass: "el-icon-lock"
4494
4500
  }), _c("span", [_vm._v("只读模式")])]) : _vm._e()], 1), _c(_setup.JsonEditor, {
4501
+ key: `editor-${_setup.currentFile.filename}-${_setup.isSourceReadonly}`,
4495
4502
  ref: "editRef",
4496
4503
  attrs: {
4497
4504
  "show-btns": false,
@@ -4504,6 +4511,12 @@ var render = function render() {
4504
4511
  on: {
4505
4512
  input: function ($event) {
4506
4513
  return _setup.handleFileChange();
4514
+ },
4515
+ "has-error": function ($event) {
4516
+ _setup.hasJsonError = true;
4517
+ },
4518
+ "json-change": function ($event) {
4519
+ _setup.hasJsonError = false;
4507
4520
  }
4508
4521
  },
4509
4522
  nativeOn: {
@@ -4526,12 +4539,15 @@ var render = function render() {
4526
4539
  }
4527
4540
  }), !_setup.isSourceReadonly && _setup.currentFile.effect && (_setup.currentFile.type === "history" || _vm.api.mock) ? _c("div", {
4528
4541
  staticClass: "response-panel__save"
4529
- }, [_c("span", {
4542
+ }, [_setup.hasJsonError ? _c("span", {
4543
+ staticClass: "response-panel__error-text"
4544
+ }, [_vm._v("JSON 格式错误,无法保存")]) : _c("span", {
4530
4545
  staticClass: "response-panel__effect-icon"
4531
4546
  }), _c("el-button", {
4532
4547
  attrs: {
4533
4548
  size: "small",
4534
- type: "primary"
4549
+ type: "primary",
4550
+ disabled: _setup.hasJsonError
4535
4551
  },
4536
4552
  on: {
4537
4553
  click: _setup.handleUpdate
@@ -6080,7 +6096,7 @@ __webpack_require__.r(__webpack_exports__);
6080
6096
 
6081
6097
  var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
6082
6098
  // Module
6083
- ___CSS_LOADER_EXPORT___.push([module.id, ".mock-container[data-v-d97322d2] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n.mock-container__content[data-v-d97322d2] {\n display: flex;\n flex: 1;\n border: 1px solid #ccc;\n border-left: none;\n overflow: hidden;\n}\n", ""]);
6099
+ ___CSS_LOADER_EXPORT___.push([module.id, ".mock-container[data-v-d97322d2] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n.mock-container__content[data-v-d97322d2] {\n padding-bottom: 16px;\n background-image: linear-gradient(0deg, #3f9eff 0, #3f9eff 16px, transparent 100%);\n display: flex;\n flex: 1;\n border: 1px solid #ccc;\n border-left: none;\n overflow: hidden;\n}\n", ""]);
6084
6100
  // Exports
6085
6101
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
6086
6102
 
@@ -6176,7 +6192,7 @@ __webpack_require__.r(__webpack_exports__);
6176
6192
 
6177
6193
  var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
6178
6194
  // Module
6179
- ___CSS_LOADER_EXPORT___.push([module.id, ".response-panel[data-v-c23cd6a6] {\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n.response-panel__header[data-v-c23cd6a6] {\n display: flex;\n flex-wrap: wrap;\n}\n.response-panel__tab[data-v-c23cd6a6] {\n position: relative;\n cursor: pointer;\n height: 24px;\n padding: 0px 10px;\n font-size: 12px;\n line-height: 24px;\n color: #333333;\n font-weight: 500;\n border-right: 1px solid #ccc;\n border-bottom: 1px solid #ccc;\n}\n.response-panel__tab--selected[data-v-c23cd6a6] {\n background-color: #e0e3e6;\n}\n.response-panel__source-tab[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: #e6a23c;\n font-weight: 600;\n}\n.response-panel__source-tab i[data-v-c23cd6a6] {\n font-size: 14px;\n}\n.response-panel__tab-text[data-v-c23cd6a6] {\n display: inline-block;\n max-width: 120px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n vertical-align: middle;\n}\n.response-panel__edit-btn[data-v-c23cd6a6] {\n margin-left: 8px;\n color: #909399;\n}\n.response-panel__edit-btn[data-v-c23cd6a6]:hover {\n color: #409eff;\n}\n.response-panel__delete-btn[data-v-c23cd6a6] {\n margin-left: 8px;\n color: #909399;\n}\n.response-panel__delete-btn[data-v-c23cd6a6]:hover {\n color: #f46c6b;\n}\n.response-panel__add-btn[data-v-c23cd6a6] {\n cursor: pointer;\n line-height: 24px;\n padding: 0px 10px;\n color: #333333;\n font-weight: 500;\n}\n.response-panel__content[data-v-c23cd6a6] {\n position: relative;\n flex: 1;\n overflow: hidden;\n}\n.response-panel__toolbar[data-v-c23cd6a6] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background-color: #f5f7fa;\n border-bottom: 1px solid #e4e7ed;\n}\n.response-panel__toolbar .el-button[data-v-c23cd6a6] {\n margin: 0;\n}\n.response-panel__readonly-badge[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n padding: 4px 12px;\n background-color: #f0f2f5;\n border-radius: 4px;\n font-size: 12px;\n color: #909399;\n font-weight: 500;\n}\n.response-panel__readonly-badge i[data-v-c23cd6a6] {\n font-size: 12px;\n}\n.response-panel__alert[data-v-c23cd6a6] {\n position: absolute;\n top: 8px;\n right: 10px;\n font-size: 12px;\n font-weight: 600;\n color: #e6a23c;\n}\n.response-panel__save[data-v-c23cd6a6] {\n position: absolute;\n top: 100px;\n right: 20px;\n}\n.response-panel__effect-icon[data-v-c23cd6a6] {\n position: absolute;\n top: -5px;\n right: -5px;\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 6px;\n background-color: #f46c6b;\n}\n.response-panel__dialog[data-v-c23cd6a6] {\n display: flex;\n align-items: center;\n}\n.response-panel__dialog-label[data-v-c23cd6a6] {\n white-space: nowrap;\n}\n", ""]);
6195
+ ___CSS_LOADER_EXPORT___.push([module.id, ".response-panel[data-v-c23cd6a6] {\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n.response-panel__header[data-v-c23cd6a6] {\n display: flex;\n flex-wrap: wrap;\n}\n.response-panel__tab[data-v-c23cd6a6] {\n position: relative;\n cursor: pointer;\n height: 24px;\n padding: 0px 10px;\n font-size: 12px;\n line-height: 24px;\n color: #333333;\n font-weight: 500;\n border-right: 1px solid #ccc;\n border-bottom: 1px solid #ccc;\n}\n.response-panel__tab--selected[data-v-c23cd6a6] {\n background-color: #e0e3e6;\n}\n.response-panel__source-tab[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: #e6a23c;\n font-weight: 600;\n}\n.response-panel__source-tab i[data-v-c23cd6a6] {\n font-size: 14px;\n}\n.response-panel__tab-text[data-v-c23cd6a6] {\n display: inline-block;\n max-width: 120px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n vertical-align: middle;\n}\n.response-panel__edit-btn[data-v-c23cd6a6] {\n margin-left: 8px;\n color: #909399;\n}\n.response-panel__edit-btn[data-v-c23cd6a6]:hover {\n color: #409eff;\n}\n.response-panel__delete-btn[data-v-c23cd6a6] {\n margin-left: 8px;\n color: #909399;\n}\n.response-panel__delete-btn[data-v-c23cd6a6]:hover {\n color: #f46c6b;\n}\n.response-panel__add-btn[data-v-c23cd6a6] {\n cursor: pointer;\n line-height: 24px;\n padding: 0px 10px;\n color: #333333;\n font-weight: 500;\n}\n.response-panel__content[data-v-c23cd6a6] {\n position: relative;\n flex: 1;\n overflow: hidden;\n}\n.response-panel__toolbar[data-v-c23cd6a6] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background-color: #f5f7fa;\n border-bottom: 1px solid #e4e7ed;\n}\n.response-panel__toolbar .el-button[data-v-c23cd6a6] {\n margin: 0;\n}\n.response-panel__readonly-badge[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n padding: 4px 12px;\n background-color: #f0f2f5;\n border-radius: 4px;\n font-size: 12px;\n color: #909399;\n font-weight: 500;\n}\n.response-panel__readonly-badge i[data-v-c23cd6a6] {\n font-size: 12px;\n}\n.response-panel__alert[data-v-c23cd6a6] {\n position: absolute;\n top: 8px;\n right: 10px;\n font-size: 12px;\n font-weight: 600;\n color: #e6a23c;\n}\n.response-panel__save[data-v-c23cd6a6] {\n position: absolute;\n top: 100px;\n right: 20px;\n}\n.response-panel__effect-icon[data-v-c23cd6a6] {\n position: absolute;\n top: -5px;\n right: -5px;\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 6px;\n background-color: #f46c6b;\n}\n.response-panel__error-text[data-v-c23cd6a6] {\n position: absolute;\n top: -30px;\n right: 0;\n color: #f56c6c;\n font-size: 12px;\n white-space: nowrap;\n}\n.response-panel__dialog[data-v-c23cd6a6] {\n display: flex;\n align-items: center;\n}\n.response-panel__dialog-label[data-v-c23cd6a6] {\n white-space: nowrap;\n}\n", ""]);
6180
6196
  // Exports
6181
6197
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
6182
6198