add.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <template>
  2. <!-- 角色权限 - 添加角色 -->
  3. <div class="rolePage flex-col">
  4. <s-header :name="pageTitle" :noback="false"></s-header>
  5. <div class="accountPerBox flex-col">
  6. <van-form @submit="onSubmit">
  7. <van-field v-model="roleName" name="roleName" :label="$t('role.roleNameLabel')"
  8. :placeholder="$t('role.roleNamePlaceholder')"
  9. :rules="[{ required: true, message: $t('role.roleNamePlaceholder') }]" />
  10. <van-checkbox-group v-model="roleMenuCode" style="
  11. display: flex;
  12. flex-wrap: wrap;
  13. align-items: center;
  14. justify-content: flex-start;
  15. ">
  16. <van-checkbox v-for="(item, index) in menuCodeList" :key="index" :name="item.value"
  17. style="width: 160px; padding: 10px">{{ item.label }}</van-checkbox>
  18. </van-checkbox-group>
  19. <!-- 操作 -->
  20. <van-row justify="space-around" style="padding: 1em">
  21. <van-button span="5" round type="primary" style="height: 2em; padding: 0 2em" native-type="submit">
  22. {{ pageTitle }}
  23. </van-button>
  24. </van-row>
  25. </van-form>
  26. </div>
  27. <!-- <van-popup v-model:show="roleShow" round position="bottom">
  28. <van-cascader
  29. v-model="roleList"
  30. :title="$t('role.pleaseSelectARole')"
  31. :options="roleOptions"
  32. @close="roleShow = false"
  33. @finish="onRoleFinish"
  34. />
  35. </van-popup>
  36. <van-popup v-model:show="equipmentIdShow" round position="bottom">
  37. <van-cascader
  38. v-model="equipmentIds"
  39. :title="$t('role.pleaseSelectAPattern')"
  40. :options="equipmentIdsOptions"
  41. @close="equipmentIdShow = false"
  42. @finish="onEquipmentIdFinish"
  43. />
  44. </van-popup> -->
  45. </div>
  46. </template>
  47. <script>
  48. import { onMounted, reactive, toRefs, ref } from "vue";
  49. import sHeader from "../../components/SimpleHeader";
  50. import { showFailToast, showSuccessToast } from "vant";
  51. // import { getSysRoleList, getEquipmentList } from "../../service/accountPar/index";
  52. import { addSysRole, updateSysRole } from "../../service/role/index";
  53. import { getLoginUser, $M_Menus, styleUrl } from "../../common/js/utils";
  54. import { useRouter } from "vue-router";
  55. import { useI18n } from "vue-i18n";
  56. export default {
  57. components: { sHeader },
  58. setup() {
  59. // 引入语言
  60. const { t } = useI18n();
  61. const router = useRouter();
  62. const user = getLoginUser();
  63. const pageTitle = ref("");
  64. const roleName = ref("");
  65. // 设置的权限
  66. const menuCodeList = ref([]);
  67. const roleMenuCode = ref([]);
  68. // const roleShow = ref(false);
  69. const roleText = ref("");
  70. // const roleOptions = ref([]);
  71. // const onRoleFinish = ({ selectedOptions }) => {
  72. // roleShow.value = false;
  73. // roleText.value = selectedOptions[0].text;
  74. // };
  75. // const equipmentIdShow = ref(false);
  76. const equipmentIdText = ref("");
  77. const equipmentIdsOptions = ref([]);
  78. // const onEquipmentIdFinish = ({ selectedOptions }) => {
  79. // equipmentIdShow.value = false;
  80. // equipmentIdText.value = selectedOptions[0].text;
  81. // };
  82. let addParams = reactive({
  83. username: "",
  84. password: "",
  85. name: "",
  86. phone: "",
  87. isEnabled: true,
  88. // roleList: "",
  89. equipmentIds: "",
  90. });
  91. let roleItem = null;
  92. onMounted(async () => {
  93. // 加载样式
  94. styleUrl('role');
  95. roleItem = localStorage.getItem("roleItem");
  96. if (roleItem) {
  97. roleItem = JSON.parse(roleItem);
  98. roleName.value = roleItem.roleName;
  99. roleMenuCode.value = roleItem.menuCodesJson;
  100. pageTitle.value = t("role.modifyRole");
  101. } else {
  102. pageTitle.value = t("role.addRole");
  103. }
  104. // 设置菜单权限
  105. menuSet();
  106. // getSysRoleListFun();
  107. // getEquipmentListFun();
  108. });
  109. // 设置菜单权限
  110. const menuSet = () => {
  111. // 如果不是admin管理员权限type=0,要删除 广告管理M5,杉德分账M10,系统脱机M17,apk管理M19
  112. if (user.type !== 0) {
  113. delete $M_Menus['M5'];
  114. delete $M_Menus['M10'];
  115. delete $M_Menus['M17'];
  116. delete $M_Menus['M19'];
  117. }
  118. // 如果是商家,进一步删除 账户操作M3,订单导出M9,
  119. if (user.type === 2) {
  120. delete $M_Menus['M3'];
  121. delete $M_Menus['M9'];
  122. }
  123. for (const key in $M_Menus) {
  124. console.log(key);
  125. if (key === "M21") {
  126. continue;
  127. }
  128. menuCodeList.value.push({
  129. label: $M_Menus[key],
  130. value: key
  131. });
  132. }
  133. };
  134. // 获取角色下拉列表
  135. // const getSysRoleListFun = async () => {
  136. // const { data } = await getSysRoleList();
  137. // if (data.code === "00000") {
  138. // roleOptions.value = data.data.map((item) => {
  139. // return { text: item.label, value: item.value };
  140. // });
  141. // } else {
  142. // showFailToast(data.message);
  143. // }
  144. // };
  145. // 获取机器下拉
  146. // const getEquipmentListFun = async () => {
  147. // const { data } = await getEquipmentList({ adminId: user.id });
  148. // if (data.code === "00000") {
  149. // equipmentIdsOptions.value = data.data.map((item) => {
  150. // return { text: item.name, value: item.id };
  151. // });
  152. // equipmentIdsOptions.value.unshift({
  153. // text: t("role.whole"),
  154. // value: "all",
  155. // });
  156. // } else {
  157. // showFailToast(data.message);
  158. // }
  159. // };
  160. const onSubmit = async () => {
  161. if (roleItem) {
  162. updateSysRoleFun();
  163. } else {
  164. addSysRoleFun();
  165. }
  166. };
  167. const addSysRoleFun = async () => {
  168. const params = {
  169. adminId: user.id,
  170. roleName: roleName.value,
  171. menuCodeList: roleMenuCode.value,
  172. };
  173. const { data } = await addSysRole(params);
  174. if (data.code === "00000") {
  175. showSuccessToast(t("role.roleAddedSuccessfully"));
  176. // router.push("/role");
  177. router.go(-1);
  178. } else {
  179. showFailToast(`${t("role.failedToAddRole")} ${data.message}`);
  180. }
  181. console.log("onSubmit", data);
  182. };
  183. const updateSysRoleFun = async () => {
  184. const params = {
  185. adminId: user.id,
  186. roleId: roleItem.roleId,
  187. roleName: roleName.value,
  188. menuCodeList: roleMenuCode.value,
  189. };
  190. const { data } = await updateSysRole(params);
  191. if (data.code === "00000") {
  192. showSuccessToast(t("role.successfullyModifiedRole"));
  193. // router.go(-1);
  194. router.replace("/role");
  195. } else {
  196. showFailToast(`${t("role.failedToModifyRole")} ${data.message}`);
  197. }
  198. console.log("onSubmit", data);
  199. };
  200. return {
  201. pageTitle,
  202. roleName,
  203. menuCodeList,
  204. roleMenuCode,
  205. // roleShow,
  206. roleText,
  207. // roleOptions,
  208. // onRoleFinish,
  209. // equipmentIdShow,
  210. equipmentIdText,
  211. equipmentIdsOptions,
  212. // onEquipmentIdFinish,
  213. ...toRefs(addParams),
  214. onSubmit,
  215. };
  216. },
  217. };
  218. </script>
  219. <style lang="less" scoped>
  220. @import "../../common/style/common.less";
  221. </style>