Browse Source

从福建版本移植

tianwu.sun 8 months ago
parent
commit
73ee1fe406
24 changed files with 2435 additions and 0 deletions
  1. 195 0
      log/.out
  2. 430 0
      log/cic-data-reportin.out
  3. 176 0
      src/main/java/com/bootdo/datas/controller/DataPartController.java
  4. 98 0
      src/main/java/com/bootdo/datas/controller/DataSendProvinceController.java
  5. 32 0
      src/main/java/com/bootdo/datas/dao/DataPartDao.java
  6. 120 0
      src/main/java/com/bootdo/datas/domain/DataPartDO.java
  7. 35 0
      src/main/java/com/bootdo/datas/domain/ExpertOpinionDO.java
  8. 30 0
      src/main/java/com/bootdo/datas/service/DataPartService.java
  9. 76 0
      src/main/java/com/bootdo/datas/service/impl/DataPartServiceImpl.java
  10. 86 0
      src/main/resources/mybatis/datas/DataPartMapper.xml
  11. BIN
      src/main/resources/static/img/1-loading-bg.png
  12. 55 0
      src/main/resources/static/js/appjs/datas/dataPart/add.js
  13. 187 0
      src/main/resources/static/js/appjs/datas/dataPart/dataPart.js
  14. 81 0
      src/main/resources/static/js/appjs/datas/dataPart/dataPartView.js
  15. 55 0
      src/main/resources/static/js/appjs/datas/dataPart/edit.js
  16. 265 0
      src/main/resources/static/js/appjs/datas/dataSendProvince/data.js
  17. 59 0
      src/main/resources/static/js/appjs/datas/expertVerify/expertOpinion.js
  18. 74 0
      src/main/resources/templates/datas/dataPart/add.html
  19. 67 0
      src/main/resources/templates/datas/dataPart/dataPart.html
  20. 67 0
      src/main/resources/templates/datas/dataPart/dataPartView.html
  21. 84 0
      src/main/resources/templates/datas/dataPart/edit.html
  22. 84 0
      src/main/resources/templates/datas/dataSendProvince/data.html
  23. 42 0
      src/main/resources/templates/datas/dataSendProvince/edit.html
  24. 37 0
      src/main/resources/templates/datas/expertVerify/expertOpinion.html

File diff suppressed because it is too large
+ 195 - 0
log/.out


File diff suppressed because it is too large
+ 430 - 0
log/cic-data-reportin.out


+ 176 - 0
src/main/java/com/bootdo/datas/controller/DataPartController.java

@@ -0,0 +1,176 @@
+package com.bootdo.datas.controller;
+
+import com.bootdo.common.annotation.Log;
+import com.bootdo.common.utils.R;
+import com.bootdo.datas.domain.DataPartDO;
+import com.bootdo.datas.service.DataPartService;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 分类分级
+ * 
+ * @author admin
+ * @email admin@163.com
+ * @date 2022-02-27 23:33:17
+ */
+
+@Controller
+@RequestMapping("/datas/dataPart")
+public class DataPartController {
+
+    private static Logger log = LoggerFactory.getLogger(DataPartController.class);
+
+    @Autowired
+    private DataPartService dataPartService;
+
+    @Log("访问分类参考")
+    @GetMapping()
+    @RequiresPermissions("data:dataPart:dataPart")
+    String DataPart() {
+        return "datas/dataPart/dataPart";
+    }
+
+    @Log("访问分类参考")
+    @GetMapping("dataPartView")
+    @RequiresPermissions("data:dataPart:dataPart")
+    String DataPartView() {
+        return "datas/dataPart/dataPartView";
+    }
+
+    @ResponseBody
+    @GetMapping("/list")
+    @RequiresPermissions("data:dataPart:dataPart")
+    public List<DataPartDO> list(@RequestParam Map<String, Object> params) {
+        // 查询列表数据
+        List<DataPartDO> dataPartList = dataPartService.list(params);
+        return dataPartList;
+    }
+
+
+    @Log("添加分类数据")
+    @RequiresPermissions("data:dataPart:add")
+    @GetMapping("/add/{pId}")
+    String add(Model model, @PathVariable("pId") Long pId) {
+        model.addAttribute("pId", pId);
+        if (pId == 0) {
+            model.addAttribute("pName", "根数据");
+        } else {
+            model.addAttribute("pName", dataPartService.get(pId).getPartName());
+        }
+        return "datas/dataPart/add";
+    }
+
+    @Log("编辑分类数据")
+    @RequiresPermissions("data:dataPart:edit")
+    @GetMapping("/edit/{id}")
+    String edit(Model model, @PathVariable("id") Long id) {
+        DataPartDO dataPart = dataPartService.get(id);
+        Long pId = dataPart.getParentId();
+        model.addAttribute("pId", pId);
+        if (pId == 0) {
+            model.addAttribute("pName", "根数据");
+        } else {
+            model.addAttribute("pName", dataPartService.get(pId).getPartName());
+        }
+        log.info("dataPart:" + dataPart.toString());
+        model.addAttribute("dataPart", dataPart);
+        return "datas/dataPart/edit";
+    }
+
+    /**
+     * 保存
+     */
+    @ResponseBody
+    @PostMapping("/save")
+    @RequiresPermissions("data:dataPart:add")
+    public R save(DataPartDO dataPart) {
+        dataPart.setDelFlag(0);
+        if (dataPartService.save(dataPart) > 0) {
+            return R.ok();
+        }
+        return R.error();
+    }
+
+    /**
+     * 修改
+     */
+    @ResponseBody
+    @RequestMapping("/update")
+    @RequiresPermissions("data:dataPart:edit")
+    public R update(DataPartDO dataPart) {
+        dataPartService.update(dataPart);
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/remove")
+    @ResponseBody
+    @RequiresPermissions("data:dataPart:remove")
+    public R remove(Long partId) {
+        if (dataPartService.remove(partId) > 0) {
+            return R.ok();
+        }
+        return R.error();
+    }
+
+    /**
+     * 删除
+     */
+    @PostMapping("/batchRemove")
+    @ResponseBody
+    @RequiresPermissions("data:dataPart:batchRemove")
+    public R remove(@RequestParam("ids[]") Long[] partIds) {
+        dataPartService.batchRemove(partIds);
+        return R.ok();
+    }
+
+    
+    /**
+     * @Description: 数据分类查询
+     * @Author: wangp
+     * @Date: 2022/2/28 13:06
+     * @param partId
+     * @param parentId
+     * @Return: List<DataPartDO>
+     */
+    @ResponseBody
+    @GetMapping("/list/{partId}/{parentId}")
+    public List<DataPartDO> listByTypeParentID(@PathVariable("partId") String partId, @PathVariable("parentId") String parentId) {
+        // 查询列表数据
+        Map<String, Object> map = new HashMap<>(16);
+        map.put("partId", partId);
+        map.put("parentId", parentId);
+        List<DataPartDO> list = dataPartService.list(map);
+        return list;
+    }
+
+    /**
+     * @Description: 数据分类查询
+     * @Author: wangp
+     * @Date: 2022/2/28 13:06
+     * @param parentId
+     * @Return: List<DataPartDO>
+     */
+    @ResponseBody
+    @GetMapping("/list/{parentId}")
+    public List<DataPartDO> listParentID(@PathVariable("parentId") String parentId) {
+        // 查询列表数据
+        Map<String, Object> map = new HashMap<>(16);
+        map.put("parentId", parentId);
+        List<DataPartDO> list = dataPartService.list(map);
+        return list;
+    }
+
+}

+ 98 - 0
src/main/java/com/bootdo/datas/controller/DataSendProvinceController.java

@@ -0,0 +1,98 @@
+package com.bootdo.datas.controller;
+
+
+import com.bootdo.common.annotation.Log;
+import com.bootdo.common.utils.PageUtils;
+import com.bootdo.common.utils.Query;
+import com.bootdo.common.utils.R;
+
+import com.bootdo.common.utils.StringUtils;
+import com.bootdo.datas.dto.GyDataImportDTO;
+import com.bootdo.datas.service.GyDataService;
+
+import com.google.common.collect.Lists;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@Controller
+@RequestMapping("/datas/dataSendProvince")
+public class DataSendProvinceController {
+
+    private static Logger log = LoggerFactory.getLogger(DataSendProvinceController.class);
+
+    @Autowired
+    private GyDataService gyDataService;
+
+    @GetMapping()
+    @Log("访问送审省级")
+    @RequiresPermissions("datas:dataSendProvince:data")
+    String Data() {
+        return "datas/dataSendProvince/data";
+    }
+
+    @ResponseBody
+    @GetMapping("/list")
+    @RequiresPermissions("datas:dataSendProvince:data")
+    public PageUtils list(@RequestParam Map<String, Object> params) {
+        // 查询列表数据
+        Query query = new Query(params);
+        query.put("dataStatusArrs", Lists.newArrayList(3));
+        query.put("auditStageMenu", "1");
+        query.put("neqDataStatus", "4");
+
+        List<GyDataImportDTO> dataList = gyDataService.list(query);
+        int total = gyDataService.countTotal(query);
+        PageUtils pageUtils = new PageUtils(dataList, total);
+        return pageUtils;
+    }
+
+
+    @GetMapping("/edit/{id}")
+    @RequiresPermissions("datas:dataSendProvince:edit")
+    String edit(@PathVariable("id") Long id, Model model) {
+        GyDataImportDTO data = gyDataService.get(id);
+        model.addAttribute("data", data);
+        return "datas/dataSendProvince/edit";
+    }
+
+
+    /**
+     * @Description: 送审
+     */
+    @PostMapping("/sendVerify")
+    @ResponseBody
+    @RequiresPermissions("datas:dataSendProvince:sendVerify")
+    public R sendVerify(@RequestParam("ids[]") Long[] ids) {
+        log.info("送审 ids:" + ids.toString());
+        for (Long id : ids) {
+            log.info("送审 id:" + id);
+            GyDataImportDTO data = new GyDataImportDTO();
+            // 判断是否已审核过
+            data = gyDataService.get(id);
+            // 送审状态 0 未送审 1 送审 2 专家审核
+            log.info("status:" + data.getSendVerify());
+            if (!"0".equals(data.getSendVerify())
+                    && "1".equals(data.getAuditStage())
+                    && "3".equals(data.getDataStatus())) {
+                data.setId(id);
+                data.setSendVerify("0");// 0 未送审 1 送审 2 专家审核
+                // 0:待审核 1:删除 2:审核中 3:通过审核 4:驳回
+                data.setDataStatus("0");
+                data.setAuditStage("2");
+                gyDataService.updateStatus(data);
+            }
+        }
+        return R.ok();
+    }
+
+
+
+}

+ 32 - 0
src/main/java/com/bootdo/datas/dao/DataPartDao.java

@@ -0,0 +1,32 @@
+package com.bootdo.datas.dao;
+
+import com.bootdo.datas.domain.DataPartDO;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 分类分级
+ * @author admin
+ * @email admin@163.com
+ * @date 2022-02-27 23:33:17
+ */
+@Mapper
+public interface DataPartDao {
+
+	DataPartDO get(Long partId);
+	
+	List<DataPartDO> list(Map<String,Object> map);
+	
+	int count(Map<String,Object> map);
+	
+	int save(DataPartDO dataPart);
+	
+	int update(DataPartDO dataPart);
+	
+	int remove(Long PART_ID);
+	
+	int batchRemove(Long[] partIds);
+}

+ 120 - 0
src/main/java/com/bootdo/datas/domain/DataPartDO.java

@@ -0,0 +1,120 @@
+package com.bootdo.datas.domain;
+
+import java.io.Serializable;
+
+
+/**
+ * 分类分级
+ * 
+ * @author admin
+ * @email admin@163.com
+ * @date 2022-02-27 23:33:17
+ */
+public class DataPartDO implements Serializable {
+	private static final long serialVersionUID = 1L;
+	
+	//
+	private Long partId;
+	//上级部门ID,一级部门为0
+	private Long parentId;
+	//部门名称
+	private String partName;
+	//描述
+	private String partDesc;
+	//描述
+	private String partIsMajor;
+	//排序
+	private Integer orderNum;
+	//是否删除  -1:已删除  0:正常
+	private Integer delFlag;
+
+	/**
+	 * 设置:
+	 */
+	public void setPartId(Long partId) {
+		this.partId = partId;
+	}
+	/**
+	 * 获取:
+	 */
+	public Long getPartId() {
+		return partId;
+	}
+	/**
+	 * 设置:上级部门ID,一级部门为0
+	 */
+	public void setParentId(Long parentId) {
+		this.parentId = parentId;
+	}
+	/**
+	 * 获取:上级部门ID,一级部门为0
+	 */
+	public Long getParentId() {
+		return parentId;
+	}
+	/**
+	 * 设置:部门名称
+	 */
+	public void setPartName(String partName) {
+		this.partName = partName;
+	}
+	/**
+	 * 获取:部门名称
+	 */
+	public String getPartName() {
+		return partName;
+	}
+	/**
+	 * 设置:描述
+	 */
+	public void setPartDesc(String partDesc) {
+		this.partDesc = partDesc;
+	}
+	/**
+	 * 获取:描述
+	 */
+	public String getPartDesc() {
+		return partDesc;
+	}
+	/**
+	 * 设置:描述
+	 */
+	public void setPartIsMajor(String partIsMajor) {
+		this.partIsMajor = partIsMajor;
+	}
+	/**
+	 * 获取:描述
+	 */
+	public String getPartIsMajor() {
+		return partIsMajor;
+	}
+	/**
+	 * 设置:排序
+	 */
+	public void setOrderNum(Integer orderNum) {
+		this.orderNum = orderNum;
+	}
+	/**
+	 * 获取:排序
+	 */
+	public Integer getOrderNum() {
+		return orderNum;
+	}
+	/**
+	 * 设置:是否删除  -1:已删除  0:正常
+	 */
+	public void setDelFlag(Integer delFlag) {
+		this.delFlag = delFlag;
+	}
+	/**
+	 * 获取:是否删除  -1:已删除  0:正常
+	 */
+	public Integer getDelFlag() {
+		return delFlag;
+	}
+
+	@Override
+	public String toString() {
+		return "DataPartDO{" + "partId=" + partId + ", parentId=" + parentId + ", partName='" + partName + '\'' + ", partDesc='" + partDesc + '\'' + ", partIsMajor='" + partIsMajor + '\'' + ", orderNum=" + orderNum + ", delFlag=" + delFlag + '}';
+	}
+}

+ 35 - 0
src/main/java/com/bootdo/datas/domain/ExpertOpinionDO.java

@@ -0,0 +1,35 @@
+package com.bootdo.datas.domain;
+
+import java.io.Serializable;
+
+
+/**
+ * 
+ * 
+ * @author admin
+ * @email admin@163.com
+ * @date 2022-03-01 17:56:11
+ */
+public class ExpertOpinionDO implements Serializable {
+	private static final long serialVersionUID = 1L;
+	//
+	private Long id;
+	//
+	private String opinion;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getOpinion() {
+		return opinion;
+	}
+
+	public void setOpinion(String opinion) {
+		this.opinion = opinion;
+	}
+}

+ 30 - 0
src/main/java/com/bootdo/datas/service/DataPartService.java

@@ -0,0 +1,30 @@
+package com.bootdo.datas.service;
+
+import com.bootdo.datas.domain.DataPartDO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 分类分级
+ * 
+ * @author admin
+ * @email admin@163.com
+ * @date 2022-02-27 23:33:17
+ */
+public interface DataPartService {
+	
+	DataPartDO get(Long partId);
+	
+	List<DataPartDO> list(Map<String, Object> map);
+	
+	int count(Map<String, Object> map);
+	
+	int save(DataPartDO dataPart);
+	
+	int update(DataPartDO dataPart);
+	
+	int remove(Long partId);
+	
+	int batchRemove(Long[] partIds);
+}

+ 76 - 0
src/main/java/com/bootdo/datas/service/impl/DataPartServiceImpl.java

@@ -0,0 +1,76 @@
+package com.bootdo.datas.service.impl;
+
+import com.bootdo.datas.dao.DataPartDao;
+import com.bootdo.datas.domain.DataPartDO;
+import com.bootdo.datas.service.DataPartService;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+@Service
+public class DataPartServiceImpl implements DataPartService {
+	@Autowired
+	private DataPartDao dataPartDao;
+	
+	@Override
+	public DataPartDO get(Long partId){
+		return dataPartDao.get(partId);
+	}
+	
+	@Override
+	public List<DataPartDO> list(Map<String, Object> map){
+		return dataPartDao.list(map);
+	}
+	
+	@Override
+	public int count(Map<String, Object> map){
+		return dataPartDao.count(map);
+	}
+	
+	@Override
+	public int save(DataPartDO dataPart){
+		return dataPartDao.save(dataPart);
+	}
+
+	@Override
+	public int update(DataPartDO dataPart) {
+		return dataPartDao.update(dataPart);
+	}
+
+	@Override
+	public int remove(Long partId) {
+		// 递归删除
+		recursion(partId);
+		return dataPartDao.remove(partId);
+	}
+
+	/**
+	 * 遍历删除父类的子集 子集的子集等
+	 *
+	 * @param partId
+	 */
+	private void recursion(Long partId) {
+		Map<String, Object> map = new HashMap<>(3);
+		map.put("parentId", partId);
+		List<DataPartDO> list = list(map);
+		List<Long> collect = list.stream().map(DataPartDO::getPartId).collect(Collectors.toList());
+		if (CollectionUtils.isNotEmpty(collect)) {
+			this.batchRemove(collect.toArray(new Long[collect.size()]));
+			for (Long aLong : collect) {
+				recursion(aLong);
+			}
+		}
+	}
+	
+	@Override
+	public int batchRemove(Long[] partIds){
+		return dataPartDao.batchRemove(partIds);
+	}
+	
+}

+ 86 - 0
src/main/resources/mybatis/datas/DataPartMapper.xml

@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.bootdo.datas.dao.DataPartDao">
+
+	<select id="get" resultType="com.bootdo.datas.domain.DataPartDO">
+		select `PART_ID`,`parent_id`,`PART_NAME`,`PART_DESC`,`PART_IS_MAJOR`,`order_num`,`del_flag` from gy_data_part where PART_ID = #{value}
+	</select>
+
+	<select id="list" resultType="com.bootdo.datas.domain.DataPartDO">
+		select `PART_ID`,`parent_id`,`PART_NAME`,`PART_DESC`,`PART_IS_MAJOR`,`order_num`,`del_flag` from gy_data_part
+        <where>  
+		  		  <if test="partId != null and partId != ''"> and PART_ID = #{partId} </if>
+		  		  <if test="parentId != null and parentId != ''"> and parent_id = #{parentId} </if>
+		  		  <if test="partName != null and partName != ''"> and PART_NAME = #{partName} </if>
+		  		  <if test="partDesc != null and partDesc != ''"> and PART_DESC = #{partDesc} </if>
+		  		  <if test="partIsMajor != null and partIsMajor != ''"> and PART_IS_MAJOR = #{partIsMajor} </if>
+		  		  <if test="orderNum != null and orderNum != ''"> and order_num = #{orderNum} </if>
+		  		  <if test="delFlag != null and delFlag != ''"> and del_flag = #{delFlag} </if>
+		  		</where>
+        <choose>
+			<otherwise>
+                order by order_num desc
+			</otherwise>
+        </choose>
+	</select>
+	
+ 	<select id="count" resultType="int">
+		select count(*) from gy_data_part
+		 <where>  
+		  		  <if test="partId != null and partId != ''"> and PART_ID = #{partId} </if>
+		  		  <if test="parentId != null and parentId != ''"> and parent_id = #{parentId} </if>
+		  		  <if test="partName != null and partName != ''"> and PART_NAME = #{partName} </if>
+		  		  <if test="partDesc != null and partDesc != ''"> and PART_DESC = #{partDesc} </if>
+		  		  <if test="partIsMajor != null and partIsMajor != ''"> and PART_IS_MAJOR = #{partIsMajor} </if>
+		  		  <if test="orderNum != null and orderNum != ''"> and order_num = #{orderNum} </if>
+		  		  <if test="delFlag != null and delFlag != ''"> and del_flag = #{delFlag} </if>
+		  		</where>
+	</select>
+	 
+	<insert id="save" parameterType="com.bootdo.datas.domain.DataPartDO" useGeneratedKeys="true" keyProperty="partId">
+		insert into gy_data_part
+		(
+			`parent_id`, 
+			`PART_NAME`, 
+			`PART_DESC`, 
+			`PART_IS_MAJOR`, 
+			`order_num`, 
+			`del_flag`
+		)
+		values
+		(
+			#{parentId}, 
+			#{partName}, 
+			#{partDesc}, 
+			#{partIsMajor}, 
+			#{orderNum}, 
+			#{delFlag}
+		)
+	</insert>
+	 
+	<update id="update" parameterType="com.bootdo.datas.domain.DataPartDO">
+		update gy_data_part
+		<set>
+			<if test="parentId != null">`parent_id` = #{parentId}, </if>
+			<if test="partName != null">`PART_NAME` = #{partName}, </if>
+			<if test="partDesc != null">`PART_DESC` = #{partDesc}, </if>
+			<if test="partIsMajor != null">`PART_IS_MAJOR` = #{partIsMajor}, </if>
+			<if test="orderNum != null">`order_num` = #{orderNum}, </if>
+			<if test="delFlag != null">`del_flag` = #{delFlag}</if>
+		</set>
+		where PART_ID = #{partId}
+	</update>
+	
+	<delete id="remove">
+		delete from gy_data_part where PART_ID = #{value}
+	</delete>
+	
+	<delete id="batchRemove">
+		delete from gy_data_part where PART_ID in
+		<foreach item="partId" collection="array" open="(" separator="," close=")">
+			#{partId}
+		</foreach>
+	</delete>
+
+</mapper>

BIN
src/main/resources/static/img/1-loading-bg.png


+ 55 - 0
src/main/resources/static/js/appjs/datas/dataPart/add.js

@@ -0,0 +1,55 @@
+$().ready(function() {
+	validateRule();
+});
+
+$.validator.setDefaults({
+	submitHandler : function() {
+		save();
+	}
+});
+function save() {
+	$.ajax({
+		cache : true,
+		type : "POST",
+		url : "/datas/dataPart/save",
+		data : $('#signupForm').serialize(),// 你的formid
+		async : false,
+		error : function(request) {
+			parent.layer.alert("Connection error");
+		},
+		success : function(data) {
+			if (data.code == 0) {
+				parent.layer.msg("操作成功");
+				parent.reLoad();
+				var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+				parent.layer.close(index);
+
+			} else {
+				parent.layer.alert(data.msg)
+			}
+
+		}
+	});
+
+}
+function validateRule() {
+	var icon = "<i class='fa fa-times-circle'></i> ";
+	$("#signupForm").validate({
+		rules : {
+			name : {
+				required: true
+			}
+		},
+		messages: {
+			name: {
+				required: icon + "请输入姓名"
+			}
+		}
+	})
+}
+
+//返回
+$("#go_back").click(function () {
+	var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+	parent.layer.close(index);
+});

+ 187 - 0
src/main/resources/static/js/appjs/datas/dataPart/dataPart.js

@@ -0,0 +1,187 @@
+var prefix = "/datas/dataPart"
+var counts = 0;
+$(document).ready(function () {
+    load();
+});
+
+var load = function () {
+    $('#exampleTable')
+        .bootstrapTreeTable(
+            {
+                id: 'partId',
+                code: 'partId',
+                parentCode: 'parentId',
+                type: "GET", // 请求数据的ajax类型
+                url: prefix + '/list', // 请求数据的ajax的url
+                ajaxParams: {
+                    sort: 'order_num',
+                    partName: $('#searchName').val()
+                }, // 请求数据的ajax的data属性
+                expandColumn: '1',// 在哪一列上面显示展开按钮
+                striped: true, // 是否各行渐变色
+                bordered: true, // 是否显示边框
+                expandAll: false, // 是否全部展开
+                // toolbar : '#exampleToolbar',
+                columns: [
+                    // {
+                    //     title: '编号',
+                    //     field: 'partId',
+                    //     visible: false,
+                    //     align: 'center',
+                    //     valign: 'center',
+                    //     width: '5%'
+                    // },
+                    {
+                        field: 'no',
+                        title: '序号',
+                        align: "center",
+                        width: "5%",
+                        formatter: function (value, row, index) {
+                            return showCounts();
+                        }
+                    },
+                    {
+                        title: '数据分类',
+                        field: 'partName',
+                    },
+                    {
+                        title: '数据分类描述',
+                        field: 'partDesc'
+                    },
+                    {
+                        title: '重要程度',
+                        field: 'partIsMajor',
+                        formatter: function (item, index) {
+                            if (item.partIsMajor == '0') {
+                                return '<span class="label label-primary">一般</span>';
+                            } else if (item.partIsMajor == '1') {
+                                return '<span class="label  label-danger">重要</span>';
+                            }
+                        }
+                    },
+                    {
+                        title: '操作',
+                        field: 'id',
+                        align: 'center',
+                        width: '20%',
+                        valign: 'center',
+                        formatter: function (item, index) {
+                            var e = '<a class="btn btn-primary btn-sm '
+                                + s_edit_h
+                                + '" href="#" mce_href="#" title="编辑" onclick="edit(\''
+                                + item.partId
+                                + '\')"><i class="fa fa-edit"></i></a> ';
+                            var p = '<a class="btn btn-primary btn-sm '
+                                + s_add_h
+                                + '" href="#" mce_href="#" title="添加下级" onclick="add(\''
+                                + item.partId
+                                + '\')"><i class="fa fa-plus"></i></a> ';
+                            var d = '<a class="btn btn-warning btn-sm '
+                                + s_remove_h
+                                + '" href="#" title="删除"  mce_href="#" onclick="remove(\''
+                                + item.partId
+                                + '\')"><i class="fa fa-remove"></i></a> ';
+                            return e + d + p;
+                        }
+                    }]
+            });
+}
+
+function reLoad() {
+    // $('#exampleTable').bootstrapTable('refresh');
+    // $('#exampleTable').bootstrapTreeTable('refresh');
+    // $('#exampleTable').bootstrapTreeTable('refresh');
+    $('.fixed-table-container').removeClass("fixed-table-container");
+    // $('#exampleTable').bootstrapTreeTable('destroy');
+    load();
+    // $("#exampleTable").bootstrapTreeTable("refresh", {
+    //     silent: true //静态刷新
+    // });
+}
+
+function add(pId) {
+    layer.open({
+        type: 2,
+        title: '增加',
+        maxmin: true,
+        shadeClose: false, // 点击遮罩关闭层
+        area: ['800px', '520px'],
+        content: prefix + '/add/' + pId
+    });
+}
+
+function edit(id) {
+    layer.open({
+        type: 2,
+        title: '编辑',
+        maxmin: true,
+        shadeClose: false, // 点击遮罩关闭层
+        area: ['800px', '520px'],
+        content: prefix + '/edit/' + id // iframe的url
+    });
+}
+
+function remove(id) {
+    layer.confirm('确定要删除选中的记录及子项吗?', {
+        btn: ['确定', '取消']
+    }, function () {
+        $.ajax({
+            url: prefix + "/remove",
+            type: "post",
+            data: {
+                'partId': id
+            },
+            success: function (r) {
+                if (r.code == 0) {
+                    layer.msg(r.msg);
+                    reLoad();
+                } else {
+                    layer.msg(r.msg);
+                }
+            }
+        });
+    })
+}
+
+function resetPwd(id) {
+}
+
+function batchRemove() {
+    var rows = $('#exampleTable').bootstrapTable('getSelections'); // 返回所有选择的行,当没有选择的记录时,返回一个空数组
+    if (rows.length == 0) {
+        layer.msg("请选择要删除的数据");
+        return;
+    }
+    layer.confirm("确认要删除选中的'" + rows.length + "'条数据吗?", {
+        btn: ['确定', '取消']
+        // 按钮
+    }, function () {
+        var ids = new Array();
+        // 遍历所有选择的行数据,取每条数据对应的ID
+        $.each(rows, function (i, row) {
+            ids[i] = row['partId'];
+        });
+        $.ajax({
+            type: 'POST',
+            data: {
+                "ids": ids
+            },
+            url: prefix + '/batchRemove',
+            success: function (r) {
+                if (r.code == 0) {
+                    layer.msg(r.msg);
+                    reLoad();
+                } else {
+                    layer.msg(r.msg);
+                }
+            }
+        });
+    }, function () {
+
+    });
+}
+
+function showCounts() {
+    counts = counts + 1;
+    return counts;
+}

+ 81 - 0
src/main/resources/static/js/appjs/datas/dataPart/dataPartView.js

@@ -0,0 +1,81 @@
+var prefix = "/datas/dataPart"
+var counts = 0;
+$(document).ready(function () {
+    load();
+});
+
+var load = function () {
+    $('#exampleTable')
+        .bootstrapTreeTable(
+            {
+                id: 'partId',
+                code: 'partId',
+                parentCode: 'parentId',
+                type: "GET", // 请求数据的ajax类型
+                url: prefix + '/list', // 请求数据的ajax的url
+                ajaxParams: {
+                    sort: 'order_num',
+                    partName: $('#searchName').val()
+                }, // 请求数据的ajax的data属性
+                expandColumn: '1',// 在哪一列上面显示展开按钮
+                striped: true, // 是否各行渐变色
+                bordered: true, // 是否显示边框
+                expandAll: false, // 是否全部展开
+                // toolbar : '#exampleToolbar',
+                columns: [
+                    // {
+                    //     title: '编号',
+                    //     field: 'partId',
+                    //     visible: false,
+                    //     align: 'center',
+                    //     valign: 'center',
+                    //     width: '5%'
+                    // },
+                    {
+                        field: 'no',
+                        title: '序号',
+                        align: "center",
+                        width: "5%",
+                        formatter: function (value, row, index) {
+                            return showCounts();
+                        }
+                    },
+                    {
+                        title: '数据分类',
+                        field: 'partName',
+                    },
+                    {
+                        title: '数据分类描述',
+                        field: 'partDesc'
+                    },
+                    {
+                        title: '重要程度',
+                        field: 'partIsMajor',
+                        formatter: function (item, index) {
+                            if (item.partIsMajor == '0') {
+                                return '<span class="label label-primary">一般</span>';
+                            } else if (item.partIsMajor == '1') {
+                                return '<span class="label  label-danger">重要</span>';
+                            }
+                        }
+                    }
+                ]
+            });
+}
+
+function reLoad() {
+    // $('#exampleTable').bootstrapTable('refresh');
+    // $('#exampleTable').bootstrapTreeTable('refresh');
+    // $('#exampleTable').bootstrapTreeTable('refresh');
+    $('.fixed-table-container').removeClass("fixed-table-container");
+    // $('#exampleTable').bootstrapTreeTable('destroy');
+    load();
+    // $("#exampleTable").bootstrapTreeTable("refresh", {
+    //     silent: true //静态刷新
+    // });
+}
+
+function showCounts() {
+    counts = counts + 1;
+    return counts;
+}

+ 55 - 0
src/main/resources/static/js/appjs/datas/dataPart/edit.js

@@ -0,0 +1,55 @@
+$().ready(function() {
+	validateRule();
+});
+
+$.validator.setDefaults({
+	submitHandler : function() {
+		update();
+	}
+});
+function update() {
+	$.ajax({
+		cache : true,
+		type : "POST",
+		url : "/datas/dataPart/update",
+		data : $('#signupForm').serialize(),// 你的formid
+		async : false,
+		error : function(request) {
+			parent.layer.alert("Connection error");
+		},
+		success : function(data) {
+			if (data.code == 0) {
+				parent.layer.msg("操作成功");
+				parent.reLoad();
+				var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+				parent.layer.close(index);
+
+			} else {
+				parent.layer.alert(data.msg)
+			}
+
+		}
+	});
+
+}
+function validateRule() {
+	var icon = "<i class='fa fa-times-circle'></i> ";
+	$("#signupForm").validate({
+		rules : {
+			name : {
+                required: true
+            }
+        },
+        messages: {
+            name: {
+                required: icon + "请输入名字"
+            }
+        }
+    })
+}
+
+//返回
+$("#go_back").click(function () {
+    var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+    parent.layer.close(index);
+});

+ 265 - 0
src/main/resources/static/js/appjs/datas/dataSendProvince/data.js

@@ -0,0 +1,265 @@
+var prefix = "/datas/dataSendProvince"
+var unSelected = "#999";
+var selected = "#333";
+$(function () {
+    load();
+    //数据级别
+    loadLevel();
+    //所属行业子类
+    // loadIndustry();
+    //所属行业
+    loadIndustryType();
+    //数据类别
+    loadType();
+    //初始化联合审批部门
+    load_direct_select();
+    //地市
+    loadCity();
+
+    //loadAuditStage();
+
+});
+
+$('.dropdown-toggle').dropdown();
+var myColumns = [];
+myColumns.push({
+        checkbox: true
+    },
+    {
+        field: 'no',
+        title: '序号',
+        align: "center",
+        width: 65,
+        formatter: function (value, row, index) {
+            //获取每页显示的数量
+            var pageSize = $('#exampleTable').bootstrapTable('getOptions').pageSize;
+            //获取当前是第几页
+            var pageNumber = $('#exampleTable').bootstrapTable('getOptions').pageNumber;
+            //返回序号,注意index是从0开始的,所以要加上1
+            return pageSize * (pageNumber - 1) + index + 1;
+        }
+    })
+$.each(commonData,function (index,value){
+    myColumns.push(value);
+})
+
+myColumns.push(
+    {
+        // 1:市级 2:省级
+        field: 'auditStage',
+        title: '审核阶段',
+        titleTooltip: "审核阶段",
+        formatter: function (item, index) {
+            if (item == '1') {
+                return '<span class="label  label-primary">市级</span>';
+            } else if (item == '2') {
+                return '<span class="label  label-success">省级</span>';
+            }
+        },
+        width: 120,
+        align: "center",
+    },
+      {
+        // 0:正常 1:删除 2:已上报 3:通过审核 4:驳回 5:联合审批  6:终审
+        field: 'dataStatus',
+        title: '状态',
+        titleTooltip: "状态",
+        formatter: function (item, index) {
+            if (item == '2') {
+                return '<span class="label  label-primary">审核中</span>';
+            } else if (item == '3') {
+                return '<span class="label  label-success">通过审核</span>';
+            } else if (item == '4') {
+                return '<span class="label  label-danger">驳回</span>';
+            } else if (item == '5') {
+                return '<span class="label  label-danger">联合审核</span>';
+            } else if (item == '6') {
+                return '<span class="label  label-danger">终审</span>';
+            }
+
+        },
+        width: 120,
+        align: "center",
+    },
+    {
+        title: '操作',
+        field: 'id',
+        align: 'center',
+        width: '200px',
+        formatter: function (value, row, index) {
+            var e = '<a class="btn btn-primary btn-sm ' + s_edit_h + '" href="#" mce_href="#" title="详情" onclick="edit(\''
+                + row.id
+                + '\')"><i class="fa fa-book"></i></a> ';
+            return e;
+        }
+    });
+
+function load() {
+    $('#exampleTable')
+        .bootstrapTable(
+            {
+                method: 'get', // 服务器数据的请求方式 get or post
+                url: prefix + "/list", // 服务器数据的加载地址
+                //	showRefresh : true,
+                //	showToggle : true,
+                //	showColumns : true,
+                iconSize: 'outline',
+                toolbar: '#exampleToolbar',
+                striped: true, // 设置为true会有隔行变色效果
+                dataType: "json", // 服务器返回的数据类型
+                pagination: true, // 设置为true会在底部显示分页条
+                // queryParamsType : "limit",
+                // //设置为limit则会发送符合RESTFull格式的参数
+                singleSelect: false, // 设置为true将禁止多选
+                // contentType : "application/x-www-form-urlencoded",
+                // //发送到服务器的数据编码类型
+                pageSize: 10, // 如果设置了分页,每页数据条数
+                pageNumber: 1, // 如果设置了分布,首页页码
+                //search : true, // 是否显示搜索框
+                showColumns: true, // 是否显示内容下拉框(选择显示的列)
+                showRefresh: true,
+                // showExport: true,  //是否显示导出按钮
+                // exportDataType: "basic",              //basic', 'all', 'selected'.
+                // buttonsAlign:"right",  //按钮位置
+                // exportTypes:['csv', 'xlsx'],  //导出文件类型
+                // Icons:'glyphicon-export',
+                sidePagination: "server", // 设置在哪里进行分页,可选值为"client" 或者 "server"
+                // exportOptions:{
+                //     ignoreColumn: [0,1],  //忽略某一列的索引
+                //     fileName: '备案数据信息',  //文件名称设置
+                //     worksheetName: 'sheet1',  //表格工作区名称
+                //     tableName: '备案数据表',
+                //     excelstyles: ['background-color', 'color', 'font-size', 'font-weight'],
+                //     onMsoNumberFormat: DoOnMsoNumberFormat
+                // },
+                queryParams: function (params) {
+                    return {
+                        //说明:传入后台的参数包括offset开始索引,limit步长,sort排序列,order:desc或者,以及所有列的键值对
+                        limit: params.limit,
+                        offset: params.offset,
+                        dataName: $('#dataName').val(),
+                        reporterUnit: $('#reporterUnit').val(),
+                        dataIndustry: $('#dataIndustry').val(),
+                        industryTypeOne: $('#industryTypeOne').val(),
+                        dataStatus: $('#status').val(),
+                        dataLevel: $('#dataLevel').val(),
+                        //auditStage: $('#auditStage').val(),
+                        unitCity: $('#unitCity').val(), //市区
+                    };
+                },
+                onLoadSuccess: function () {
+                    //鼠标悬停显示全部内容~
+                    $('.bootstrap-table tr td').each(function () {
+                        $(this).attr("title", $(this).text());
+                        $(this).css("cursor", 'pointer');
+                    });
+                },
+                columns: myColumns
+            })
+        /*table resize*/
+        .colResizable({
+            liveDrag: true,
+            gripInnerHtml: "<div class='grip'></div>",
+            draggingClass: "dragging",
+            resizeMode: 'fit'
+        });
+}
+
+function reLoad() {
+    // $('#exampleTable').bootstrapTable('refresh');
+    $('#exampleTable').bootstrapTable('destroy');
+    load();
+}
+function edit(id) {
+    layer.open({
+        type: 2,
+        title: '详情',
+        maxmin: true,
+        shadeClose: false, // 点击遮罩关闭层
+        area: ['100%', '100%'],
+        content: prefix + '/edit/' + id // iframe的url
+    });
+}
+
+
+//重置查询条件
+function reset() {
+    //重置
+    $('.form-group').find('input,select').val("");
+    //重置行业
+    // $('#dataIndustry').val("--选择行业--");
+    $("#dataIndustry").val("").trigger("chosen:updated");
+    $("#industryType").val("").trigger("chosen:updated");
+    $("#unitCity").val("").trigger("chosen:updated");
+    $("#dataLevel").val("").trigger("chosen:updated");
+    //$("#auditStage").val("").trigger("chosen:updated");
+}
+
+//选择导出
+function batchExports() {
+    var rows = $('#exampleTable').bootstrapTable('getSelections'); // 返回所有选择的行,当没有选择的记录时,返回一个空数组
+    if (rows.length == 0) {
+        layer.msg("请选择要导出的备案数据");
+        return;
+    }
+    layer.confirm("确认要导出选中的'" + rows.length + "'条备案数据吗?", {
+        btn: ['确定', '取消']
+        // 按钮
+    }, function () {
+        var ids = new Array();
+        // 遍历所有选择的行数据,取每条数据对应的ID
+        $.each(rows, function (i, row) {
+            ids[i] = row['id'];
+        });
+        layer.close(layer.index);
+        location.href = prefix + "/batchExports?idValue=" + JSON.stringify(ids).replace('[', '%5B').replace(']', '%5D');
+        // location.href = prefix + "/batchExports?idValue=" + JSON.stringify(ids);
+    }, function () {
+
+    });
+}
+
+function DoOnMsoNumberFormat(cell, row, col) {
+    var result = "";
+    if (row > 0 && col == 0)
+        result = "\\@";
+    return result;
+}
+
+
+//送审 sendVerify
+function sendVerifyBatch() {
+    var rows = $('#exampleTable').bootstrapTable('getSelections'); // 返回所有选择的行,当没有选择的记录时,返回一个空数组
+    if (rows.length == 0) {
+        layer.msg("请选择要送审的备案数据");
+        return;
+    }
+    layer.confirm("确认要送审选中的'" + rows.length + "'条备案数据吗?", {
+        btn: ['确定', '取消']
+        // 按钮
+    }, function () {
+        var ids = new Array();
+        // 遍历所有选择的行数据,取每条数据对应的ID
+        $.each(rows, function (i, row) {
+            ids[i] = row['id'];
+        });
+        $.ajax({
+            type: 'POST',
+            data: {
+                "ids": ids
+            },
+            url: prefix + '/sendVerify',
+            success: function (r) {
+                if (r.code == 0) {
+                    layer.msg(r.msg);
+                    reLoad();
+                } else {
+                    layer.msg(r.msg);
+                }
+            }
+        });
+    }, function () {
+
+    });
+}
+

+ 59 - 0
src/main/resources/static/js/appjs/datas/expertVerify/expertOpinion.js

@@ -0,0 +1,59 @@
+$().ready(function() {
+	validateRule();
+});
+
+$.validator.setDefaults({
+	submitHandler : function() {
+		save();
+	}
+});
+
+function save() {
+	$.ajax({
+		cache : true,
+		type : "POST",
+		url : "/datas/expertVerify/addExpertOpinion",
+		data : $('#signupForm').serialize(),// 你的formid
+		async : false,
+		error : function(request) {
+			parent.layer.alert("Connection error");
+		},
+		success : function(data) {
+			if (data.code == 0) {
+				parent.layer.msg("操作成功");
+				parent.reLoad();
+				var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+				parent.layer.close(index);
+
+			} else {
+				parent.layer.alert(data.msg)
+			}
+
+		}
+	});
+
+}
+function validateRule() {
+	var icon = "<i class='fa fa-times-circle'></i> ";
+	$("#signupForm").validate({
+		rules : {
+			opinion : {
+				required : true
+			}
+		},
+		messages : {
+
+			opinion : {
+				required : icon + "请输入姓名专家意见"
+			}
+		},
+		ignore:":hidden:not(select)",
+	})
+}
+
+
+//返回
+$("#go_back").click(function () {
+	var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+	parent.layer.close(index);
+});

+ 74 - 0
src/main/resources/templates/datas/dataPart/add.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<head th:include="include :: header"></head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content ">
+    <div class="row">
+        <div class="col-sm-12">
+            <div class="ibox float-e-margins">
+                <div class="ibox-content">
+                    <form class="form-horizontal m-t" id="signupForm">
+						<input id="parentId" name="parentId" type="hidden"
+							   th:value="${pId}">
+
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">上级分类数据名称:</label>
+                            <div class="col-sm-8">
+                                <input id="" name="" class="form-control" type="text" th:value="${pName}" readonly>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">分类数据名称:</label>
+                            <div class="col-sm-8">
+                                <input id="partName" name="partName" class="form-control" type="text" >
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">分类数据描述:</label>
+                            <div class="col-sm-8">
+                                <textarea id="partDesc" name="partDesc" class="form-control" ></textarea>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">是否重要:</label>
+<!--                            <div class="col-sm-8">-->
+<!--                                <input id="partIsMajor" name="partIsMajor" class="form-control" type="text">-->
+<!--                            </div>-->
+                            <div class="col-sm-8">
+                                <label class="radio-inline">
+                                    <input type="radio" name="partIsMajor" value="0" checked /> 一般
+                                </label> <label class="radio-inline">
+                                <input type="radio"  name="partIsMajor" value="1" /> 重要
+                            </label>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">排序:</label>
+                            <div class="col-sm-8">
+                                <input id="orderNum" name="orderNum" class="form-control" type="text">
+                            </div>
+                        </div>
+<!--                        <div class="form-group">-->
+<!--                            <label class="col-sm-3 control-label">是否删除 -1:已删除 0:正常:</label>-->
+<!--                            <div class="col-sm-8">-->
+<!--                                <input id="delFlag" name="delFlag" class="form-control" type="text">-->
+<!--                            </div>-->
+<!--                        </div>-->
+                        <div class="form-group">
+                            <div class="col-sm-8 col-sm-offset-3">
+                                <button type="reset" class="btn btn-outline-secondary" id="go_back">返回</button>
+                                <button type="submit" class="btn btn-primary">提交</button>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<div th:include="include::footer"></div>
+<script type="text/javascript" src="/js/appjs/datas/dataPart/add.js">
+</script>
+</body>
+</html>

+ 67 - 0
src/main/resources/templates/datas/dataPart/dataPart.html

@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<head th:include="include :: header"></head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content ">
+		<div class="col-sm-12">
+			<div class="ibox">
+				<div class="ibox-body">
+					<div class="fixed-table-toolbar">
+						<div class="columns pull-left">
+							<button shiro:hasPermission="data:dataPart:add" type="button" class="btn  btn-primary" onclick="add('0')">
+								<i class="fa fa-plus" aria-hidden="true"></i> 添加
+							</button>
+							<button shiro:hasPermission="data:dataPart:batchRemove" type="button" class="btn  btn-danger"
+								onclick="batchRemove()">
+								<i class="fa fa-trash" aria-hidden="true"></i> 删除
+							</button>
+						</div>
+						<div class="columns pull-right">
+							<button class="btn btn-success" onclick="reLoad()">查询</button>
+						</div>
+						<div class="columns pull-right col-md-2 nopadding">
+							<input id="searchName" type="text" class="form-control"
+								placeholder="">
+						</div>
+					</div>
+					<table id="exampleTable" data-mobile-responsive="true" style="word-break:break-all; word-wrap:break-all;table-layout:fixed">
+					</table>
+				</div>
+			</div>
+		</div>
+	</div>
+	<!--shiro控制bootstraptable行内按钮看见性 来自bootdo的创新方案 -->
+		<div>
+			<script type="text/javascript">
+				var s_add_h = 'hidden';
+				var s_edit_h = 'hidden';
+				var s_remove_h = 'hidden';
+				var s_resetPwd_h = 'hidden';
+			</script>
+		</div>
+		<div shiro:hasPermission="data:dataPart:edit">
+			<script type="text/javascript">
+				s_edit_h = '';
+			</script>
+		</div>
+		<div shiro:hasPermission="data:dataPart:add">
+			<script type="text/javascript">
+				s_add_h = '';
+			</script>
+		</div>
+		<div shiro:hasPermission="data:dataPart:remove">
+			<script type="text/javascript">
+				var s_remove_h = '';
+			</script>
+		</div>
+		<div shiro:hasPermission="data:dataPart:resetPwd">
+			<script type="text/javascript">
+				var s_resetPwd_h = '';
+			</script>
+		</div>
+	</div>
+	<div th:include="include :: footer"></div>
+	<script type="text/javascript" src="/js/appjs/datas/dataPart/dataPart.js"></script>
+</body>
+</html>

+ 67 - 0
src/main/resources/templates/datas/dataPart/dataPartView.html

@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<head th:include="include :: header"></head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content ">
+		<div class="col-sm-12">
+			<div class="ibox">
+				<div class="ibox-body">
+					<div class="fixed-table-toolbar">
+						<div class="columns pull-left">
+							<button shiro:hasPermission="data:dataPart:add" type="button" class="btn  btn-primary" onclick="add('0')">
+								<i class="fa fa-plus" aria-hidden="true"></i> 添加
+							</button>
+							<button shiro:hasPermission="data:dataPart:batchRemove" type="button" class="btn  btn-danger"
+								onclick="batchRemove()">
+								<i class="fa fa-trash" aria-hidden="true"></i> 删除
+							</button>
+						</div>
+						<div class="columns pull-right">
+							<button class="btn btn-success" onclick="reLoad()">查询</button>
+						</div>
+						<div class="columns pull-right col-md-2 nopadding">
+							<input id="searchName" type="text" class="form-control"
+								   placeholder="数据分类">
+						</div>
+					</div>
+					<table id="exampleTable" data-mobile-responsive="true" style="word-break:break-all; word-wrap:break-all;table-layout:fixed"
+					</table>
+				</div>
+			</div>
+		</div>
+	</div>
+	<!--shiro控制bootstraptable行内按钮看见性 来自bootdo的创新方案 -->
+		<div>
+			<script type="text/javascript">
+				var s_add_h = 'hidden';
+				var s_edit_h = 'hidden';
+				var s_remove_h = 'hidden';
+				var s_resetPwd_h = 'hidden';
+			</script>
+		</div>
+		<div shiro:hasPermission="data:dataPart:edit">
+			<script type="text/javascript">
+				s_edit_h = '';
+			</script>
+		</div>
+		<div shiro:hasPermission="data:dataPart:add">
+			<script type="text/javascript">
+				s_add_h = '';
+			</script>
+		</div>
+		<div shiro:hasPermission="data:dataPart:remove">
+			<script type="text/javascript">
+				var s_remove_h = '';
+			</script>
+		</div>
+		<div shiro:hasPermission="data:dataPart:resetPwd">
+			<script type="text/javascript">
+				var s_resetPwd_h = '';
+			</script>
+		</div>
+	</div>
+	<div th:include="include :: footer"></div>
+	<script type="text/javascript" src="/js/appjs/datas/dataPart/dataPartView.js"></script>
+</body>
+</html>

+ 84 - 0
src/main/resources/templates/datas/dataPart/edit.html

@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<head th:include="include :: header"></head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content ">
+    <div class="row">
+        <div class="col-sm-12">
+            <div class="ibox float-e-margins">
+                <div class="ibox-content">
+                    <form class="form-horizontal m-t" id="signupForm">
+                        <input id="parentId" name="parentId" type="hidden" th:value="${pId}"/>
+                        <input id="partId" name="partId" th:value="${dataPart.partId}" type="hidden">
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">上级分类数据名称:</label>
+                            <div class="col-sm-8">
+                                <input id="" name="" th:value="${pName}"
+                                       class="form-control" type="text" readonly>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">分类数据名称:</label>
+                            <div class="col-sm-8">
+                                <input id="partName" name="partName" th:value="${dataPart.partName}"
+                                       class="form-control" type="text">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">分类数据描述:</label>
+                            <div class="col-sm-8">
+                                <input id="partDesc" name="partDesc" th:value="${dataPart.partDesc}"
+                                       class="form-control" type="text">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">是否重要:</label>
+                            <div class="col-sm-8">
+                                <label class="radio-inline">
+                                    <input th:field="*{dataPart.partIsMajor}" type="radio" name="status" value="0"/>一般
+                                </label>
+                                <label class="radio-inline">
+                                    <input th:field="*{dataPart.partIsMajor}" type="radio" name="status" value="1"/>重要
+                                </label>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">排序:</label>
+                            <div class="col-sm-8">
+                                <input id="orderNum" name="orderNum" th:value="${dataPart.orderNum}"
+                                       class="form-control" type="text">
+                            </div>
+                        </div>
+<!--                        <div class="form-group">-->
+<!--                            <label class="col-sm-3 control-label">状态:</label>-->
+<!--&lt;!&ndash;                            <div class="col-sm-8">&ndash;&gt;-->
+<!--&lt;!&ndash;                                <input id="delFlag" name="delFlag" th:value="${dataPart.delFlag}" class="form-control"&ndash;&gt;-->
+<!--&lt;!&ndash;                                       type="text">&ndash;&gt;-->
+<!--&lt;!&ndash;                            </div>&ndash;&gt;-->
+<!--                            <div class="col-sm-8">-->
+<!--                                <label class="radio-inline">-->
+<!--                                    <input th:field="*{dataPart.delFlag}" type="radio" name="status" value="0"/>正常-->
+<!--                                </label>-->
+<!--                                <label class="radio-inline">-->
+<!--                                    <input th:field="*{dataPart.delFlag}" type="radio" name="status" value="-1"/>删除-->
+<!--                                </label>-->
+<!--                            </div>-->
+<!--                        </div>-->
+                        <div class="form-group">
+                            <div class="col-sm-8 col-sm-offset-3">
+                                <button type="reset" class="btn btn-outline-secondary" id="go_back">返回</button>
+                                <button type="submit" class="btn btn-primary">提交</button>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<div th:include="include::footer"></div>
+<script type="text/javascript" src="/js/appjs/datas/dataPart/edit.js">
+</script>
+</body>
+</html>

+ 84 - 0
src/main/resources/templates/datas/dataSendProvince/data.html

@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<head th:include="include :: header"></head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content ">
+    <div class="col-sm-12">
+        <div class="ibox">
+            <div class="ibox-body">
+                <div class="form-inline m-t" role="form" >
+                    <div class="form-group">
+<!--                        <select data-placeholder="&#45;&#45;审核阶段&#45;&#45;" name="auditStage" id="auditStage"-->
+<!--                                style="width: 130px;"  class="form-control chosen-select-auditStage" tabindex="2" required >-->
+<!--                            <option value="">&#45;&#45;审核阶段&#45;&#45;</option>-->
+<!--                        </select>-->
+
+                        <select data-placeholder="--选择行业--" name="industryTypeOne" id="industryTypeOne"
+                                class="form-control chosen-select-industryType" tabindex="2" required
+                                style="font-size: 14px;color: #9b9ea3;">
+                            <option value="">--选择行业--</option>
+                        </select>
+                        <select data-placeholder="--数据级别--" name="dataLevel" id="dataLevel"
+                                style="width: 130px;"   class="form-control chosen-select-level" tabindex="2" required >
+                            <option value="">--数据级别--</option>
+                        </select>
+                        <select  data-placeholder="--选择城市--" name="unitCity" id="unitCity"
+                                style="width: 130px;" class="form-control chosen-select-city" tabindex="2" required>
+                            <option value="">--选择城市--</option>
+                        </select>
+                        <input id="reporterUnit" type="text" class="form-control"
+                               placeholder="数据处理者名称">
+                        <input id="dataName" type="text" class="form-control"
+                               placeholder="数据名称">
+
+                        <button class="btn btn-success" onclick="reLoad()">查询</button>
+                        <button class="btn btn-success" onclick="reset()">重置</button>
+                    </div>
+                </div>
+                <div class="fixed-table-toolbar">
+                    <div class="columns pull-left">
+                        <button shiro:hasPermission="datas:dataSendProvince:sendVerify" type="button" class="btn  btn-primary"
+                                onclick="sendVerifyBatch()">
+                            <i class="fa fa-share" aria-hidden="true"></i> 送审
+                        </button>
+
+                    </div>
+
+                </div>
+                <table id="exampleTable" data-mobile-responsive="true"
+                       style="word-break:break-all; word-wrap:break-all;table-layout:fixed">
+                </table>
+            </div>
+        </div>
+    </div>
+</div>
+<!--shiro控制bootstraptable行内按钮看见性 来自bootdo的创新方案 -->
+<div>
+    <script type="text/javascript">
+        var s_edit_h = 'hidden';
+        var s_sendVerify_h = 'hidden';
+    </script>
+</div>
+<div shiro:hasPermission="datas:dataSendProvince:edit">
+    <script type="text/javascript">
+        s_edit_h = '';
+    </script>
+</div>
+
+<!--送审-->
+<div shiro:hasPermission="datas:dataSendProvince:sendVerify">
+    <script type="text/javascript">
+        s_sendVerify_h = '';
+    </script>
+</div>
+
+</div>
+<div th:include="include :: footer"></div>
+<script type="text/javascript" src="/js/plugins/distpicker/distpicker.data.min.js"></script>
+<script type="text/javascript" src="/js/plugins/distpicker/distpicker.min.js"></script>
+<script type="text/javascript" src="/js/appjs/dict.js"></script>
+<script type="text/javascript" src="/js/appjs/datas/dataSendProvince/data.js"></script>
+
+</body>
+</html>

+ 42 - 0
src/main/resources/templates/datas/dataSendProvince/edit.html

@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<head th:include="include :: header"></head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content ">
+    <div class="row">
+        <div class="col-sm-12">
+            <div class="ibox float-e-margins">
+                <div class="ibox-content">
+                    <form class="form-horizontal m-t" id="signupForm">
+                        <div th:include="commonDatas::datas"></div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">上传时间:</label>
+                            <div class="col-sm-8">
+                                <input readonly id="uploadTime" name="uploadTime"
+                                       th:value="${#dates.format(data.uploadTime,'yyyy-MM-dd HH:mm:ss')}"
+                                       class="form-control" type="text">
+                            </div>
+                        </div>
+                    </form>
+                    <div style="text-align: center">
+                        <button type="button" class="btn btn-primary" id="go_back" onclick="closeTheDiv()">返回</button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<div th:include="include::footer"></div>
+<script type="text/javascript" src="/js/appjs/datas/dataSendProvince/edit.js">
+</script>
+
+<script type="text/javascript">
+    //返回
+    function closeTheDiv() {
+        let index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+        parent.layer.close(index);
+    }
+</script>
+</body>
+</html>

+ 37 - 0
src/main/resources/templates/datas/expertVerify/expertOpinion.html

@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<head th:include="include :: header"></head>
+<body class="gray-bg">
+	<div class="wrapper wrapper-content ">
+		<div class="row">
+			<div class="col-sm-12">
+				<div class="ibox float-e-margins">
+					<div class="ibox-content">
+						<form class="form-horizontal m-t" id="signupForm">
+							<input id="id" name="id" th:value="${id}" type="hidden">
+							<div class="form-group">
+								<label class="col-sm-3 control-label">专家意见:</label>
+								<div class="col-sm-8">
+									<input id="opinion" name="opinion" class="form-control" type="text">
+								</div>
+							</div>
+
+							<div class="form-group">
+								<div class="col-sm-8 col-sm-offset-3">
+									<button type="reset" class="btn btn-outline-secondary" id="go_back">返回</button>
+									<button type="submit" class="btn btn-primary">提交</button>
+								</div>
+							</div>
+						</form>
+					</div>
+				</div>
+			</div>
+		</div>
+
+	</div>
+	<div th:include="include::footer"></div>
+	<script type="text/javascript" src="/js/appjs/datas/expertVerify/expertOpinion.js">
+	</script>
+</body>
+</html>