SUserSelect.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. var j = ($, D, f) => new Promise((z, g) => {
  2. var C = (o) => {
  3. try {
  4. _(f.next(o));
  5. } catch (h) {
  6. g(h);
  7. }
  8. }, O = (o) => {
  9. try {
  10. _(f.throw(o));
  11. } catch (h) {
  12. g(h);
  13. }
  14. }, _ = (o) => o.done ? z(o.value) : Promise.resolve(o.value).then(C, O);
  15. _((f = f.apply($, D)).next());
  16. });
  17. import { ref as i, watch as he, onMounted as _e, resolveComponent as A, openBlock as k, createElementBlock as S, createVNode as c, withCtx as v, createTextVNode as I, toDisplayString as u, createElementVNode as t, withModifiers as me, Fragment as P, renderList as Q, normalizeStyle as R, createCommentVNode as pe } from "vue";
  18. import { cc as fe, cd as ge, aM as Ce, aN as we, aO as ye, U as ke, aP as Se, aG as $e, aQ as be, ce as Ne } from "./index2.js";
  19. const Oe = { class: "s-office-select-common" }, Ue = { class: "modal-container" }, Ve = { class: "side" }, Le = { class: "main" }, Te = { class: "filter" }, je = { class: "list-wrap" }, Ae = { class: "item left-wrap" }, Ie = { class: "head" }, De = { class: "sub-title" }, ze = { class: "right" }, Be = { href: "javascript:;" }, Ee = ["onClick"], Me = { class: "cont" }, Fe = { class: "name" }, Je = { class: "job" }, Ge = {
  20. key: 0,
  21. class: "not-more"
  22. }, Pe = { class: "item right-wrap" }, Qe = { class: "head" }, Re = { class: "sub-title" }, qe = { class: "cont" }, xe = { class: "name" }, He = { class: "job" }, Ke = ["onClick"], el = {
  23. __name: "SUserSelect",
  24. props: {
  25. ids: {
  26. type: [String, Array],
  27. default() {
  28. return "";
  29. }
  30. },
  31. placeholder: {
  32. type: String,
  33. default() {
  34. return window.$l("请选择");
  35. }
  36. },
  37. // 弹窗标题
  38. title: {
  39. type: String,
  40. default() {
  41. return window.$l("人员选择");
  42. }
  43. }
  44. },
  45. emits: ["change"],
  46. setup($, { emit: D }) {
  47. const f = D, z = $, g = i(null), C = i(""), O = i(""), _ = i(""), o = i(!1), h = i(!1), U = i({}), m = i([]), s = i([]), w = i(1), V = i(0), b = i(!1);
  48. let L = null;
  49. const N = i(""), r = i([]), T = i(1), F = i(20), B = i(0);
  50. he(
  51. () => z.ids,
  52. (e) => {
  53. e && e.length && (s.value = e);
  54. },
  55. { immediate: !0 }
  56. );
  57. const J = () => {
  58. h.value = !0;
  59. }, q = () => {
  60. h.value = !1;
  61. }, y = (e = 1, l = 0) => j(this, null, function* () {
  62. if (o.value) {
  63. o.value = !1;
  64. return;
  65. }
  66. e === 1 && (r.value = []);
  67. let a = [];
  68. if (s.value.length < 100 ? (T.value = 1, B.value = 0, a = s.value) : a = s.value.slice(l * (F.value || 20), e * (F.value || 20)), !a.length || r.value.length && a.length >= s.value.length && a.length >= r.value.length)
  69. return;
  70. o.value = !0;
  71. const d = yield Ne(a);
  72. r.value = r.value.concat(d), H(), L = setTimeout(() => {
  73. o.value = !1, clearTimeout(L);
  74. }, 200);
  75. }), x = () => {
  76. if (!N.value) {
  77. window.$message.warning("请选择部门");
  78. return;
  79. }
  80. w.value = 1, m.value = [], E(N.value);
  81. }, H = () => {
  82. const l = r.value.filter((d) => s.value.includes(d.id)).map((d) => d.name), a = l.length - 1;
  83. C.value = l.slice(0, 1).join(",") + (a > 0 ? " +" + a : "");
  84. }, K = () => {
  85. m.value.forEach((e) => {
  86. if (s.value.includes(e.id)) {
  87. const l = s.value.indexOf(e.id);
  88. s.value.splice(l, 1);
  89. }
  90. }), y()();
  91. }, W = () => {
  92. b.value = !b.value, b.value ? Y() : K();
  93. }, X = () => j(this, null, function* () {
  94. if (!N.value) {
  95. window.$message.warning("请选择部门");
  96. return;
  97. }
  98. const e = {
  99. searchValue: _.value,
  100. unitid: N.value.join(",")
  101. }, l = yield fe(e), a = s.value.concat(l);
  102. s.value = Array.from(new Set(a)), y();
  103. }), Y = () => {
  104. m.value.forEach((e) => {
  105. s.value.includes(e.id) || s.value.push(e.id);
  106. }), y();
  107. }, Z = () => {
  108. b.value = !1, C.value = "", s.value = [], r.value = [];
  109. }, ee = () => {
  110. h.value = !1;
  111. const e = r.value.filter((p) => s.value.includes(p.id)), l = e.map((p) => p.name), a = l.length - 1, d = l.slice(0, 1).join(",") + (a > 0 ? " +" + a : ""), M = e.map((p) => p.id);
  112. f("change", d, l, M, e);
  113. }, le = (e, l) => {
  114. U.value = l.node, w.value = 1, V.value = 0, m.value = [], o.value = !0, N.value = e, E(e);
  115. }, E = (e) => j(this, null, function* () {
  116. const l = {
  117. pageNo: w.value,
  118. pageSize: 20,
  119. searchValue: _.value,
  120. unitid: e.join(","),
  121. containsChild: !0
  122. };
  123. o.value = !0;
  124. const a = yield ge(l);
  125. m.value = m.value.concat(a.list), V.value = a.pages, L = setTimeout(() => {
  126. o.value = !1, clearTimeout(L);
  127. }, 200);
  128. }), te = (e) => {
  129. s.value.includes(e.id) || s.value.push(e.id), y();
  130. }, ae = (e, l) => {
  131. r.value.splice(l, 1), s.value.splice(s.value.indexOf(e.id), 1), y();
  132. }, ne = ({ target: { offsetHeight: e, scrollHeight: l, scrollTop: a } }) => {
  133. o.value || e + a >= l - 20 && w.value <= V.value && (w.value++, E([U.value.id]));
  134. }, se = ({ target: { offsetHeight: e, scrollHeight: l, scrollTop: a } }) => {
  135. o.value || e + a >= l - 20 && (B.value = T.value, T.value++, y(T.value, B.value));
  136. }, oe = (e) => Ce(e), ie = (e) => we(e);
  137. return _e(() => {
  138. g.value = window.$theme;
  139. }), (e, l) => {
  140. const a = ye, d = ke, M = A("s-tree"), p = A("DownOutlined"), ue = Se, ce = $e, de = be, re = A("CloseCircleOutlined"), ve = A("s-modal");
  141. return k(), S("div", Oe, [
  142. c(a, {
  143. value: C.value,
  144. "onUpdate:value": l[0] || (l[0] = (n) => C.value = n),
  145. readonly: "",
  146. placeholder: $.placeholder,
  147. onClick: J,
  148. onSearch: J
  149. }, null, 8, ["value", "placeholder"]),
  150. c(ve, {
  151. value: h.value,
  152. "onUpdate:value": l[4] || (l[4] = (n) => h.value = n),
  153. title: $.title,
  154. width: "1000px",
  155. showFullScreen: !1
  156. }, {
  157. footer: v(() => [
  158. c(d, {
  159. key: "back",
  160. onClick: q
  161. }, {
  162. default: v(() => [
  163. I(u(e.$l("取消")), 1)
  164. ]),
  165. _: 1
  166. }),
  167. c(d, {
  168. key: "submit",
  169. type: "primary",
  170. loading: o.value,
  171. onClick: ee
  172. }, {
  173. default: v(() => [
  174. I(u(e.$l("确认")), 1)
  175. ]),
  176. _: 1
  177. }, 8, ["loading"])
  178. ]),
  179. default: v(() => [
  180. t("div", Ue, [
  181. t("div", Ve, [
  182. c(M, {
  183. levelOneChildren: oe,
  184. levelTwoChildren: ie,
  185. "onSelect:modelValue": le,
  186. select: O.value,
  187. "onUpdate:select": l[1] || (l[1] = (n) => O.value = n),
  188. height: 470
  189. }, null, 8, ["select"])
  190. ]),
  191. t("div", Le, [
  192. t("div", Te, [
  193. c(a, {
  194. value: _.value,
  195. "onUpdate:value": l[2] || (l[2] = (n) => _.value = n),
  196. placeholder: e.$l("请输入"),
  197. style: { width: "330px" },
  198. onSearch: x
  199. }, null, 8, ["value", "placeholder"])
  200. ]),
  201. t("div", je, [
  202. t("div", Ae, [
  203. t("div", Ie, [
  204. t("div", De, u(U.value.title || U.value.name), 1),
  205. t("div", ze, [
  206. c(d, {
  207. type: "link",
  208. onClick: W
  209. }, {
  210. default: v(() => [
  211. I(u(b.value ? e.$l("反选") : e.$l("全选")), 1)
  212. ]),
  213. _: 1
  214. }),
  215. c(de, null, {
  216. overlay: v(() => [
  217. c(ce, null, {
  218. default: v(() => [
  219. c(ue, { onClick: X }, {
  220. default: v(() => [
  221. t("a", Be, u(e.$l("节点全选")), 1)
  222. ]),
  223. _: 1
  224. })
  225. ]),
  226. _: 1
  227. })
  228. ]),
  229. default: v(() => [
  230. t("a", {
  231. type: "link",
  232. onClick: l[3] || (l[3] = me(() => {
  233. }, ["prevent"]))
  234. }, [
  235. c(p)
  236. ])
  237. ]),
  238. _: 1
  239. })
  240. ])
  241. ]),
  242. t("div", {
  243. class: "user-list",
  244. onScroll: ne
  245. }, [
  246. (k(!0), S(P, null, Q(m.value, (n) => (k(), S("div", {
  247. class: "item",
  248. key: n.id,
  249. onClick: (G) => te(n)
  250. }, [
  251. t("div", {
  252. class: "icon",
  253. style: R({ backgroundColor: g.value.borderColor })
  254. }, u(n.name && n.name.slice(0, 1)), 5),
  255. t("div", Me, [
  256. t("div", Fe, u(n.name) + "(" + u(n.userid) + ")", 1),
  257. t("div", Je, u(n.mainJobName), 1)
  258. ])
  259. ], 8, Ee))), 128)),
  260. w.value >= V.value ? (k(), S("div", Ge, u(e.$l("没有更多了")), 1)) : pe("", !0)
  261. ], 32)
  262. ]),
  263. t("div", Pe, [
  264. t("div", Qe, [
  265. t("div", Re, u(e.$l("本次已选")), 1),
  266. c(d, {
  267. type: "link",
  268. onClick: Z
  269. }, {
  270. default: v(() => [
  271. I(u(e.$l("清除")), 1)
  272. ]),
  273. _: 1
  274. })
  275. ]),
  276. t("div", {
  277. class: "user-list select-list",
  278. onScroll: se
  279. }, [
  280. (k(!0), S(P, null, Q(r.value, (n, G) => (k(), S("div", {
  281. class: "item",
  282. key: n.id
  283. }, [
  284. t("div", {
  285. class: "icon",
  286. style: R({ backgroundColor: g.value.borderColor })
  287. }, u(n.name && n.name.slice(0, 1)), 5),
  288. t("div", qe, [
  289. t("div", xe, u(n.title), 1),
  290. t("div", He, u(n.mainJobName), 1)
  291. ]),
  292. t("div", {
  293. class: "icon no-bg",
  294. onClick: (We) => ae(n, G)
  295. }, [
  296. c(re)
  297. ], 8, Ke)
  298. ]))), 128))
  299. ], 32)
  300. ])
  301. ])
  302. ])
  303. ])
  304. ]),
  305. _: 1
  306. }, 8, ["value", "title"])
  307. ]);
  308. };
  309. }
  310. };
  311. export {
  312. el as default
  313. };