adbd916938cc44673c585273af9ce75229bf8dfd.svn-base 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736
  1. <template>
  2. <div id="singleDataTableManager">
  3. <!-- <div class="searchPanel">
  4. <div class="actionPanel">
  5. </div>
  6. </div> -->
  7. <el-row :gutter="10" style="height:28px;">
  8. <el-col :span="8" style="height:28px;">
  9. <el-form ref="searchForm" :inline="true">
  10. <el-form-item v-for="searchItem in searchConfigure" :label="searchItem.comments" :key="searchItem.comments" v-if="searchItem.isHidden!='1'">
  11. <el-input v-if="searchItem.widgetType=='text'" v-model="searchDataObject[searchItem.name]"></el-input>
  12. <el-input v-if="searchItem.widgetType=='tree'" @focus="showTrees" v-model="areaTxt"></el-input>
  13. <el-date-picker v-if="searchItem.widgetType=='date'" v-model="searchDataObject[searchItem.name]"></el-date-picker>
  14. <!-- <el-date-picker v-if="searchItem.widgetType=='year'" type="year" v-model="searchDataObject[searchItem.name]"></el-date-picker> -->
  15. <el-select-dict v-if="searchItem.widgetType=='select'" :dictId="searchItem['refObjValue']" :initialValue="searchDataObject[searchItem.name]" v-model="searchDataObject[searchItem.name]"></el-select-dict>
  16. <!--<el-tree v-if="searchItem.widgetType=='tree' && treeShows" :treeInfos="areaData" :label="'text'" :parentId="areaId" @closeTree="treeShows = 0" @sendMenuInfo="officeInfo"></el-tree>-->
  17. </el-form-item>
  18. </el-form>
  19. </el-col>
  20. <el-col :span="6" style="height:28px;">
  21. <el-button v-for="action in viewActions" :key="action.name" type="primary"
  22. size="mini"
  23. @click="handleViewActions(action)">{{action.label}}
  24. </el-button>
  25. </el-col>
  26. </el-row>
  27. <el-container style="margin-top:10px;">
  28. <el-main style="padding:5px;">
  29. <el-table
  30. :data="tableData"
  31. stripe
  32. height="300"
  33. border
  34. style="width: 100%"
  35. >
  36. <!--数据列配置-->
  37. <el-table-column v-for="colmun in tableViewConfigure" :key="colmun.name" v-if="colmun.isHidden!='1'"
  38. :prop="colmun.name"
  39. show-overflow-tooltip
  40. header-align="center"
  41. align="center"
  42. :formatter="tableColumnsFormatter.bind(colmun)"
  43. :label="colmun.comments"
  44. :min-width="colmun.width">
  45. <template slot-scope="scope">
  46. {{tableColumnsFormatter(scope.row,scope,scope.$index,colmun)}}
  47. </template>
  48. </el-table-column>
  49. <!--操作列配置-->
  50. <el-table-column v-if="tableColumnsActions.length > 0"
  51. label="操作"
  52. header-align="center"
  53. align="center"
  54. min-width="180">
  55. <template slot-scope="scope">
  56. <el-button v-for="action in tableColumnsActions" :key="action.name"
  57. size="mini"
  58. @click="handleTableColumnsActions(scope.$index, scope.row,action)">{{action.label}}</el-button>
  59. </template>
  60. </el-table-column>
  61. </el-table>
  62. </el-main>
  63. </el-container>
  64. <div class="pagination">
  65. <el-pagination @current-change="handleCurrentChange" layout="total, prev, pager, next" :total="total">
  66. </el-pagination>
  67. </div>
  68. <!-- 弹出form表单 -->
  69. <el-dialog :title="actionType=='add'?'新增':'修改'"
  70. v-if="showDetailForm"
  71. :visible.sync="showDetailForm"
  72. :before-close="handleClose"
  73. :modal-append-to-body="true"
  74. :append-to-body="true"
  75. width="40%">
  76. <div :style="{'max-height':heightForDialog + 'px'}" style="width:100%;background-color:white;overflow-y: auto;">
  77. <el-form ref="form" label-width="160px" >
  78. <!-- form表单填录项配置 -->
  79. <el-form-item v-for="formItem in formViewConfigure" :label="formItem.comments" :required="formItem.isrequired=='1'" :key="formItem.comments" v-if="formItem.isHidden!='1' || (formItem.name != 'id' && actionType=='add') || formItem.isEditable == '1'">
  80. <template name="label" slot="label"><!--2018.09.16 增加对必填项目的星号提示-->
  81. <p style="display:inline;color:red" v-if="formItem.isRequired">*</p>
  82. <p style="display:inline;">{{formItem.comments}}:</p>
  83. </template>
  84. <el-input v-if="formItem.widgetType!='table'
  85. &&formItem.widgetType!='date'
  86. &&formItem.widgetType!='month'
  87. &&formItem.widgetType!='select'
  88. &&formItem.widgetType != 'tree'
  89. &&formItem.widgetType != 'table'
  90. &&formItem.widgetType != 'treeCheck'
  91. &&formItem.widgetType != 'selectMultiple'
  92. &&formItem.widgetType != 'year'"
  93. :type="formItem.widgetType=='textarea'?'textarea':
  94. formItem.widgetType=='password' ? 'password' : 'text'"
  95. v-model="formDataObject[formItem.name]">
  96. </el-input>
  97. <el-input v-if="formItem.widgetType == 'tree'" :type="formItem.widgetType=='textarea'?'textarea':'text'" v-model="parentName" @focus="showTree(formItem.widgetType)"></el-input>
  98. <el-input v-if="formItem.widgetType == 'table'" :type="formItem.widgetType=='textarea'?'textarea':'text'" v-model="parentNameTab" @focus="addParentEvent(formItem.widgetType)" ></el-input>
  99. <el-input v-if="0" :type="formItem.widgetType=='textarea'?'textarea':formItem.widgetType=='password' ? 'password' : 'text'" v-model="formDataObject[formItem.name]" @focus="showTree(formItem.widgetType)"></el-input>
  100. <tree-x v-if="treeShow && formItem.widgetType == 'tree'" @closeTree='hideTree' @sendMenuInfo='getMenuInfo' :isChecked='formItem.widgetType'></tree-x>
  101. <!-- <table-x v-if="tableShow && formItem.widgetType == 'table'" @closeTable='hideTable' @sendMenuInfo='getMenuInfo' :isChecked='formItem.widgetType'></table-x> -->
  102. <tree-x v-if="formItem.widgetType == 'treeCheck'" :id="idid" @sendMenuInfo='getMenuInfo' :isChecked='formItem.widgetType'></tree-x>
  103. <el-date-picker v-if="formItem.widgetType=='date'||formItem.widgetType=='year'||formItem.widgetType=='month'"
  104. :type="formItem.widgetType=='date'?'date':formItem.widgetType=='year' ? 'year':formItem.widgetType=='month' ? 'month':'date'"
  105. v-model="formDataObject[formItem.name]"
  106. :value-format="formItem.widgetType=='date' ? 'yyyy-MM-dd':formItem.widgetType=='month' ? 'yyyy-MM':'yyyy'"></el-date-picker>
  107. <!--<el-date-picker type="year" v-if="formItem.widgetType=='year'" v-model="formDataObject[formItem.name]"></el-date-picker>-->
  108. <el-select-dict v-if="formItem.widgetType=='select'" :dictId="formItem['refObjValue']" :initialValue="formDataObject[formItem.name]" v-model="formDataObject[formItem.name]"></el-select-dict>
  109. <el-multiple-select v-if="formItem.widgetType=='selectMultiple'" @privInfo='infoList' :id="idid"></el-multiple-select>
  110. </el-form-item>
  111. <!-- form表单操作项配置 -->
  112. </el-form>
  113. </div>
  114. <el-row style="text-align: right;margin-top: 25px;">
  115. <el-button v-for="action in formActions" :key="action.name" :type="action.label =='保存'?'primary':''"
  116. @click="handleFormAction(action)"
  117. v-if="action.name==actionType"
  118. >{{action.label}}</el-button>
  119. </el-row>
  120. </el-dialog>
  121. <!-- 删除提示框 -->
  122. <el-dialog :modal="false" title="提示" :visible.sync="delVisible" width="300px" center>
  123. <div class="del-dialog-cnt">删除不可恢复,是否确定删除?</div>
  124. <span slot="footer" class="dialog-footer">
  125. <el-button @click="delVisible = false">取 消</el-button>
  126. <el-button type="primary" @click="deleteRow">确 定</el-button>
  127. </span>
  128. </el-dialog>
  129. <!-- wxcwater 添加行自定义插槽弹出窗 -->
  130. <el-dialog :modal-append-to-body="true" :append-to-body="true" title="" :visible.sync="popupVisible" v-if="popupVisible" center>
  131. <slot name="gridpopup" :row="popupSlotRow" :action="popupSlotAction">
  132. </slot>
  133. </el-dialog>
  134. <el-dialog :modal-append-to-body="true" :append-to-body="true" title="所属机构" :visible.sync="addPaBasinCode" v-if="addPaBasinCode">
  135. <div :style="{'max-height':heightForTable+'px','overflow-y':'auto',}" >
  136. <table-x @dialogEvent="dialogEvent"></table-x>
  137. </div>
  138. </el-dialog>
  139. </div>
  140. </template>
  141. <script>
  142. /*
  143. 组件名称:singleDataTableManager
  144. 组件用途:后台单表(视图))管理
  145. 包含组件:dragable(拖拽)
  146. singleDataForm(单表form)
  147. 包含API文件:
  148. (singleDataTableManagerApi -单表管理组件用到的API)
  149. (dictionaryApi - 字典相关的API)
  150. props:tableViewId:string - 指定管理视图代码 (通过此代码查询接口获得组成页面的所有信息)
  151. otherParamsObject:object - 额外查询参数(为有额外联查条件要求准备,所有属性均会附加在所有请求中)
  152. 版本记录:
  153. 0.0.1 (初版) @author:wxcwater @date:2018.09.11
  154. 0.0.2 @author:唐怀亚 增加提交等操作的逻辑处理
  155. 0.0.3 @author:wxcwater @date:2018.09.16 增加根据json配置查询功能 增加对必填项目的*提示
  156. 0.0.4 @author:wby @date:2018.09.18 增加树形控件
  157. 0.0.5 @author:zhangyz @date:2018.11.14 dialog 添加 :model = "false"
  158. 0.0.6 @author:zhangyz @date:2018.11.15 添加el-date-picker type为year的判断;el-table动态高度:height="heightForDialog";弹出form表单动态高度
  159. 0.0.7 @author:wxcwater @date:2018.11.15 增加表格操作中的自定义弹出框操作。设置action.name为popup。
  160. 自定义弹出窗内容为插槽。默认带当前行数据与action数据
  161. 添加列的width的绑定
  162. 添加了otherParamsOject为有多个关联限定做准备otherParamsObject的每个属性均会在所有请求中出现
  163. 添加了popup按钮的事件冒泡,方便在外层拼装ohterParamsObject
  164. 0.0.8 @author:wxcwater @date:2018.11.16 对otherparamObject的watch修改为深度监视以监视对象的变化。之前的方式在对象属性变化
  165. 而非绑定变化时会不起作用。
  166. 0.0.9 @author:zhangyz @date:2018.11.16 添加了一河一策清单中有时间填报的dateFormatter,这里在实现基本功能后,对el-date-picker的type="date"和"year"类型还要做统一判断
  167. 添加了el-dialog 的:modal-append-to-body="true" :append-to-body="true" 这两个属性解决dialog弹出遮罩问题,始终让最新弹出的dialog在最亮的状态
  168. 278行 添加delete判断
  169. */
  170. import axios from 'axios';
  171. import {adCd_global} from '../utils/myRequest/url.js'
  172. import {getAddTree} from '../api/administrativeRegion.js'
  173. import treeX from './treeX.vue'
  174. import tableX from './tableX.vue'
  175. import elTree from './treeComponent.vue'
  176. import request from '../utils/gw_ajax_request.js'
  177. import {dateFormat} from '../utils/gw_date.js'
  178. import {getdictItemBydictIdSync} from '../utils/gw_dictionary.js'
  179. import elSelectDict from './elSelectWithDict'
  180. import elMultipleSelect from './selectMultiple.vue'
  181. import {baseUrl} from '../utils/myRequest/url.js'
  182. export default {
  183. props:['tableViewId','dataTitle','otherParamsObject'],
  184. name: 'singleDataTableManager',
  185. components: {
  186. 'el-select-dict':elSelectDict,
  187. 'tree-x': treeX,
  188. 'table-x': tableX,
  189. 'el-multiple-select': elMultipleSelect,
  190. 'el-tree': elTree,
  191. },
  192. computed:{
  193. },
  194. watch:{
  195. formDataObject:{
  196. handler(){
  197. console.log('formDataObject变化了');
  198. },
  199. deep:true,
  200. },
  201. areaTxt(val){
  202. if(val == ''){
  203. this.searchDataObject.adCd = ''
  204. }
  205. },
  206. otherParamsObject:{
  207. handler(){
  208. console.log('otherParamsObject');
  209. this.getTableData();
  210. },
  211. deep:true,
  212. }
  213. },
  214. data () {
  215. return {
  216. heightForDialog:window.innerHeight*0.45,
  217. heightForTable:window.innerHeight-91,
  218. mainHeight:window.innerHeight-265,
  219. manageViewConfigure:{},//从后台获得的view整体的配置信息对象
  220. viewActions:[],//脱离于table与form的操作 如刷新、查询等
  221. tableViewConfigure:[],//table表格的数据列配置
  222. tableColumnsActions:[],//table表格每行的操作 如 查询 修改 删除
  223. formViewConfigure:[],//form表单的配置对象
  224. formActions:[],//form表单的操作 如 保存 取消
  225. searchConfigure:[],//2018.09.16 + 查询参数用
  226. tableData:[],//单表(视图)实体数据
  227. showDetailForm:false,//展示详细弹窗 以用于查看、新增、修改
  228. searchDataObject:{},
  229. formBasicObject:{},//表单基本对象
  230. formDataObject:{},//表单数据对象(实际持有表单数据的对象)
  231. actionType:'',//针对表单 是修改(edit) 或是 新增(add) 的状态记录
  232. detailType:null,
  233. detailUrl:null,
  234. deleteType:null,
  235. deleteUrl:null,
  236. addType:null,
  237. addUrl:null,
  238. editType:null,
  239. editUrl:null,
  240. searchType:null,
  241. searchUrl:null,
  242. editVisible: false,
  243. delVisible: false,
  244. idx: -1,
  245. page:{
  246. pageNum: 1,
  247. pageSize: 10
  248. },
  249. total:0,
  250. baseUrl:'/pdcApi/',
  251. treeShow: 0,
  252. tableShow: 0,
  253. parentName: '',
  254. parentNameTab: '',
  255. idid: null,
  256. treeShows: 0,
  257. // areaId: getNodeByAd,
  258. areacode:localStorage.getItem('areacode') ? localStorage.getItem('areacode') : '350000000000',
  259. areaTxt: '',
  260. areaData: null,
  261. popupVisible:false,
  262. addPaBasinCode:false,
  263. popupSlotRow:{},
  264. popupSlotAction:{},
  265. }
  266. },
  267. mounted:function(){
  268. let me = this;
  269. me.getManageViewConfigureInformation();
  270. console.log(this.otherParamsObject);
  271. },
  272. methods:{
  273. dialogEvent:function(item){
  274. var _self =this;
  275. _self.parentNameTab = item.deptId;
  276. this.formDataObject.deptId = item.deptId;
  277. _self.addPaBasinCode = false;
  278. },
  279. addParentEvent:function(){
  280. var _self =this;
  281. _self.addPaBasinCode = true;
  282. },
  283. getManageViewConfigureInformation:function(){ //通过tableViewId
  284. console.log('获取'+this.tableViewId+'的配置内容');
  285. let _self = this;
  286. axios.get('/src/static/fields.json').then((res) => {
  287. _self.manageViewConfigure = res.data[_self.tableViewId];
  288. // _self.dataTitle.title = res.data[_self.tableViewId].title;
  289. this.analyseManageViewConfigure();
  290. })
  291. },
  292. analyseUrlTempLateToRealUrl:function(urlTemplate,paramsObject){
  293. let urlTemp = urlTemplate.split('/');
  294. urlTemp.forEach((element,index) => {
  295. if(element.startsWith('{')&&element.endsWith('}')){
  296. console.log('换'+paramsObject[element.substring(1,element.length-1)]);
  297. urlTemp[index] = paramsObject[element.substring(1,element.length-1)]
  298. }
  299. });
  300. console.log(urlTemp);
  301. return this.baseUrl + urlTemp.join('/');
  302. },
  303. analyseManageViewConfigure:function(){
  304. console.log('开始分析处理');
  305. this.tableViewConfigure = this.manageViewConfigure['fields'];//拆分数据列配置
  306. this.formViewConfigure= this.manageViewConfigure['fields'];//拆分表单配置
  307. console.log(this.manageViewConfigure.actions);
  308. this.manageViewConfigure.actions.forEach(item => {//拆分操作部分
  309. if(item.position=='grid'){
  310. this.tableColumnsActions.push(item);
  311. if(item.name == 'detail'){
  312. this.detailType = item.restType;
  313. this.detailUrl = item.url;
  314. }else if(item.name == 'delete'){
  315. this.deleteType = item.restType;
  316. this.deleteUrl = item.url;
  317. }
  318. }else if(item.position=='down_center'){
  319. this.formActions.push(item);
  320. if(item.name == 'add'){
  321. this.addType = item.restType;
  322. this.addUrl = item.url;
  323. }else {
  324. this.editType = item.restType;
  325. this.editUrl = item.url;
  326. }
  327. }else{
  328. if(item.type != 'noSr'){
  329. this.viewActions.push(item);
  330. if(item.name == 'load'){
  331. this.searchType = item.restType;
  332. this.searchUrl = item.url;
  333. }
  334. }else{
  335. if(item.name == 'load'){
  336. this.searchType = item.restType;
  337. this.searchUrl = item.url;
  338. }
  339. };
  340. }
  341. });
  342. this.formViewConfigure.forEach(item => {//设定form表单基本对象
  343. this.formBasicObject[item.name] = null;
  344. });
  345. this.formDataObject = Object.assign({},this.formBasicObject); //克隆basic对象,防止后续对BasicObject的污染
  346. //@update 2018.09.16 @author wxcwater 增加对可查询字段的分拆工作
  347. this.tableViewConfigure.forEach(element => {
  348. if(element.isSearchable == '1'){
  349. this.searchDataObject[element.name] = '';
  350. this.searchConfigure.push(element);
  351. }
  352. });
  353. console.log('打印结果');
  354. console.log(this.viewActions);
  355. console.log(this.tableColumnsActions);
  356. console.log(this.formActions);
  357. this.getTableData();
  358. },
  359. getTableData:function(){
  360. let me = this;
  361. let queryParams = Object.assign(this.searchDataObject,this.page);
  362. if(this.otherParamsObject) {
  363. queryParams = Object.assign(queryParams, this.otherParamsObject);
  364. }
  365. console.log(queryParams);
  366. request({
  367. url: `${baseUrl}/${me.searchUrl}`,
  368. method: me.searchType,
  369. params: queryParams
  370. }).then((response) => {
  371. // ;
  372. console.log(response)
  373. me.tableData = response.data.list ? response.data.list : response.data
  374. me.total = response.data.total;
  375. })
  376. .catch(function (err) {
  377. console.log(err);
  378. });
  379. // axios.get(me.baseUrl + me.searchUrl,me.page)
  380. },
  381. handleTableColumnsActions:function(index,row,action){//处理表格中的操作
  382. console.log(index);
  383. console.log(row);
  384. console.log(action);
  385. if(action.name == 'detail'){
  386. this.actionType = 'edit';
  387. delete row.password
  388. for(var i in row){
  389. if(row[i] === true){
  390. row[i] = 'true'
  391. }
  392. if(row[i] === false){
  393. row[i] = 'false'
  394. }
  395. }
  396. this.formDataObject = row;
  397. this.$route.name == '字典管理' ? this.idid = row.dictTypeId : this.idid = row.id
  398. this.parentName = row.parentName ? row.parentName : row.adCode; //菜单树父菜单取值
  399. this.showDetailForm = true;
  400. }else if(action.name == 'delete'){
  401. this.formDataObject = row;
  402. this.idx = index;
  403. this.delVisible = true;
  404. }else if(action.name=='popup'){
  405. this.$emit('gridPopupButtonClick',{'row':row,'action':action});
  406. this.popupSlotRow = row;
  407. this.popupSlotAction = action;
  408. this.popupVisible = true;
  409. }
  410. },
  411. handleViewActions:function(action){//处理view的操作
  412. console.log(action);
  413. this.treeShows = 0
  414. if(action.name == 'add'){
  415. //添加逻辑
  416. this.formDataObject.dictTypeId = ''
  417. console.log(this.formDataObject.dictTypeId)
  418. this.actionType = 'add';
  419. this.formDataObject = Object.assign({},this.formBasicObject); //克隆basic对象,防止后续对BasicObject的污染
  420. this.showDetailForm = true;
  421. }else if(action.name == 'load'){
  422. this.getTableData();
  423. }
  424. },
  425. handleFormAction:function(action){
  426. if(this.actionType == 'add'){
  427. //新增 的 ajax请求
  428. this.parentName = ''
  429. this.handleAddRequest();
  430. }else if(this.actionType == 'edit'){
  431. //修改的ajax请求
  432. this.handleEditRequest();
  433. }
  434. },
  435. tableColumnsFormatter:function(row, scope, index,colmunObj){//table列表中针对某一列的formatter
  436. let columnContentType = colmunObj["widgetType"]; //获得widgetType来确定是否需要对值进行处理
  437. let prop = scope.column.property;//获取配置的prop 用以返回属性
  438. if(columnContentType == 'select'){
  439. let formatterResult = row[prop];
  440. let dictOptions = getdictItemBydictIdSync(colmunObj["refObjValue"]);
  441. if(dictOptions){
  442. let hasDict = false;
  443. dictOptions.forEach(element => {
  444. if(element['key'] == row[prop]){
  445. hasDict = true;
  446. formatterResult = element['value'];
  447. }
  448. });
  449. }
  450. return formatterResult;
  451. }else if(columnContentType == 'selectMultiple'){
  452. let formatterResult = row[prop];
  453. let dictOptions = getdictItemBydictIdSync(colmunObj["refObjValue"]);
  454. if(dictOptions){
  455. let hasDict = false;
  456. dictOptions.forEach(element => {
  457. if(element['key'] == row[prop]){
  458. hasDict = true;
  459. formatterResult = element['value'];
  460. }
  461. });
  462. }
  463. return formatterResult;
  464. }else if(columnContentType = 'text'){
  465. let formatterResult = row[prop];
  466. let dictOptions = getdictItemBydictIdSync(colmunObj["refObjValue"]);
  467. if(dictOptions){
  468. let hasDict = false;
  469. dictOptions.forEach(element => {
  470. if(row[prop]){
  471. if(element['value'] == row[prop].toString()){
  472. hasDict = true;
  473. formatterResult = element['descr'];
  474. }
  475. }
  476. });
  477. }
  478. return formatterResult;
  479. // return row[prop];
  480. }else{
  481. return row[prop];
  482. }
  483. return row[prop];
  484. },
  485. handleCurrentChange:function(val) {
  486. this.page.pageNum = val;
  487. this.getTableData();
  488. },
  489. //3个
  490. handleAddRequest:function(){
  491. console.log('handleAddRequest');
  492. let realUrl = this.analyseUrlTempLateToRealUrl(this.addUrl,this.formDataObject);
  493. let queryParams = this.formDataObject;
  494. // if(queryParams.createTime){
  495. // queryParams.createTime = dateFormat(queryParams.createTime,'yyyy-MM-dd');
  496. // }
  497. // if(queryParams.startTime){
  498. // queryParams.startTime = dateFormat(queryParams.startTime,'yyyy-MM-dd');
  499. // }
  500. // if(queryParams.endTime){
  501. // queryParams.endTime = dateFormat(queryParams.endTime,'yyyy-MM-dd');
  502. // }
  503. // if(queryParams.tgIndexDate){
  504. // queryParams.tgIndexDate = dateFormat(queryParams.tgIndexDate,'yyyy');
  505. // }
  506. // if(queryParams.tyYear){
  507. // queryParams.tyYear = dateFormat(queryParams.tyYear,'yyyy');
  508. // }
  509. // if(queryParams.wbiYear){
  510. // queryParams.wbiYear = dateFormat(queryParams.wbiYear,'yyyy');
  511. // }
  512. // if(queryParams.wbuYear){
  513. // queryParams.wbuYear = dateFormat(queryParams.wbuYear,'yyyy');
  514. // }
  515. if(this.otherParamsObject) {
  516. queryParams= Object.assign(this.formDataObject, this.otherParamsObject);
  517. }
  518. request({
  519. url: realUrl,
  520. method: this.addType,
  521. data: queryParams,
  522. params:queryParams,
  523. }).then((response) => {
  524. if(response.success == true){
  525. this.showDetailForm = false;
  526. this.getTableData();
  527. }
  528. })
  529. },
  530. handleEditRequest:function(){
  531. console.log('handleEditRequest');
  532. let realUrl = this.analyseUrlTempLateToRealUrl(this.editUrl,this.formDataObject);
  533. let queryParams = this.formDataObject;
  534. // if(queryParams.createTime){
  535. // queryParams.createTime = dateFormat(queryParams.createTime,'yyyy-MM-dd');
  536. // }
  537. // if(queryParams.startTime){
  538. // queryParams.startTime = dateFormat(queryParams.startTime,'yyyy-MM-dd');
  539. // }
  540. // if(queryParams.endTime){
  541. // queryParams.endTime = dateFormat(queryParams.endTime,'yyyy-MM-dd');
  542. // }
  543. // if(queryParams.tgIndexDate&&queryParams.tgIndexDate.length != 4 ){
  544. // queryParams.tgIndexDate = dateFormat(queryParams.tgIndexDate,'yyyy');
  545. // }
  546. // if(queryParams.wbiYear&&queryParams.wbiYear.length != 4 ){
  547. // queryParams.wbiYear = dateFormat(queryParams.wbiYear,'yyyy');
  548. // }
  549. // if(queryParams.wbuYear&&queryParams.wbuYear.length != 4 ){
  550. // queryParams.wbuYear = dateFormat(queryParams.wbuYear,'yyyy');
  551. // }
  552. // if(queryParams.wboYear&&queryParams.wboYear.length != 4 ){
  553. // queryParams.wboYear = dateFormat(queryParams.wboYear,'yyyy');
  554. // }
  555. // if(queryParams.tyYear&&queryParams.tyYear.length != 4){
  556. // queryParams.tyYear = dateFormat(queryParams.tyYear,'yyyy');
  557. // }
  558. if(this.otherParamsObject) {
  559. queryParams= Object.assign(this.formDataObject, this.otherParamsObject);
  560. }
  561. request({
  562. url: realUrl,
  563. method: this.editType,
  564. params: queryParams,
  565. data: queryParams
  566. }).then((response) => {
  567. if(response.success == true){
  568. this.showDetailForm = false;
  569. this.getTableData();
  570. }
  571. })
  572. },
  573. handleDeleteRequest:function(row){
  574. console.log('handleDeleteRequest');
  575. let realUrl = this.analyseUrlTempLateToRealUrl(this.deleteUrl,row);
  576. let queryParams = this.formDataObject;
  577. if(this.otherParamsObject) {
  578. queryParams= this.otherParamsObject;
  579. }
  580. console.log(row)
  581. request({
  582. url: realUrl,
  583. method: this.deleteType,
  584. params: queryParams,
  585. data: queryParams
  586. })
  587. },
  588. // 确定删除
  589. deleteRow(){
  590. this.handleDeleteRequest(this.formDataObject);
  591. this.tableData.splice(this.idx, 1);
  592. this.$message.success('删除成功');
  593. this.delVisible = false;
  594. setTimeout(()=>{
  595. this.getTableData();
  596. },50)
  597. },
  598. handleClose(done){
  599. this.parentName = ''
  600. done()
  601. },
  602. //获取菜单树信息
  603. getMenuInfoTable(menuInfo){
  604. if(menuInfo){
  605. this.formDataObject.adCode = menuInfo.id
  606. }
  607. // else{
  608. // this.formDataObject.parentId = menuInfo.id
  609. // this.formDataObject.menuIds = menuInfo
  610. // }
  611. this.parentName = menuInfo.id ? menuInfo.id : "";
  612. },
  613. getMenuInfo(menuInfo){
  614. if(menuInfo){
  615. this.formDataObject.adCode = menuInfo.id
  616. }
  617. // else{
  618. // this.formDataObject.parentId = menuInfo.id
  619. // this.formDataObject.menuIds = menuInfo
  620. // }
  621. this.parentName = menuInfo.id ? menuInfo.id : "";
  622. },
  623. //展示/收起树
  624. showTree(type){
  625. if(type == 'tree' || type == 'treeCheck'){
  626. this.treeShow = 1
  627. }
  628. },
  629. //展示/收起树
  630. showTable(type){
  631. if(type == 'table' || type == 'tableCheck'){
  632. this.tableShow = 1
  633. }
  634. },
  635. hideTree(hide){
  636. console.log(hide)
  637. this.treeShow = hide
  638. },
  639. hideTable(hide){
  640. console.log(hide)
  641. this.tableShow = hide
  642. },
  643. infoList(info){
  644. this.$route.name == '用户管理' ? this.formDataObject.roleIds = info : this.$route.name == '角色管理' ? this.formDataObject.privIds = info : this.formDataObject.dictTypeId = info.join('')
  645. },
  646. showTrees(){
  647. this.treeShows = 1
  648. },
  649. officeInfo(data) {
  650. console.log(data)
  651. this.areaTxt = data.text
  652. console.log(this.searchDataObject)
  653. this.searchDataObject.adCd = data.id
  654. },
  655. //获取政区结构表
  656. getArea(){
  657. getAddTree(this.areacode).then((res) => {
  658. this.areaData = res.data.data
  659. })
  660. }
  661. },
  662. }
  663. </script>
  664. <style>
  665. #singleDataTableManager{
  666. /*height:100%;*/
  667. width:100%;
  668. /* margin:-15px; */
  669. }
  670. #singleDataTableManager th,#singleDataTableManager .el-table thead tr {
  671. font-size: 14px;
  672. background-color: #eef1f6;
  673. color: #1f2d3d;
  674. }
  675. .searchPanel{
  676. width:100%;
  677. /* border-bottom: 1px dotted #6161d7; */
  678. /* padding-bottom:10px; */
  679. padding-left: 10px;
  680. margin-top: 10px;
  681. box-sizing: border-box;
  682. /* overflow: hidden; */
  683. }
  684. .actionPanel{
  685. width:100%;
  686. }
  687. .searchPanel .el-form{
  688. float: left;
  689. margin-right: 20px;
  690. height: 30px;
  691. }
  692. #singleDataTableManager .pagination{
  693. text-align: center;
  694. }
  695. #singleDataTableManager .el-select{
  696. width: 100%;
  697. }
  698. .menu_tree .el-tree-node__content .el-tree-node__expand-icon+span::before {
  699. content: url(../assets/images/place.png);
  700. margin-right: 6px;
  701. }
  702. .menu_tree .el-tree-node__children .el-tree-node__expand-icon+span::before {
  703. content: url(../assets/images/place.png);
  704. }
  705. </style>