Files
education/frontend/node_modules/.cache/vue-loader/f677a496eb6fc9741c706ee4565bf81b.json
T

1 line
27 KiB
JSON

{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\student\\warningCondition\\index.vue?vue&type=style&index=0&id=03526b90&scoped=true&lang=scss","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\student\\warningCondition\\index.vue","mtime":1787567871647},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\css-loader\\dist\\cjs.js","mtime":1787309792478},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":1787309794547},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\postcss-loader\\src\\index.js","mtime":1787309793084},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\sass-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js","mtime":1787309793790}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoNCi53YXJuaW5nLWNvbmRpdGlvbi1wYWdlIHsNCiAgLnNlYXJjaC1jYXJkIHsNCiAgICBtYXJnaW4tYm90dG9tOiAxNnB4Ow0KICB9DQoNCiAgLnNlYXJjaC1mb3JtIHsNCiAgICA6OnYtZGVlcCAuZWwtZm9ybS1pdGVtIHsNCiAgICAgIG1hcmdpbi1ib3R0b206IDE4cHg7DQogICAgfQ0KDQogICAgLnNlYXJjaC1hY3Rpb25zLXJvdyB7DQogICAgICBtYXJnaW4tdG9wOiAycHg7DQogICAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkICNlYmVlZjU7DQogICAgICBwYWRkaW5nLXRvcDogMTRweDsNCiAgICB9DQoNCiAgICAuc2VhcmNoLWFjdGlvbnMgew0KICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOw0KICAgICAgZ2FwOiAxMnB4Ow0KICAgIH0NCiAgfQ0KDQogIC50YWJsZS1jYXJkIHsNCiAgICAudGFibGUtaGVhZGVyIHsNCiAgICAgIGRpc3BsYXk6IGZsZXg7DQogICAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOw0KICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsNCg0KICAgICAgLnRhYmxlLXRpdGxlIHsNCiAgICAgICAgZm9udC1zaXplOiAxNnB4Ow0KICAgICAgICBmb250LXdlaWdodDogNjAwOw0KICAgICAgICBjb2xvcjogIzMwMzEzMzsNCiAgICAgIH0NCg0KICAgICAgLnRhYmxlLWFjdGlvbnMgew0KICAgICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAgICAgICBnYXA6IDEwcHg7DQogICAgICB9DQogICAgfQ0KDQogICAgLnBhZ2luYXRpb24td3JhcHBlciB7DQogICAgICBkaXNwbGF5OiBmbGV4Ow0KICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsNCiAgICAgIG1hcmdpbi10b3A6IDE2cHg7DQogICAgfQ0KICB9DQoNCiAgLmZvcm0tZGlhbG9nLWZvcm0gew0KICAgIG1heC1oZWlnaHQ6IDYydmg7DQogICAgb3ZlcmZsb3cteTogYXV0bzsNCiAgICBwYWRkaW5nLXJpZ2h0OiA2cHg7DQoNCiAgICA6OnYtZGVlcCAuZWwtZGl2aWRlci0taG9yaXpvbnRhbCB7DQogICAgICBtYXJnaW46IDRweCAwIDE2cHg7DQogICAgfQ0KICB9DQoNCiAgLnR5LXRhZyB7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIHVzZXItc2VsZWN0OiBub25lOw0KICB9DQp9DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6dA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/student/warningCondition","sourcesContent":["<template>\r\n <div class=\"app-container warning-condition-page\">\r\n <!-- ==================== 1. 查询条件 ==================== -->\r\n <el-card shadow=\"never\" class=\"search-card\">\r\n <el-form ref=\"searchFormRef\" :model=\"searchForm\" label-width=\"90px\" class=\"search-form\">\r\n <el-row :gutter=\"24\">\r\n <el-col :xs=\"24\" :sm=\"12\" :md=\"12\" :lg=\"8\" :xl=\"8\">\r\n <el-form-item label=\"名称\">\r\n <el-input v-model=\"searchForm.mc\" placeholder=\"请输入名称\" clearable @keyup.enter.native=\"handleSearch\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :xs=\"24\" :sm=\"12\" :md=\"12\" :lg=\"8\" :xl=\"8\">\r\n <el-form-item label=\"培训类型\">\r\n <el-input v-model=\"searchForm.pxlx\" placeholder=\"请输入培训类型\" clearable @keyup.enter.native=\"handleSearch\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :xs=\"24\" :sm=\"12\" :md=\"12\" :lg=\"8\" :xl=\"8\">\r\n <el-form-item label=\"培训层次\">\r\n <el-input v-model=\"searchForm.pxcc\" placeholder=\"请输入培训层次\" clearable @keyup.enter.native=\"handleSearch\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :xs=\"24\" :sm=\"12\" :md=\"12\" :lg=\"8\" :xl=\"8\">\r\n <el-form-item label=\"状态\">\r\n <el-select v-model=\"searchForm.ty\" placeholder=\"请选择状态\" clearable style=\"width: 100%\">\r\n <el-option label=\"启用\" :value=\"0\" />\r\n <el-option label=\"停用\" :value=\"1\" />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row class=\"search-actions-row\">\r\n <el-col :span=\"24\" class=\"search-actions\">\r\n <el-button type=\"primary\" icon=\"el-icon-search\" @click=\"handleSearch\">查询</el-button>\r\n <el-button icon=\"el-icon-refresh\" @click=\"handleReset\">重置</el-button>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n </el-card>\r\n\r\n <!-- ==================== 2. 列表 ==================== -->\r\n <el-card shadow=\"never\" class=\"table-card\">\r\n <div class=\"table-header\">\r\n <span class=\"table-title\">预警条件列表:</span>\r\n <div class=\"table-actions\">\r\n <el-button type=\"primary\" icon=\"el-icon-plus\" @click=\"handleAdd\">新增预警条件</el-button>\r\n </div>\r\n </div>\r\n <el-table v-loading=\"loading\" :data=\"tableData\" stripe border highlight-current-row>\r\n <el-table-column type=\"index\" label=\"序号\" width=\"60\" align=\"center\" />\r\n <el-table-column prop=\"bh\" label=\"编号\" width=\"100\" show-overflow-tooltip />\r\n <el-table-column prop=\"mc\" label=\"名称\" min-width=\"140\" show-overflow-tooltip />\r\n <el-table-column prop=\"pxlx\" label=\"培训类型\" width=\"120\" show-overflow-tooltip />\r\n <el-table-column prop=\"pxcc\" label=\"培训层次\" width=\"120\" show-overflow-tooltip />\r\n <el-table-column prop=\"bb\" label=\"版本\" width=\"100\" show-overflow-tooltip />\r\n <el-table-column prop=\"xgsj\" label=\"修改时间\" width=\"170\" show-overflow-tooltip />\r\n <el-table-column label=\"停用\" width=\"80\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n <el-tag\r\n :type=\"scope.row.ty === 1 || scope.row.ty === true ? 'danger' : 'success'\"\r\n class=\"ty-tag\"\r\n @click.native=\"handleToggleDisable(scope.row, scope.row.ty === 1 || scope.row.ty === true ? 0 : 1)\"\r\n >\r\n {{ scope.row.ty === 1 || scope.row.ty === true ? '是' : '否' }}\r\n </el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" width=\"150\" align=\"center\" fixed=\"right\">\r\n <template slot-scope=\"scope\">\r\n <el-button type=\"text\" size=\"small\" icon=\"el-icon-view\" @click=\"handleView(scope.row)\">详情</el-button>\r\n <el-button type=\"text\" size=\"small\" icon=\"el-icon-edit\" @click=\"handleEdit(scope.row)\">编辑</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <el-pagination\r\n :current-page=\"pageNum\"\r\n :page-size=\"pageSize\"\r\n :total=\"total\"\r\n :page-sizes=\"[10, 20, 50, 100]\"\r\n layout=\"total, sizes, prev, pager, next, jumper\"\r\n class=\"pagination-wrapper\"\r\n @current-change=\"handlePageChange\"\r\n @size-change=\"handleSizeChange\"\r\n />\r\n </el-card>\r\n\r\n <!-- ==================== 3. 新增/编辑预警条件对话框 ==================== -->\r\n <el-dialog\r\n :title=\"formTitle\"\r\n :visible.sync=\"formDialogVisible\"\r\n width=\"900px\"\r\n :close-on-click-modal=\"false\"\r\n >\r\n <el-form ref=\"formRef\" :model=\"form\" :rules=\"formRules\" label-width=\"130px\" class=\"form-dialog-form\">\r\n <el-divider content-position=\"left\">基本信息</el-divider>\r\n <el-row :gutter=\"16\">\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"名称\" prop=\"mc\">\r\n <el-input v-model=\"form.mc\" placeholder=\"请输入名称\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"培训类型\" prop=\"pxlx\">\r\n <el-input v-model=\"form.pxlx\" placeholder=\"请输入培训类型\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"培训层次\" prop=\"pxcc\">\r\n <el-input v-model=\"form.pxcc\" placeholder=\"请输入培训层次\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"版本\" prop=\"bb\">\r\n <el-input v-model=\"form.bb\" placeholder=\"请输入版本\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"停用\" prop=\"ty\">\r\n <el-switch v-model=\"form.ty\" :active-value=\"1\" :inactive-value=\"0\" active-text=\"是\" inactive-text=\"否\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"修改时间\" prop=\"xgsj\">\r\n <el-date-picker v-model=\"form.xgsj\" type=\"datetime\" placeholder=\"请选择修改时间\" value-format=\"yyyy-MM-dd HH:mm:ss\" style=\"width: 100%\" />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n\r\n <el-divider content-position=\"left\">当前学期门数限制</el-divider>\r\n <el-row :gutter=\"16\">\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"考试不及格门数下限\">\r\n <el-input-number v-model=\"form.dqxqksbjgmsxx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入考试不及格门数下限\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"考试不及格门数上限\">\r\n <el-input-number v-model=\"form.dqxqksbjgmssx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入考试不及格门数上限\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"考查不及格门数下限\">\r\n <el-input-number v-model=\"form.dqxqkcbjgmsxx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入考查不及格门数下限\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"考查不及格门数上限\">\r\n <el-input-number v-model=\"form.dqxqkcbjgmssx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入考查不及格门数上限\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"不及格门数下限\">\r\n <el-input-number v-model=\"form.dqxqbjgmsxx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入不及格门数下限\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"不及格门数上限\">\r\n <el-input-number v-model=\"form.dqxqbjgmssx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入不及格门数上限\" />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n\r\n <el-divider content-position=\"left\">全部门数限制</el-divider>\r\n <el-row :gutter=\"16\">\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"考试不及格门数下限\">\r\n <el-input-number v-model=\"form.qbksbjgmsxx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入考试不及格门数下限\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"考试不及格门数上限\">\r\n <el-input-number v-model=\"form.qbksbjgmssx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入考试不及格门数上限\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"考查不及格门数下限\">\r\n <el-input-number v-model=\"form.qbkcbjgmsxx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入考查不及格门数下限\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"考查不及格门数上限\">\r\n <el-input-number v-model=\"form.qbkcbjgmssx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入考查不及格门数上限\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"不及格门数下限\">\r\n <el-input-number v-model=\"form.qbbjgmsxx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入不及格门数下限\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"不及格门数上限\">\r\n <el-input-number v-model=\"form.qbbjgmssx\" :min=\"0\" :max=\"999\" controls-position=\"right\" style=\"width: 100%\" placeholder=\"请输入不及格门数上限\" />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"formDialogVisible = false\">取 消</el-button>\r\n <el-button type=\"primary\" :loading=\"formSaving\" @click=\"handleFormSubmit\">确 定</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <!-- ==================== 4. 详情对话框 ==================== -->\r\n <el-dialog title=\"预警条件详情\" :visible.sync=\"viewDialogVisible\" width=\"800px\" :close-on-click-modal=\"false\">\r\n <div v-loading=\"viewLoading\" class=\"detail-body\">\r\n <el-descriptions :column=\"2\" border>\r\n <el-descriptions-item label=\"编号\">{{ viewForm.bh || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"名称\">{{ viewForm.mc || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"培训类型\">{{ viewForm.pxlx || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"培训层次\">{{ viewForm.pxcc || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"版本\">{{ viewForm.bb || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"修改时间\">{{ viewForm.xgsj || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"当前学期考试不及格门数下限\">{{ formatValue(viewForm.dqxqksbjgmsxx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"当前学期考试不及格门数上限\">{{ formatValue(viewForm.dqxqksbjgmssx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"当前学期考查不及格门数下限\">{{ formatValue(viewForm.dqxqkcbjgmsxx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"当前学期考查不及格门数上限\">{{ formatValue(viewForm.dqxqkcbjgmssx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"当前学期不及格门数下限\">{{ formatValue(viewForm.dqxqbjgmsxx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"当前学期不及格门数上限\">{{ formatValue(viewForm.dqxqbjgmssx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"全部考试不及格门数下限\">{{ formatValue(viewForm.qbksbjgmsxx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"全部考试不及格门数上限\">{{ formatValue(viewForm.qbksbjgmssx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"全部考查不及格门数下限\">{{ formatValue(viewForm.qbkcbjgmsxx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"全部考查不及格门数上限\">{{ formatValue(viewForm.qbkcbjgmssx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"全部不及格门数下限\">{{ formatValue(viewForm.qbbjgmsxx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"全部不及格门数上限\">{{ formatValue(viewForm.qbbjgmssx) }}</el-descriptions-item>\r\n <el-descriptions-item label=\"停用\">\r\n <el-tag :type=\"viewForm.ty === 1 || viewForm.ty === true ? 'danger' : 'success'\" size=\"mini\">\r\n {{ viewForm.ty === 1 || viewForm.ty === true ? '是' : '否' }}\r\n </el-tag>\r\n </el-descriptions-item>\r\n </el-descriptions>\r\n </div>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"viewDialogVisible = false\">关 闭</el-button>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport {\r\n listWarningCondition,\r\n getWarningCondition,\r\n addWarningCondition,\r\n updateWarningCondition\r\n} from \"@/api/studentRecords/warningCondition\"\r\n\r\nexport default {\r\n name: \"WarningCondition\",\r\n data() {\r\n return {\r\n // ==================== 查询条件 ====================\r\n searchForm: {\r\n mc: '',\r\n pxlx: '',\r\n pxcc: '',\r\n ty: ''\r\n },\r\n\r\n // ==================== 列表数据 ====================\r\n loading: false,\r\n tableData: [],\r\n total: 0,\r\n pageNum: 1,\r\n pageSize: 20,\r\n\r\n // ==================== 新增/编辑 ====================\r\n formDialogVisible: false,\r\n formTitle: '新增预警条件',\r\n isAdd: true,\r\n formSaving: false,\r\n form: this.createEmptyForm(),\r\n formRules: {\r\n mc: [{ required: true, message: \"名称不能为空\", trigger: \"blur\" }],\r\n ty: [{ required: true, message: \"停用不能为空\", trigger: \"change\" }],\r\n bb: [{ required: true, message: \"版本不能为空\", trigger: \"blur\" }],\r\n xgsj: [{ required: true, message: \"修改时间不能为空\", trigger: \"change\" }]\r\n },\r\n\r\n // ==================== 详情 ====================\r\n viewDialogVisible: false,\r\n viewLoading: false,\r\n viewForm: {}\r\n }\r\n },\r\n created() {\r\n this.fetchList()\r\n },\r\n methods: {\r\n /** 创建空表单 */\r\n createEmptyForm() {\r\n return {\r\n mc: '',\r\n pxlx: '',\r\n pxcc: '',\r\n dqxqksbjgmssx: undefined,\r\n dqxqksbjgmsxx: undefined,\r\n dqxqkcbjgmssx: undefined,\r\n dqxqkcbjgmsxx: undefined,\r\n dqxqbjgmssx: undefined,\r\n dqxqbjgmsxx: undefined,\r\n qbksbjgmssx: undefined,\r\n qbksbjgmsxx: undefined,\r\n qbkcbjgmssx: undefined,\r\n qbkcbjgmsxx: undefined,\r\n qbbjgmssx: undefined,\r\n qbbjgmsxx: undefined,\r\n ty: 0,\r\n bb: '',\r\n xgsj: ''\r\n }\r\n },\r\n\r\n // ==================== 查询列表 ====================\r\n fetchList() {\r\n this.loading = true\r\n const params = {\r\n pageNum: this.pageNum,\r\n pageSize: this.pageSize\r\n }\r\n // 状态:0 启用 / 1 停用(选中时才传)\r\n if (this.searchForm.ty !== '' && this.searchForm.ty !== null && this.searchForm.ty !== undefined) {\r\n params.ty = this.searchForm.ty\r\n }\r\n // 其余文本条件非空时才传\r\n ;['mc', 'pxlx', 'pxcc'].forEach(key => {\r\n if (this.searchForm[key] !== '' && this.searchForm[key] !== null && this.searchForm[key] !== undefined) {\r\n params[key] = this.searchForm[key].trim()\r\n }\r\n })\r\n listWarningCondition(params).then(response => {\r\n const data = response.data || {}\r\n this.tableData = data.records || []\r\n this.total = data.total || 0\r\n this.loading = false\r\n }).catch(() => {\r\n this.tableData = []\r\n this.total = 0\r\n this.loading = false\r\n })\r\n },\r\n\r\n handleSearch() {\r\n this.pageNum = 1\r\n this.fetchList()\r\n },\r\n\r\n handleReset() {\r\n this.searchForm = {\r\n mc: '',\r\n pxlx: '',\r\n pxcc: '',\r\n ty: ''\r\n }\r\n this.pageNum = 1\r\n this.fetchList()\r\n },\r\n\r\n handlePageChange(current) {\r\n this.pageNum = current\r\n this.fetchList()\r\n },\r\n\r\n handleSizeChange(size) {\r\n this.pageSize = size\r\n this.pageNum = 1\r\n this.fetchList()\r\n },\r\n\r\n // ==================== 新增/编辑 ====================\r\n handleAdd() {\r\n this.isAdd = true\r\n this.formTitle = '新增预警条件'\r\n this.form = this.createEmptyForm()\r\n this.formDialogVisible = true\r\n this.$nextTick(() => {\r\n this.$refs.formRef && this.$refs.formRef.clearValidate()\r\n })\r\n },\r\n\r\n handleEdit(row) {\r\n this.isAdd = false\r\n this.formTitle = '编辑预警条件'\r\n this.form = this.createEmptyForm()\r\n this.formDialogVisible = true\r\n this.$nextTick(() => {\r\n this.$refs.formRef && this.$refs.formRef.clearValidate()\r\n })\r\n getWarningCondition(row.bh).then(response => {\r\n const data = response.data || {}\r\n this.fillFormData(data)\r\n }).catch(() => {})\r\n },\r\n\r\n /** 回填表单数据 */\r\n fillFormData(data) {\r\n const fieldKeys = [\r\n 'mc', 'pxlx', 'pxcc',\r\n 'dqxqksbjgmssx', 'dqxqksbjgmsxx',\r\n 'dqxqkcbjgmssx', 'dqxqkcbjgmsxx',\r\n 'dqxqbjgmssx', 'dqxqbjgmsxx',\r\n 'qbksbjgmssx', 'qbksbjgmsxx',\r\n 'qbkcbjgmssx', 'qbkcbjgmsxx',\r\n 'qbbjgmssx', 'qbbjgmsxx',\r\n 'bb', 'xgsj'\r\n ]\r\n const result = this.createEmptyForm()\r\n fieldKeys.forEach(key => {\r\n result[key] = data[key] !== null && data[key] !== undefined ? data[key] : result[key]\r\n })\r\n result.bh = data.bh\r\n result.ty = data.ty === 1 || data.ty === true ? 1 : 0\r\n this.form = result\r\n },\r\n\r\n handleFormSubmit() {\r\n this.$refs.formRef.validate(valid => {\r\n if (!valid) return\r\n this.formSaving = true\r\n const payload = { ...this.form }\r\n if (!this.isAdd) {\r\n payload.bh = this.form.bh\r\n }\r\n const request = this.isAdd ? addWarningCondition(payload) : updateWarningCondition(payload)\r\n request.then(() => {\r\n this.$message.success(this.isAdd ? '新增成功' : '修改成功')\r\n this.formDialogVisible = false\r\n this.fetchList()\r\n }).catch(() => {\r\n }).finally(() => {\r\n this.formSaving = false\r\n })\r\n })\r\n },\r\n\r\n // ==================== 停用/启用切换 ====================\r\n handleToggleDisable(row, val) {\r\n const isDisable = val === 1 || val === true\r\n const prevTy = isDisable ? 0 : 1\r\n const actionName = isDisable ? '停用' : '启用'\r\n this.$confirm(`确定要${actionName}「${row.mc || row.bh || '该预警条件'}」吗?`, '系统提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n return updateWarningCondition({ ...row, ty: isDisable ? 1 : 0 })\r\n }).then(() => {\r\n this.$message.success(actionName + '成功')\r\n this.fetchList()\r\n }).catch(() => {\r\n // 取消或接口失败时回滚开关状态并刷新\r\n row.ty = prevTy\r\n this.fetchList()\r\n })\r\n },\r\n\r\n // ==================== 详情 ====================\r\n handleView(row) {\r\n this.viewDialogVisible = true\r\n this.viewLoading = true\r\n this.viewForm = {}\r\n getWarningCondition(row.bh).then(response => {\r\n this.viewForm = response.data || {}\r\n this.viewLoading = false\r\n }).catch(() => {\r\n this.viewLoading = false\r\n })\r\n },\r\n\r\n /** 空值显示占位符 */\r\n formatValue(val) {\r\n return val !== null && val !== undefined ? val : '-'\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.warning-condition-page {\r\n .search-card {\r\n margin-bottom: 16px;\r\n }\r\n\r\n .search-form {\r\n ::v-deep .el-form-item {\r\n margin-bottom: 18px;\r\n }\r\n\r\n .search-actions-row {\r\n margin-top: 2px;\r\n border-top: 1px dashed #ebeef5;\r\n padding-top: 14px;\r\n }\r\n\r\n .search-actions {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n gap: 12px;\r\n }\r\n }\r\n\r\n .table-card {\r\n .table-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 16px;\r\n\r\n .table-title {\r\n font-size: 16px;\r\n font-weight: 600;\r\n color: #303133;\r\n }\r\n\r\n .table-actions {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n }\r\n }\r\n\r\n .pagination-wrapper {\r\n display: flex;\r\n justify-content: flex-end;\r\n margin-top: 16px;\r\n }\r\n }\r\n\r\n .form-dialog-form {\r\n max-height: 62vh;\r\n overflow-y: auto;\r\n padding-right: 6px;\r\n\r\n ::v-deep .el-divider--horizontal {\r\n margin: 4px 0 16px;\r\n }\r\n }\r\n\r\n .ty-tag {\r\n cursor: pointer;\r\n user-select: none;\r\n }\r\n}\r\n</style>"]}]}