haveInHand.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880
  1. <template>
  2. <fullscreen :fullscreen.sync="fullscreen" class="container">
  3. <div class="container-box">
  4. <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
  5. <div class="search">
  6. <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
  7. </div>
  8. <div class="tabbox">
  9. <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
  10. tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
  11. <el-table-column prop="woName" label="名称">
  12. </el-table-column>
  13. <el-table-column prop="supplierCode" label="统计周期">
  14. <template slot-scope="scope">
  15. <span>{{ scope.row.startTime }} - {{ scope.row.endTime }}</span>
  16. </template>
  17. </el-table-column>
  18. <el-table-column prop="contractName" label="填报范围">
  19. <template slot-scope="scope">
  20. <span @click="jumpfw(scope.row)" style="color: #007AFF;cursor: pointer;">{{
  21. scope.row.fillName
  22. }}</span>
  23. </template>
  24. </el-table-column>
  25. <el-table-column prop="frameSum" label="分发范围">
  26. <template slot-scope="scope">
  27. <span @click="jumpjd(scope.row)" style="color: #007AFF;cursor:pointer;">{{
  28. scope.row.groupName
  29. }}</span>
  30. </template>
  31. </el-table-column>
  32. <el-table-column prop="dutyName" label="分发负责人">
  33. </el-table-column>
  34. <el-table-column prop="initiatorName" label="发起人">
  35. </el-table-column>
  36. <el-table-column label="操作" width="160px" align="center">
  37. <template slot-scope="scope">
  38. <el-button size="mini" type="primary" @click="dialogCheck(1, scope.row)"
  39. v-if="scope.row.stsDesc == '终止'">查看</el-button>
  40. <el-button size="mini" type="primary" @click="dialogCheck(2, scope.row)"
  41. v-if="scope.row.stsDesc != '终止'">设置</el-button>
  42. <el-button size="mini" type="danger" @click="delLine(scope.row)"
  43. v-if="companyFlag == 0 && scope.row.stsDesc != '终止'">中止</el-button>
  44. </template>
  45. </el-table-column>
  46. </el-table>
  47. <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
  48. :total="total">
  49. </el-pagination>
  50. </div>
  51. </div>
  52. <el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
  53. :modal-append-to-body="false" :close-on-click-modal="false" :fullscreen="true">
  54. <el-form :model="infolist" ref="infolist" :rules="rules"
  55. style="height: calc(100vh - 180px);overflow-y: scroll;">
  56. <el-form-item prop="woName" class="info-line online">
  57. <span>统计名称</span>
  58. <el-input v-model="infolist.woName" placeholder="统计名称" :disabled="disableStatus"></el-input>
  59. </el-form-item>
  60. <el-form-item prop="time" class="info-line online">
  61. <span>统计周期</span>
  62. <el-date-picker v-model="infolist.time" type="daterange" :disabled="disableStatus"></el-date-picker>
  63. </el-form-item>
  64. <el-form-item prop="woName" class="info-line online" v-if="disableStatus">
  65. <span>填报人</span>
  66. <el-input v-model="infolist.fillName" type="textarea" :autosize="{ minRows: 1, maxRows: 10 }"
  67. disabled></el-input>
  68. </el-form-item>
  69. <el-form-item prop="woName" class="info-line online" v-if="disableStatus">
  70. <span>负责人</span>
  71. <el-input v-model="infolist.dutyName" type="textarea" :autosize="{ minRows: 1, maxRows: 10 }"
  72. disabled></el-input>
  73. </el-form-item>
  74. <el-form-item class="info-line online" v-if="!disableStatus">
  75. <span>填报人</span>
  76. <deptTree style="width: 30%;margin-right: 1%;" :closeList="closeList" class="tree" @treeCheck="treeCheck" :defaultList="defaultList"
  77. :fillLists="fillLists">
  78. </deptTree>
  79. <!-- <div class="tree treeUser" style="width: 30%;margin-right: 1%;">
  80. <p v-for="(item,index) in treeList" :key="index">{{item.receiveName}}
  81. <i @click="deletes(item,index)" class="el-icon-error"></i>
  82. </p>
  83. </div> -->
  84. <div class="tree treeUser" style="width: 30%;margin-right: 1%;">
  85. <p style="text-align: center; font-size: 18px;margin:5px">已选填报人</p>
  86. <p v-for="(item, index) in treeListOld" :key="index" class="p">
  87. {{ item.receiveName }}
  88. <i @click="deletess(item, index)" class="el-icon-error"></i>
  89. </p>
  90. </div>
  91. <div class="tree treeUser" style="width: 30%;margin-right: 1%;">
  92. <p style="text-align: center; font-size: 18px;margin:5px">选择填报人</p>
  93. <p v-for="(item, index) in treeList" :key="index" class="p">
  94. {{ item.receiveName }}
  95. <i @click="deletes(item, index)" class="el-icon-error"></i>
  96. </p>
  97. </div>
  98. </el-form-item>
  99. <div v-if="!disableStatus">
  100. <el-form-item class="info-line online" v-if="this.companyFlag != 2">
  101. <span>负责人</span>
  102. <div class="tree treeUser" style="width: 30%;margin-right: 1%;">
  103. <p v-for="(item, index) in deptList" :key="index" @click="choseDept(item)">{{ item.ou }}</p>
  104. </div>
  105. <div class="tree treeUser" style="width: 30%;margin-right: 1%;">
  106. <p v-for="(item, index) in treeListp" :key="index">
  107. <span>{{ item.ou }}</span>
  108. <span class="p-btn" @click="fzperson(item)">负责人</span>
  109. <i @click="deletest(item, index)" class="el-icon-error"></i>
  110. </p>
  111. </div>
  112. <div class="tree treeUser" style="width: 30%;">
  113. <p v-for="(item, index) in treeListp" :key="index">{{ item.loginNameStr }}</p>
  114. </div>
  115. </el-form-item>
  116. </div>
  117. </el-form>
  118. <div style="text-align: right;margin-top: 20px">
  119. <el-button @click="dialogCli(1)" type="primary">确 定</el-button>
  120. <el-button @click="dialogCli(2)">取 消</el-button>
  121. </div>
  122. </el-dialog>
  123. <el-dialog title="选择负责人" :visible.sync="dialogStatusp" width="50%" :destroy-on-close="true"
  124. :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closeDutydia">
  125. <el-input placeholder="输入关键字进行过滤" v-model="filterText" @input="dutyNameSearch"></el-input>
  126. <el-form :model="infolist" ref="infolist" style="height: 50vh;overflow-y: scroll;">
  127. <div class="treeUserp">
  128. <p v-for="(item, index) in treeListponly" :key="index" @click="chofz(item)"
  129. v-if="item.loginNameStr">
  130. {{ item.groupName }} -
  131. {{ item.loginNameStr }}
  132. </p>
  133. </div>
  134. </el-form>
  135. </el-dialog>
  136. <myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
  137. v-if="centerDialogVisible"></myMessage>
  138. </fullscreen>
  139. </template>
  140. <script>
  141. import mySearch from "../../../components/search.vue";
  142. import myMessage from "../../../components/myMessage.vue"
  143. import toolList from '../../../components/toolList'
  144. import deptTree from "../../../components/deptTreeUserNew.vue"
  145. import deptTreep from "../../../components/deptTreeP.vue"
  146. export default {
  147. components: {
  148. mySearch,
  149. myMessage,
  150. toolList,
  151. deptTree,
  152. deptTreep
  153. },
  154. data() {
  155. const supplierName = (rule, value, callback) => {
  156. if (!this.infolist.supplierName) {
  157. callback(new Error('不能为空'))
  158. } else {
  159. callback()
  160. }
  161. }
  162. return {
  163. rules: {
  164. supplierName: [{
  165. required: true,
  166. trigger: 'blur',
  167. validator: supplierName
  168. }],
  169. },
  170. searchList: [{
  171. type: 'input',
  172. tit: '名称',
  173. value: '',
  174. width: '98%',
  175. }],
  176. tooltit: '任务进度跟踪',
  177. fullscreen: false,
  178. total: 0,
  179. pageSize: 1,
  180. tableData: [{}],
  181. dialogStatus: false,
  182. disableStatus: false,
  183. titname: '',
  184. infolist: {},
  185. userInfo: {},
  186. params: {},
  187. centerDialogVisible: false,
  188. messTit: '',
  189. delid: '',
  190. loading: false,
  191. loadinged: false,
  192. treeList: [],
  193. treeListOld: [],
  194. treeListp: [],
  195. treeListponly: [],
  196. closeList: [],
  197. defaultList: [],
  198. depttype: 0,
  199. fadept: {},
  200. deptList: [],
  201. companyFlag: '',
  202. dialogStatusp: false,
  203. choone: {},
  204. fillLists: [],
  205. filterText: '',
  206. filterData: []
  207. }
  208. },
  209. methods: {
  210. dialogCli(v) {
  211. let _this = this;
  212. if (this.titname == '查看') {
  213. v = 2;
  214. }
  215. if (v === 1) {
  216. let param = {};
  217. param = this.infolist;
  218. param.time ? param.startTime = this.$formatDate(param.time[0], "YYYY-MM-DD") : '';
  219. param.time ? param.endTime = this.$formatDate(param.time[1], "YYYY-MM-DD") : '';
  220. param.dutyList = [];
  221. for (let i = 0; i < this.treeListp.length; i++) {
  222. if (this.treeListp[i].loginNoStr) {
  223. param.dutyList.push({
  224. dutyNo: this.treeListp[i].loginNoStr,
  225. dutyName: this.treeListp[i].loginNameStr,
  226. groupId: this.treeListp[i].o,
  227. groupName: this.treeListp[i].ou,
  228. })
  229. }
  230. }
  231. param.fillList = [];
  232. for (let i = 0; i < this.treeListOld.length; i++) {
  233. param.fillList.push({
  234. fillNo: this.treeListOld[i].receiveNo,
  235. fillName: this.treeListOld[i].label,
  236. })
  237. }
  238. for (let i = 0; i < this.treeList.length; i++) {
  239. param.fillList.push({
  240. fillNo: this.treeList[i].receiveNo,
  241. fillName: this.treeList[i].label,
  242. })
  243. }
  244. var obj = {};
  245. param.fillList = param.fillList.reduce(function (item, next) {
  246. obj[next.fillNo] ? '' : obj[next.fillNo] = true && item.push(next);
  247. return item;
  248. }, []);
  249. JSON.parse(JSON.stringify(param.fillList))
  250. // for (let i = 0; i < this.treeList.length; i++) {
  251. // for (let ii = 0; ii < this.treeListp.length; ii++) {
  252. // if (this.treeListp[i].loginNoStr == this.treeList[ii].receiveNo) {
  253. // this.$message({
  254. // message: '负责人和填报人重复!',
  255. // type: 'error'
  256. // });
  257. // return
  258. // }
  259. // }
  260. // }
  261. var end_flag = false;
  262. this.treeList.forEach(item => {
  263. this.treeListp.forEach(n => {
  264. if (n.loginNoStr == item.receiveNo) {
  265. this.$message({
  266. message: '负责人和填报人重复!',
  267. type: 'error'
  268. });
  269. end_flag = true;
  270. }
  271. })
  272. })
  273. if (end_flag) return;
  274. let url = '';
  275. if (this.companyFlag == 0) {
  276. url = '/market/cMemberWo/saveMkMemberWoByProv';
  277. } else if (this.companyFlag == 1) {
  278. url = '/market/cMemberWo/saveMkMemberWoByRegion';
  279. // param.initiatorName = this.choone.receiverName;
  280. // param.initiatorNo = this.choone.receiverNo;
  281. } else if (this.companyFlag == 2) {
  282. url = '/market/cMemberWo/saveMkMemberWoByArea';
  283. // param.initiatorName = this.choone.receiverName;
  284. // param.initiatorNo = this.choone.receiverNo;
  285. }
  286. this.$http({
  287. url: url,
  288. method: "post",
  289. headers: {
  290. "Content-Type": "application/json",
  291. },
  292. data: param,
  293. }).then((res) => {
  294. if (res.data.result === 1) {
  295. _this.$message({
  296. message: res.data.desc,
  297. type: 'error'
  298. });
  299. } else {
  300. _this.$message({
  301. message: '成功',
  302. type: 'success'
  303. });
  304. _this.infolist = {};
  305. // _this.treeList = [];
  306. // _this.treeListp = [];
  307. _this.dialogStatus = false;
  308. _this.getList({}, 1);
  309. }
  310. });
  311. } else if (v === 2) {
  312. this.infolist = {};
  313. // this.treeList = [];
  314. // this.treeListp = [];
  315. this.dialogStatus = false;
  316. }
  317. },
  318. chofz(v) {
  319. this.dialogStatusp = false;
  320. this.filterText = "";
  321. for (let i = 0; i < this.treeListp.length; i++) {
  322. if (this.treeListp[i].o == this.fadept.o) {
  323. this.treeListp[i].loginNameStr = v.loginNameStr;
  324. this.treeListp[i].loginNoStr = v.loginNoStr;
  325. }
  326. }
  327. },
  328. fzperson(v) {
  329. this.fadept = v;
  330. this.dialogStatusp = true;
  331. this.$http({
  332. url: "/sysmgr/sysuserinfo/queryList",
  333. method: "post",
  334. headers: {
  335. "Content-Type": "application/json",
  336. },
  337. data: {
  338. groupId: v.o,
  339. },
  340. }).then((res) => {
  341. this.treeListponly = res.data;
  342. });
  343. this.$http({
  344. url: "/sysmgr/csysdept/queryRegionDeptList",
  345. method: "post",
  346. headers: {
  347. "Content-Type": "application/json",
  348. },
  349. data: {
  350. parentorgid: v.o,
  351. },
  352. }).then((res) => {
  353. res.data.forEach(item => {
  354. this.$http({
  355. url: "/sysmgr/sysuserinfo/queryList",
  356. method: "post",
  357. headers: {
  358. "Content-Type": "application/json",
  359. },
  360. data: {
  361. groupId: item.o,
  362. },
  363. }).then((ress) => {
  364. this.treeListponly.push({ bumen: item.ou })
  365. this.treeListponly = this.treeListponly.concat(ress.data);
  366. this.filterData = this.treeListponly;
  367. });
  368. })
  369. });
  370. },
  371. deletes(val, index) {
  372. this.treeList.splice(index, 1);
  373. this.closeList = this.treeList;
  374. },
  375. deletess(val, index) {
  376. this.treeListOld.splice(index, 1);
  377. // this.closeList = this.treeListOld;
  378. },
  379. deletest(val, index) {
  380. this.treeListp.splice(index, 1);
  381. },
  382. treeCheck(v) {
  383. this.treeList = v;
  384. },
  385. choseDept(v) {
  386. let x = 'no';
  387. for (let i = 0; i < this.treeListp.length; i++) {
  388. if (this.treeListp[i].o == v.o) {
  389. x = i;
  390. }
  391. }
  392. if (x != 'no') {
  393. this.treeListp.splice(x, 1)
  394. } else {
  395. this.treeListp.push(v);
  396. }
  397. },
  398. jumpfw(v) {
  399. this.$router.push({
  400. path: "/reportProgress",
  401. query: {
  402. woNo: v.woNo
  403. }
  404. });
  405. this.setabList("填报进度跟踪", "/reportProgress?woNo=" + v.woNo);
  406. },
  407. jumpjd(v) {
  408. // console.log(v.receiverGroupName)
  409. this.$router.push({
  410. path: "/speedOfProgress",
  411. query: {
  412. receiverGroupName: v.receiverGroupName
  413. }
  414. });
  415. this.setabList("进度跟踪", "/speedOfProgress?groupName=" + v.receiverGroupName);
  416. },
  417. setabList(n, p) {
  418. let params = {
  419. children: "",
  420. name: n,
  421. rountPath: p,
  422. target: "_self",
  423. };
  424. for (let i = 0; i < this.$store.state.tabList.length; i++) {
  425. if (this.$store.state.tabList[i].name === params.name) {
  426. this.$store.state.tabList[i] = params;
  427. }
  428. }
  429. let set = new Set([...this.$store.state.tabList, params]);
  430. set.add(params);
  431. this.$store.commit("setDefaultActive", params.rountPath);
  432. this.$store.commit("setTabList", Array.from(set));
  433. },
  434. closedia() {
  435. this.infolist = {};
  436. this.dialogStatus = false;
  437. },
  438. closeDutydia() {
  439. this.dialogStatusp = false;
  440. this.filterText = "";
  441. },
  442. //搜索数据
  443. searchInfo(v) {
  444. this.params = {};
  445. v[0] ? this.params.woName = v[0] : '';
  446. this.getList(this.params, this.pageSize);
  447. },
  448. //获取列表
  449. getList(v, n) {
  450. this.pageSize = n;
  451. let _this = this;
  452. this.loading = true;
  453. this.tableData = [];
  454. let url = '';
  455. if (this.companyFlag == 0) {
  456. url = '/market/cMemberWo/queryProvTracePage';
  457. } else if (this.companyFlag == 1) {
  458. url = '/market/cMemberWo/queryRegionTracePage';
  459. } else if (this.companyFlag == 2) {
  460. url = '/market/cMemberWo/queryAreaTracePage';
  461. }
  462. v.sts = 0;
  463. this.$http({
  464. url: url,
  465. method: "post",
  466. headers: {
  467. "Content-Type": "application/json",
  468. "page": '{"pageNo":"' + n + '","pageSize":"10"}'
  469. },
  470. data: v,
  471. }).then((res) => {
  472. this.tableData = res.data.data;
  473. this.total = res.data.totalRecord;
  474. this.loading = false;
  475. });
  476. },
  477. // 分页
  478. currchange(v) {
  479. this.pageSize = v;
  480. this.getList(this.params, this.pageSize);
  481. },
  482. //申请
  483. dialogCheck(v, n) {
  484. this.choone = n;
  485. if (v === 1) {
  486. this.titname = '查看';
  487. this.disableStatus = true;
  488. } else if (v === 2) {
  489. this.titname = '修改';
  490. this.disableStatus = false;
  491. }
  492. this.dialogStatus = true;
  493. this.$http({
  494. url: "/market/cMemberWo/queryMemeberWoInfo",
  495. method: "post",
  496. headers: {
  497. "Content-Type": "application/json",
  498. },
  499. data: {
  500. woNo: n.woNo
  501. },
  502. }).then((res) => {
  503. this.treeList = []
  504. this.treeListOld = []
  505. this.treeListp = []
  506. this.infolist = res.data;
  507. this.infolist.time = [res.data.startTime, res.data.endTime];
  508. this.infolist.opNo = this.userInfo.loginNo;
  509. this.infolist.opName = this.userInfo.loginName;
  510. // this.defaultList = []
  511. // this.defaultList.push({
  512. // deptCode: "00440089005200000000",
  513. // deptName: "中国移动通信集团黑龙江有限公司\\哈尔滨分公司\\综合部",
  514. // id: "694817329862230016",
  515. // label: "郭有为",
  516. // receiveName: "郭有为",
  517. // receiveNo: "guoyouwei",
  518. // type: 1,
  519. // })
  520. // this.treeList = this.defaultList
  521. this.fillLists = []
  522. this.infolist.fillList.forEach(item => {
  523. this.fillLists.push({
  524. fillName: item.fillName,
  525. fillNo: item.fillNo,
  526. receiveNo: item.fillNo,
  527. receiveName: item.fillName,
  528. label: item.fillName
  529. })
  530. })
  531. this.treeListOld = this.fillLists
  532. //地市范围
  533. if (this.companyFlag == '0') {
  534. this.$http({
  535. url: "/sysmgr/csysdept/queryRegionDeptList",
  536. async: false,
  537. method: "post",
  538. headers: {
  539. "Content-Type": "application/json",
  540. },
  541. data: {},
  542. }).then((res) => {
  543. this.deptList = res.data[0].children;
  544. this.deptList.forEach(item => {
  545. this.infolist.dutyList.forEach(m => {
  546. if (m.groupId == item.o) {
  547. item = Object.assign(item, { loginNoStr: m.dutyNo, loginNameStr: m.dutyName })
  548. this.treeListp.push(item);
  549. }
  550. })
  551. })
  552. });
  553. } else {
  554. this.$http({
  555. url: "/sysmgr/csysdept/queryListByParent",
  556. method: "post",
  557. async: false,
  558. headers: {
  559. "Content-Type": "application/json",
  560. },
  561. data: {
  562. parentorgid: n.receiverGroupId
  563. },
  564. }).then((res) => {
  565. this.deptList = res.data;
  566. this.deptList.forEach(item => {
  567. this.infolist.dutyList.forEach(m => {
  568. if (m.groupId == item.o) {
  569. item = Object.assign(item, { loginNoStr: m.dutyNo, loginNameStr: m.dutyName })
  570. this.treeListp.push(item);
  571. }
  572. })
  573. })
  574. });
  575. }
  576. //区县进入查人
  577. // if(this.companyFlag == '2'){
  578. // this.$http({
  579. // url: "/sysmgr/csysuserinfo/queryList",
  580. // method: "post",
  581. // headers: {
  582. // "Content-Type": "application/json",
  583. // },
  584. // data: {
  585. // groupId: n.receiverGroupId
  586. // },
  587. // }).then((res) => {
  588. // this.deptList = res.data;
  589. // });
  590. // }
  591. });
  592. },
  593. closeMessage(v) {
  594. this.centerDialogVisible = false;
  595. let _this = this;
  596. if (v === 1) {
  597. _this.$http({
  598. url: "/market/cMemberWo/endFillWo",
  599. method: "post",
  600. headers: {
  601. "Content-Type": "application/json",
  602. },
  603. data: {
  604. provWoNo: this.delid
  605. },
  606. }).then((res) => {
  607. if (res.data.result === 1) {
  608. _this.$message({
  609. message: res.data.desc,
  610. type: 'error'
  611. });
  612. } else {
  613. _this.$message({
  614. message: '中止成功',
  615. type: 'success'
  616. });
  617. _this.getList(this.params, this.pageSize);
  618. }
  619. });
  620. }
  621. },
  622. //删除
  623. delLine(v) {
  624. this.centerDialogVisible = true;
  625. this.messTit = '即将中止此条数据, 是否中止?';
  626. this.delid = v.woNo;
  627. },
  628. //文件返回值
  629. uploadBack(v) {
  630. // console.log(v)
  631. },
  632. //功能栏
  633. iconCli(v) {
  634. if (v === 1) {
  635. this.getList(this.params, this.pageSize);
  636. }
  637. if (v === 2) {
  638. this.fullscreen = !this.fullscreen
  639. }
  640. },
  641. getUser() {
  642. this.userInfo = JSON.parse(window.sessionStorage.userInfo);
  643. this.$http({
  644. url: "/sysmgr/csysuserinfo/queryUserInfoByLoginNo",
  645. method: "post",
  646. headers: {
  647. "Content-Type": "application/json",
  648. },
  649. data: {},
  650. }).then((res) => {
  651. this.companyFlag = res.data.companyFlag;
  652. this.getList({}, 1);
  653. });
  654. },
  655. dutyNameSearch() {
  656. if (this.filterText == "" || this.filterText == null) {
  657. this.treeListponly = this.filterData;
  658. return;
  659. }
  660. this.treeListponly.forEach((item) => {
  661. if (item.groupName !== undefined) {
  662. if (item.groupName.indexOf(this.filterText) !== -1) {
  663. this.treeListponly = this.treeListponly.filter(m => {
  664. if (m.groupName)
  665. return m.groupName.indexOf(this.filterText) != -1;
  666. else {
  667. return false;
  668. }
  669. })
  670. }
  671. }
  672. if (item.loginNameStr !== undefined) {
  673. if (item.loginNameStr.indexOf(this.filterText) !== -1) {
  674. this.treeListponly = this.treeListponly.filter(n => {
  675. if (n.loginNameStr)
  676. return n.loginNameStr.indexOf(this.filterText) != -1;
  677. else {
  678. return false;
  679. }
  680. })
  681. }
  682. }
  683. })
  684. }
  685. },
  686. mounted() {
  687. this.getUser();
  688. // this.defaultList.push({
  689. // deptCode: "",
  690. // deptName: "",
  691. // id: "",
  692. // label: "",
  693. // receiveName: "",
  694. // receiveNo: "",
  695. // type: 1,
  696. // checked:true
  697. // })
  698. },
  699. created() {
  700. }
  701. }
  702. </script>
  703. <style scoped lang="scss">
  704. .onetab {
  705. margin-bottom: 20px;
  706. padding: 0 20px;
  707. }
  708. .titbox {
  709. div {
  710. float: right;
  711. i {
  712. font-size: 22px;
  713. margin-left: 20px;
  714. cursor: pointer;
  715. }
  716. }
  717. }
  718. .tabbox {
  719. margin-top: 15px;
  720. }
  721. .pageBox {
  722. text-align: right;
  723. margin-top: 10px;
  724. }
  725. .info-line {
  726. width: 100%;
  727. display: block;
  728. padding-left: 20px;
  729. div {
  730. width: 50%;
  731. display: inline-block;
  732. }
  733. span {
  734. width: 80px;
  735. display: inline-block;
  736. text-align: left;
  737. i {
  738. color: red;
  739. display: inline-block;
  740. padding-right: 5px;
  741. }
  742. }
  743. .el-select,
  744. .el-input {
  745. width: calc(100% - 100px);
  746. }
  747. .tree {
  748. width: calc(50% - 60px);
  749. display: inline-block;
  750. margin-right: 20px;
  751. height: 300px;
  752. overflow-y: scroll;
  753. p {
  754. overflow: hidden;
  755. display: flex;
  756. justify-content: space-between;
  757. }
  758. .p-btn {
  759. width: 50px !important;
  760. cursor: pointer;
  761. color: #0074DA;
  762. }
  763. span {
  764. display: inline-block;
  765. width: calc(100% - 100px);
  766. }
  767. .el-icon-error {
  768. float: right;
  769. font-size: 20px;
  770. margin-top: 9px;
  771. cursor: pointer;
  772. }
  773. }
  774. .treeUser {
  775. margin: 0;
  776. border: 1px solid #ddd;
  777. p {
  778. background: #f4f4f4;
  779. padding: 0 20px;
  780. margin-bottom: 5px;
  781. }
  782. }
  783. .treeUserb {
  784. width: calc(100% - 100px);
  785. border: 1px solid #ddd;
  786. background: #f4f4f4;
  787. border-radius: 3px;
  788. height: auto;
  789. overflow: hidden;
  790. p {
  791. display: inline-block;
  792. padding: 0 20px;
  793. margin-bottom: 5px;
  794. }
  795. }
  796. }
  797. .treeUserp {
  798. p {
  799. padding: 5px;
  800. }
  801. p:hover {
  802. background: #01BEF0;
  803. color: #fff;
  804. cursor: pointer;
  805. }
  806. }
  807. .online {
  808. width: 100%;
  809. .el-select {
  810. width: calc(100% - 100px);
  811. }
  812. span {
  813. vertical-align: top;
  814. }
  815. .el-textarea {
  816. width: calc(100% - 100px);
  817. }
  818. .el-date-editor {
  819. width: calc(100% - 100px);
  820. display: inline-flex;
  821. }
  822. }
  823. </style>