diff --git a/public/index.html b/public/index.html
index c959646..fadabb2 100644
--- a/public/index.html
+++ b/public/index.html
@@ -38,7 +38,8 @@
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %>
<% } %>
diff --git a/src/mixins/basic-add.js b/src/mixins/basic-add.js
index 61aa86a..bd4808c 100644
--- a/src/mixins/basic-add.js
+++ b/src/mixins/basic-add.js
@@ -76,6 +76,7 @@ export default {
}
this.$http[!this.dataForm.id ? "post" : "put"](this.urlOptions.submitURL, this.dataForm)
.then(({ data: res }) => {
+ // console.log('[confirm] here...')
if (res.code !== 0) {
return this.$message.error(res.msg);
}
@@ -85,7 +86,7 @@ export default {
duration: 500,
onClose: () => {
this.visible = false;
- this.$emit("refreshDataList");
+ this.$emit("successSubmit");
},
});
})
diff --git a/src/mixins/basic-page.js b/src/mixins/basic-page.js
index f07b92b..215dff8 100644
--- a/src/mixins/basic-page.js
+++ b/src/mixins/basic-page.js
@@ -35,7 +35,7 @@ export default {
// 获取数据列表
getDataList() {
this.dataListLoading = true;
- this.$http
+ return this.$http
.get(this.urlOptions.getDataListURL, {
params: this.listQuery,
})
@@ -103,7 +103,7 @@ export default {
this.$refs.addOrUpdate.init(val.data.id);
});
} else if (val.type === "delete") {
- this.deleteHandle(val.data.id,val.data.name)
+ this.deleteHandle(val.data.id, val.data.name)
}
},
// 删除
@@ -121,7 +121,10 @@ export default {
type: "success",
duration: 1500,
onClose: () => {
- this.getDataList();
+ this.getDataList().then(() => {
+ // 刷新本地缓存
+ this.refreshLocalstorage()
+ })
},
});
} else {
@@ -147,7 +150,7 @@ export default {
break;
default:
console.log(val)
- }
+ }
},
handleCancel() {
this.$refs.addOrUpdate.formClear()
@@ -157,9 +160,23 @@ export default {
handleConfirm() {
this.$refs.addOrUpdate.dataFormSubmit()
},
+ refreshLocalstorage() {
+ // 刷新数据字典数据
+ this.$http("/sys/dict/type/all", { limit: 999, page: 1 }).then(({ data: res }) => {
+ // console.log("[dictData] loading...", res);
+ if (res.code === 0 && res.data) {
+ localStorage.setItem("dictList", JSON.stringify(res.data));
+ }
+ });
+ // end
+ },
successSubmit() {
this.handleCancel()
this.getDataList()
+ if (this.isDictTypePage || this.isDictValuePage) {
+ // 刷新本地缓存
+ this.refreshLocalstorage()
+ }
},
// 导出
exportHandle(name) {
diff --git a/src/utils/filters.js b/src/utils/filters.js
index e7f1c28..0c1f725 100644
--- a/src/utils/filters.js
+++ b/src/utils/filters.js
@@ -21,4 +21,8 @@ export const pick = (obj, paths) => {
}
})
return result
+}
+
+export const dictFind = (which) => {
+ return () => 1
}
\ No newline at end of file
diff --git a/src/views/atomViews/ListViewWithHead.vue b/src/views/atomViews/ListViewWithHead.vue
index 2e80e40..3ae5acc 100644
--- a/src/views/atomViews/ListViewWithHead.vue
+++ b/src/views/atomViews/ListViewWithHead.vue
@@ -113,7 +113,7 @@ export default {
limit: this.size,
};
- if (!queryParams && this.listQueryExtra.length) {
+ if (!queryParams && this.listQueryExtra && this.listQueryExtra.length) {
this.listQueryExtra.map((name) => {
params[name] = "";
});
diff --git a/src/views/modules/pms/equipmentType/config.js b/src/views/modules/pms/equipmentType/config.js
new file mode 100644
index 0000000..6d3fb79
--- /dev/null
+++ b/src/views/modules/pms/equipmentType/config.js
@@ -0,0 +1,107 @@
+import TableOperaionComponent from "@/components/noTemplateComponents/operationComponent";
+import StatusComponent from "@/components/noTemplateComponents/statusComponent";
+import request from "@/utils/request";
+import { dictFind, timeFilter } from '@/utils/filters'
+
+export default function () {
+ const tableProps = [
+ { prop: "createTime", label: "添加时间", filter: timeFilter },
+ { prop: "name", label: "类型名称" },
+ { prop: "code", label: "类型编码" },
+ { prop: "description", label: "描述" },
+ { prop: "remark", label: "备注" },
+ {
+ prop: "operations",
+ name: "操作",
+ fixed: "right",
+ width: 120,
+ subcomponent: TableOperaionComponent,
+ options: ["edit", { name: "delete", permission: "pms:equipmentType:delete" }],
+ },
+ ];
+
+ const headFormFields = [
+ {
+ prop: 'key',
+ label: "类型名称",
+ input: true,
+ default: { value: "" },
+ bind: {
+ // placeholder: '请输入产线名称或编码'
+ placeholder: '请输入类型名称'
+ }
+ },
+ {
+ button: {
+ type: "primary",
+ name: "查询",
+ },
+ },
+ {
+ button: {
+ type: "primary",
+ name: "新增",
+ permission: "pms:equipmentType:save"
+ },
+ bind: {
+ plain: true,
+ }
+ },
+ ];
+
+ /**
+ * dialog config 有两个版本,一个适用于 DialogWithMenu 组件,另一个适用于 DialogJustForm 组件
+ * 适用于 DialogWithMenu 组件的配置示例详见 blenderStep/config.js
+ * 此为后者的配置:
+ */
+ const dialogJustFormConfigs = {
+ form: {
+ rows: [
+ [
+ {
+ input: true,
+ label: "类型名称",
+ prop: "name",
+ rules: { required: true, message: "not empty", trigger: "blur" },
+ elparams: { placeholder: "请输入类型名称" },
+ },
+ {
+ input: true,
+ label: "类型编码",
+ prop: "code",
+ rules: { required: true, message: "not empty", trigger: "blur" },
+ elparams: { placeholder: "请输入类型编码" },
+ },
+ ],
+ [{ textarea: true, label: "描述信息", prop: "description", elparams: { placeholder: "描述信息" } }],
+ [{ input: true, label: "备注", prop: "remark", elparams: { placeholder: "备注" } }],
+ ],
+ operations: [
+ { name: "add", label: "保存", type: "primary", permission: "pms:equipmentType:save", showOnEdit: false },
+ { name: "update", label: "更新", type: "primary", permission: "pms:equipmentType:update", showOnEdit: true },
+ { name: "reset", label: "重置", type: "warning", showAlways: true },
+ // { name: 'cancel', label: '取消', showAlways: true },
+ ],
+ },
+ };
+ // 备注:弹窗弹出的时间和网速有关......
+
+ return {
+ dialogConfigs: dialogJustFormConfigs,
+ tableConfig: {
+ table: null, // 此处可省略,el-table 上的配置项
+ column: tableProps, // el-column-item 上的配置项
+ },
+ headFormConfigs: {
+ rules: null, // 名称是由 BaseSearchForm.vue 组件固定的
+ fields: headFormFields, // 名称是由 BaseSearchForm.vue 组件固定的
+ },
+ urls: {
+ base: "/pms/equipmentType",
+ page: "/pms/equipmentType/page",
+ // subase: '/pms/blenderStepParam',
+ // subpage: '/pms/blenderStepParam/page',
+ // more...
+ },
+ };
+}
diff --git a/src/views/modules/pms/equipmentType/index.vue b/src/views/modules/pms/equipmentType/index.vue
new file mode 100644
index 0000000..7ccdd8e
--- /dev/null
+++ b/src/views/modules/pms/equipmentType/index.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
diff --git a/src/views/modules/pms/materialStorage/config.js b/src/views/modules/pms/materialStorage/config.js
new file mode 100644
index 0000000..4d5f469
--- /dev/null
+++ b/src/views/modules/pms/materialStorage/config.js
@@ -0,0 +1,118 @@
+import TableOperaionComponent from "@/components/noTemplateComponents/operationComponent";
+import StatusComponent from "@/components/noTemplateComponents/statusComponent";
+import request from "@/utils/request";
+import { dictFind } from '@/utils/filters'
+
+export default function () {
+ const tableProps = [
+ { prop: "name", label: "料仓名称" },
+ { prop: "code", label: "料仓编码" },
+ { prop: "typeDictValue", label: "料仓类型", filter: dictFind('料仓') },
+ { prop: "status", label: "产线状态", subcomponent: StatusComponent }, // subcomponent
+ { prop: "description", label: "描述" },
+ { prop: "remark", label: "备注" },
+ {
+ prop: "operations",
+ name: "操作",
+ fixed: "right",
+ width: 120,
+ subcomponent: TableOperaionComponent,
+ options: ["edit", { name: "delete", permission: "pms:materialStorage:delete" }],
+ },
+ ];
+
+ const headFormFields = [
+ {
+ prop: 'name',
+ label: "料仓名称",
+ input: true,
+ default: { value: "" },
+ bind: {
+ // placeholder: '请输入产线名称或编码'
+ placeholder: '请输入料仓名称'
+ }
+ },
+ {
+ button: {
+ type: "primary",
+ name: "查询",
+ },
+ },
+ {
+ button: {
+ type: "primary",
+ name: "新增",
+ permission: "pms:materialStorage:save"
+ },
+ bind: {
+ plain: true,
+ }
+ },
+ ];
+
+ /**
+ * dialog config 有两个版本,一个适用于 DialogWithMenu 组件,另一个适用于 DialogJustForm 组件
+ * 适用于 DialogWithMenu 组件的配置示例详见 blenderStep/config.js
+ * 此为后者的配置:
+ */
+ const dialogJustFormConfigs = {
+ form: {
+ rows: [
+ [
+ {
+ input: true,
+ label: "料仓名称",
+ prop: "name",
+ rules: { required: true, message: "not empty", trigger: "blur" },
+ elparams: { placeholder: "请输入料仓名称" },
+ },
+ {
+ input: true,
+ label: "料仓编码",
+ prop: "code",
+ rules: { required: true, message: "not empty", trigger: "blur" },
+ elparams: { placeholder: "请输入料仓编码" },
+ }, {
+ select: true,
+ label: "料仓类型",
+ prop: "typeDictValue",
+ // fetchData: () => this.$http.get("/pms/factory/page", { params: { limit: 999, page: 1 } }),
+ options: [
+ { label: '中间仓', value: 0 },
+ { label: '日料仓', value: 1 },
+ ],
+ rules: { required: true, message: "not empty", trigger: "change" },
+ },
+ ],
+ [{ textarea: true, label: "描述信息", prop: "description", elparams: { placeholder: "描述信息" } }],
+ [{ input: true, label: "备注", prop: "remark", elparams: { placeholder: "备注" } }],
+ ],
+ operations: [
+ { name: "add", label: "保存", type: "primary", permission: "pms:materialStorage:save", showOnEdit: false },
+ { name: "update", label: "更新", type: "primary", permission: "pms:materialStorage:update", showOnEdit: true },
+ { name: "reset", label: "重置", type: "warning", showAlways: true },
+ // { name: 'cancel', label: '取消', showAlways: true },
+ ],
+ },
+ };
+ // 备注:弹窗弹出的时间和网速有关......
+
+ return {
+ dialogConfigs: dialogJustFormConfigs,
+ tableConfig: {
+ table: null, // 此处可省略,el-table 上的配置项
+ column: tableProps, // el-column-item 上的配置项
+ },
+ headFormConfigs: {
+ rules: null, // 名称是由 BaseSearchForm.vue 组件固定的
+ fields: headFormFields, // 名称是由 BaseSearchForm.vue 组件固定的
+ },
+ urls: {
+ base: "/pms/materialStorage",
+ page: "/pms/materialStorage/page",
+ // subase: '/pms/blenderStepParam',
+ // subpage: '/pms/blenderStepParam/page',
+ // more...
+ },
+ };
+}
diff --git a/src/views/modules/pms/materialStorage/index.vue b/src/views/modules/pms/materialStorage/index.vue
new file mode 100644
index 0000000..e0e4632
--- /dev/null
+++ b/src/views/modules/pms/materialStorage/index.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
diff --git a/src/views/modules/sys/dept-add-or-update.vue b/src/views/modules/sys/dept-add-or-update.vue
index c29af40..0c62677 100644
--- a/src/views/modules/sys/dept-add-or-update.vue
+++ b/src/views/modules/sys/dept-add-or-update.vue
@@ -133,7 +133,7 @@ export default {
duration: 500,
onClose: () => {
this.visible = false
- this.$emit('refreshDataList')
+ this.$emit('successSubmit')
}
})
}).catch(() => {})
diff --git a/src/views/modules/sys/dict-data.vue b/src/views/modules/sys/dict-data.vue
index d453b1b..aed92bb 100644
--- a/src/views/modules/sys/dict-data.vue
+++ b/src/views/modules/sys/dict-data.vue
@@ -77,6 +77,7 @@ export default {
mixins: [basicPage],
data() {
return {
+ isDictValuePage: true,
urlOptions: {
getDataListURL: "/sys/dict/data/page",
deleteURL: "/sys/dict/data",
diff --git a/src/views/modules/sys/dict-type-add-or-update.vue b/src/views/modules/sys/dict-type-add-or-update.vue
index 969d11b..3adb684 100644
--- a/src/views/modules/sys/dict-type-add-or-update.vue
+++ b/src/views/modules/sys/dict-type-add-or-update.vue
@@ -90,7 +90,7 @@ export default {
duration: 500,
onClose: () => {
this.visible = false
- this.$emit('refreshDataList')
+ this.$emit('successSubmit')
}
})
}).catch(() => {})
diff --git a/src/views/modules/sys/dict-type.vue b/src/views/modules/sys/dict-type.vue
index fb10e5d..45106f8 100644
--- a/src/views/modules/sys/dict-type.vue
+++ b/src/views/modules/sys/dict-type.vue
@@ -2,33 +2,16 @@
-
-
+
+
-
+
@@ -39,8 +22,8 @@
diff --git a/src/views/pages/login.vue b/src/views/pages/login.vue
index b8e3c04..42b8743 100644
--- a/src/views/pages/login.vue
+++ b/src/views/pages/login.vue
@@ -1,146 +1,114 @@
-
-
-
-
-
-
-
-
-
-
-
-
- 奥镁耐火砖PMS
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ 奥镁耐火砖PMS
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
-
+
-
-
+ -->
+
+
-
-
- 登录
-
-
-
+ 版权所有: ©中建材智能自动化研究院有限公司 2023 v1.0
+
+
+
+
@@ -251,41 +227,41 @@ $light_gray: #fff;
$cursor: #161616;
@supports (-webkit-mask: none) and (not (cater-color: $cursor)) {
- .login-container .el-input input {
- color: $cursor;
- height: 6vh !important;
- }
+ .login-container .el-input input {
+ color: $cursor;
+ height: 6vh !important;
+ }
}
/* reset element-ui css */
.login-container {
- .el-input {
- display: inline-block;
- height: 47px;
- width: 85%;
+ .el-input {
+ display: inline-block;
+ height: 47px;
+ width: 85%;
- input {
- background: transparent;
- border: 0px;
- -webkit-appearance: none;
- border-radius: 0px;
- padding: 12px 5px 12px 15px;
- }
- }
+ input {
+ background: transparent;
+ border: 0px;
+ -webkit-appearance: none;
+ border-radius: 0px;
+ padding: 12px 5px 12px 15px;
+ }
+ }
- .el-form-item {
- border: 1px solid #d7d8d9;
- border-radius: 5px;
- color: #454545;
- height: 6vh;
- .el-form-item__content {
- height: calc(6vh - 2px);
- line-height: 6vh;
- .el-input {
- height: calc(6vh - 2px);
- }
- }
- }
+ .el-form-item {
+ border: 1px solid #d7d8d9;
+ border-radius: 5px;
+ color: #454545;
+ height: 6vh;
+ .el-form-item__content {
+ height: calc(6vh - 2px);
+ line-height: 6vh;
+ .el-input {
+ height: calc(6vh - 2px);
+ }
+ }
+ }
}
@@ -296,146 +272,146 @@ $light_gray: #eee;
$cursor: #161616;
.login-container {
- min-height: 100%;
- width: 100%;
- background-size: cover;
- // background-color: $bg;
- overflow: hidden;
- .login-background {
- position: absolute;
- width: 60%;
- top: 0;
- left: 0;
- bottom: 0;
- display: flex;
- justify-content: center;
- align-items: center;
- .login-background-container {
- width: 95%;
- .back-title {
- color: #26b9de;
- font-size: 88px;
- margin-left: 17%;
- span {
- color: #fff;
- }
- p {
- font-size: 22px;
- letter-spacing: 1px;
- .back-title-point {
- display: inline-block;
- width: 16px;
- height: 16px;
- border-radius: 8px;
- background-color: #26b9de;
- margin-right: 14px;
- }
- }
- }
- }
- }
+ min-height: 100%;
+ width: 100%;
+ background-size: cover;
+ // background-color: $bg;
+ overflow: hidden;
+ .login-background {
+ position: absolute;
+ width: 60%;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ .login-background-container {
+ width: 95%;
+ .back-title {
+ color: #26b9de;
+ font-size: 88px;
+ margin-left: 17%;
+ span {
+ color: #fff;
+ }
+ p {
+ font-size: 22px;
+ letter-spacing: 1px;
+ .back-title-point {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ border-radius: 8px;
+ background-color: #26b9de;
+ margin-right: 14px;
+ }
+ }
+ }
+ }
+ }
- .login-form {
- position: absolute;
- width: 40%;
- max-width: 100%;
- top: 0;
- right: 0;
- bottom: 0;
- padding: 0 6.67%;
- margin: 0 auto;
- overflow: hidden;
- background: rgba($color: #fff, $alpha: 1);
- backdrop-filter: blur(10px);
- box-shadow: 5px 5px 5px rgba($color: #000000, $alpha: 0.1);
- .login-footer {
- position: absolute;
- bottom: 0;
- right: 0;
- left: 0;
- margin-bottom: 5vh;
- }
- .login-language {
- font-size: 15px;
- text-align: center;
- color: $cursor;
- margin-bottom: 12px;
- .login-language-box {
- cursor: pointer;
- }
- .isActive {
- color: #0b58ff;
- cursor: auto;
- }
- }
- .login-copyright {
- text-align: center;
- color: #c7c7c7;
- font-size: 15px;
- line-height: 28px;
- padding: 0 16%;
- }
- }
+ .login-form {
+ position: absolute;
+ width: 40%;
+ max-width: 100%;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ padding: 0 6.67%;
+ margin: 0 auto;
+ overflow: hidden;
+ background: rgba($color: #fff, $alpha: 1);
+ backdrop-filter: blur(10px);
+ box-shadow: 5px 5px 5px rgba($color: #000000, $alpha: 0.1);
+ .login-footer {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ margin-bottom: 5vh;
+ }
+ .login-language {
+ font-size: 15px;
+ text-align: center;
+ color: $cursor;
+ margin-bottom: 12px;
+ .login-language-box {
+ cursor: pointer;
+ }
+ .isActive {
+ color: #0b58ff;
+ cursor: auto;
+ }
+ }
+ .login-copyright {
+ text-align: center;
+ color: #c7c7c7;
+ font-size: 15px;
+ line-height: 28px;
+ padding: 0 16%;
+ }
+ }
- .tips {
- font-size: 14px;
- color: #fff;
- margin-bottom: 10px;
+ .tips {
+ font-size: 14px;
+ color: #fff;
+ margin-bottom: 10px;
- span {
- &:first-of-type {
- margin-right: 16px;
- }
- }
- }
+ span {
+ &:first-of-type {
+ margin-right: 16px;
+ }
+ }
+ }
- .svg-container {
- padding: 6px 5px 6px 15px;
- color: #000;
- vertical-align: middle;
- width: 30px;
- display: inline-block;
- }
+ .svg-container {
+ padding: 6px 5px 6px 15px;
+ color: #000;
+ vertical-align: middle;
+ width: 30px;
+ display: inline-block;
+ }
- .title-container {
- position: relative;
- margin-top: 18vh;
+ .title-container {
+ position: relative;
+ margin-top: 18vh;
- .title {
- font-size: 34px;
- line-height: 6vh;
- margin: 0px auto 40px auto;
- text-align: center;
- overflow: hidden;
- text-overflow: ellipsis;
- word-break: break-all;
- display: -webkit-box;
- -webkit-line-clamp: 3;
- -webkit-box-orient: vertical;
- letter-spacing: 2px;
- }
- }
+ .title {
+ font-size: 34px;
+ line-height: 6vh;
+ margin: 0px auto 40px auto;
+ text-align: center;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-break: break-all;
+ display: -webkit-box;
+ -webkit-line-clamp: 3;
+ -webkit-box-orient: vertical;
+ letter-spacing: 2px;
+ }
+ }
- .show-pwd {
- position: absolute;
- right: 10px;
- top: 0;
- font-size: 16px;
- color: $dark_gray;
- cursor: pointer;
- user-select: none;
- }
+ .show-pwd {
+ position: absolute;
+ right: 10px;
+ top: 0;
+ font-size: 16px;
+ color: $dark_gray;
+ cursor: pointer;
+ user-select: none;
+ }
- .thirdparty-button {
- position: absolute;
- right: 0;
- bottom: 6px;
- }
+ .thirdparty-button {
+ position: absolute;
+ right: 0;
+ bottom: 6px;
+ }
- @media only screen and (max-width: 470px) {
- .thirdparty-button {
- display: none;
- }
- }
+ @media only screen and (max-width: 470px) {
+ .thirdparty-button {
+ display: none;
+ }
+ }
}