From 6da4d2776923a1b26f51db1fac846a06d84819d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <13281114856@qq.com> Date: Fri, 8 Apr 2022 16:23:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9pom=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- device-manager-ui/admin/.env.stage | 9 + .../src/assets/utils/export2vmFunction.js | 39 ++ .../src/views/system/menu/dialogshow.vue | 228 +++++++++ .../src/views/system/param/dialogshow.vue | 141 +++++ .../src/views/system/resource/dialogshow.vue | 201 ++++++++ .../src/views/system/role/dialogshow.vue | 126 +++++ .../src/views/system/site/dialogshow.vue | 218 ++++++++ .../src/views/system/site/dialogshowbak.vue | 196 +++++++ .../admin/src/views/system/site/indexbak.vue | 482 ++++++++++++++++++ .../admin/src/views/system/site/indexbak1.vue | 139 +++++ .../admin/src/views/system/site/list.vue | 205 ++++++++ .../src/views/system/task/dialogshow.vue | 178 +++++++ .../src/views/system/user/dialogshow.vue | 194 +++++++ 13 files changed, 2356 insertions(+) create mode 100644 device-manager-ui/admin/.env.stage create mode 100644 device-manager-ui/admin/src/assets/utils/export2vmFunction.js create mode 100644 device-manager-ui/admin/src/views/system/menu/dialogshow.vue create mode 100644 device-manager-ui/admin/src/views/system/param/dialogshow.vue create mode 100644 device-manager-ui/admin/src/views/system/resource/dialogshow.vue create mode 100644 device-manager-ui/admin/src/views/system/role/dialogshow.vue create mode 100644 device-manager-ui/admin/src/views/system/site/dialogshow.vue create mode 100644 device-manager-ui/admin/src/views/system/site/dialogshowbak.vue create mode 100644 device-manager-ui/admin/src/views/system/site/indexbak.vue create mode 100644 device-manager-ui/admin/src/views/system/site/indexbak1.vue create mode 100644 device-manager-ui/admin/src/views/system/site/list.vue create mode 100644 device-manager-ui/admin/src/views/system/task/dialogshow.vue create mode 100644 device-manager-ui/admin/src/views/system/user/dialogshow.vue diff --git a/device-manager-ui/admin/.env.stage b/device-manager-ui/admin/.env.stage new file mode 100644 index 0000000..dbe4887 --- /dev/null +++ b/device-manager-ui/admin/.env.stage @@ -0,0 +1,9 @@ +# 娴嬭瘯鐜閰嶇疆 +NODE_ENV = 'production' + +# 鍦板潃 +VUE_APP_BASE_API = http://192.168.0.98:11021/m + +# websocket鍦板潃 +VUE_APP_WEBSOCKET_API =192.168.0.98:18211/m + diff --git a/device-manager-ui/admin/src/assets/utils/export2vmFunction.js b/device-manager-ui/admin/src/assets/utils/export2vmFunction.js new file mode 100644 index 0000000..5443ee6 --- /dev/null +++ b/device-manager-ui/admin/src/assets/utils/export2vmFunction.js @@ -0,0 +1,39 @@ +exports.install = function (Vue) { + // 鎶婇渶瑕佹毚闇插嚭鍘荤殑鏂规硶鎸傝浇鍒癡ue鍘熷瀷涓婏紝閬垮厤浜嗗叏灞€鍙橀噺杩囧鐨勯棶棰� + Vue.prototype.refreshData = function () { + + console.log("鍒锋柊璁惧鍒楄〃") + const component = findComponentDownward(this, 'Device') + console.log("component",component) + if(component){ + component.getData() + } + + } + } + + /** + * 鐢变竴涓粍浠讹紝鍚戜笅鎵惧埌鏈€杩戠殑鎸囧畾缁勪欢 + * @param {*} context 褰撳墠涓婁笅鏂囷紝姣斿浣犺鍩轰簬鍝釜缁勪欢鏉ュ悜涓婂鎵撅紝涓€鑸兘鏄熀浜庡綋鍓嶇殑缁勪欢锛屼篃灏辨槸浼犲叆 this + * @param {*} componentName 瑕佹壘鐨勭粍浠剁殑 name + */ + function findComponentDownward(context, componentName) { + const childrens = context.$children + let children = null + + if (childrens.length) { + for (const child of childrens) { + const name = child.$options.name + + if (name === componentName) { + children = child + break + } else { + children = findComponentDownward(child, componentName) + if (children) break + } + } + } + return children + } + \ No newline at end of file diff --git a/device-manager-ui/admin/src/views/system/menu/dialogshow.vue b/device-manager-ui/admin/src/views/system/menu/dialogshow.vue new file mode 100644 index 0000000..00d1506 --- /dev/null +++ b/device-manager-ui/admin/src/views/system/menu/dialogshow.vue @@ -0,0 +1,228 @@ +// 娣诲姞锛岀紪杈戣澶� +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="35%" append-to-body> + <el-form + ref="form" + :model="form" + :rules="rules" + label-width="110px" + label-position="right" + > + <el-row> + <Field + :span="22" + label="ID" + prop="id" + v-model="form.id" + v-if="pageInfo.type !== 'add'" + disabled + /> + <Field :span="22" label="鍚嶇О" prop="name" v-model="form.name" /> + <Field + :span="22" + label="鏉冮檺绫诲瀷" + prop="authType" + v-model="form.authType" + :enumData="dict.authType" + type="select" + /> + <Field + :span="22" + label="鐖剁骇鑿滃崟" + prop="parentId" + v-model="form.parentId" + :enumData="menu" + type="select" + /> + <Field :span="22" label="璁块棶鍦板潃" prop="url" v-model="form.url" /> + <Field + :span="22" + label="鐘舵€�" + prop="status" + v-model="form.status" + :enumData="dict.status" + type="radio" + /> + + <Field + :span="22" + label="鍥炬爣" + placeholder="璇疯緭鍏ュ浘鏍囧悕绉�" + prop="imgPath" + v-model="form.imgPath" + /> + <!-- <Field v-else :span="22" label="鍥炬爣" prop="imgPath"> + <el-radio-group v-model="form.imgPath" class="form-el-radio-group"> + <el-radio-button label="">涓嶉渶瑕佸浘鏍�</el-radio-button> + <el-radio-button + v-for="(icon, index) in icons" + :key="index" + :label="icon" + > + <i :class="'el-icon-' + icon"></i> + {{ icon }} + </el-radio-button> + </el-radio-group> + </Field> --> + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button + type="primary" + v-if="pageInfo.type !== 'view'" + @click="submitForm" + >纭� 瀹�</el-button + > + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> +import form from "@/assets/mixins/formdialog"; +import dialogShow from "./dialogshow"; +export default { + mixins: [form], + components: { + dialogShow, + }, + computed: { + menu() { + let menu = { 0: "鏃�" }; + this.$store.state.userData.barList.forEach((item) => { + menu[item.id + ""] = item.name; + }); + return menu; + }, + }, + + methods: { + afterSubmit() { + this.$store.dispatch("login"); + this.$router.go(-1); + }, + /** 缂栬緫 */ + edit(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.editUrl; + this.getData(); + this.pageInfo.type = "edit"; + this.title = "淇敼鑿滃崟"; + }, + /** 鏂板 */ + add(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.addUrl; + this.getData(); + this.pageInfo.type = "add"; + this.open = true; + this.title = "鏂板鑿滃崟"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.viewUrl; + this.getData(); + this.pageInfo.type = "view"; + this.open = true; + this.title = "鑿滃崟璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + // this.form={} + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鑿滃崟", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString: ["parentId", "authType", "status"], + icons: [ + "info", + "error", + "success", + "warning", + "question", + "tickets", + "document", + "goods", + "sold-out", + "news", + "message", + "date", + "printer", + "time", + "bell", + "mobile-phone", + "service", + "view", + "menu", + "star-on", + "location", + "phone", + "picture", + "delete", + "search", + "edit", + "rank", + "refresh", + "share", + "setting", + "upload", + "upload2", + "download", + "loading", + "reading", + ], + rules: { + name: [{ required: true, message: "璇疯緭鍏ュ悕绉�", trigger: "blur" }], + }, + }; + }, +}; +</script> + +<style lang="less"> +.el-select { + width: 100%; +} +.el-date-editor.el-input { + width: 100%; +} +.form-el-radio-group.label { + width: 160px; +} +.el-radio-button__inner { + border: 0; +} +</style> + + diff --git a/device-manager-ui/admin/src/views/system/param/dialogshow.vue b/device-manager-ui/admin/src/views/system/param/dialogshow.vue new file mode 100644 index 0000000..a3fbf50 --- /dev/null +++ b/device-manager-ui/admin/src/views/system/param/dialogshow.vue @@ -0,0 +1,141 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="70%" append-to-body> + <el-form + :model="form" + :rules="rules" + size="small" + label-width="100px" + ref="form" + > + <el-row> + <Field label="鍙傛暟鍚嶇О" prop="name" v-model="form.name" /> + <Field + label="涓€绾х粍缁�" + prop="firstOrganize" + v-model="form.firstOrganize" + /> + <Field + label="浜岀骇缁勭粐" + prop="secondOrganize" + v-model="form.secondOrganize" + /> + <Field + label="鍙傛暟鏈夋晥鐘舵€�" + prop="validStatus" + v-model="form.validStatus" + :enumData="dict.validStatus" + type="select" + /> + <Field + label="鍙傛暟淇敼鐘舵€�" + prop="modStatus" + v-model="form.modStatus" + :enumData="dict.modStatus" + type="select" + /> + <Field + label="灞曠幇绫诲瀷" + prop="displayType" + v-model="form.displayType" + :enumData="dict.displayType" + type="select" + /> + <Field + label="鍙傛暟閿�" + prop="paramKey" + v-model="form.paramKey" + :span="24" + /> + <Field + label="鍙傛暟鍊�" + prop="paramValue" + v-model="form.paramValue" + :span="24" + type="textarea" + /> + <Field label="澶囨敞" prop="remark" v-model="form.remark" :span="24" /> + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> +import form from "@/assets/mixins/form"; +export default { + mixins: [form], + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "绔欑偣淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString: ["validStatus", "modStatus", "displayType"], + rules: { + name: [{ required: true, message: "璇疯緭鍏ュ弬鏁板悕绉�", trigger: "blur" }], + paramKey: [{ required: true, message: "璇疯緭鍏ュ弬鏁伴敭", trigger: "blur" }], + paramValue: [{ required: true, message: "璇疯緭鍏ュ弬鏁板€�", trigger: "blur" }], + }, + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.editUrl; + this.getData(); + this.open = true; + this.title = "淇敼绔欑偣淇℃伅"; + }, + /** 鏂板 */ + add(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.addUrl; + this.getData(); + this.open = true; + this.title = "鏂板绔欑偣淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.viewUrl; + this.getData(); + this.open = true; + this.title = "绔欑偣淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.reset(); + this.open = false; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, +}; +</script> diff --git a/device-manager-ui/admin/src/views/system/resource/dialogshow.vue b/device-manager-ui/admin/src/views/system/resource/dialogshow.vue new file mode 100644 index 0000000..9b721ff --- /dev/null +++ b/device-manager-ui/admin/src/views/system/resource/dialogshow.vue @@ -0,0 +1,201 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="40%" append-to-body> + <el-form + ref="form" + :model="form" + :rules="rules" + label-width="110px" + label-position="right" + > + <el-row> + <Field :span="20" label="鍚嶇О" prop="name" v-model="form.name" /> + <Field + :span="20" + label="鏉冮檺绫诲瀷" + prop="authType" + v-model="form.authType" + :enumData="dict.authType" + type="select" + /> + <!-- <Field label="鐢ㄦ埛绫诲瀷" prop="userType" v-model="form.userType" :enumData='dict.userType' type='select' /> --> + <Field label="閾炬帴鍦板潃" prop="url" :span="20"> + <el-button + icon="el-icon-plus" + circle + size="mini" + @click="addResource" + v-if="!form.urls.length" + ></el-button> + <el-row + v-for="(url, index) in form.urls" + :key="index" + style="width: 400px" + > + <el-col :span="16"> + <el-form-item + label-width="0" + :prop="'urls.' + index + '.value'" + :rules="[ + { required: true, message: '鍦板潃涓嶈兘涓虹┖', trigger: 'blur' }, + { validator: validatorUrl, trigger: 'blur' }, + ]" + > + <el-input size="mini" v-model="url.value"></el-input> + </el-form-item> + </el-col> + <el-col :span="8"> + + <el-button + icon="el-icon-minus" + circle + size="mini" + @click="del(index)" + ></el-button> + <el-button + icon="el-icon-plus" + circle + size="mini" + @click="addResource" + v-if="index === form.urls.length - 1" + ></el-button> + </el-col> + </el-row> + </Field> + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button + type="primary" + v-if="pageInfo.type !== 'view'" + @click="submitForm" + >纭� 瀹�</el-button + > + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> +import form from "@/assets/mixins/formdialog"; +import dialogShow from "./dialogshow"; +import FormButtons from "@/components/tools/FormButtons"; +export default { + mixins: [form], + components: { + dialogShow, + FormButtons, + }, + methods: { + beforeRender(data) { + data.entity.urls = (data.entity.url || "").split(",").map((i) => { + return { value: i }; + }); + return data; + }, + beforeSubmit(form) { + form.url = this.form.urls.map((item) => item.value).join(","); + return form; + }, + del(index) { + this.form.urls.splice(index, 1); + }, + addResource(index) { + const urls = this.form.urls; + const values = urls.map((i) => i.value); + // 鏂板鍓嶆鏌ュ墠鏂规槸鍚︽湁绌鸿 + if (urls.some((i) => !i.value)) { + return this.$message.warning("璇峰厛瀹屾垚涓婁竴涓湴鍧€鐨勫~鍐�"); + } + urls.push({ value: "" }); + console.log("urls", urls); + }, + isRepeat(value) { + return this.form.urls.filter((i) => value == i.value).length > 1; + }, + validatorUrl(rule, value, cb) { + if (this.isRepeat(value)) { + return cb(new Error(`閲嶅鐨剈rl鍦板潃`)); + } + cb(); + }, + /** 缂栬緫 */ + edit(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.editUrl; + this.getData(); + this.pageInfo.type = "edit"; + this.title = "淇敼璧勬簮"; + }, + /** 鏂板 */ + add(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.addUrl; + this.getData(); + this.pageInfo.type = "add"; + this.title = "鏂板璧勬簮"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.viewUrl; + this.getData(); + this.pageInfo.type = "view"; + this.title = "璧勬簮璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + // this.form.urls = (data.entity.url || "").split(",").map((i) => { + // return { value: i }; + // }); + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + urls: [], + }; + //this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "璧勬簮", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString: ["userType", "authType"], + + form: { + urls: [], + }, + + rules: { + name: [{ required: true, message: "璇疯緭鍏ュ悕绉�", trigger: "blur" }], + }, + }; + }, +}; +</script> + + diff --git a/device-manager-ui/admin/src/views/system/role/dialogshow.vue b/device-manager-ui/admin/src/views/system/role/dialogshow.vue new file mode 100644 index 0000000..f8b26d3 --- /dev/null +++ b/device-manager-ui/admin/src/views/system/role/dialogshow.vue @@ -0,0 +1,126 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="40%" append-to-body> + <el-form + ref="form" + :model="form" + :rules="rules" + label-width="110px" + label-position="right" + > + <el-row> + <Field :span="20" label="瑙掕壊鍚�" prop="name" v-model="form.name" /> + <!-- <Field + :span="20" + label="瑙掕壊绫诲瀷" + prop="roleType" + v-model="form.roleType" + :enumData="dict.roleType" + type="select" + /> --> + <Field + label="澶囨敞" + prop="remark" + v-model="form.remark" + type="textarea" + :span="20" + /> + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button + type="primary" + v-if="pageInfo.type !== 'view'" + @click="submitForm" + >纭� 瀹�</el-button + > + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> +import form from "@/assets/mixins/formdialog"; +import dialogShow from "./dialogshow"; +export default { + mixins: [form], + components: { + dialogShow, + }, + + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鐢ㄦ埛", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString: ["roleType"], + rules: { + name: [{ required: true, message: "璇疯緭鍏ュ悕绉�", trigger: "blur" }], + roleType: [ + { required: true, message: "璇烽€夋嫨鐢ㄦ埛绫诲瀷", trigger: "blur" }, + ], + }, + }; + }, + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.editUrl; + this.getData(); + this.pageInfo.type = "edit"; + this.open = true; + this.title = "淇敼瑙掕壊"; + }, + /** 鏂板 */ + add(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.addUrl; + this.getData(); + this.pageInfo.type = "add"; + this.open = true; + this.title = "鏂板瑙掕壊"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.viewUrl; + this.getData(); + this.pageInfo.type = "view"; + this.open = true; + this.title = "瑙掕壊璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = {}; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, +}; +</script> + + diff --git a/device-manager-ui/admin/src/views/system/site/dialogshow.vue b/device-manager-ui/admin/src/views/system/site/dialogshow.vue new file mode 100644 index 0000000..40d582e --- /dev/null +++ b/device-manager-ui/admin/src/views/system/site/dialogshow.vue @@ -0,0 +1,218 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="70%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-row> + <el-col :span="24" v-if="form.parentId !== 0"> + <el-form-item label="涓婄骇绔欑偣" prop="parentId"> + <treeselect + v-model="form.parentId" + :options="siteOptions" + :normalizer="normalizer" + placeholder="閫夋嫨涓婄骇绔欑偣淇℃伅" + /> + </el-form-item> + </el-col> + + + <Field label="绔欑偣鍚�" prop="siteName" v-model="form.siteName" placeholder="璇疯緭鍏ョ珯鐐瑰悕"/> + + <Field label="鐖剁骇id" prop="parentId" v-model="form.parentId" placeholder="璇疯緭鍏ョ埗绾d"/> + + <Field label="绁栫骇鍒楄〃锛岄€楀彿鍒嗛殧" prop="ancestors" v-model="form.ancestors" placeholder="璇疯緭鍏ョ绾у垪琛紝閫楀彿鍒嗛殧"/> + + <Field label="鍦板潃" prop="address" v-model="form.address" placeholder="璇疯緭鍏ュ湴鍧€"/> + + <Field label="鐢佃瘽" prop="mobile" v-model="form.mobile" placeholder="璇疯緭鍏ョ數璇�"/> + + <Field label="鍗曚綅浠嬬粛" prop="introduce" v-model="form.introduce" type="textarea" placeholder="璇疯緭鍏ュ崟浣嶄粙缁�"/> + + <Field label="鍛ㄤ竴 1涓婄彮 0涓嶄笂" prop="workday1" v-model="form.workday1" type="select" :enumData="dict.workday1" placeholder="璇烽€夋嫨鍛ㄤ竴 1涓婄彮 0涓嶄笂"/> + + <Field label="鍛ㄤ簩 1涓婄彮 0涓嶄笂" prop="workday2" v-model="form.workday2" type="select" :enumData="dict.workday2" placeholder="璇烽€夋嫨鍛ㄤ簩 1涓婄彮 0涓嶄笂"/> + + <Field label="鍛ㄤ笁 1涓婄彮 0涓嶄笂" prop="workday3" v-model="form.workday3" type="select" :enumData="dict.workday3" placeholder="璇烽€夋嫨鍛ㄤ笁 1涓婄彮 0涓嶄笂"/> + + <Field label="鍛ㄥ洓 1涓婄彮 0涓嶄笂" prop="workday4" v-model="form.workday4" type="select" :enumData="dict.workday4" placeholder="璇烽€夋嫨鍛ㄥ洓 1涓婄彮 0涓嶄笂"/> + + <Field label="鍛ㄤ簲 1涓婄彮 0涓嶄笂" prop="workday5" v-model="form.workday5" type="select" :enumData="dict.workday5" placeholder="璇烽€夋嫨鍛ㄤ簲 1涓婄彮 0涓嶄笂"/> + + <Field label="鍛ㄥ叚 1涓婄彮 0涓嶄笂" prop="workday6" v-model="form.workday6" type="select" :enumData="dict.workday6" placeholder="璇烽€夋嫨鍛ㄥ叚 1涓婄彮 0涓嶄笂"/> + + <Field label="鍛ㄦ棩 1涓婄彮 0涓嶄笂" prop="workday7" v-model="form.workday7" type="select" :enumData="dict.workday7" placeholder="璇烽€夋嫨鍛ㄦ棩 1涓婄彮 0涓嶄笂"/> + + <Field label="绔欑偣缂栧彿" prop="number" v-model="form.number" placeholder="璇疯緭鍏ョ珯鐐圭紪鍙�"/> + + <Field label="涓績浠嬬粛" prop="summary" v-model="form.summary" type="textarea" placeholder="璇疯緭鍏ヤ腑蹇冧粙缁�"/> + + <Field label="鎺掑簭瀛楁" prop="orderNum" v-model="form.orderNum" placeholder="璇疯緭鍏ユ帓搴忓瓧娈�"/> + + <Field label="绔欑偣鐘舵€� 锛�0锛屽仠鐢紝1锛屾甯� 榛樿1" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="璇烽€夋嫨绔欑偣鐘舵€� 锛�0锛屽仠鐢紝1锛屾甯� 榛樿1"/> + + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> + import form from "@/assets/mixins/form"; + import Treeselect from "@riophae/vue-treeselect"; + import "@riophae/vue-treeselect/dist/vue-treeselect.css"; + export default { + mixins: [form], + components: { + Treeselect, + }, + data() { + return { + siteOptions: [], + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "绔欑偣淇℃伅", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString:[ + "workday1", + "workday2", + "workday3", + "workday4", + "workday5", + "workday6", + "workday7", + "status", + ], + // 琛ㄥ崟鏍¢獙 + rules: { + siteName: [ + {required: true, trigger: "blur" }, + ], + ancestors: [ + { trigger: "blur" }, + ], + address: [ + {required: true, trigger: "blur" }, + ], + mobile: [ + {required: true, trigger: "blur" }, + ], + introduce: [ + {required: true, trigger: "blur" }, + ], + workday1: [ + { type: 'integer',trigger: "blur" }, + ], + workday2: [ + { type: 'integer',trigger: "blur" }, + ], + workday3: [ + { type: 'integer',trigger: "blur" }, + ], + workday4: [ + { type: 'integer',trigger: "blur" }, + ], + workday5: [ + { type: 'integer',trigger: "blur" }, + ], + workday6: [ + { type: 'integer',trigger: "blur" }, + ], + workday7: [ + { type: 'integer',trigger: "blur" }, + ], + number: [ + {required: true, trigger: "blur" }, + ], + summary: [ + {required: true, trigger: "blur" }, + ], + orderNum: [ + { type: 'integer',trigger: "blur" }, + ], + status: [ + { type: 'integer',trigger: "blur" }, + ], + } + }; + }, + + methods: { + /** 缂栬緫 */ + edit(row, siteOptions) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl =this.pageInfo.editUrl;; + this.getData(); + this.siteOptions = siteOptions; + this.open = true; + this.title = "淇敼绔欑偣淇℃伅"; + }, + /** 鏂板 */ + add(row, siteOptions) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.addUrl; + this.getData(); + this.siteOptions = siteOptions; + this.open = true; + this.title = "鏂板绔欑偣淇℃伅"; + }, + /** 鏌ョ湅*/ + view(row, siteOptions) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl =this.pageInfo.viewUrl;; + this.getData(); + this.siteOptions = siteOptions; + this.open = true; + this.title = "绔欑偣淇℃伅璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + /** 杞崲绔欑偣淇℃伅鏁版嵁缁撴瀯 */ + normalizer(node) { + if (node.children && !node.children.length) { + delete node.children; + } + return { + id: node.id, + label: node.siteName, + children: node.children, + }; + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + siteName : null, + parentId : null, + ancestors : "", + address : null, + mobile : null, + introduce : null, + number : null, + summary : null, + orderNum : 0, + status : 1, + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + }; +</script> diff --git a/device-manager-ui/admin/src/views/system/site/dialogshowbak.vue b/device-manager-ui/admin/src/views/system/site/dialogshowbak.vue new file mode 100644 index 0000000..bf6c67f --- /dev/null +++ b/device-manager-ui/admin/src/views/system/site/dialogshowbak.vue @@ -0,0 +1,196 @@ +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="70%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-row> + <el-col :span="24" v-if="form.parentId !== 0"> + <el-form-item label="涓婄骇绔欑偣" prop="parentId"> + <treeselect + v-model="form.parentId" + :options="siteOptions" + :normalizer="normalizer" + placeholder="閫夋嫨涓婄骇绔欑偣" + /> + </el-form-item> + </el-col> + <el-form-item label="绔欑偣鍚嶇О" prop="siteName"> + <el-input v-model="form.siteName" placeholder="璇疯緭鍏ョ珯鐐瑰悕绉�" /> + </el-form-item> + <el-form-item label="鏄剧ず鎺掑簭" prop="orderNum"> + <el-input-number + v-model="form.orderNum" + controls-position="right" + :min="0" + /> + </el-form-item> + <el-form-item label="鍦板潃" prop="address"> + <el-input + v-model="form.address" + placeholder="璇疯緭鍏ュ湴鍧€" + maxlength="20" + /> + </el-form-item> + <el-form-item label="鑱旂郴鐢佃瘽" prop="mobile"> + <el-input + v-model="form.mobile" + placeholder="璇疯緭鍏ヨ仈绯荤數璇�" + maxlength="11" + /> + </el-form-item> + <el-form-item label="绔欑偣缂栧彿" prop="number"> + <el-input + v-model="form.number" + placeholder="璇疯緭鍏ョ珯鐐圭紪鍙�" + maxlength="50" + /> + </el-form-item> + <el-form-item label="绔欑偣鐘舵€�"> + <el-radio-group v-model="form.status"> + <el-radio + v-for="(label, value) in dict.status" + :key="value" + :label="value" + >{{ label }}</el-radio + > + </el-radio-group> + </el-form-item> + + <el-col :span="24"> + <el-form-item label="鍗曚綅浠嬬粛" prop="introduce"> + <el-input + v-model="form.introduce" + placeholder="璇疯緭鍏ュ崟浣嶄粙缁�" + type="textarea" + :rows="2" + /> + </el-form-item> + </el-col> + + <el-col :span="24"> + <el-form-item label="涓績浠嬬粛" prop="summary"> + <el-input + v-model="form.summary" + placeholder="璇疯緭鍏ヤ腑蹇冧粙缁�" + type="textarea" + :rows="2" + /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> +import form from "@/assets/mixins/form"; +import Treeselect from "@riophae/vue-treeselect"; +import "@riophae/vue-treeselect/dist/vue-treeselect.css"; +export default { + mixins: [form], + components: { Treeselect }, + data() { + return { + siteOptions: [], + // 閬僵灞� + loading: true, + // 绔欑偣鏍戦€夐」 + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString: ["status"], + // 琛ㄥ崟鏍¢獙 + rules: { + parentId: [ + { required: true, message: "涓婄骇绔欑偣涓嶈兘涓虹┖", trigger: "blur" }, + ], + siteName: [ + { required: true, message: "绔欑偣鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, + ], + orderNum: [ + { required: true, message: "鏄剧ず鎺掑簭涓嶈兘涓虹┖", trigger: "blur" }, + ], + }, + }; + }, + + methods: { + //缂栬緫 + edit(row, siteOptions) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl =this.pageInfo.editUrl;; + this.getData(); + this.siteOptions = siteOptions; + this.open = true; + this.title = "淇敼绔欑偣"; + }, + //鏂板 + add(row, siteOptions) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.addUrl; + this.getData(); + this.siteOptions = siteOptions; + this.open = true; + this.title = "鏂板绔欑偣"; + }, + //鏌ョ湅 + view(row, siteOptions) { + this.reset() + this.query = { id: row.id }; + this.urls.currUrl =this.pageInfo.viewUrl;; + this.getData(); + this.siteOptions = siteOptions; + this.open = true; + this.title = "绔欑偣璇︾粏"; + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + + /** 杞崲绔欑偣鏁版嵁缁撴瀯 */ + normalizer(node) { + if (node.children && !node.children.length) { + delete node.children; + } + return { + id: node.id, + label: node.siteName, + children: node.children, + }; + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + id: null, + parentId: 0, + siteName: "", + orderNum: 0, + address: "", + mobile: "", + introduce: "", + summary: "", + ancestors: "", + status: "1", + }; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, +}; +</script> diff --git a/device-manager-ui/admin/src/views/system/site/indexbak.vue b/device-manager-ui/admin/src/views/system/site/indexbak.vue new file mode 100644 index 0000000..c1c36c8 --- /dev/null +++ b/device-manager-ui/admin/src/views/system/site/indexbak.vue @@ -0,0 +1,482 @@ +<template> + <div class="page"> + <el-form + :model="queryParams" + ref="queryForm" + :inline="true" + v-show="showSearch" + > + <el-form-item label="绔欑偣鍚嶇О" prop="siteName"> + <el-input + v-model="queryParams['query.siteName']" + placeholder="璇疯緭鍏ョ珯鐐瑰悕绉�" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + + <el-form-item> + <el-button + type="primary" + icon="el-icon-search" + size="mini" + @click="handleQuery" + >鎼滅储</el-button + > + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" + >閲嶇疆</el-button + > + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="el-icon-plus" + size="mini" + @click="handleAdd" + >鏂板</el-button + > + </el-col> + <right-toolbar + :showSearch.sync="showSearch" + @queryTable="getList" + ></right-toolbar> + </el-row> + + <el-table + v-loading="loading" + :data="siteList" + row-key="id" + border + default-expand-all + :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" + > + <el-table-column + prop="siteName" + label="绔欑偣鍚嶇О" + width="400" + ></el-table-column> + <el-table-column + prop="number" + label="绔欑偣缂栧彿" + width="200" + ></el-table-column> + <el-table-column + prop="address" + label="绔欑偣鍦板潃" + width="200" + ></el-table-column> + + <el-table-column + prop="status" + label="鐘舵€�" + :formatter="statusFormat" + width="100" + ></el-table-column> + <el-table-column + label="鍒涘缓鏃堕棿" + align="center" + prop="createTime" + width="200" + > + <template slot-scope="scope"> + <span>{{ formatterDate(scope.row.createTime) }}</span> + </template> + </el-table-column> + <el-table-column + label="鎿嶄綔" + + > + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleUpdate(scope.row)" + >淇敼</el-button + > + <el-button + size="mini" + type="text" + icon="el-icon-plus" + @click="handleAdd(scope.row)" + >鏂板</el-button + > + <el-button + v-if="scope.row.parentId != 0" + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + >鍒犻櫎</el-button + > + </template> + </el-table-column> + </el-table> + + <!-- 娣诲姞鎴栦慨鏀圭珯鐐瑰璇濇 --> + <el-dialog :title="title" :visible.sync="open" width="70%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-row> + <el-col :span="24" v-if="form.parentId !== 0"> + <el-form-item label="涓婄骇绔欑偣" prop="parentId"> + <treeselect + v-model="form.parentId" + :options="siteOptions" + :normalizer="normalizer" + placeholder="閫夋嫨涓婄骇绔欑偣" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="绔欑偣鍚嶇О" prop="siteName"> + <el-input v-model="form.siteName" placeholder="璇疯緭鍏ョ珯鐐瑰悕绉�" /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏄剧ず鎺掑簭" prop="orderNum"> + <el-input-number + v-model="form.orderNum" + controls-position="right" + :min="0" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍦板潃" prop="address"> + <el-input + v-model="form.address" + placeholder="璇疯緭鍏ュ湴鍧€" + maxlength="20" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鑱旂郴鐢佃瘽" prop="mobile"> + <el-input + v-model="form.mobile" + placeholder="璇疯緭鍏ヨ仈绯荤數璇�" + maxlength="11" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="绔欑偣缂栧彿" prop="number"> + <el-input + v-model="form.number" + placeholder="璇疯緭鍏ョ珯鐐圭紪鍙�" + maxlength="50" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="绔欑偣鐘舵€�"> + <el-radio-group v-model="form.status"> + <el-radio + v-for="(label, value) in dict.status" + :key="value" + :label="value" + >{{ label }}</el-radio + > + </el-radio-group> + + </el-form-item> + </el-col> + + <el-col :span="24"> + <el-form-item label="鍗曚綅浠嬬粛" prop="introduce"> + <el-input + v-model="form.introduce" + placeholder="璇疯緭鍏ュ崟浣嶄粙缁�" + type="textarea" + :rows="2" + /> + </el-form-item> + </el-col> + + <el-col :span="24"> + <el-form-item label="涓績浠嬬粛" prop="summary"> + <el-input + v-model="form.summary" + placeholder="璇疯緭鍏ヤ腑蹇冧粙缁�" + type="textarea" + :rows="2" + /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import { handleTree, formatterDate } from "@/assets/utils"; + +import Treeselect from "@riophae/vue-treeselect"; +import "@riophae/vue-treeselect/dist/vue-treeselect.css"; + +export default { + name: "Dept", + components: { Treeselect }, + data() { + return { + // 閬僵灞� + loading: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 琛ㄦ牸鏍戞暟鎹� + siteList: [], + // 绔欑偣鏍戦€夐」 + siteOptions: [], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 鐘舵€佹暟鎹瓧鍏� + statusOptions: [], + // 鏌ヨ鍙傛暟 + queryParams: { + "query.siteName": null, + }, + // 琛ㄥ崟鍙傛暟 + form: {}, + dict: {}, + toString: ["status"], + // 琛ㄥ崟鏍¢獙 + rules: { + parentId: [ + { required: true, message: "涓婄骇绔欑偣涓嶈兘涓虹┖", trigger: "blur" }, + ], + siteName: [ + { required: true, message: "绔欑偣鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, + ], + orderNum: [ + { required: true, message: "鏄剧ず鎺掑簭涓嶈兘涓虹┖", trigger: "blur" }, + ], + email: [ + { + type: "email", + message: "'璇疯緭鍏ユ纭殑閭鍦板潃", + trigger: ["blur", "change"], + }, + ], + mobile: [ + { + pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, + message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", + trigger: "blur", + }, + ], + }, + }; + }, + created() { + this.getList(); + + }, + methods: { + formatterDate(time) { + return formatterDate(time); + }, + /** 鏌ヨ绔欑偣鍒楄〃 */ + getList() { + this.loading = true; + + let query = {}; + //鍒ゆ柇杩藉姞鐧惧垎鍙� + Object.assign(query, this.queryParams); + + if (query["query.siteName"] != null) { + query["query.siteName"] = "%" + query["query.siteName"] + "%"; + } + this.$post("/site/list", query) + .then((res) => { + if (res && res.code && res.code == 1) { + this.siteList = handleTree(res.data.result, "id"); + this.dict = Object.assign({}, this.dict, res.data.dict); + this.loading = false; + } + }) + .catch((error) => { + this.$message.error(error.message); + }); + }, + /** 杞崲绔欑偣鏁版嵁缁撴瀯 */ + normalizer(node) { + console.log("normalizer", node); + if (node.children && !node.children.length) { + delete node.children; + } + return { + id: node.id, + label: node.siteName, + children: node.children, + }; + }, + // 瀛楀吀鐘舵€佸瓧鍏哥炕璇� + statusFormat(row, column) { + try { + return this.dict["status"][row.status]; + } catch (error) { + return row.status; + } + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + id: null, + parentId: 0, + siteName: "", + orderNum: 0, + address: "", + mobile: "", + introduce: "", + summary: "", + ancestors: "", + status: "1", + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd(row) { + this.reset(); + if (row.id != undefined) { + this.form.parentId = row.id; + } + this.open = true; + this.title = "娣诲姞绔欑偣"; + this.loading = true; + this.$post("/site/list", {}) + .then((res) => { + if (res && res.code && res.code == 1) { + this.siteOptions = handleTree(res.data.result); + this.loading = false; + } + }) + .catch((error) => { + this.$message.error(error.message); + }); + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.reset(); + + this.loading = true; + this.$post("/site/edit", { id: [row.id] }) + .then((res) => { + if (res && res.code && res.code == 1) { + res.data.entity = this.util_toString( + res.data.entity, + this.toString + ); + + Object.assign(this.form, res.data.entity); + + this.open = true; + this.title = "淇敼绔欑偣"; + this.loading = false; + } + }) + .catch((error) => { + this.$message.error(error.message); + }); + + this.$post("/site/list/exclude", { id: [row.id] }) + .then((res) => { + if (res && res.code && res.code == 1) { + this.siteOptions = handleTree(res.data.result); + } + }) + .catch((error) => { + this.$message.error(error.message); + }); + }, + /** 鎻愪氦鎸夐挳 */ + submitForm: function () { + this.loading = true; + const el = this.$refs.form; + el.validate((valid) => { + if (!valid) return; + this.$post("/site/save", { + entity: this.form, + }) + .then((res) => { + if (res && res.code && res.code == 1) { + this.loading = false; + this.reset(); + this.open = false; + this.getList(); + } + }) + .catch((error) => { + this.loading = false; + this.$message.error(error.message); + }); + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + let _this=this + this.$confirm( + '鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.siteName + '"鐨勬暟鎹」?', + "璀﹀憡", + { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + } + ).then(function () { + _this.$post("/site/delete", { id: [row.id] }) + .then((res) => { + if (res && res.code && res.code == 1) { + _this.getList(); + _this.$message.success("鍒犻櫎鎴愬姛"); + } + }) + .catch((error) => { + _this.$message.error(error.message); + }); + }); + }, + + // 宸ュ叿鏂规硶锛屾妸鏁板瓧杞寲涓哄瓧绗︿覆 + util_toString(data, array) { + const dataCopy = Object.assign({}, data); + + array.forEach((item) => { + dataCopy[item] = + dataCopy[item] === undefined ? "" : dataCopy[item] + ""; + }); + return dataCopy; + }, + }, +}; +</script> \ No newline at end of file diff --git a/device-manager-ui/admin/src/views/system/site/indexbak1.vue b/device-manager-ui/admin/src/views/system/site/indexbak1.vue new file mode 100644 index 0000000..6ab7202 --- /dev/null +++ b/device-manager-ui/admin/src/views/system/site/indexbak1.vue @@ -0,0 +1,139 @@ +<template> + <div class="page"> + <LayoutTable ref="layoutTable" :data="tableData" :config="tableConfig" /> + <dialog-show ref="dialogform" @ok="getData" /> + </div> +</template> + +<script> +import dialogShow from "./dialogshow"; +import { handleTree } from "@/assets/utils/table"; +import Treeselect from "@riophae/vue-treeselect"; +import "@riophae/vue-treeselect/dist/vue-treeselect.css"; +import table from "@/assets/mixins/table"; +export default { + name: "Site", + mixins: [table], + components: { Treeselect, dialogShow }, + data() { + return { + config: { + expand:true, + search: [ + { + name: "name", + type: "text", + label: "鍙傛暟鍚嶇О", + }, + ], + columns: [ + { + prop: "siteName", + label: "siteName", + }, + + { + prop: "number", + label: "绔欑偣缂栧彿", + width: 200, + }, + + { + prop: "address", + label: "绔欑偣鍦板潃", + width: 200, + }, + { + prop: "status", + label: "鐘舵€�", + width: 100, + formatter: this.formatter, + }, + { + label: "鍒涘缓鏃堕棿", + prop: "createTime", + formatter: this.formatterDate, + }, + { + label: "鎿嶄綔", + width: 280, + formatter: (row) => { + return ( + + <div> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + onClick={() => { + this.toEdit(row); + }} + > + 淇敼 + </el-button> + <el-button + size="mini" + type="text" + icon="el-icon-plus" + onClick={() => { + this.toAdd(row); + }} + > + 鏂板 + </el-button> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + onClick={() => { + this.handleDelete(row); + }} + > + 鍒犻櫎 + </el-button> + </div> + ); + }, + }, + ], + }, + }; + }, + created() { + + }, + methods: { + afterRender(data) { + data.result = handleTree(data.result, "id","parentId"); + this.siteOptions = data.result; + this.$refs.layoutTable.showType="treetable" + console.log(this.$refs.layoutTable) + }, + + // 鏂板 + toAdd(row) { + this.$refs.dialogform.add(row, this.siteOptions); + }, + // 缂栬緫 + toEdit(row,query) { + this.loading = true; + this.$post(this.pageInfo.exclude, { id: [row.id] }) + .then((res) => { + if (res && res.code && res.code == 1) { + this.siteOptions = handleTree(res.data.result); + this.$refs.dialogform.edit(row, this.siteOptions); + this.loading = false; + } + }) + .catch((error) => { + this.$message.error(error.message); + }); + }, + // 鏌ョ湅 + toView(row,) { + this.$refs.dialogform.view(row, this.siteOptions); + }, + + }, +}; +</script> \ No newline at end of file diff --git a/device-manager-ui/admin/src/views/system/site/list.vue b/device-manager-ui/admin/src/views/system/site/list.vue new file mode 100644 index 0000000..30aaece --- /dev/null +++ b/device-manager-ui/admin/src/views/system/site/list.vue @@ -0,0 +1,205 @@ +<template> + <div class="page"> + <LayoutTable ref="layoutTable" :data="tableData" :config="tableConfig" /> + <dialog-show ref="dialogform" @ok="getData" /> + </LayoutTable> + + </div> +</template> + +<script> +import dialogShow from "./dialogshow"; +import { handleTree } from "@/assets/utils/table"; +import Treeselect from "@riophae/vue-treeselect"; +import "@riophae/vue-treeselect/dist/vue-treeselect.css"; +import table from "@/assets/mixins/table"; +export default { + name: "Site", + mixins: [table], + components: { Treeselect, dialogShow }, + created() {}, + methods: { + afterRender(data) { + data.result = handleTree(data.result, "id", "parentId"); + this.siteOptions = data.result; + this.$refs.layoutTable.showType = "treetable"; + }, + + // 鏂板 + toAdd(row) { + this.$refs.dialogform.add(row, this.siteOptions); + }, + // 缂栬緫 + toEdit(row) { + this.loading = true; + this.$post(this.pageInfo.exclude, { id: [row.id] }) + .then((res) => { + if (res && res.code && res.code == 1) { + this.siteOptions = handleTree(res.data.result); + this.$refs.dialogform.edit(row, this.siteOptions); + this.loading = false; + } + }) + .catch((error) => { + this.$message.error(error.message); + }); + }, + // 鏌ョ湅 + toView(row) { + this.$refs.dialogform.view(row, this.siteOptions); + }, + }, + data() { + return { + /** 鏍戣〃鏄惁榛樿灞曞紑 */ + expand: true, + + config: { + search: [ + { + name: "siteName", + type: "text", + label: "绔欑偣鍚�", + fuzzy: true, + }, + { + name: "parentId", + type: "text", + label: "鐖剁骇id", + fuzzy: true, + }, + { + name: "ancestors", + type: "text", + label: "绁栫骇鍒楄〃锛岄€楀彿鍒嗛殧", + fuzzy: true, + }, + { + name: "address", + type: "text", + label: "鍦板潃", + fuzzy: true, + }, + { + name: "mobile", + type: "text", + label: "鐢佃瘽", + fuzzy: true, + }, + { + name: "workday1", + type: "text", + label: "鍛ㄤ竴 1涓婄彮 0涓嶄笂", + fuzzy: true, + }, + { + name: "workday2", + type: "text", + label: "鍛ㄤ簩 1涓婄彮 0涓嶄笂", + fuzzy: true, + }, + { + name: "workday3", + type: "text", + label: "鍛ㄤ笁 1涓婄彮 0涓嶄笂", + fuzzy: true, + }, + { + name: "workday4", + type: "text", + label: "鍛ㄥ洓 1涓婄彮 0涓嶄笂", + fuzzy: true, + }, + { + name: "workday5", + type: "text", + label: "鍛ㄤ簲 1涓婄彮 0涓嶄笂", + fuzzy: true, + }, + { + name: "workday6", + type: "text", + label: "鍛ㄥ叚 1涓婄彮 0涓嶄笂", + fuzzy: true, + }, + { + name: "workday7", + type: "text", + label: "鍛ㄦ棩 1涓婄彮 0涓嶄笂", + fuzzy: true, + }, + { + name: "number", + type: "text", + label: "绔欑偣缂栧彿", + fuzzy: true, + }, + { + name: "orderNum", + type: "text", + label: "鎺掑簭瀛楁", + fuzzy: true, + }, + { + name: "status", + type: "checkbox", + label: "绔欑偣鐘舵€� 锛�0锛屽仠鐢紝1锛屾甯� 榛樿1", + fuzzy: true, + }, + ], + columns: [ + { label: "绔欑偣鍚�", prop: "siteName" }, + { + label: "鐖剁骇id", + prop: "parentId", + formatter: this.formatterString, + }, + { label: "绁栫骇鍒楄〃锛岄€楀彿鍒嗛殧", prop: "ancestors" }, + { label: "鍦板潃", prop: "address" }, + { label: "鐢佃瘽", prop: "mobile" }, + { label: "鍗曚綅浠嬬粛", prop: "introduce" }, + { label: "鍛ㄤ竴 1涓婄彮 0涓嶄笂", prop: "workday1" }, + { label: "鍛ㄤ簩 1涓婄彮 0涓嶄笂", prop: "workday2" }, + { label: "鍛ㄤ笁 1涓婄彮 0涓嶄笂", prop: "workday3" }, + { label: "鍛ㄥ洓 1涓婄彮 0涓嶄笂", prop: "workday4" }, + { label: "鍛ㄤ簲 1涓婄彮 0涓嶄笂", prop: "workday5" }, + { label: "鍛ㄥ叚 1涓婄彮 0涓嶄笂", prop: "workday6" }, + { label: "鍛ㄦ棩 1涓婄彮 0涓嶄笂", prop: "workday7" }, + { label: "绔欑偣缂栧彿", prop: "number" }, + { label: "涓績浠嬬粛", prop: "summary" }, + { label: "鎺掑簭瀛楁", prop: "orderNum" }, + { label: "绔欑偣鐘舵€� 锛�0锛屽仠鐢紝1锛屾甯� 榛樿1", prop: "status" }, + + { + label: "鎿嶄綔", + width: 280, + formatter: (row) => { + return ( + <div> + <el-button + size="mini" + type="text" + icon="el-icon-edit-outline" + onClick={() => { + this.handleAdd(row); + }} + > + 鏂板 + </el-button> + <table-buttons + noAdd + row={row} + onEdit={this.toEdit} + onView={this.toView} + onDel={this.toDel} + /> + </div> + ); + }, + }, + ], + }, + }; + }, +}; +</script> \ No newline at end of file diff --git a/device-manager-ui/admin/src/views/system/task/dialogshow.vue b/device-manager-ui/admin/src/views/system/task/dialogshow.vue new file mode 100644 index 0000000..ef20f88 --- /dev/null +++ b/device-manager-ui/admin/src/views/system/task/dialogshow.vue @@ -0,0 +1,178 @@ +// 娣诲姞锛岀紪杈戣澶� +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="80%" append-to-body> + <el-form + ref="form" + :model="form" + :rules="rules" + label-width="110px" + label-position="right" + > + <el-row> + <Field label="浠诲姟鍚嶇О" prop="name" v-model="form.name"/> + <Field label="鍏抽敭瀛�" prop="taskKey" v-model="form.taskKey"/> + <Field label="鎵ц鏈嶅姟" prop="excuteService" v-model="form.excuteService" :enumData='dict.excuteService' type='select' /> + + <Field label="鎵ц绛栫暐" prop="excuteStrategy" @change='excuteStrategyChange' v-model="form.excuteStrategy" :enumData='dict.excuteStrategy' type='select' /> + <Field :label="form.excuteStrategy == 4 ? '鎵ц闂撮殧鏃堕棿' : '鎵ц鏃ユ湡'" prop="excuteDate"> + + <el-input disabled value='姣忓ぉ' v-if='form.excuteStrategy == 1'></el-input> + + <el-select v-model="form.excuteDate" v-if='form.excuteStrategy == 2'> + <el-option + v-for='($label, $value) in dict.week' + :key='$value' + :label="$label" + :value="$value" + ></el-option> + </el-select> + + <el-select v-model="form.excuteDate" v-if='form.excuteStrategy == 3'> + <el-option + v-for='($label, $value) in dict.days' + :key='$value' + :label="$label" + :value="$value" + ></el-option> + </el-select> + + <el-input v-model="form.excuteDate" v-if='form.excuteStrategy == 4'> + <template slot="append">绉�</template> + </el-input> + </Field> + <Field label="鎵ц鏃堕棿" prop="excuteTime" v-if='form.excuteStrategy != 4'> + <el-time-select + v-model="form.excuteTime" + :picker-options="{ + start: '00:00', + step: '00:5', + end: '23:45' + }" + placeholder="閫夋嫨鏃堕棿"> + </el-time-select> + </Field> + + <Field :span="24" label="鎵ц涓绘満" prop="excuteHost" v-model="form.excuteHost"/> + <Field :span="24" label="鎵ц鍙傛暟" prop="excuteParam" v-model="form.excuteParam" type='textarea' textareaSize/> + <Field :span="24" label="澶囨敞" prop="remark" v-model="form.remark" type='textarea' textareaSize/> + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button + type="primary" + v-if="pageInfo.type !== 'view'" + @click="submitForm" + >纭� 瀹�</el-button + > + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> +import form from "@/assets/mixins/formdialog"; +import dialogShow from "./dialogshow"; +export default { + mixins: [form], + components: { + dialogShow, + }, + + + methods: { + beforeRender(data) { + data.dict = data.dict || {}; + const days = {}; + [...new Array(31)].forEach((i,index)=>{ + let key = index+1; + days[key] = `${key}鍙穈; + }) + data.dict.days = days; + data.dict.week = { + 1: '鏄熸湡涓€', + 2: '鏄熸湡浜�', + 3: '鏄熸湡涓�', + 4: '鏄熸湡鍥�', + 5: '鏄熸湡浜�', + 6: '鏄熸湡鍏�', + 7: '鏄熸湡澶�', + }; + data.dict.excuteService = data.excuteService; + return data; + }, + excuteStrategyChange(val) { + this.form.excuteDate = val == 1 ? '0' : '1'; + }, + /** 缂栬緫 */ + edit(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.editUrl; + this.getData(); + this.pageInfo.type = "edit"; + this.title = "淇敼浠诲姟"; + }, + /** 鏂板 */ + add(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.addUrl; + this.getData(); + this.pageInfo.type = "add"; + this.title = "鏂板浠诲姟"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.viewUrl; + this.getData(); + this.pageInfo.type = "view"; + this.title = "浠诲姟璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + console.log(this.form) + this.open = true; + }, + + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = {}; + this.resetForm("form"); + }, + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + }, + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鐢ㄦ埛", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString: ['excuteService', 'excuteStrategy', 'excuteDate'], + rules: { + name: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉�', trigger: 'blur' },], + taskKey: [{ required: true, message: '璇疯緭鍏ヤ换鍔″叧閿瓧', trigger: 'blur' },], + excuteService: [{ required: true, message: '璇烽€夋嫨浠诲姟鎵ц鏈嶅姟', trigger: 'blur' },], + }, + }; + }, +}; +</script> + + diff --git a/device-manager-ui/admin/src/views/system/user/dialogshow.vue b/device-manager-ui/admin/src/views/system/user/dialogshow.vue new file mode 100644 index 0000000..5ca70d2 --- /dev/null +++ b/device-manager-ui/admin/src/views/system/user/dialogshow.vue @@ -0,0 +1,194 @@ +// 娣诲姞锛岀紪杈戣澶� +<template> + <!-- 寮瑰嚭妗嗚〃鍗� --> + <el-dialog :title="title" :visible.sync="open" width="40%" append-to-body> + <el-form + ref="form" + :model="form" + :rules="rules" + label-width="110px" + label-position="right" + > + <el-row> + <Field + :span="20" + label="鐧诲綍鍚嶇О" + prop="loginName" + v-model="form.loginName" + /> + + <Field :span="20" label="瀵嗙爜" prop="loginPwd"> + <el-input + v-model.trim="form.loginPwd" + placeholder="璇疯緭鍏ュ瘑鐮�" + :type="passw" + clearable + @blur="onBlur" + > + <!-- input涓姞鍥炬爣蹇呴』瑕佹湁slot="suffix"灞炴€э紝涓嶇劧鏃犳硶鏄剧ず鍥炬爣 --> + <i slot="suffix" :class="icon" @click="showPass"></i> + </el-input> + </Field> + <!-- <Field :span="20" label="鐧诲綍瀵嗙爜" prop="loginPwd" v-model="form.loginPwd" /> --> + <Field + :span="20" + label="鐢ㄦ埛鍚嶇О" + prop="realName" + v-model="form.realName" + /> + <Field + :span="20" + label="鎵嬫満鍙风爜" + prop="mobile" + v-model="form.mobile" + /> + <!-- <Field label="鐢ㄦ埛绫诲瀷" prop="userType" v-model="form.userType" :enumData='dict.userType' type='select' /> + <Field label="鐢ㄦ埛鐘舵€�" prop="status" v-model="form.status" :enumData='dict.status' type='select' /> --> + <Field + label="瑙掕壊鍒嗛厤" + :span="24" + v-model="form.roleIds" + type="checkbox" + :enumData="dict.roleIds" + /> + </el-row> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button + type="primary" + v-if="pageInfo.type !== 'view'" + @click="submitForm" + >纭� 瀹�</el-button + > + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> +import form from "@/assets/mixins/formdialog"; +import dialogShow from "./dialogshow"; +export default { + mixins: [form], + components: { + dialogShow, + }, + + data() { + return { + // 閬僵灞� + loading: true, + // 寮瑰嚭灞傛爣棰� + title: "鐢ㄦ埛", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + toString: ["status", "userType"], + toArrays: ["roleIds"], + // 琛ㄥ崟鏍¢獙 + rules: { + loginName: [ + { required: true, message: "璇疯緭鍏ヨ嫳鏂囩殑鐢ㄦ埛鍚�", trigger: "blur" }, + { + validator: function (rule, value, callback) { + // 鏍¢獙鑻辨枃鐨勬鍒� + if (/[A-Za-z0-9]$/.test(value) == false) { + callback(new Error("璇疯緭鍏ヨ嫳鏂�")); + } else { + //鏍¢獙閫氳繃 + callback(); + } + }, + trigger: "blur", + }, + ], + }, + icon: "el-input__icon el-icon-view", + passw: "password", + SPAN: "24", + }; + }, + methods: { + /** 缂栬緫 */ + edit(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.editUrl; + this.getData(); + this.pageInfo.type = "edit"; + this.title = "淇敼鐢ㄦ埛"; + }, + /** 鏂板 */ + add(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.addUrl; + this.getData(); + this.pageInfo.type = "add"; + this.title = "鏂板鐢ㄦ埛"; + }, + /** 鏌ョ湅*/ + view(row) { + this.reset(); + this.query = { id: row.id }; + this.urls.currUrl = this.pageInfo.viewUrl; + this.getData(); + this.pageInfo.type = "view"; + this.title = "鐢ㄦ埛璇︾粏"; + }, + /**鍙栨秷鎸夐挳 */ + cancel() { + this.open = false; + }, + /**鑾峰彇鏁版嵁鍚庡脊妗� */ + afterRender(data) { + this.open = true; + }, + + beforeSubmit(data) { + data.roleIds = data.roleIds + .filter((item) => { + return item !== ""; + }) + .join(","); + + return data; + }, + afterSubmit(data) { + this.open = false; + this.$emit("ok"); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = {roleIds:""}; + this.resetForm("form"); + }, + + resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } + }, + showPass() { + //鐐瑰嚮鍥炬爣鏄瘑鐮侀殣钘忔垨鏄剧ず + if (this.passw == "text") { + this.passw = "password"; + //鏇存崲鍥炬爣 + this.icon = "el-input__icon el-icon-view"; + } else { + this.passw = "text"; + this.icon = "el-input__icon el-icon-loading"; + setTimeout(() => { + this.icon = ""; + }, 100); + } + }, + //瀵嗙爜澶辩劍浜嬩欢 + onBlur() { + this.passw = "password"; + this.icon = "el-input__icon el-icon-view"; + }, + }, +}; +</script> + + -- 2.24.3