Prechádzať zdrojové kódy

Signed-off-by: 1004749546@qq.com <1004749546@qq.com>
方案接口对接

1004749546@qq.com 4 rokov pred
rodič
commit
23ff6de096

+ 89 - 0
src/api/evaluationPlan.js

@@ -0,0 +1,89 @@
+import { axios } from '@/utils/request'
+
+// 列表分页查询
+export const planQueryByPage = (params) => {
+  const url = `/assess/scheme/query/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios({
+    url: url,
+    data: params,
+    method: 'post'
+  })
+}
+// 列表查询 (不带分页)
+export const planQuery = (params) => {
+  const url = `/assess/scheme/queryList`
+  return axios({
+    url: url,
+    data: {},
+    method: 'post'
+  })
+}
+// 保存考评项目
+export const planSave = (params) => {
+  return axios({
+    url: '/assess/scheme/save',
+    data: params,
+    method: 'post'
+  })
+}
+// 删除
+export const planDelete = (params) => {
+  return axios({
+    url: `/assess/scheme/delete/${params.id}`,
+    data: {},
+    method: 'get'
+  })
+}
+// 启禁用
+export const planEnable = (params) => {
+  return axios({
+    url: `/assess/scheme/enable/${params.id}/${params.status}`,
+    data: {},
+    method: 'get'
+  })
+}
+// 考评方案详情
+export const planDetail = (params) => {
+  return axios({
+    url: `/assess/scheme/find/${params.id}`,
+    data: {},
+    method: 'get'
+  })
+}
+// 考评方案包含项目查询
+export const planItemQuery = (params) => {
+  return axios({
+    url: `/assess/scheme/item/query`,
+    data: params,
+    method: 'post'
+  })
+}
+// 保存考评方案项目
+export const planItemSave = (params) => {
+  return axios({
+    url: `/assess/scheme/item/save`,
+    data: params,
+    method: 'post'
+  })
+}
+/**
+ * 设置默认方案
+ */
+// 默认考评配置查询
+export const planDefaultQuery = (params) => {
+  return axios({
+    url: `/assess/default/query`,
+    data: {},
+    method: 'post'
+  })
+}
+// 保存默认考评配置
+export const planDefaultSave = (params) => {
+  return axios({
+    url: `/assess/default/save`,
+    data: params,
+    method: 'post'
+  })
+}

+ 1 - 1
src/permission.js

@@ -10,7 +10,7 @@ import { ACCESS_TOKEN } from '@/store/mutation-types'
 
 NProgress.configure({ showSpinner: false }) // NProgress Configuration
 
-const whiteList = ['login', 'register', 'registerResult', 'EvaluationItem'] // no redirect whitelist
+const whiteList = ['login', 'register', 'registerResult', 'EvaluationPlan'] // no redirect whitelist
 const defaultRoutePath = '/home'
 
 router.beforeEach((to, from, next) => {

+ 1 - 1
src/views/evaluation/evaluationItem/AddEvaIndexModal.vue

@@ -99,7 +99,7 @@ export default {
       itemIndexDetail({ id: id }).then(res => {
         if (res.status == 200) {
           console.log(res, 'rrrrrrrrrr')
-		  this.form.setFieldsValue({ 'formData.name': res.data.name })
+          this.form.setFieldsValue({ 'formData.name': res.data.name })
         }
       })
     },

+ 4 - 2
src/views/evaluation/evaluationItem/EvaluationItem.vue

@@ -39,7 +39,7 @@
       </template>
       <!-- 启用禁用 -->
       <template slot="enable" slot-scope="text, row">
-        <a-switch checkedChildren="启用" unCheckedChildren="禁用" v-model="row.status" @change="changeFlagHandle(row)"/>
+        <a-switch checkedChildren="启用" unCheckedChildren="禁用" v-model="row.status" @change="changeFlagHandle(row)"/>
       </template>
     </s-table>
     <!-- 新增/编辑 弹窗 -->
@@ -213,7 +213,9 @@ export default {
 	.table-page-search-wrapper .ant-form-inline .ant-form-item {
 		margin-bottom: 10px;
 	}
-
+	.table-operator {
+		margin-bottom: 10px;
+	}
 	.textCount {
 		border: 1px solid #91d5ff;
 		background-color: #e6f7ff;

+ 71 - 33
src/views/evaluation/evaluationPlan/AddEvaModal.vue

@@ -23,7 +23,7 @@
           <a-col :span="20">
             <!-- 适用模式 -->
             <a-form-item label="适用模式:" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
-              <v-select
+              <!-- <v-select
                 ref="orgType"
                 allowClear
                 mode="multiple"
@@ -33,7 +33,22 @@
                   { initialValue: formData.scopeType,
                     rules: [{ required: true, message: '请选择适用模式!' }] },
                 ]"
-                code="STORE_AUTH_TYPE"></v-select>
+                code="STORE_AUTH_TYPE"></v-select> -->
+              <a-select
+                mode="multiple"
+                style="width: 100%"
+                placeholder="请选择适用模式"
+                @change="scopeTypeChange"
+                v-decorator="[
+                  'formData.scopeType',
+                  { initialValue: formData.scopeType,
+                    rules: [{ required: true, message: '请选择适用模式!' }] },
+                ]"
+              >
+                <a-select-option v-for="item in options" :key="item.code" :value="item.code">
+                  {{ item.dispName }}
+                </a-select-option>
+              </a-select>
             </a-form-item>
           </a-col>
         </a-row>
@@ -47,8 +62,8 @@
                 Input.TextArea
                 :autoSize="{minRows:5}"
                 v-decorator="[
-                  'formData.remarks',
-                  { initialValue: formData.remarks },
+                  'formData.desc',
+                  { initialValue: formData.desc },
                 ]"
                 placeholder="请输入考评方案说明" />
             </a-form-item>
@@ -70,16 +85,15 @@
 
 <script>
 import {
-  STable,
   VSelect
 } from '@/components'
 import {
-  saveAuth
-} from '@/api/tenants.js'
+  planSave,
+  planDetail
+} from '@/api/evaluationPlan.js'
 export default {
   name: 'AddEvaModal',
   components: {
-    STable,
     VSelect
   },
   props: {
@@ -99,7 +113,10 @@ export default {
     },
     isshow (newValue, oldValue) {
       if (newValue) {
-
+		  // 编辑查详情
+        if (this.itemId) {
+          this.getFormData(this.itemId)
+        }
       } else {
         this.cancel()
       }
@@ -114,9 +131,25 @@ export default {
       formData: {
         name: '', // 方案名称
         scopeType: [], // 适用类型
-        remarks: '' // 方案说明
-      }
-
+        desc: '' // 方案说明
+      },
+	  options: [
+		  {
+			  code: 'VIDEO_INSPECTION',
+			  dispName: '视频巡店',
+			  id: 1
+		  },
+		  {
+			  code: 'SPOT_INSPECTION',
+			  dispName: '现场巡店',
+			  id: 12
+		  },
+		  {
+			  code: 'POINT_INSPECTION',
+			  dispName: '点检',
+			  id: 13
+		  }
+	  ]
     }
   },
   computed: {
@@ -131,7 +164,17 @@ export default {
       this.clear()
       this.$emit('close')
     },
-    // 使用权限改变
+    // 查详情
+    getFormData (id) {
+      planDetail({ id: id }).then(res => {
+        if (res.status == 200) {
+          console.log(res, 'rrrrrrrrrr')
+		  this.formData = Object.assign(this.formData, res.data)
+		  this.formData.scopeType = this.formData.scopeType.split(',')
+        }
+      })
+    },
+    // 使用模式改变
     scopeTypeChange (v) {
       this.formData.scopeType = v
     },
@@ -140,24 +183,21 @@ export default {
       const _this = this
       this.form.validateFields((err, values) => {
         if (!err) {
-          console.log(values.formData, ' formData.type222222222')
-          // const params = Object.assign({
-          //   id: this.itemData.id
-          // }, values.formData)
-          // params.expireDate = moment(params.expireDate).format('YYYY-MM-DD')
-          // console.log(params, 'ppppppppppppp')
-          // saveAuth(params).then(res => {
-          //   console.log(res, 'res--save')
-          //   if (res.status + '' === '200') {
-          //     this.$message.success(res.message ? res.message : '保存成功')
-          //     this.$emit('refresh')
-          //     setTimeout(function () {
-          //       _this.cancel()
-          //     }, 300)
-          //   } else {
-          //     // this.$message.warning(res.message)
-          //   }
-          // })
+          const params = this.itemId ? Object.assign({ id: this.itemId }, values.formData) : values.formData
+		  params.scopeType = params.scopeType.join(',')
+		  console.log(params, 'ppppppppppppp')
+          planSave(params).then(res => {
+            console.log(res, 'res--save')
+            if (res.status + '' === '200') {
+              this.$message.success(res.message ? res.message : '保存成功')
+              this.$emit('refresh')
+              setTimeout(function () {
+                _this.cancel()
+              }, 300)
+            } else {
+              // this.$message.warning(res.message)
+            }
+          })
         }
       })
     },
@@ -177,8 +217,6 @@ export default {
     },
     clear () {
       this.form.resetFields()
-	  // 重置时 下拉框不起作用,对下拉框单独设置
-	  this.form.setFields({ 'formData.scopeType': { value: [], errors: '' } })
     }
 
   },

+ 33 - 35
src/views/evaluation/evaluationPlan/EvaluationPlan.vue

@@ -21,7 +21,7 @@
       </a-form>
     </div>
     <a-divider />
-    <a-row type="flex" justify="space-between">
+    <a-row class="add-btn" type="flex" justify="space-between">
       <a-button type="primary" icon="plus" @click="openModal">新建</a-button>
       <a-col @click="handleDefaultSet">
         <a-icon type="setting" class="setting-icon" />
@@ -43,7 +43,7 @@
       </template>
       <!-- 启用禁用 -->
       <template slot="enable" slot-scope="text, row">
-        <a-switch checkedChildren="启用" unCheckedChildren="禁用" v-model="row.status" @change="changeFlagHandle(text, row)"/>
+        <a-switch checkedChildren="启用" unCheckedChildren="禁用" v-model="row.status" @change="changeFlagHandle(row)"/>
       </template>
     </s-table>
     <!-- 新增/编辑 弹窗 -->
@@ -62,9 +62,10 @@ import {
   VSelect
 } from '@/components'
 import {
-  getTenantsList,
-  enable
-} from '@/api/tenants.js'
+  planQueryByPage,
+  planEnable,
+  planDelete
+} from '@/api/evaluationPlan.js'
 import addEvaModal from './AddEvaModal.vue'
 import setEvaModal from './SetEvaModal.vue'
 import setEvaDefaultModal from './SetEvaDefaultModal.vue'
@@ -86,7 +87,7 @@ export default {
       openAddModal: false, // 打开新增弹窗
 	  openSetting: false, // 打开选择考评项弹窗
 	  openDefaultSetting: false, // 打开设置默认方案弹窗
-      itemId: '', // 要编辑的租户id
+      itemId: '', // 要编辑的方案id
       // 查询参数
       queryParam: {
         name: '',
@@ -106,7 +107,7 @@ export default {
       },
       {
         title: '考评方案说明',
-        dataIndex: 'orgType',
+        dataIndex: 'desc',
         width: '120',
         align: 'center'
       },
@@ -114,11 +115,11 @@ export default {
         title: '适用模式',
         width: '120',
         align: 'center',
-        dataIndex: 'contactPhone'
+        dataIndex: 'scopeType'
       },
       {
         title: '状态',
-        width: '200',
+        width: '250',
         align: 'center',
         dataIndex: 'status',
         scopedSlots: {
@@ -136,7 +137,7 @@ export default {
       ],
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
-        return getTenantsList(Object.assign(parameter, this.queryParam)).then(res => {
+        return planQueryByPage(Object.assign(parameter, this.queryParam)).then(res => {
           if (res.status == 200) {
             const no = (res.data.pageNo - 1) * res.data.pageSize
             for (let i = 0; i < res.data.list.length; i++) {
@@ -157,25 +158,20 @@ export default {
   },
   methods: {
     // 修改状态
-    changeFlagHandle (text, record) {
+    changeFlagHandle (record) {
       const _data = {
         id: record.id,
         status: record.status ? '1' : '0'
       }
-      if (!record.expireDate && _data.status == '1') {
-        this.$message.success('请确认授权设置无误并点击【确定】后,再进行启用!')
-        record.status = !record.status
-      } else {
-        enable(_data).then(res => {
-          console.log(res.status)
-          if (res.status == '200') {
-            this.$message.success('修改成功')
-            this.$refs.table.refresh()
-          } else {
-            record.status = !record.status
-          }
-        })
-      }
+      planEnable(_data).then(res => {
+        console.log(res.status)
+        if (res.status == '200') {
+          this.$message.success('修改成功')
+          this.$refs.table.refresh()
+        } else {
+          record.status = !record.status
+        }
+      })
     },
     // 打开新增弹窗
     openModal (row) {
@@ -191,18 +187,18 @@ export default {
       const _this = this
       this.$confirm({
         title: '警告',
-        content: '删除后无法恢复,确认删除?',
+        content: '删除考评方案后其关联的考评项目将被同步解除关联,确认删除吗?',
         okText: '确定',
         cancelText: '取消',
         onOk () {
-          // deleteItem({
-          // 	id: row.id
-          // }).then(res => {
-          // 	if (res.status == 200) {
-          // 		_this.$message.success('删除成功')
-          // 		_this.$refs.table.refresh()
-          // 	}
-          // })
+          planDelete({
+          	id: row.id
+          }).then(res => {
+          	if (res.status == 200) {
+          		_this.$message.success(res.message)
+          		_this.$refs.table.refresh()
+          	}
+          })
         }
       })
     },
@@ -215,7 +211,6 @@ export default {
     reset () {
       this.queryParam = {
         name: '',
-        contactPhone: '',
         status: '' // 状态
       }
       this.$refs.table.refresh()
@@ -232,6 +227,9 @@ export default {
 	.table-page-search-wrapper .ant-form-inline .ant-form-item {
 		margin-bottom: 10px;
 	}
+	.add-btn {
+		margin-bottom: 10px;
+	}
 	.actionBtn {
 		font-size: 20px;
 		padding: 0 10px;

+ 85 - 49
src/views/evaluation/evaluationPlan/SetEvaDefaultModal.vue

@@ -6,34 +6,40 @@
           <a-col :span="20">
             <!-- 视频巡店默认方案 -->
             <a-form-item label="视频巡店默认方案:" :label-col="{ span: 7 }" :wrapper-col="{ span: 16 }">
-              <v-select
-                ref="orgType"
-                allowClear
-                @change="scopeTypeChange"
+              <a-select
+                style="width: 100%"
+                placeholder="请选择考评方案方案(单选)"
+                @change="videoTypeChange()"
                 v-decorator="[
-                  'formData.scopeType',
-                  { initialValue: formData.scopeType,
-                    rules: [{ required: true, message: '请选择视频巡店默认方案!' }] },
+                  'formData.videoType',
+                  { initialValue: formData.videoType,
+                    rules: [{ required: true, message: '请选择考评方案方案(单选)!' }] },
                 ]"
-                code="STORE_AUTH_TYPE"></v-select>
-            </a-form-item>
+              >
+                <a-select-option v-for="item in planList" :key="item.assessId" :value="item.assessId">
+                  {{ item.name }}
+                </a-select-option>
+              </a-select></a-form-item>
           </a-col>
         </a-row>
         <a-row :gutter="24">
           <a-col :span="20">
             <!-- 现场巡店默认方案 -->
             <a-form-item label="现场巡店默认方案:" :label-col="{ span: 7 }" :wrapper-col="{ span: 16 }">
-              <v-select
-                ref="orgType"
-                allowClear
-                @change="scopeTypeChange"
+              <a-select
+                style="width: 100%"
+                placeholder="请选择考评方案方案(单选)"
+                @change="spotTypeChange()"
                 v-decorator="[
-                  'formData.scopeType',
-                  { initialValue: formData.scopeType,
-                    rules: [{ required: true, message: '请选择现场巡店默认方案!' }] },
+                  'formData.spotType',
+                  { initialValue: formData.spotType,
+                    rules: [{ required: true, message: '请选择考评方案方案(单选)!' }] },
                 ]"
-                code="STORE_AUTH_TYPE"></v-select>
-            </a-form-item>
+              >
+                <a-select-option v-for="item in planList" :key="item.assessId" :value="item.assessId">
+                  {{ item.name }}
+                </a-select-option>
+              </a-select></a-form-item>
           </a-col>
         </a-row>
         <a-form-item :wrapper-col="{ span: 24, offset: 10 }">
@@ -56,8 +62,10 @@ import {
   VSelect
 } from '@/components'
 import {
-  saveAuth
-} from '@/api/tenants.js'
+  planQuery,
+  planDefaultQuery,
+  planDefaultSave
+} from '@/api/evaluationPlan.js'
 export default {
   name: 'AddEvaModal',
   components: {
@@ -81,7 +89,8 @@ export default {
     },
     isshow (newValue, oldValue) {
       if (newValue) {
-
+        // 默认方案查询
+        this.getDefaultPlan()
       } else {
         this.cancel()
       }
@@ -94,48 +103,77 @@ export default {
         name: 'AddEvaModal'
       }),
       formData: {
-        name: '', // 方案名称
-        scopeType: [], // 适用类型
-        remarks: '' // 方案说明
-      }
-
+        videoType: '', // 视频巡店默认方案
+        spotType: '' // 现场巡店默认方案
+      },
+	  planList: [] // 考评方案列表
     }
   },
   computed: {
   },
+  mounted () {
+    // 获取方案列表数据
+  	this.getPlanList()
+  },
   methods: {
     // 点击弹框x号触发事件
     cancel (e) {
       this.clear()
       this.$emit('close')
     },
-    // 使用权限改变
-    scopeTypeChange (v) {
-      this.formData.scopeType = v
+    // 获取方案列表数据
+    getPlanList () {
+      planQuery().then(res => {
+        if (res.status == 200) {
+          this.planList = res.data
+        } else {
+          this.planList = []
+        }
+      })
+    },
+    // 默认方案查询
+    getDefaultPlan () {
+      planDefaultQuery().then(res => {
+		  console.log(res, 'rrrrrrrr')
+		  if (res.status == 200) {
+			  // this.form.setFieldsValue({ 'formData.videoType': res.data.find(item => item.scopeType == 'VIDEO_INSPECTION').assessId })
+			  // this.form.setFieldsValue({ 'formData.spotType': res.data.find(item => item.scopeType == 'SPOT_INSPECTION').assessId })
+			  // this.formData.videoType = res.data.find(item => item.scopeType == 'VIDEO_INSPECTION').assessId
+			  // this.formData.spotType = res.data.find(item => item.scopeType == 'SPOT_INSPECTION').assessId
+		  } else {
+			  this.formData.videoType = ''
+			  this.formData.spotType = ''
+		  }
+      })
+    },
+    // 视频巡店默认方案改变
+    videoTypeChange (v) {
+      this.formData.videoType = v
+    },
+    // 现场巡店默认方案改变
+    spotTypeChange (v) {
+	  this.formData.spotType = v
     },
     // 保存提交
     handleSubmit () {
       const _this = this
       this.form.validateFields((err, values) => {
         if (!err) {
-          console.log(values.formData, ' formData.type222222222')
-          // const params = Object.assign({
-          //   id: this.itemData.id
-          // }, values.formData)
-          // params.expireDate = moment(params.expireDate).format('YYYY-MM-DD')
-          // console.log(params, 'ppppppppppppp')
-          // saveAuth(params).then(res => {
-          //   console.log(res, 'res--save')
-          //   if (res.status + '' === '200') {
-          //     this.$message.success(res.message ? res.message : '保存成功')
-          //     this.$emit('refresh')
-          //     setTimeout(function () {
-          //       _this.cancel()
-          //     }, 300)
-          //   } else {
-          //     // this.$message.warning(res.message)
-          //   }
-          // })
+          const params = [
+			  { assessId: values.formData.videoType, scopeType: 'VIDEO_INSPECTION' },
+			  { assessId: values.formData.spotType, scopeType: 'SPOT_INSPECTION' }
+		  ]
+          planDefaultSave(params).then(res => {
+            console.log(res, 'res--save')
+            if (res.status + '' === '200') {
+              this.$message.success(res.message ? res.message : '保存成功')
+              setTimeout(function () {
+                _this.cancel()
+              }, 300)
+            } else {
+              // this.$message.warning(res.message)
+            }
+          })
         }
       })
     },
@@ -155,8 +193,6 @@ export default {
     },
     clear () {
       this.form.resetFields()
-	  // 重置时 下拉框不起作用,对下拉框单独设置
-	  this.form.setFields({ 'formData.scopeType': { value: [], errors: '' } })
     }
 
   },

+ 1 - 1
src/views/user/Login.vue

@@ -184,7 +184,7 @@ export default {
     },
     handleSubmit (e) {
       e.preventDefault()
-      this.$router.push({ name: 'EvaluationItem' }, () => {
+      this.$router.push({ name: 'EvaluationPlan' }, () => {
 			  console.log('onComplete')
 			  this.$notification.success({
 			    message: '欢迎',