main-navbar.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <template>
  2. <nav class="site-navbar" :class="'site-navbar--' + navbarLayoutType">
  3. <div class="site-navbar__header">
  4. <h1 class="site-navbar__brand" @click="$router.push({ name: 'home' })">
  5. <a class="site-navbar__brand-lg" href="javascript:;">智慧养殖云平台</a>
  6. <a class="site-navbar__brand-mini" href="javascript:;">养殖</a>
  7. </h1>
  8. </div>
  9. <div class="site-navbar__body clearfix">
  10. <el-menu
  11. class="site-navbar__menu"
  12. mode="horizontal">
  13. <el-menu-item class="site-navbar__switch" index="0" @click="sidebarFold = !sidebarFold">
  14. <icon-svg name="zhedie"></icon-svg>
  15. </el-menu-item>
  16. </el-menu>
  17. <el-menu
  18. class="site-navbar__menu site-navbar__menu--right"
  19. mode="horizontal">
  20. <el-menu-item>
  21. <template slot="title" v-if="farmId > 0">
  22. <span>{{farmName}}</span>
  23. </template>
  24. <template slot="title" v-else>
  25. <el-select
  26. placeholder="牧场"
  27. v-model="formFarmId"
  28. :disabled="farmId > 0"
  29. @change="farmChange"
  30. size="mini"
  31. style="width: 120px">
  32. <el-option
  33. v-for="item in farmList"
  34. :key="item.value"
  35. :label="item.label"
  36. :value="item.value">
  37. </el-option>
  38. </el-select>
  39. </template>
  40. </el-menu-item>
  41. <el-menu-item index="1" @click="$router.push({ name: 'theme' })">
  42. <template slot="title">
  43. <!-- <el-badge value="new"> -->
  44. <icon-svg name="shezhi" class="el-icon-setting"></icon-svg>
  45. <!-- </el-badge> -->
  46. </template>
  47. </el-menu-item>
  48. <!-- <el-menu-item index="2">
  49. <el-badge value="hot">
  50. <a href="https://www.renren.io/" target="_blank">官方社区</a>
  51. </el-badge>
  52. </el-menu-item>
  53. <el-submenu index="3">
  54. <template slot="title">Git源码</template>
  55. <el-menu-item index="2-1"><a href="https://github.com/renrenio/renren-fast-vue" target="_blank">前端</a></el-menu-item>
  56. <el-menu-item index="2-2"><a href="https://gitee.com/renrenio/renren-fast" target="_blank">后台</a></el-menu-item>
  57. <el-menu-item index="2-3"><a href="https://gitee.com/renrenio/renren-generator" target="_blank">代码生成器</a></el-menu-item>
  58. </el-submenu> -->
  59. <el-menu-item class="site-navbar__avatar" index="3">
  60. <el-dropdown :show-timeout="0" placement="bottom">
  61. <span class="el-dropdown-link">
  62. <img src="~@/assets/img/avatar.png" :alt="userName">{{ userName }}
  63. </span>
  64. <el-dropdown-menu slot="dropdown">
  65. <el-dropdown-item @click.native="updatePasswordHandle()">修改密码</el-dropdown-item>
  66. <el-dropdown-item @click.native="logoutHandle()">退出</el-dropdown-item>
  67. </el-dropdown-menu>
  68. </el-dropdown>
  69. </el-menu-item>
  70. </el-menu>
  71. </div>
  72. <el-dialog
  73. title="请选择牧场"
  74. :visible="dialogVisible"
  75. width="30%"
  76. :modal-append-to-body="false">
  77. <el-form
  78. :model="dataForm"
  79. :rules="dataRule"
  80. ref="dataForm"
  81. @keyup.enter.native="dataFormSubmit()"
  82. label-width="80px"
  83. size="mini"
  84. style="margin-left: 20px;width: 500px">
  85. <el-form-item label="牧场名称" prop="farmId">
  86. <el-select
  87. placeholder="牧场"
  88. v-model="dataForm.farmId"
  89. :disabled="farmId > 0">
  90. <el-option
  91. v-for="item in farmList"
  92. :key="item.value"
  93. :label="item.label"
  94. :value="item.value">
  95. </el-option>
  96. </el-select>
  97. </el-form-item>
  98. </el-form>
  99. <span slot="footer" class="dialog-footer">
  100. <el-button size="small" type="primary" @click="submit">确 定</el-button>
  101. </span>
  102. </el-dialog>
  103. <!-- 弹窗, 修改密码 -->
  104. <update-password v-if="updatePassowrdVisible" ref="updatePassowrd"></update-password>
  105. </nav>
  106. </template>
  107. <script>
  108. import UpdatePassword from './main-navbar-update-password'
  109. import { clearLoginInfo } from '@/utils'
  110. export default {
  111. data () {
  112. return {
  113. updatePassowrdVisible: false,
  114. farmId: '',
  115. farmName: '',
  116. farmList: [], // 牧场List
  117. formFarmId: '',
  118. dialogVisible: false,
  119. dataForm: {
  120. farmId: ''
  121. },
  122. dataRule: {
  123. farmId: [
  124. { required: true, message: '牧场名称不能为空', trigger: 'blur' }
  125. ]
  126. }
  127. }
  128. },
  129. mounted () {
  130. this.getDataList()
  131. },
  132. components: {
  133. UpdatePassword
  134. },
  135. computed: {
  136. navbarLayoutType: {
  137. get () { return this.$store.state.common.navbarLayoutType }
  138. },
  139. sidebarFold: {
  140. get () { return this.$store.state.common.sidebarFold },
  141. set (val) { this.$store.commit('common/updateSidebarFold', val) }
  142. },
  143. mainTabs: {
  144. get () { return this.$store.state.common.mainTabs },
  145. set (val) { this.$store.commit('common/updateMainTabs', val) }
  146. },
  147. userName: {
  148. get () { return this.$store.state.user.name }
  149. }
  150. },
  151. methods: {
  152. // 获取牧场List
  153. getDataList() {
  154. this.dialogVisible = true
  155. this.farmId = this.$cookie.get('farmId') === 'null'? undefined: parseInt(this.$cookie.get('farmId'))
  156. if (this.farmId || this.$cookie.get('formFarmId')) {
  157. this.dialogVisible = false
  158. // this.formFarmId = this.farmId
  159. this.formFarmId = this.farmId || (parseInt(this.$cookie.get('formFarmId')) || '')
  160. // this.$cookie.set('formFarmId', this.farmId)
  161. // return
  162. }
  163. // this.formFarmId = this.$cookie.get('formFarmId') === null? undefined: parseInt(this.$cookie.get('formFarmId'))
  164. // console.log(this.$cookie.get('formFarmId'));
  165. this.$http({
  166. url: this.$http.adornUrl("/management/farm/findAll"),
  167. method: "post",
  168. }).then(({data}) => {
  169. if (data && data.code === 0) {
  170. this.farmList = []
  171. let farmList = data.all
  172. farmList.forEach(farm => {
  173. if (farm.id === this.farmId) {
  174. this.farmName = farm.name
  175. }
  176. let item = {
  177. label: farm.name,
  178. value: farm.id
  179. }
  180. this.farmList.push(item)
  181. })
  182. } else {
  183. this.farmList = []
  184. this.$message.error(data.msg)
  185. }
  186. })
  187. // this.farmId = this.$cookie.get('farmId') === 'null'? undefined: parseInt(this.$cookie.get('farmId'))
  188. // if (this.formFarmId) {
  189. // return
  190. // }
  191. },
  192. submit () {
  193. this.$refs['dataForm'].validate((valid) => {
  194. if (valid) {
  195. this.formFarmId = this.dataForm.farmId
  196. this.$cookie.set('formFarmId', this.formFarmId)
  197. this.dialogVisible = false
  198. }
  199. })
  200. },
  201. // 选择牧场
  202. farmChange (val) {
  203. // 管理员选择牧场
  204. this.$cookie.set('formFarmId', val)
  205. location.reload()
  206. },
  207. // 修改密码
  208. updatePasswordHandle () {
  209. this.updatePassowrdVisible = true
  210. this.$nextTick(() => {
  211. this.$refs.updatePassowrd.init()
  212. })
  213. },
  214. // 退出
  215. logoutHandle () {
  216. this.$confirm(`确定进行[退出]操作?`, '提示', {
  217. confirmButtonText: '确定',
  218. cancelButtonText: '取消',
  219. type: 'warning'
  220. }).then(() => {
  221. this.$http({
  222. url: this.$http.adornUrl('/sys/logout'),
  223. method: 'post',
  224. data: this.$http.adornData()
  225. }).then(({data}) => {
  226. if (data && data.code === 0) {
  227. clearLoginInfo()
  228. this.$router.push({ name: 'login' })
  229. }
  230. })
  231. }).catch(() => {})
  232. }
  233. }
  234. }
  235. </script>