add.vue 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. <template>
  2. <dg-row :gutter="20">
  3. <el-form ref="form" label-width="80px" label-suffix=":" :model="reportPersonFrom">
  4. <dg-row :gutter="20">
  5. <dg-col :span="16">
  6. <dg-col :span="12">
  7. <el-form-item label="姓名" prop="name.value">
  8. <el-input
  9. v-model="reportPersonFrom.name.value"
  10. clearable
  11. placeholder="请输入姓名"
  12. @keyup.enter.native="handleSearch"
  13. />
  14. </el-form-item>
  15. </dg-col>
  16. <dg-col :span="12">
  17. <el-form-item label="警号" prop="policeNumber.value">
  18. <el-input
  19. v-model="reportPersonFrom.policeNumber.value"
  20. clearable
  21. placeholder="请输入警号"
  22. @keyup.enter.native="handleSearch"
  23. />
  24. </el-form-item>
  25. </dg-col>
  26. <dg-col :span="12">
  27. <el-form-item label="身份证" prop="idcard.value">
  28. <el-input
  29. v-model="reportPersonFrom.idcard.value"
  30. clearable
  31. placeholder="请输入身份证"
  32. @keyup.enter.native="handleSearch"
  33. />
  34. </el-form-item>
  35. </dg-col>
  36. <dg-col :span="12">
  37. <el-form-item label="单位名称">
  38. <org v-model="tempOrgId" :key="orgKey" type="APP" />
  39. </el-form-item>
  40. </dg-col>
  41. </dg-col>
  42. <dg-col :span="7">
  43. <dg-button type="primary" icon="el-icon-search" @click="handleSearch">查询</dg-button>
  44. <dg-button type="primary" icon="el-icon-refresh-right" @click="handleReset">重置</dg-button>
  45. </dg-col>
  46. </dg-row>
  47. </el-form>
  48. <Table
  49. ref="myTable"
  50. selection
  51. :url="tableUrl"
  52. :headerData="titleData"
  53. :condition="reportPersonFrom"
  54. @handleSelectionChange="handleSelectionChange"
  55. >
  56. <dg-table-column fixed="right" label="操作" width="180" align="center">
  57. <template slot-scope="scope">
  58. <div class="u-table__operation">
  59. <el-tooltip
  60. v-for="(item, i) in optList"
  61. :key="i"
  62. :content="item.tooltip"
  63. effect="dark"
  64. placement="top-end"
  65. >
  66. <i :class="item.icon" @click="item.on(scope.row)" />
  67. </el-tooltip>
  68. </div>
  69. </template>
  70. </dg-table-column>
  71. </Table>
  72. <div class="dg-layer-demo" v-footer>
  73. <dg-button @click="handleClose">取消</dg-button>
  74. <dg-button type="primary" @click="handlSave">确定</dg-button>
  75. </div>
  76. </dg-row>
  77. </template>
  78. <script>
  79. import Org from "@/components/org";
  80. import * as Api from "@/api/admin-manage";
  81. import Table from "@/pages/common/table";
  82. import Editor from "./noBindEditor";
  83. import { mapGetters } from "vuex";
  84. export default {
  85. name: "adminManageAdd",
  86. components: { Org, Table },
  87. computed: {
  88. ...mapGetters(["user"])
  89. },
  90. props: {
  91. orgId: {
  92. type: Object,
  93. default() {
  94. return {};
  95. }
  96. }
  97. },
  98. data() {
  99. const that = this;
  100. return {
  101. tableUrl: Api.tableUnAdminPolices,
  102. reportPersonFrom: {
  103. name: { value: "", op: "like" }, // 姓名
  104. policeNumber: { value: "", op: "like" }, // 编号
  105. idcard: { value: "", op: "like" }, // 身份证
  106. orgId: { value: "", op: "=" } // 机构id
  107. },
  108. tempOrgId: "",
  109. titleData: [
  110. { label: "姓名", prop: "name" },
  111. { label: "警号", prop: "policeNumber" },
  112. { label: "身份证", prop: "idcard" },
  113. { label: "单位名称", prop: "orgName" },
  114. { label: "用户类型", prop: "userType", enum: "UserTypeEnum" }
  115. ],
  116. optList: [{ icon: "el-icon-edit", tooltip: "管理范围", on: that.handleDetail }],
  117. selectionList: [],
  118. orgSave: false,
  119. menuSave: false,
  120. orgKey: 0
  121. };
  122. },
  123. methods: {
  124. success(message = "操作成功!") {
  125. const that = this;
  126. that.$message.success(message);
  127. },
  128. fail(message = "操作失败", error) {
  129. const that = this;
  130. console.error("[Error]", error);
  131. that.$message.error(message);
  132. },
  133. reloadTable() {
  134. const that = this;
  135. that.$refs.myTable.$refs.grid.reload();
  136. },
  137. handleSearch() {
  138. // if (this.tempOrgId) {
  139. // this.$set(this.reportPersonFrom.orgId, "value", this.tempOrgId);
  140. // }
  141. this.$set(this.reportPersonFrom.orgId, "value", this.tempOrgId);
  142. this.$refs.myTable.handleSearchClick();
  143. },
  144. handleClose(bool) {
  145. this.$emit("success", bool);
  146. },
  147. handleReset() {
  148. if (this.tempOrgId) {
  149. this.tempOrgId = "";
  150. this.orgKey++;
  151. }
  152. this.$set(this.reportPersonFrom.orgId, "value", "");
  153. this.$refs.form.resetFields();
  154. },
  155. handleSelectionChange(selection) {
  156. this.selectionList = selection;
  157. },
  158. handlSave() {
  159. let ids = [];
  160. const { selectionList } = this;
  161. const that = this;
  162. let flag = false;
  163. let params = {
  164. userIds: ""
  165. };
  166. if (selectionList.length) {
  167. selectionList.some((item) => {
  168. if (!item.orgSave) {
  169. this.$message({ type: "error", message: item.name + "未分配管理范围" });
  170. flag = true;
  171. return true;
  172. }
  173. // if (!item.menuSave) {
  174. // this.$message({ type: "error", message: item.name + "未分配管理菜单" });
  175. // flag = true;
  176. // return true;
  177. // }
  178. });
  179. selectionList.forEach((item) => {
  180. ids.push(item.id);
  181. });
  182. params["userIds"] = ids.join(",");
  183. if (!flag) {
  184. Api.addAdmin(params)
  185. .then((res) => {
  186. that.success();
  187. that.$emit("success", true);
  188. })
  189. .catch(() => {
  190. that.fail("新增失败");
  191. });
  192. }
  193. } else {
  194. this.$message({ type: "warning", message: "至少选择一条" });
  195. return;
  196. }
  197. },
  198. handleDetail(row) {
  199. const that = this;
  200. const { id } = row;
  201. const layer = that.$dgLayer({
  202. title: "修改",
  203. shade: [0.4, "#FFF"],
  204. area: ["830px", "660px"],
  205. content: Editor,
  206. props: {
  207. id,
  208. type: "create"
  209. },
  210. on: {
  211. success(bool = false) {
  212. layer.close(layer.dialogIndex);
  213. if (bool) {
  214. that.reloadTable();
  215. }
  216. },
  217. oneSaveOrg(boo) {
  218. // that.orgSave = boo;
  219. row.orgSave = boo;
  220. that.$refs.myTable.toggleRowSelection(row, true);
  221. },
  222. oneSaveMenu(boo) {
  223. // that.menuSave = boo;
  224. row.menuSave = boo;
  225. that.$refs.myTable.toggleRowSelection(row, true);
  226. }
  227. }
  228. });
  229. }
  230. },
  231. created() {
  232. this.$set(this.reportPersonFrom.orgId, "value", this.orgId.value); //带当前登录用户的orgId去查
  233. // setTimeout(() => {
  234. // this.$set(this.reportPersonFrom.orgId, "value", "");
  235. // }, 250);
  236. }
  237. };
  238. </script>