79af1c8a1440721ab89bc06eedce543e5ec3b4c5.svn-base 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. <template>
  2. <div class="zj_plan_wrapper">
  3. <el-form ref="form" :model="formObj" :rules="rules" label-width="120px">
  4. <el-form-item label="选择年月">
  5. <el-date-picker type="month" placeholder="选择月" v-model="yearAndMonth" value-format="yyyy-MM" :disabled="isDisabled" style="width: 100%;"></el-date-picker>
  6. </el-form-item>
  7. <!-- <el-form-item label="责任处室" prop="departId">
  8. <el-select v-model="formObj.departId" placeholder="请选择责任处室" :disabled="isDisabled">
  9. <el-option :label="obj.departNm" :value="obj.id" v-for="obj in orgList" :key="obj.id"></el-option>
  10. </el-select>
  11. <span style="color: #5cb6ff; font-size: 14px; margin-left: 10px; cursor: pointer" @click="addNewDepart" v-if="!isDisabled">
  12. <i class="el-icon-circle-plus"></i>
  13. 添加
  14. </span>
  15. </el-form-item> -->
  16. <el-form-item label="事项名称" prop="wokerNm">
  17. <el-input v-model="formObj.wokerNm" :disabled="isDisabled"></el-input>
  18. </el-form-item>
  19. <el-form-item label="详细名称" prop="workerNmDesc">
  20. <el-input v-model="formObj.workerNmDesc" :disabled="isDisabled"></el-input>
  21. </el-form-item>
  22. <el-form-item label="检查内容" prop="content">
  23. <el-input type="textarea" v-model="formObj.content" :disabled="isDisabled"></el-input>
  24. </el-form-item>
  25. <el-form-item label="检查项" prop="inspType">
  26. <el-select v-model="formObj.inspType" placeholder="请选择督查对象" :disabled="isDisabled">
  27. <el-option :label="obj.name" :value="obj.code" v-for="obj in objList" :key="obj.code"></el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item label="检查方式" prop="checkWay">
  31. <el-select v-model="formObj.checkWay" placeholder="请选择检查方式" :disabled="isDisabled">
  32. <el-option label="明查" value="1"></el-option>
  33. <el-option label="暗访" value="2"></el-option>
  34. <el-option label="明查暗访相结合" value="3"></el-option>
  35. </el-select>
  36. </el-form-item>
  37. <el-form-item label="检查依据" prop="checkRelay">
  38. <el-input v-model="formObj.checkRelay" :disabled="isDisabled"></el-input>
  39. </el-form-item>
  40. <el-form-item label="检查开始时间" prop="checkSttdDate">
  41. <el-date-picker type="date" placeholder="选择开始时间" v-model="formObj.checkSttdDate" value-format="yyyy-MM-dd" :disabled="isDisabled" style="width: 100%;"></el-date-picker>
  42. </el-form-item>
  43. <el-form-item label="检查结束时间" prop="checkEndDate">
  44. <el-date-picker type="date" placeholder="选择结束时间" v-model="formObj.checkEndDate" value-format="yyyy-MM-dd" :disabled="isDisabled" style="width: 100%;"></el-date-picker>
  45. </el-form-item>
  46. <el-form-item v-if="!isDisabled && titleText != '反馈'">
  47. <el-button type="primary" @click="onSubmit">确定</el-button>
  48. <el-button @click="closeDialog">取消</el-button>
  49. </el-form-item>
  50. </el-form>
  51. <!-- 流程跟踪 -->
  52. <div class="procedure_wrapper" v-if="showProcedure">
  53. <h3>流程跟踪</h3>
  54. <el-table
  55. border
  56. ref="multipleTable"
  57. :height="tableHeight"
  58. :data="tableData"
  59. tooltip-effect="dark"
  60. style="width: 100%"
  61. v-loading="loading">
  62. <el-table-column align="center" type="index" label="序号" min-width="25">
  63. <template slot-scope="scope">{{scope.$index + 1}}</template>
  64. </el-table-column>
  65. <el-table-column
  66. header-align="center"
  67. align="center"
  68. min-width="150"
  69. prop="persName"
  70. label="操作人"
  71. show-overflow-tooltip>
  72. </el-table-column>
  73. <el-table-column
  74. header-align="center"
  75. align="center"
  76. min-width="200"
  77. prop="workStep"
  78. label="操作步骤"
  79. :formatter="workStepFormatter"
  80. show-overflow-tooltip
  81. ></el-table-column>
  82. <el-table-column
  83. header-align="center"
  84. align="center"
  85. min-width="100"
  86. prop="checkNote"
  87. label="意见"
  88. show-overflow-tooltip
  89. ></el-table-column>
  90. <el-table-column
  91. header-align="center"
  92. align="center"
  93. min-width="150"
  94. prop="intm"
  95. label="时间"
  96. show-overflow-tooltip>
  97. <template slot-scope="scope">
  98. <span>{{formatDate(scope.row.intm,'yyyy-MM-dd HH:mm:ss')}}</span>
  99. </template>
  100. </el-table-column>
  101. </el-table>
  102. </div>
  103. <!-- 审核 -->
  104. <div class="review" v-if="titleText == '审核'">
  105. <el-form label-width="100px" :model="checkProcess">
  106. <el-form-item label="是否下发">
  107. <el-select v-model="checkProcess.isSend" placeholder="请选择是否下发">
  108. <el-option label="是" value="1"></el-option>
  109. <el-option label="否" value="2"></el-option>
  110. </el-select>
  111. </el-form-item>
  112. <el-form-item label="审核意见" v-if="checkProcess.isSend == '2'">
  113. <el-input type="textarea" v-model="checkProcess.checkNote"></el-input>
  114. </el-form-item>
  115. <el-form-item>
  116. <el-button type="primary" @click="checkSubmit">确定</el-button>
  117. <el-button @click="closeDialog">取消</el-button>
  118. </el-form-item>
  119. </el-form>
  120. </div>
  121. <!-- 反馈 -->
  122. <div class="feedback" v-if="titleText == '反馈'">
  123. <el-form label-width="100px" :model="checkProcess">
  124. <el-form-item label="反馈意见">
  125. <el-input type="textarea" v-model="checkProcess.checkNote"></el-input>
  126. </el-form-item>
  127. <el-form-item>
  128. <el-button type="primary" @click="checkSubmit">确定</el-button>
  129. <el-button @click="closeDialog">取消</el-button>
  130. </el-form-item>
  131. </el-form>
  132. </div>
  133. </div>
  134. </template>
  135. <script>
  136. import request from '@util/gw_ajax_request.js'
  137. import {dateFormat} from '@util/gw_date.js'
  138. export default {
  139. props: {
  140. RowId:{},
  141. titleText:{}
  142. },
  143. data(){
  144. return {
  145. tableHeight: '200',
  146. loading: false,
  147. tableData: [], //跟踪列表数据
  148. formObj:{
  149. },
  150. yearAndMonth: null,
  151. objList:[],
  152. rules: {
  153. wokerNm: [
  154. { required: true, message: '请填写事项名称', trigger: 'blur' }
  155. ],
  156. workerNmDesc: [
  157. { required: true, message: '请填写详细名称', trigger: 'blur' }
  158. ],
  159. content: [
  160. { required: true, message: '请填写检查内容', trigger: 'blur' }
  161. ],
  162. checkRelay: [
  163. { required: true, message: '请填写检查依据', trigger: 'blur' }
  164. ],
  165. departId: [
  166. { required: true, message: '请选择责任处室', trigger: 'change' }
  167. ],
  168. inspType: [
  169. { required: true, message: '请选择检查项', trigger: 'change' }
  170. ],
  171. checkWay: [
  172. { required: true, message: '请选择检查方式', trigger: 'change' }
  173. ],
  174. checkSttdDate: [
  175. { required: true, message: '请选择开始时间', trigger: 'change' }
  176. ],
  177. checkEndDate: [
  178. { required: true, message: '请选择结束时间', trigger: 'change' }
  179. ],
  180. },
  181. checkProcess:{
  182. isSend: '',
  183. checkNote: '',
  184. planId: '',
  185. workStep: ''
  186. },
  187. }
  188. },
  189. computed:{
  190. persId(){
  191. return localStorage.getItem('userid') ? localStorage.getItem('userid') : ''
  192. },
  193. // 只有添加和反馈操作才可填写信息
  194. isDisabled(){
  195. return this.titleText != '添加' && this.titleText != '反馈'
  196. },
  197. showProcedure(){
  198. return this.titleText != '添加'
  199. },
  200. formatDate(){
  201. return dateFormat
  202. },
  203. departId(){
  204. return localStorage.getItem('departId') ? localStorage.getItem('departId') : ''
  205. },
  206. departNm(){
  207. return localStorage.getItem('departNm') ? localStorage.getItem('departNm') : ''
  208. },
  209. },
  210. mounted(){
  211. this.getObjList()
  212. if(this.isDisabled || this.titleText == '反馈'){
  213. this.getPlanInfo()
  214. }
  215. },
  216. methods:{
  217. // 获取督查事项列表
  218. getObjList(){
  219. request.get('/bis/insp/listInspType').then(res=>{
  220. if(res.success){
  221. this.objList = res.data
  222. }else{
  223. this.$message.warning(res.message)
  224. }
  225. })
  226. },
  227. // 获取计划详情信息
  228. getPlanInfo(){
  229. request.get(`/bis/zhejiang/check/plan/${this.RowId}`).then(res=>{
  230. if(res.success){
  231. this.formObj = res.data
  232. this.yearAndMonth = `${this.formObj.year}-${this.formObj.month}`
  233. // 流程跟踪信息
  234. this.tableData = this.formObj.checkProcessList
  235. }else{
  236. this.$message.warning(res.message)
  237. }
  238. })
  239. },
  240. // 添加保存
  241. onSubmit(){
  242. this.$refs.form.validate((valid)=>{
  243. if(valid){
  244. // 选择年月 分开传入两个字段 year month
  245. if(this.titleText == '添加' || this.titleText == '反馈'){
  246. if(this.yearAndMonth){
  247. let yearAndMonth = this.yearAndMonth.split('-')
  248. this.formObj['year'] = yearAndMonth[0]
  249. this.formObj['month'] = yearAndMonth[1]
  250. }
  251. this.formObj['persId'] = this.persId
  252. }
  253. this.objList.forEach(ele=>{
  254. if(this.formObj.inspType == ele.code){
  255. this.formObj['inspName'] = ele.name
  256. }
  257. })
  258. this.formObj['departId'] = this.departId
  259. this.formObj['departNm'] = this.departNm
  260. request.post('/bis/zhejiang/check/plan',this.formObj).then(res=>{
  261. if(res.success){
  262. this.$message.success('保存成功')
  263. this.$emit('closeDialog','success')
  264. }else{
  265. this.$message.warning(res.message)
  266. }
  267. })
  268. }else{
  269. return false
  270. }
  271. })
  272. },
  273. // 审核/反馈提交
  274. checkSubmit(){
  275. let data
  276. if(this.titleText == '审核'){
  277. if(!this.checkProcess.isSend){
  278. this.$message.warning('请选择审核是否下发')
  279. return
  280. }
  281. if(this.checkProcess.isSend == '1'){
  282. data = {
  283. isSend: '3',
  284. planId: this.RowId
  285. }
  286. }else{
  287. data = {
  288. planId: this.RowId,
  289. checkNote: this.checkProcess.checkNote,
  290. workStep: '2'
  291. }
  292. }
  293. }else{
  294. data = {
  295. planId: this.RowId,
  296. checkNote: this.checkProcess.checkNote,
  297. workStep: '1'
  298. }
  299. delete this.formObj.isSend
  300. this.onSubmit()
  301. }
  302. request.post('/bis/zhejiang/check/process',data).then(res=>{
  303. if(res.success){
  304. if(this.titleText == '审核'){
  305. this.$message.success('保存成功')
  306. }
  307. this.$emit('closeDialog','success')
  308. }else{
  309. this.$message.warning(res.message)
  310. }
  311. })
  312. },
  313. closeDialog(){
  314. this.$emit('closeDialog')
  315. },
  316. // 格式化
  317. workStepFormatter(val){
  318. switch (val.workStep){
  319. case '1':
  320. return '反馈';
  321. break;
  322. case '2':
  323. return '审核';
  324. break;
  325. default:
  326. return ''
  327. }
  328. },
  329. },
  330. watch:{
  331. titleText(val){
  332. if(val && isDisabled){
  333. this.getPlanInfo()
  334. }else{
  335. // 添加问题时清空之前展示内容
  336. this.formObj = {}
  337. }
  338. }
  339. }
  340. }
  341. </script>
  342. <style lang="scss">
  343. .zj_plan_wrapper{
  344. .procedure_wrapper{
  345. h3{
  346. text-align: center;
  347. margin-bottom: 10px;
  348. }
  349. }
  350. .review,.feedback{
  351. margin-top: 10px;
  352. }
  353. }
  354. </style>